@xyo-network/react-shared 4.4.0 → 4.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/hooks/index.d.ts +1 -1
- package/dist/browser/hooks/index.d.ts.map +1 -1
- package/dist/browser/hooks/payload/index.d.ts +5 -0
- package/dist/browser/hooks/payload/index.d.ts.map +1 -0
- package/dist/browser/hooks/payload/types/ValidatedResponse.d.ts +6 -0
- package/dist/browser/hooks/payload/types/ValidatedResponse.d.ts.map +1 -0
- package/dist/browser/hooks/payload/types/index.d.ts +2 -0
- package/dist/browser/hooks/payload/types/index.d.ts.map +1 -0
- package/dist/browser/hooks/payload/useBoundWitnessValidate.d.ts +4 -0
- package/dist/browser/hooks/payload/useBoundWitnessValidate.d.ts.map +1 -0
- package/dist/browser/hooks/{usePayloadHash.d.ts → payload/usePayloadHash.d.ts} +2 -1
- package/dist/browser/hooks/payload/usePayloadHash.d.ts.map +1 -0
- package/dist/browser/hooks/payload/usePayloadValidate.d.ts +4 -0
- package/dist/browser/hooks/payload/usePayloadValidate.d.ts.map +1 -0
- package/dist/browser/index.mjs +89 -24
- package/dist/browser/index.mjs.map +1 -1
- package/package.json +7 -4
- package/src/hooks/index.ts +1 -1
- package/src/hooks/payload/index.ts +4 -0
- package/src/hooks/payload/types/ValidatedResponse.ts +3 -0
- package/src/hooks/payload/types/index.ts +1 -0
- package/src/hooks/payload/useBoundWitnessValidate.tsx +29 -0
- package/src/hooks/{usePayloadHash.ts → payload/usePayloadHash.tsx} +5 -1
- package/src/hooks/payload/usePayloadValidate.tsx +21 -0
- package/dist/browser/hooks/usePayloadHash.d.ts.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export * from './GradientStyles/index.ts';
|
|
2
|
+
export * from './payload/index.ts';
|
|
2
3
|
export * from './useDataState.ts';
|
|
3
4
|
export * from './useIsMobile.ts';
|
|
4
5
|
export * from './useMediaQuery.ts';
|
|
5
|
-
export * from './usePayloadHash.ts';
|
|
6
6
|
export * from './useShareForwardRef.ts';
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAA;AACzC,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAA;AACzC,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/hooks/payload/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,sBAAsB,CAAA;AACpC,cAAc,0BAA0B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ValidatedResponse.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/payload/types/ValidatedResponse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEzD,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,IAAI;IAAE,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,CAAA;CAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/payload/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { BoundWitness } from '@xyo-network/boundwitness-model';
|
|
2
|
+
import type { ValidatedResponse } from './types/index.ts';
|
|
3
|
+
export declare const useValidateBoundWitness: (input?: string) => ValidatedResponse<BoundWitness>;
|
|
4
|
+
//# sourceMappingURL=useBoundWitnessValidate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBoundWitnessValidate.d.ts","sourceRoot":"","sources":["../../../../src/hooks/payload/useBoundWitnessValidate.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAInE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEzD,eAAO,MAAM,uBAAuB,WAAY,MAAM,KAAG,iBAAiB,CAAC,YAAY,CAoBtF,CAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type Payload } from '@xyo-network/payload-model';
|
|
2
2
|
export declare const usePayloadHash: <TPayload extends Payload>(payload: TPayload | undefined | null) => Lowercase<string> | undefined;
|
|
3
|
+
export declare const usePayloadRootHash: <TPayload extends Payload>(payload: TPayload | undefined | null) => Lowercase<string> | undefined;
|
|
3
4
|
export declare const usePayloadHashes: <TPayload extends Payload>(payloads: TPayload[] | undefined | null) => [TPayload, Lowercase<string>][] | undefined;
|
|
4
5
|
//# sourceMappingURL=usePayloadHash.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePayloadHash.d.ts","sourceRoot":"","sources":["../../../../src/hooks/payload/usePayloadHash.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEzD,eAAO,MAAM,cAAc,GAAI,QAAQ,SAAS,OAAO,WAAW,QAAQ,GAAG,SAAS,GAAG,IAAI,kCAE5F,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAI,QAAQ,SAAS,OAAO,WAAW,QAAQ,GAAG,SAAS,GAAG,IAAI,kCAEhG,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,QAAQ,SAAS,OAAO,YAAY,QAAQ,EAAE,GAAG,SAAS,GAAG,IAAI,gDAQjG,CAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Payload } from '@xyo-network/payload-model';
|
|
2
|
+
import type { ValidatedResponse } from './types/index.ts';
|
|
3
|
+
export declare const usePayloadValidate: <TPayload extends Payload>(input?: string) => ValidatedResponse;
|
|
4
|
+
//# sourceMappingURL=usePayloadValidate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePayloadValidate.d.ts","sourceRoot":"","sources":["../../../../src/hooks/payload/usePayloadValidate.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAIzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEzD,eAAO,MAAM,kBAAkB,GAAI,QAAQ,SAAS,OAAO,UAAU,MAAM,KAAG,iBAY7E,CAAA"}
|
package/dist/browser/index.mjs
CHANGED
|
@@ -74,6 +74,85 @@ var useGradientStyles = /* @__PURE__ */ __name(() => {
|
|
|
74
74
|
};
|
|
75
75
|
}, "useGradientStyles");
|
|
76
76
|
|
|
77
|
+
// src/hooks/payload/useBoundWitnessValidate.tsx
|
|
78
|
+
import { assertEx } from "@xylabs/assert";
|
|
79
|
+
import { usePromise } from "@xylabs/react-promise";
|
|
80
|
+
import { BoundWitnessValidator } from "@xyo-network/boundwitness-validator";
|
|
81
|
+
import { isAnyPayload } from "@xyo-network/payload-model";
|
|
82
|
+
var useValidateBoundWitness = /* @__PURE__ */ __name((input) => {
|
|
83
|
+
const [output, validationError] = usePromise(async () => {
|
|
84
|
+
if (!input) return;
|
|
85
|
+
const object = JSON.parse(input);
|
|
86
|
+
const validPayload = assertEx(isAnyPayload(object) ? object : null, () => "Invalid payload");
|
|
87
|
+
const errors2 = await new BoundWitnessValidator(validPayload).validate();
|
|
88
|
+
return {
|
|
89
|
+
payload: validPayload,
|
|
90
|
+
errors: errors2
|
|
91
|
+
};
|
|
92
|
+
}, [
|
|
93
|
+
input
|
|
94
|
+
]);
|
|
95
|
+
const { payload, errors } = output ?? {};
|
|
96
|
+
return {
|
|
97
|
+
payload,
|
|
98
|
+
errors: [
|
|
99
|
+
validationError,
|
|
100
|
+
...errors ?? []
|
|
101
|
+
].filter((error) => !!error)
|
|
102
|
+
};
|
|
103
|
+
}, "useValidateBoundWitness");
|
|
104
|
+
|
|
105
|
+
// src/hooks/payload/usePayloadHash.tsx
|
|
106
|
+
import { usePromise as usePromise2 } from "@xylabs/react-promise";
|
|
107
|
+
import { PayloadBuilder } from "@xyo-network/payload-builder";
|
|
108
|
+
var usePayloadHash = /* @__PURE__ */ __name((payload) => {
|
|
109
|
+
return usePromise2(async () => payload ? await PayloadBuilder.dataHash(payload) : void 0, [
|
|
110
|
+
payload
|
|
111
|
+
])[0];
|
|
112
|
+
}, "usePayloadHash");
|
|
113
|
+
var usePayloadRootHash = /* @__PURE__ */ __name((payload) => {
|
|
114
|
+
return usePromise2(async () => payload ? await PayloadBuilder.hash(payload) : void 0, [
|
|
115
|
+
payload
|
|
116
|
+
])[0];
|
|
117
|
+
}, "usePayloadRootHash");
|
|
118
|
+
var usePayloadHashes = /* @__PURE__ */ __name((payloads) => {
|
|
119
|
+
return usePromise2(async () => payloads ? await Promise.all(payloads.map(async (payload) => [
|
|
120
|
+
payload,
|
|
121
|
+
await PayloadBuilder.dataHash(payload)
|
|
122
|
+
])) : void 0, [
|
|
123
|
+
payloads
|
|
124
|
+
])[0];
|
|
125
|
+
}, "usePayloadHashes");
|
|
126
|
+
|
|
127
|
+
// src/hooks/payload/usePayloadValidate.tsx
|
|
128
|
+
import { assertEx as assertEx2 } from "@xylabs/assert";
|
|
129
|
+
import { PayloadBuilder as PayloadBuilder2 } from "@xyo-network/payload-builder";
|
|
130
|
+
import { isAnyPayload as isAnyPayload2 } from "@xyo-network/payload-model";
|
|
131
|
+
import { useMemo } from "react";
|
|
132
|
+
var usePayloadValidate = /* @__PURE__ */ __name((input) => {
|
|
133
|
+
return useMemo(() => {
|
|
134
|
+
if (!input) return {};
|
|
135
|
+
try {
|
|
136
|
+
const object = JSON.parse(input);
|
|
137
|
+
const validPayload = assertEx2(isAnyPayload2(object) ? object : null, () => "Invalid payload");
|
|
138
|
+
const { schema, ...fields } = validPayload;
|
|
139
|
+
return {
|
|
140
|
+
payload: new PayloadBuilder2({
|
|
141
|
+
schema
|
|
142
|
+
}).fields(fields).build()
|
|
143
|
+
};
|
|
144
|
+
} catch (error) {
|
|
145
|
+
return {
|
|
146
|
+
errors: [
|
|
147
|
+
error
|
|
148
|
+
]
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
}, [
|
|
152
|
+
input
|
|
153
|
+
]);
|
|
154
|
+
}, "usePayloadValidate");
|
|
155
|
+
|
|
77
156
|
// src/hooks/useDataState.ts
|
|
78
157
|
import { useState } from "react";
|
|
79
158
|
var useDataState = /* @__PURE__ */ __name((defaultValue) => {
|
|
@@ -109,23 +188,6 @@ var useIsSmall = /* @__PURE__ */ __name(() => {
|
|
|
109
188
|
return useMediaQuery(theme.breakpoints.down("md"));
|
|
110
189
|
}, "useIsSmall");
|
|
111
190
|
|
|
112
|
-
// src/hooks/usePayloadHash.ts
|
|
113
|
-
import { usePromise } from "@xylabs/react-promise";
|
|
114
|
-
import { PayloadBuilder } from "@xyo-network/payload-builder";
|
|
115
|
-
var usePayloadHash = /* @__PURE__ */ __name((payload) => {
|
|
116
|
-
return usePromise(async () => payload ? await PayloadBuilder.dataHash(payload) : void 0, [
|
|
117
|
-
payload
|
|
118
|
-
])[0];
|
|
119
|
-
}, "usePayloadHash");
|
|
120
|
-
var usePayloadHashes = /* @__PURE__ */ __name((payloads) => {
|
|
121
|
-
return usePromise(async () => payloads ? await Promise.all(payloads.map(async (payload) => [
|
|
122
|
-
payload,
|
|
123
|
-
await PayloadBuilder.dataHash(payload)
|
|
124
|
-
])) : void 0, [
|
|
125
|
-
payloads
|
|
126
|
-
])[0];
|
|
127
|
-
}, "usePayloadHashes");
|
|
128
|
-
|
|
129
191
|
// src/hooks/useShareForwardRef.ts
|
|
130
192
|
import { useEffect, useRef } from "react";
|
|
131
193
|
var useShareForwardedRef = /* @__PURE__ */ __name((forwardedRef, refresh = 0) => {
|
|
@@ -527,7 +589,7 @@ import React13, { forwardRef as forwardRef4 } from "react";
|
|
|
527
589
|
// src/components/TableCell/EllipsisTableCell.tsx
|
|
528
590
|
import { styled as styled3, TableCell } from "@mui/material";
|
|
529
591
|
import { asLinkHrefOrToProps, LinkEx as LinkEx2 } from "@xylabs/react-link";
|
|
530
|
-
import React12, { forwardRef as forwardRef3, useMemo } from "react";
|
|
592
|
+
import React12, { forwardRef as forwardRef3, useMemo as useMemo2 } from "react";
|
|
531
593
|
var EllipsisTableCellRoot = styled3(TableCell, {
|
|
532
594
|
name: "EllipsisTableCell",
|
|
533
595
|
shouldForwardProp: /* @__PURE__ */ __name((prop) => prop !== "width", "shouldForwardProp"),
|
|
@@ -536,7 +598,7 @@ var EllipsisTableCellRoot = styled3(TableCell, {
|
|
|
536
598
|
width
|
|
537
599
|
}));
|
|
538
600
|
var EllipsisTableCellWithRef = /* @__PURE__ */ forwardRef3(({ children, href, link = false, to, value, ...props }, ref) => {
|
|
539
|
-
const data =
|
|
601
|
+
const data = useMemo2(() => {
|
|
540
602
|
if (children) {
|
|
541
603
|
return children;
|
|
542
604
|
}
|
|
@@ -861,10 +923,10 @@ var ResolvedDivinerContext = /* @__PURE__ */ __name(() => createContextEx(), "Re
|
|
|
861
923
|
|
|
862
924
|
// src/contexts/diviner/Provider.tsx
|
|
863
925
|
import { useResetState } from "@xylabs/react-hooks";
|
|
864
|
-
import React20, { useMemo as
|
|
926
|
+
import React20, { useMemo as useMemo3 } from "react";
|
|
865
927
|
var ResolvedDivinerProvider = /* @__PURE__ */ __name(({ diviner: divinerProp, required = false, children, context }) => {
|
|
866
928
|
const [diviner, setDiviner] = useResetState(divinerProp);
|
|
867
|
-
const value =
|
|
929
|
+
const value = useMemo3(() => {
|
|
868
930
|
const resolveDiviner = /* @__PURE__ */ __name(() => {
|
|
869
931
|
if (divinerProp) {
|
|
870
932
|
return diviner === divinerProp ? diviner : void 0;
|
|
@@ -890,10 +952,10 @@ var ResolvedDivinerProvider = /* @__PURE__ */ __name(({ diviner: divinerProp, re
|
|
|
890
952
|
var ListModeContext = createContextEx();
|
|
891
953
|
|
|
892
954
|
// src/contexts/ListMode/Provider.tsx
|
|
893
|
-
import React21, { useMemo as
|
|
955
|
+
import React21, { useMemo as useMemo4, useState as useState3 } from "react";
|
|
894
956
|
var ListModeProvider = /* @__PURE__ */ __name(({ children, defaultListMode }) => {
|
|
895
957
|
const [listMode, setListMode] = useState3(defaultListMode ?? "default");
|
|
896
|
-
const value =
|
|
958
|
+
const value = useMemo4(() => ({
|
|
897
959
|
listMode,
|
|
898
960
|
provided: true,
|
|
899
961
|
setListMode
|
|
@@ -1066,7 +1128,10 @@ export {
|
|
|
1066
1128
|
useMediaQuery,
|
|
1067
1129
|
usePayloadHash,
|
|
1068
1130
|
usePayloadHashes,
|
|
1131
|
+
usePayloadRootHash,
|
|
1132
|
+
usePayloadValidate,
|
|
1069
1133
|
useProvided,
|
|
1070
|
-
useShareForwardedRef
|
|
1134
|
+
useShareForwardedRef,
|
|
1135
|
+
useValidateBoundWitness
|
|
1071
1136
|
};
|
|
1072
1137
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/Ampersand.tsx","../../src/components/BasicHero/BasicHero.tsx","../../src/hooks/GradientStyles/GradientStyles.tsx","../../src/hooks/useDataState.ts","../../src/hooks/useIsMobile.ts","../../src/hooks/useMediaQuery.ts","../../src/hooks/usePayloadHash.ts","../../src/hooks/useShareForwardRef.ts","../../src/components/Ellipsize.tsx","../../src/components/LabeledTextFieldWrapper.tsx","../../src/components/ListItemButtonEx.tsx","../../src/components/LoadResult.tsx","../../src/components/NotFound.tsx","../../src/components/Pipe.tsx","../../src/components/pluginValidation/DataMissing.tsx","../../src/components/ScrollTableOnSm.tsx","../../src/components/SectionSpacingRow/SectionSpacingRow.tsx","../../src/components/TableCell/AddressTableCell.tsx","../../src/components/TableCell/EllipsisTableCell.tsx","../../src/components/TableCell/HashTableCell.tsx","../../src/components/ThemeTokenAvatar/ThemeTokenAvatar.tsx","../../src/components/ThemeTokenAvatarGroup/ThemeTokenAvatarGroup.tsx","../../src/components/TokenBar/TokenBar.tsx","../../src/components/TokenData/img/index.ts","../../src/components/TokenData/TokenData.ts","../../src/components/TokenData/useGetTokenData.tsx","../../src/components/TokenSummary/TokenSummary.tsx","../../src/components/TypographyEx.tsx","../../src/contexts/contextEx/create.ts","../../src/contexts/contextEx/use.ts","../../src/contexts/diviner/Context.ts","../../src/contexts/diviner/Provider.tsx","../../src/contexts/ListMode/Context.ts","../../src/contexts/ListMode/Provider.tsx","../../src/contexts/ListMode/use.ts","../../src/lib/assertDefinedEx.ts","../../src/lib/getActualPaddingX.ts","../../src/lib/networkComponents.tsx"],"sourcesContent":["import type { TypographyProps } from '@mui/material'\nimport { Typography } from '@mui/material'\nimport React from 'react'\n\nexport const Ampersand: React.FC<TypographyProps> = (props) => {\n return (\n <Typography marginX={1} component=\"span\" {...props}>\n &\n </Typography>\n )\n}\n","import {\n Container, Grid, Typography,\n} from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexGrowCol, FlexGrowRow } from '@xylabs/react-flexbox'\nimport { LinkEx } from '@xylabs/react-link'\nimport type { ReactElement } from 'react'\nimport React from 'react'\nimport type { To } from 'react-router-dom'\n\nimport { useGradientStyles, useIsSmall } from '../../hooks/index.ts'\n\nexport interface BasicHeroProps extends FlexBoxProps {\n backgroundColor?: string\n backgroundImage?: string\n button1Href?: string\n button1Text?: string\n button1To?: string\n button2Href?: string\n button2Text?: string\n button2To?: string\n desc: string\n gradientTitle?: string\n heroImage?: string\n subLinkIcon?: ReactElement\n subLinkPath?: string\n subLinkText1?: string\n subLinkText2?: string\n sx?: Record<string, string>\n textColor?: string\n title: string\n title2?: string\n}\n\ninterface SubLinkSectionProps {\n backgroundImageAlignment?: boolean\n subLinkIcon?: ReactElement\n subLinkPath?: string\n subLinkText1?: string\n subLinkText2?: string\n}\n\ninterface ButtonSectionBaseProps {\n buttonText?: string\n}\n\ninterface ButtonSectionHrefProps extends ButtonSectionBaseProps {\n href?: string\n to?: never\n}\n\ninterface ButtonSectionToProps extends ButtonSectionBaseProps {\n href?: never\n to?: To\n}\n\ninterface ButtonSectionClickProps extends ButtonSectionBaseProps {\n href?: never\n to?: never\n}\n\ntype ButtonSectionProps = ButtonSectionHrefProps | ButtonSectionToProps | ButtonSectionClickProps\n\nconst SubLinkSection: React.FC<SubLinkSectionProps> = ({\n backgroundImageAlignment, subLinkIcon, subLinkPath, subLinkText1, subLinkText2,\n}) => {\n return (\n <FlexGrowRow\n width=\"100%\"\n sx={{\n flexDirection: { md: 'row', xs: 'column' },\n justifyContent: { md: backgroundImageAlignment ? 'flex-start' : 'center', xs: 'center' },\n }}\n >\n {subLinkIcon\n ? (\n <span>\n {subLinkIcon}\n \n </span>\n )\n : null}\n <Typography>\n {subLinkText1}\n \n </Typography>\n <LinkEx href={subLinkPath} underline=\"always\" target=\"_blank\" color=\"inherit\">\n <Typography>{subLinkText2}</Typography>\n </LinkEx>\n </FlexGrowRow>\n )\n}\n\nconst ButtonSection: React.FC<ButtonSectionProps> = ({\n href, to, buttonText,\n}) => {\n const isMobile = useIsSmall()\n return href\n ? (\n <ButtonEx\n fullWidth={true}\n marginTop={1}\n marginBottom={1}\n marginRight={isMobile ? 2 : 1}\n marginLeft={isMobile ? 2 : 0}\n target={href ?? '_blank'}\n href={href}\n color=\"primary\"\n variant=\"contained\"\n paddingX={3}\n sx={{ display: href || to ? 'flex' : 'none' }}\n >\n {buttonText}\n </ButtonEx>\n )\n : to\n ? (\n <ButtonEx\n fullWidth={true}\n marginTop={1}\n marginBottom={1}\n marginRight={isMobile ? 2 : 1}\n marginLeft={isMobile ? 2 : 0}\n to={to}\n color=\"primary\"\n variant=\"contained\"\n paddingX={3}\n sx={{ display: href || to ? 'flex' : 'none' }}\n >\n {buttonText}\n </ButtonEx>\n )\n : (\n <ButtonEx\n fullWidth={true}\n marginTop={1}\n marginBottom={1}\n marginRight={isMobile ? 2 : 1}\n marginLeft={isMobile ? 2 : 0}\n color=\"primary\"\n variant=\"contained\"\n paddingX={3}\n sx={{ display: href || to ? 'flex' : 'none' }}\n >\n {buttonText}\n </ButtonEx>\n )\n}\n\n// eslint-disable-next-line complexity\nexport const BasicHero: React.FC<BasicHeroProps> = ({\n backgroundImage,\n title,\n gradientTitle,\n backgroundColor,\n textColor,\n desc,\n heroImage,\n title2,\n subLinkText1,\n subLinkText2,\n subLinkPath,\n button1Text,\n button2Text,\n button2To,\n button1To,\n button2Href,\n button1Href,\n subLinkIcon,\n sx,\n ...props\n}) => {\n const isMobile = useIsSmall()\n const { classes } = useGradientStyles()\n return (\n <FlexGrowCol\n sx={{\n backgroundImage: `url(${backgroundImage})`,\n backgroundPosition: {\n lg: 'bottom', md: 'center left', xs: 'top left',\n },\n minHeight: {\n md: '500px',\n sm: '400px',\n xs: '200px',\n },\n ...sx,\n }}\n style={{\n backgroundColor: backgroundColor ?? '',\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'cover',\n color: textColor ?? '',\n }}\n {...props}\n >\n <Container>\n <Grid\n container\n justifyContent=\"center\"\n alignItems=\"center\"\n sx={{\n alignItems: { xs: 'center' },\n justifyContent: { xs: 'center' },\n }}\n >\n <Grid item xs={12} sm={8} md={backgroundImage ? 6 : 8} lg={backgroundImage ? 6 : 8}>\n <FlexGrowCol paddingY={2} sx={{ alignItems: { xs: backgroundImage && !isMobile ? 'flex-start' : 'center' } }}>\n <Typography variant=\"h1\" component=\"h1\" gutterBottom textAlign={backgroundImage && !isMobile ? 'left' : 'center'}>\n {title\n ? <span>{`${title} `}</span>\n : null}\n {gradientTitle\n ? (\n <span className={classes().heading}>\n {' '}\n {` ${gradientTitle}`}\n </span>\n )\n : null}\n {title2\n ? <span>{` ${title2}`}</span>\n : null}\n </Typography>\n <Typography variant=\"body1\" component=\"h2\" gutterBottom textAlign={backgroundImage && !isMobile ? 'left' : 'center'}>\n {desc}\n </Typography>\n <FlexGrowRow\n sx={{ flexDirection: { lg: 'row', xs: 'column' } }}\n width=\"100%\"\n marginTop={1}\n >\n {\n button1Href\n ? <ButtonSection href={button1Href} buttonText={button1Text} />\n : button1To ? <ButtonSection to={button1To} buttonText={button1Text} /> : <ButtonSection buttonText={button1Text} />\n }\n {\n button2Href\n ? <ButtonSection href={button2Href} buttonText={button2Text} />\n : button2To ? <ButtonSection to={button2To} buttonText={button2Text} /> : <ButtonSection buttonText={button2Text} />\n }\n </FlexGrowRow>\n <SubLinkSection\n subLinkIcon={subLinkIcon}\n subLinkText1={subLinkText1}\n subLinkText2={subLinkText2}\n subLinkPath={subLinkPath}\n backgroundImageAlignment={backgroundImage ? true : false}\n />\n </FlexGrowCol>\n </Grid>\n <Grid item xs={12} md={6}>\n {heroImage\n ? <img src={heroImage} width=\"100%\" />\n : null}\n </Grid>\n </Grid>\n </Container>\n </FlexGrowCol>\n )\n}\n","import { useTheme } from '@mui/material'\nimport { makeStyles } from '@mui/styles'\nimport type { CSSProperties } from 'react'\n\nexport interface GradientStyles {\n background: CSSProperties\n border: CSSProperties\n heading: CSSProperties\n}\n\nexport const colorfulGradientLightMode = () => {\n return {\n background: { backgroundImage: '-webkit-linear-gradient(232deg, #e17751, #d84e7a, #5898dd, #8c8ee5)' },\n border: {\n borderImage: '-webkit-linear-gradient(232deg, #e17751, #d84e7a, #5898dd, #8c8ee5)',\n borderImageSlice: 1,\n borderImageSource: '-webkit-linear-gradient(232deg, #e17751, #d84e7a, #5898dd, #8c8ee5)',\n borderRadius: 0,\n borderStyle: 'solid',\n borderWidth: '2px',\n },\n heading: {\n WebkitBackgroundClip: 'text',\n WebkitTextFillColor: 'transparent',\n background: '-webkit-linear-gradient(232deg, #e17751, #d84e7a, #5898dd, #8c8ee5)',\n display: 'inline-block',\n },\n }\n}\n\nexport const colorfulGradientDarkMode = () => {\n return {\n background: { backgroundImage: '-webkit-linear-gradient(232deg, #F17938, #FF5BDC, #5898dd, #B2FFFD)' },\n border: {\n borderImage: '-webkit-linear-gradient(232deg, #F17938, #FF5BDC, #5898dd, #B2FFFD)',\n borderImageSlice: 1,\n borderImageSource: '-webkit-linear-gradient(232deg, #F17938, #FF5BDC, #5898dd, #B2FFFD)',\n borderRadius: 0,\n borderStyle: 'solid',\n borderWidth: '2px',\n },\n heading: {\n WebkitBackgroundClip: 'text',\n WebkitTextFillColor: 'transparent',\n background: '-webkit-linear-gradient(232deg, #F17938, #FF5BDC, #5898dd, #B2FFFD)',\n display: 'inline-block',\n },\n }\n}\n\nexport const useGradientStyles = () => {\n const theme = useTheme()\n const styles = theme.palette.mode === 'dark' ? colorfulGradientDarkMode() : colorfulGradientLightMode()\n const classes = makeStyles(styles)\n return { classes, styles }\n}\n","import type { Dispatch, SetStateAction } from 'react'\nimport { useState } from 'react'\n\nexport const useDataState = <T>(defaultValue: T | undefined): [T | undefined, Dispatch<SetStateAction<T | undefined>>] => {\n const [state, setState] = useState(defaultValue)\n\n const setDataState: Dispatch<SetStateAction<T | undefined>> = (value: SetStateAction<T | undefined>) => {\n try {\n if (JSON.stringify(value) !== JSON.stringify(state)) {\n setState(value)\n }\n } catch {\n console.error('setDataState failed! Make sure data type is stringifiable!')\n }\n }\n\n return [state, setDataState]\n}\n","import { useTheme } from '@mui/material'\n\nimport { useMediaQuery } from './useMediaQuery.ts'\n\n/** @deprecated use useIsSmall instead */\nexport const useIsMobile = () => {\n const theme = useTheme()\n return useMediaQuery(theme.breakpoints.down('md'))\n}\n\nexport const useIsSmall = () => {\n const theme = useTheme()\n return useMediaQuery(theme.breakpoints.down('md'))\n}\n","/* This file only exists to deal with the false positive lint error */\n\nexport { useMediaQuery } from '@mui/material'\n","import type { Hash } from '@xylabs/hex'\nimport { usePromise } from '@xylabs/react-promise'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload } from '@xyo-network/payload-model'\n\nexport const usePayloadHash = <TPayload extends Payload>(payload: TPayload | undefined | null) => {\n return usePromise(async () => (payload ? await PayloadBuilder.dataHash(payload) : undefined), [payload])[0]\n}\n\nexport const usePayloadHashes = <TPayload extends Payload>(payloads: TPayload[] | undefined | null) => {\n return usePromise(\n async () =>\n payloads\n ? await Promise.all(payloads.map<Promise<[TPayload, Hash]>>(async payload => [payload, await PayloadBuilder.dataHash(payload)]))\n : undefined,\n [payloads],\n )[0]\n}\n","import type { ForwardedRef } from 'react'\nimport { useEffect, useRef } from 'react'\n\nexport const useShareForwardedRef = <T>(forwardedRef: ForwardedRef<T>, refresh = 0) => {\n // final ref that will share value with forward ref. this is the one to be attached to components\n const innerRef = useRef<T>(null)\n\n useEffect(() => {\n if (!forwardedRef) {\n return\n }\n if (typeof forwardedRef === 'function') {\n forwardedRef(innerRef.current)\n return\n } else {\n forwardedRef.current = innerRef.current\n }\n }, [forwardedRef, refresh])\n\n return innerRef\n}\n","import type {\n BoxProps, TypographyProps, TypographyTypeMap,\n} from '@mui/material'\nimport {\n Box, styled, Typography,\n} from '@mui/material'\nimport type { PropsWithChildren } from 'react'\nimport React, {\n forwardRef, useCallback, useState,\n} from 'react'\n\nimport { useShareForwardedRef } from '../hooks/index.ts'\n\n/**\n * Heavily inspired by - https://stackoverflow.com/a/30362531/2803259\n */\n\nconst ComponentName = 'Ellipsize'\n\nexport interface EllipsizeRootProps extends BoxProps {\n beforeLineHeight?: string | number\n}\n\nconst EllipsizeRoot = styled(Box, {\n name: ComponentName,\n shouldForwardProp: prop => prop !== 'beforeLineHeight',\n slot: 'Root',\n})<EllipsizeRootProps>(({ beforeLineHeight }) => ({\n '&': {\n // because the cell content ends up absolutely positioned, the cell doesn't know the content height.\n // the pseudo element with a hidden character establishes the proper height of the content and hides it\n ':before': {\n content: \"'nbsp;'\",\n display: 'block',\n // take the pseudo element out of the `display: block` flow so it won't push against our actual content\n float: 'left',\n visibility: 'hidden',\n // since we are `display: block`, lineHeight is the height\n ...(beforeLineHeight && { lineHeight: beforeLineHeight }),\n },\n },\n}))\n\nconst EllipsizeInnerWrap = styled(Box, {\n name: ComponentName,\n slot: 'innerWrap',\n})(() => ({ position: 'relative' }))\n\nconst EllipsizeContentWrap = styled(Typography, {\n name: ComponentName,\n shouldForwardProp: prop => prop !== 'ellipsisPosition',\n slot: 'contentWrap',\n})<TypographyWithComponentProps>(({\n theme, ellipsisPosition, fontFamily,\n}) => {\n return theme.unstable_sx({\n fontFamily: fontFamily ?? 'monospace',\n left: 0,\n overflow: 'hidden',\n position: 'absolute',\n right: 0,\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n ...(ellipsisPosition === 'start'\n ? {\n direction: 'rtl',\n textAlign: 'left',\n }\n : {}),\n })\n})\n\nconst useClientHeight = () => {\n const [contentWrapHeight, setContentWrapHeight] = useState<string>()\n\n const contentWrapRef = useCallback((node: HTMLElement) => {\n if (node !== null) {\n setContentWrapHeight(node.clientHeight + 'px')\n }\n }, [])\n\n return { contentWrapHeight, contentWrapRef }\n}\n\nexport type TypographyWithComponentProps<D extends React.ElementType = TypographyTypeMap['defaultComponent'], P = {}> = TypographyProps<D, P> & {\n ellipsisPosition?: 'start' | 'end'\n}\n\nexport interface EllipsizeBoxProps extends BoxProps {\n disableSharedRef?: boolean\n ellipsisPosition?: 'start' | 'end'\n typographyProps?: TypographyWithComponentProps\n}\n\nexport const EllipsizeBox = forwardRef<HTMLDivElement, PropsWithChildren<EllipsizeBoxProps>>(\n ({\n children, ellipsisPosition = 'start', disableSharedRef, typographyProps, ...props\n }, ref) => {\n // Allow syncing of :before pseudo element height with contentWrapHeight\n const { contentWrapRef, contentWrapHeight } = useClientHeight()\n const sharedRef = useShareForwardedRef(ref)\n\n return (\n <EllipsizeRoot beforeLineHeight={!!sharedRef && !disableSharedRef ? contentWrapHeight : undefined} {...props} ref={sharedRef}>\n <EllipsizeInnerWrap>\n <EllipsizeContentWrap ref={contentWrapRef} component=\"span\" ellipsisPosition={ellipsisPosition} variant=\"body2\" {...typographyProps}>\n {children}\n </EllipsizeContentWrap>\n </EllipsizeInnerWrap>\n </EllipsizeRoot>\n )\n },\n)\nEllipsizeBox.displayName = 'EllipsizeBox'\n","import type { StackProps } from '@mui/material'\nimport { Stack, Typography } from '@mui/material'\nimport React from 'react'\n\nexport interface LabeledTextFieldWrapperProps extends StackProps {\n label: string\n}\n\nexport const LabeledTextFieldWrapper: React.FC<LabeledTextFieldWrapperProps> = ({\n children, label, ...props\n}) => {\n return (\n <Stack flexDirection=\"column\" {...props}>\n <Typography gutterBottom variant=\"caption\">\n {label}\n </Typography>\n {children}\n </Stack>\n )\n}\n","import type { ListItemButtonProps } from '@mui/material'\nimport { ListItemButton } from '@mui/material'\nimport type { MouseEvent } from 'react'\nimport React from 'react'\nimport type { NavigateOptions, To } from 'react-router-dom'\nimport { useNavigate } from 'react-router-dom'\n\nexport interface ListItemButtonExProps extends ListItemButtonProps {\n target?: string\n to?: To\n toOptions?: NavigateOptions\n}\n\nexport const ListItemButtonExTo: React.FC<ListItemButtonExProps> = ({\n to, toOptions, onClick, ...props\n}) => {\n const navigate = useNavigate()\n const localOnClick = (event: MouseEvent<HTMLDivElement>) => {\n onClick?.(event)\n if (to) {\n void navigate(to, toOptions)\n }\n }\n\n return <ListItemButton onClick={localOnClick} {...props} />\n}\n\nexport const ListItemButtonEx: React.FC<ListItemButtonExProps> = ({ to, ...props }) => {\n return to ? <ListItemButtonExTo to={to} {...props} /> : <ListItemButton {...props} />\n}\n","import { FlexGrowRow } from '@xylabs/react-flexbox'\nimport type { PropsWithChildren } from 'react'\nimport React from 'react'\n\nimport { NotFound } from './NotFound.tsx'\n\nexport interface LoadResultProps<T> {\n /** @deprecated - use error prop */\n apiError?: Error\n /** Defer error handling to the children and load them */\n error?: boolean\n notFound: boolean\n searchResult: T | undefined\n}\n\nexport function LoadResult<T>(props: PropsWithChildren<LoadResultProps<T>>) {\n const {\n notFound, error, searchResult, children,\n } = props\n if (notFound) {\n return <NotFound />\n }\n if (error) {\n return <>{children}</>\n }\n return searchResult === undefined ? <FlexGrowRow busy minHeight=\"50px\" /> : <>{children}</>\n}\n","import { Typography } from '@mui/material'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexGrowCol } from '@xylabs/react-flexbox'\nimport React from 'react'\n\n/** @deprecated use from @@xylabs/react-shared instead */\nexport const NotFound: React.FC<FlexBoxProps> = (props) => {\n return (\n <FlexGrowCol {...props}>\n <Typography variant=\"h2\">Sorry!</Typography>\n <Typography marginY={3} variant=\"body2\">\n {'Can\\'t find anything here'}\n </Typography>\n </FlexGrowCol>\n )\n}\n","import type { TypographyProps } from '@mui/material'\nimport { Typography } from '@mui/material'\nimport React from 'react'\n\nexport const Pipe: React.FC<TypographyProps> = (props) => {\n return (\n <Typography marginX={1} component=\"span\" {...props}>\n |\n </Typography>\n )\n}\n","import type { AlertProps } from '@mui/material'\nimport { Alert, AlertTitle } from '@mui/material'\nimport React from 'react'\n\nexport interface PayloadDataMissingProps extends AlertProps {\n alertBody?: string\n}\n\nexport const PayloadDataMissing: React.FC<PayloadDataMissingProps> = ({ alertBody, ...props }) => {\n return (\n <Alert severity=\"warning\" {...props}>\n <AlertTitle>Missing Data</AlertTitle>\n {alertBody ?? 'Payload is missing required data to render correctly'}\n </Alert>\n )\n}\n","import { styled } from '@mui/material'\nimport type { PropsWithChildren } from 'react'\nimport React from 'react'\n\nconst StyledScrollTableOnSm = styled('div')(({ theme }) => ({\n [theme.breakpoints.down('md')]: { overflowX: 'scroll' },\n display: 'flex',\n flexGrow: 1,\n}))\n\nconst ScrollTableOnSm: React.FC<PropsWithChildren> = ({ children }) => <StyledScrollTableOnSm>{children}</StyledScrollTableOnSm>\n\nexport { ScrollTableOnSm }\n","import { useTheme } from '@mui/material'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexGrowRow } from '@xylabs/react-flexbox'\nimport React, { forwardRef } from 'react'\n\nexport const SectionSpacingRow = forwardRef<HTMLDivElement, FlexBoxProps>(({\n children, sx, ...props\n}, ref) => {\n const theme = useTheme()\n return (\n <FlexGrowRow\n sx={{\n paddingBottom: { md: theme.spacing(5), xs: theme.spacing(5) },\n paddingTop: { md: theme.spacing(5), xs: theme.spacing(5) },\n ...sx,\n }}\n width=\"100%\"\n ref={ref}\n {...props}\n >\n {children}\n </FlexGrowRow>\n )\n})\n\nSectionSpacingRow.displayName = 'SectionSpacingRow'\n","import React, { forwardRef } from 'react'\n\nimport type { EllipsisTableCellProps } from './EllipsisTableCell.tsx'\nimport { EllipsisTableCell } from './EllipsisTableCell.tsx'\n\nexport interface AddressTableCellProps extends Omit<EllipsisTableCellProps, 'ref'> {\n /** @deprecated - archives are no longer supported */\n archive?: string\n /** @deprecated - use events instead */\n exploreDomain?: string\n link?: boolean\n}\n\nconst AddressTableCell = forwardRef<HTMLDivElement, AddressTableCellProps>(({\n value, archive, exploreDomain, link, ...props\n}, ref) => {\n const href = exploreDomain && archive ? `${exploreDomain}/archive/${archive}/address/${value}` : undefined\n const to = exploreDomain === undefined && archive ? `/archive/${archive}/address/${value}` : undefined\n\n return <EllipsisTableCell value={value} href={href} to={to} ref={ref} link={link} {...props} />\n})\n\nAddressTableCell.displayName = 'AddressTableCell'\nexport { AddressTableCell }\n","import type { TableCellProps } from '@mui/material'\nimport { styled, TableCell } from '@mui/material'\nimport { asLinkHrefOrToProps, LinkEx } from '@xylabs/react-link'\nimport React, { forwardRef, useMemo } from 'react'\nimport type { To } from 'react-router-dom'\n\nimport { EllipsizeBox } from '../Ellipsize.tsx'\n\nconst EllipsisTableCellRoot = styled(TableCell, {\n name: 'EllipsisTableCell',\n shouldForwardProp: prop => prop !== 'width',\n slot: 'Root',\n})(({ width = '100%' }) => ({ width }))\n\nexport interface EllipsisTableCellProps extends Omit<TableCellProps, 'ref'> {\n href?: string\n link?: boolean\n to?: To\n value?: string\n /**\n * Width of the table cell.\n *\n * Note: When using percentages, this value can be different than what you expect\n * if used on a cell that is not the first cell in the first row.\n */\n width?: string | number\n}\n\nexport const EllipsisTableCellWithRef = forwardRef<HTMLDivElement, EllipsisTableCellProps>(\n ({\n children, href, link = false, to, value, ...props\n }, ref) => {\n const data = useMemo(() => {\n if (children) {\n return children\n }\n if (href || link || to) {\n return (\n <LinkEx title={value} {...asLinkHrefOrToProps({ to, href })} target={href ? '_blank' : undefined}>\n {value}\n </LinkEx>\n )\n }\n return value\n }, [children, href, link, to, value])\n return (\n <EllipsisTableCellRoot {...props}>\n <EllipsizeBox ref={ref} sx={{ cursor: link || to || href ? 'pointer' : 'inherit' }}>{data}</EllipsizeBox>\n </EllipsisTableCellRoot>\n )\n },\n)\n\nEllipsisTableCellWithRef.displayName = 'EllipsisTableCell'\nexport const EllipsisTableCell = EllipsisTableCellWithRef\n","import type { Hash } from '@xylabs/hex'\nimport { useEvent } from '@xyo-network/react-event'\nimport React, { useRef } from 'react'\n\nimport type { EllipsisTableCellProps } from './EllipsisTableCell.tsx'\nimport { EllipsisTableCell } from './EllipsisTableCell.tsx'\n\nexport interface HashTableCellProps extends EllipsisTableCellProps {\n archive?: string\n dataType?: 'block' | 'payload'\n exploreDomain?: string\n network?: string\n onHashClick?: (value: Hash) => void\n}\n\nexport const HashTableCell: React.FC<HashTableCellProps> = ({\n value, archive, dataType, network, exploreDomain, onHashClick, ...props\n}) => {\n const ref = useRef<HTMLTableCellElement | null>(null)\n const [tableCellRef, dispatch] = useEvent<HTMLTableCellElement>(undefined, ref)\n const hashPath = `/${dataType}/hash/${value}?network=${network ?? 'main'}`\n const explorePath = archive ? `/archive/${archive}${hashPath}` : hashPath\n\n const handleCellClick = () => {\n if (onHashClick) {\n onHashClick(value as Hash)\n } else {\n dispatch?.('hash', 'click', value as Hash)\n }\n }\n\n return (\n <EllipsisTableCell\n onClick={handleCellClick}\n ref={tableCellRef}\n value={value}\n href={exploreDomain ? `${exploreDomain}${explorePath}}` : undefined}\n to={exploreDomain ? undefined : explorePath}\n {...props}\n />\n )\n}\n","import type { AvatarProps } from '@mui/material'\nimport { Avatar, useTheme } from '@mui/material'\nimport React from 'react'\n\nexport const ThemeTokenAvatar: React.FC<AvatarProps> = ({ ...props }) => {\n const theme = useTheme()\n return <Avatar sx={{ background: theme.palette.common.white }} {...props} />\n}\n","import type { AvatarGroupProps } from '@mui/material'\nimport { AvatarGroup } from '@mui/material'\nimport React from 'react'\n\nimport { ThemeTokenAvatar } from '../ThemeTokenAvatar/index.ts'\n\nexport interface ThemeTokenAvatarGroupProps extends AvatarGroupProps {\n images?: string[]\n}\n\nexport const ThemeTokenAvatarGroup: React.FC<ThemeTokenAvatarGroupProps> = ({ images, ...props }) => {\n return <AvatarGroup {...props}>{images?.map((image, index) => <ThemeTokenAvatar key={index} src={image} />)}</AvatarGroup>\n}\n","import type { PaperProps, TypographyProps } from '@mui/material'\nimport { Paper, Typography } from '@mui/material'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport type { ReactNode } from 'react'\nimport React from 'react'\nexport interface TokenBarProps extends PaperProps {\n text1?: ReactNode\n text1Props?: TypographyProps\n text1Suffix?: ReactNode\n text2?: ReactNode\n text2Props?: TypographyProps\n text2Suffix?: ReactNode\n}\n\nexport const TokenBar: React.FC<TokenBarProps> = ({\n text1, text1Props, text1Suffix, text2, text2Props, text2Suffix, ...props\n}) => {\n return (\n <Paper elevation={0} className=\"TokenBar-root\" {...props}>\n <FlexRow justifyContent=\"space-between\">\n <Typography variant=\"body1\" fontWeight={300} margin={1} {...text1Props}>\n {text1}\n {text1Suffix}\n </Typography>\n <Typography variant=\"body1\" fontWeight={300} textTransform=\"uppercase\" color=\"gray\" margin={1} {...text2Props}>\n {text2}\n {text2Suffix}\n </Typography>\n </FlexRow>\n </Paper>\n )\n}\n","export { default as ada } from './ada.png'\nexport { default as btc } from './btc.png'\nexport { default as busd } from './busd.png'\nexport { default as dai } from './dai.png'\nexport { default as dogecoin } from './dogecoin.png'\nexport { default as dot } from './dot.png'\nexport { default as ethereum } from './ethereum.png'\nexport { default as frax } from './frax.png'\nexport { default as link } from './link.png'\nexport { default as sol } from './sol.png'\nexport { default as tether } from './tether.png'\nexport { default as usdCoin } from './usd-coin.png'\nexport { default as weth } from './weth.png'\nexport { default as wrappedBtc } from './wrapped-bitcoin.png'\nexport { default as xyo } from './xyo.png'\n","import * as tokenImages from './img/index.ts'\n\nexport interface TokenData {\n coinmarketcapLink: string\n etherscanLink: string\n icon: string\n readableName: string\n tokenSymbol: string\n uniqueTokenId: string\n}\n\nexport const TokenData: TokenData[] = [\n {\n coinmarketcapLink: 'https://coinmarketcap.com/currencies/multi-collateral-dai/',\n etherscanLink: 'https://etherscan.io/token/0x6b175474e89094c44da98b954eedeac495271d0f',\n icon: tokenImages.dai,\n readableName: 'Dai',\n tokenSymbol: 'dai',\n uniqueTokenId: 'dai',\n },\n {\n coinmarketcapLink: 'https://coinmarketcap.com/currencies/weth/',\n etherscanLink: 'https://etherscan.io/token/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',\n icon: tokenImages.weth,\n readableName: 'Weth',\n tokenSymbol: 'weth',\n uniqueTokenId: 'weth',\n },\n {\n coinmarketcapLink: 'https://coinmarketcap.com/currencies/ethereum/',\n etherscanLink: 'n/a',\n icon: tokenImages.ethereum,\n readableName: 'Ethereum',\n tokenSymbol: 'eth',\n uniqueTokenId: 'ethereum',\n },\n {\n coinmarketcapLink: 'https://coinmarketcap.com/currencies/bitcoin/',\n etherscanLink: 'n/a',\n icon: tokenImages.btc,\n readableName: 'Bitcoin',\n tokenSymbol: 'btc',\n uniqueTokenId: 'btc',\n },\n {\n coinmarketcapLink: 'https://coinmarketcap.com/currencies/xyo/',\n etherscanLink: 'https://etherscan.io/token/0x55296f69f40ea6d20e478533c15a6b08b654e758',\n icon: tokenImages.xyo,\n readableName: 'XYO',\n tokenSymbol: 'xyo',\n uniqueTokenId: 'xyo',\n },\n {\n coinmarketcapLink: 'https://coinmarketcap.com/currencies/frax/',\n etherscanLink: 'https://etherscan.io/token/0x853d955acef822db058eb8505911ed77f175b99e',\n icon: tokenImages.frax,\n readableName: 'Frax',\n tokenSymbol: 'frax',\n uniqueTokenId: 'frax',\n },\n {\n coinmarketcapLink: 'https://coinmarketcap.com/currencies/wrapped-bitcoin/',\n etherscanLink: 'https://etherscan.io/token/0x2260fac5e5542a773aa44fbcfedf7c193bc2c599',\n icon: tokenImages.wrappedBtc,\n readableName: 'Wrapped BTC',\n tokenSymbol: 'wbtc',\n uniqueTokenId: 'wbtc',\n },\n {\n coinmarketcapLink: 'https://coinmarketcap.com/currencies/usd-coin/',\n etherscanLink: 'https://etherscan.io/token/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',\n icon: tokenImages.usdCoin,\n readableName: 'USDC',\n tokenSymbol: 'usdc',\n uniqueTokenId: 'usdc',\n },\n {\n coinmarketcapLink: 'https://coinmarketcap.com/currencies/tether/',\n etherscanLink: 'https://etherscan.io/token/0xdac17f958d2ee523a2206206994597c13d831ec7',\n icon: tokenImages.tether,\n readableName: 'Tether',\n tokenSymbol: 'usdt',\n uniqueTokenId: 'usdt',\n },\n {\n coinmarketcapLink: 'https://coinmarketcap.com/currencies/cardano/',\n etherscanLink: 'https://etherscan.io/token/0xc14777c94229582e5758c5a79b83dde876b9be98',\n icon: tokenImages.ada,\n readableName: 'Cardano',\n tokenSymbol: 'ada',\n uniqueTokenId: 'ada',\n },\n {\n coinmarketcapLink: 'https://coinmarketcap.com/currencies/binance-usd/',\n etherscanLink: 'https://etherscan.io/token/0x4Fabb145d64652a948d72533023f6E7A623C7C53',\n icon: tokenImages.busd,\n readableName: 'Binance USD',\n tokenSymbol: 'busd',\n uniqueTokenId: 'busd',\n },\n {\n coinmarketcapLink: 'https://coinmarketcap.com/currencies/dogecoin/',\n etherscanLink: 'https://etherscan.io/token/0x7618b5024a6349f9aef10ddfd33e3428c734551e',\n icon: tokenImages.dogecoin,\n readableName: 'Dogecoin',\n tokenSymbol: 'doge',\n uniqueTokenId: 'doge',\n },\n {\n coinmarketcapLink: 'https://coinmarketcap.com/currencies/polkadot-new/',\n etherscanLink: 'https://etherscan.io/token/0x2d4fb6dd969992c881d8e534c747cc925d5ba221',\n icon: tokenImages.dot,\n readableName: 'Polkadot',\n tokenSymbol: 'dot',\n uniqueTokenId: 'dot',\n },\n {\n coinmarketcapLink: 'https://coinmarketcap.com/currencies/chainlink/',\n etherscanLink: 'https://etherscan.io/token/0x514910771af9ca656af840dff83e8264ecf986ca',\n icon: tokenImages.link,\n readableName: 'ChainLink',\n tokenSymbol: 'link',\n uniqueTokenId: 'link',\n },\n {\n coinmarketcapLink: 'https://coinmarketcap.com/currencies/solana/',\n etherscanLink: 'https://etherscan.io/token/0x1f54638b7737193ffd86c19ec51907a7c41755d8',\n icon: tokenImages.sol,\n readableName: 'Solana',\n tokenSymbol: 'sol',\n uniqueTokenId: 'sol',\n },\n]\n","import { TokenData } from './TokenData.ts'\n\n// eslint-disable-next-line @eslint-react/hooks-extra/no-useless-custom-hooks\nexport const useGetTokenData = (symbols: (string | undefined)[]) => {\n return symbols?.map((symbol) => {\n const additionalTokenData = TokenData.find(x => x.tokenSymbol === symbol)\n const checkedTokenData = additionalTokenData ?? TokenData[0]\n return checkedTokenData\n })\n}\n","import type { AvatarProps, CardHeaderProps } from '@mui/material'\nimport { CardHeader, Typography } from '@mui/material'\nimport type { ReactNode } from 'react'\nimport React from 'react'\n\nimport { ThemeTokenAvatar } from '../ThemeTokenAvatar/index.ts'\n\nexport interface TokenSummaryProps extends CardHeaderProps {\n icon?: string\n imgBgProps?: AvatarProps\n symbol?: string\n symbolElement?: ReactNode\n}\n\nexport const TokenSummary: React.FC<TokenSummaryProps> = ({\n icon, symbol, symbolElement, children, ...props\n}) => {\n return (\n <>\n <CardHeader\n avatar={<ThemeTokenAvatar src={icon} alt={symbol} />}\n title={(\n <Typography variant=\"h6\" fontWeight={300} textTransform=\"uppercase\">\n {symbolElement ?? symbol}\n </Typography>\n )}\n {...props}\n />\n {children}\n </>\n )\n}\n","import type { TypographyProps } from '@mui/material'\nimport { Typography } from '@mui/material'\nimport React from 'react'\n\nimport { useGradientStyles } from '../hooks/index.ts'\n\nexport interface TypographyExProps extends TypographyProps {\n gradient?: 'text'\n}\n\nexport const TypographyEx: React.FC<TypographyExProps> = ({ gradient, ...props }) => {\n const { classes } = useGradientStyles()\n return <Typography className={gradient === 'text' ? classes().heading : undefined} {...props} />\n}\n","import { createContext } from 'react'\n\nimport type { ContextExState } from './State.ts'\n\nexport const createContextEx = <T>() => createContext<T & ContextExState>({ provided: false } as T & ContextExState)\n","import type { Context } from 'react'\nimport { useContext } from 'react'\n\nimport type { ContextExState } from './State.ts'\n\nexport const useContextEx = <T extends ContextExState>(context: Context<T>, contextName: string, required = true) => {\n const { provided, ...props } = useContext(context)\n if (!provided && required) {\n throw new Error(`use${contextName} can not be used outside of a ${contextName}Context when required=true`)\n }\n return props\n}\n\nexport const useProvided = <T extends ContextExState>(context: Context<T>) => {\n const { provided } = useContext(context)\n return provided\n}\n","import { createContextEx } from '../contextEx/index.ts'\n\nexport const ResolvedDivinerContext = <T>() => createContextEx<T>()\n","import { useResetState } from '@xylabs/react-hooks'\nimport type { Context, PropsWithChildren } from 'react'\nimport React, { useMemo } from 'react'\n\nimport type { ContextExProviderProps } from '../contextEx/index.ts'\nimport type { ResolvedDivinerState } from './State.ts'\n\nexport interface DivinerProviderProps<D> extends ContextExProviderProps, PropsWithChildren {\n context: Context<ResolvedDivinerState<D>>\n diviner?: D\n}\n\n/** Exposes a resolved diviner */\nexport const ResolvedDivinerProvider = <D,>({\n diviner: divinerProp, required = false, children, context,\n}: DivinerProviderProps<D>) => {\n const [diviner, setDiviner] = useResetState<D | undefined>(divinerProp)\n\n const value = useMemo(() => {\n const resolveDiviner = () => {\n if (divinerProp) {\n return diviner === divinerProp ? diviner : undefined\n } else {\n return diviner\n }\n }\n return {\n diviner: resolveDiviner(),\n provided: true,\n setDiviner,\n }\n }, [\n setDiviner, divinerProp])\n\n return (\n <context.Provider\n value={value}\n >\n {diviner\n ? children\n : required\n ? null\n : children}\n </context.Provider>\n )\n}\n","import { createContextEx } from '../contextEx/index.ts'\nimport type { ListModeContextState } from './State.ts'\n\nexport const ListModeContext = createContextEx<ListModeContextState>()\n","import type { PropsWithChildren } from 'react'\nimport React, { useMemo, useState } from 'react'\n\nimport type { ListMode } from '../../models/index.ts'\nimport { ListModeContext } from './Context.ts'\n\nexport interface ListModeProviderProps {\n defaultListMode?: ListMode\n}\n\nexport const ListModeProvider: React.FC<PropsWithChildren<ListModeProviderProps>> = ({ children, defaultListMode }) => {\n const [listMode, setListMode] = useState(defaultListMode ?? 'default')\n\n const value = useMemo(() => ({\n listMode,\n provided: true,\n setListMode,\n }), [listMode,\n setListMode])\n\n return (\n <ListModeContext.Provider\n value={value}\n >\n {children}\n </ListModeContext.Provider>\n )\n}\n","import { useContextEx } from '../contextEx/index.ts'\nimport { ListModeContext } from './Context.ts'\n\nexport const useListMode = (required = false) => {\n return useContextEx(ListModeContext, 'ListMode', required)\n}\n","/**\n * @deprecated use from @xylabs/assert instead\n * */\nexport const assertDefinedEx = <T>(expr?: T | null, message?: string): T => {\n if (expr !== null && expr !== undefined) return expr\n throw new Error(message)\n}\n","export const parseMeausureString = (measure?: string, absolute?: number) => {\n if (measure !== undefined && measure !== null && measure.length > 0) {\n if (measure.endsWith('px')) {\n return Number.parseFloat(measure.slice(0, Math.max(0, measure.length - 2)))\n } else if (measure.endsWith('%')) {\n if (absolute !== undefined) {\n return (Number.parseFloat(measure.slice(0, Math.max(0, measure.length - 1))) / 100) * absolute\n }\n throw new Error('Error Parsing Measure [missing absolute]')\n } else if (measure.endsWith('vw')) {\n return (Number.parseFloat(measure.slice(0, Math.max(0, measure.length - 2))) / 100) * window.innerWidth\n } else if (measure.endsWith('vh')) {\n return (Number.parseFloat(measure.slice(0, Math.max(0, measure.length - 2))) / 100) * window.innerHeight\n }\n throw new Error(`Error Parsing Measure [${measure}]`)\n }\n}\n\nexport const parsePadding = (padding: string) => {\n const parts = padding.split(' ')\n switch (parts.length) {\n case 4: {\n return {\n bottom: parts[2],\n left: parts[3],\n right: parts[1],\n top: parts[0],\n }\n }\n case 3: {\n return {\n bottom: parts[2],\n right: parts[1],\n top: parts[0],\n }\n }\n case 2: {\n return {\n bottom: parts[0],\n left: parts[1],\n right: parts[1],\n top: parts[0],\n }\n }\n case 1: {\n return {\n bottom: parts[0],\n left: parts[0],\n right: parts[0],\n top: parts[0],\n }\n }\n }\n}\n\nexport const getActualPaddingX = (element: HTMLElement) => {\n const padding = parsePadding(globalThis.getComputedStyle(element, null).getPropertyValue('padding'))\n const paddingLeft\n = parseMeausureString(globalThis.getComputedStyle(element, null).getPropertyValue('padding-left') ?? padding?.left, element.clientWidth) ?? 0\n const paddingRight\n = parseMeausureString(globalThis.getComputedStyle(element, null).getPropertyValue('padding-right') ?? padding?.right, element.clientWidth) ?? 0\n return paddingLeft + paddingRight\n}\n","import {\n BubbleChartRounded as BubbleChartRoundedIcon,\n HubRounded as HubRoundedIcon,\n InsertLinkRounded as InsertLinkRoundedIcon,\n Inventory2Rounded as Inventory2RoundedIcon,\n TimerRounded as TimerRoundedIcon,\n VisibilityRounded as VisibilityRoundedIcon,\n} from '@mui/icons-material'\nimport type { SvgIconProps } from '@mui/material'\nimport type { ReactElement } from 'react'\nimport React from 'react'\n\nexport type NetworkComponentSlug = 'sentinel' | 'bridge' | 'archivist' | 'diviner' | 'node' | 'witness'\n\nexport interface NetworkComponentDetails {\n icon: (props?: SvgIconProps) => ReactElement\n name: string\n slug: NetworkComponentSlug\n}\n\nexport const networkComponents: NetworkComponentDetails[] = [\n {\n icon: props => <HubRoundedIcon {...props} />, name: 'Node', slug: 'node',\n },\n {\n icon: props => <TimerRoundedIcon {...props} />, name: 'Sentinel', slug: 'sentinel',\n },\n {\n icon: props => <InsertLinkRoundedIcon {...props} />, name: 'Bridge', slug: 'bridge',\n },\n {\n icon: props => <Inventory2RoundedIcon {...props} />, name: 'Archivist', slug: 'archivist',\n },\n {\n icon: props => <BubbleChartRoundedIcon {...props} />, name: 'Diviner', slug: 'diviner',\n },\n {\n icon: props => <VisibilityRoundedIcon {...props} />, name: 'Witness', slug: 'witness',\n },\n]\n\nexport const findNetworkComponentIndex = (slug: string) => {\n return networkComponents.findIndex(info => info.slug === slug)\n}\n\nexport const findNetworkComponent = (slug: string) => {\n return networkComponents.find(info => info.slug === slug)\n}\n"],"mappings":"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","names":["Typography","React","Ampersand","props","Typography","marginX","component","Container","Grid","Typography","ButtonEx","FlexGrowCol","FlexGrowRow","LinkEx","React","useTheme","makeStyles","colorfulGradientLightMode","background","backgroundImage","border","borderImage","borderImageSlice","borderImageSource","borderRadius","borderStyle","borderWidth","heading","WebkitBackgroundClip","WebkitTextFillColor","display","colorfulGradientDarkMode","useGradientStyles","theme","useTheme","styles","palette","mode","classes","makeStyles","useState","useDataState","defaultValue","state","setState","useState","setDataState","value","JSON","stringify","console","error","useTheme","useMediaQuery","useIsMobile","theme","useTheme","useMediaQuery","breakpoints","down","useIsSmall","usePromise","PayloadBuilder","usePayloadHash","payload","usePromise","PayloadBuilder","dataHash","undefined","usePayloadHashes","payloads","Promise","all","map","useEffect","useRef","useShareForwardedRef","forwardedRef","refresh","innerRef","useRef","useEffect","current","SubLinkSection","backgroundImageAlignment","subLinkIcon","subLinkPath","subLinkText1","subLinkText2","React","FlexGrowRow","width","sx","flexDirection","md","xs","justifyContent","span","Typography","LinkEx","href","underline","target","color","ButtonSection","to","buttonText","isMobile","useIsSmall","ButtonEx","fullWidth","marginTop","marginBottom","marginRight","marginLeft","variant","paddingX","display","BasicHero","backgroundImage","title","gradientTitle","backgroundColor","textColor","desc","heroImage","title2","button1Text","button2Text","button2To","button1To","button2Href","button1Href","props","classes","useGradientStyles","FlexGrowCol","backgroundPosition","lg","minHeight","sm","style","backgroundRepeat","backgroundSize","Container","Grid","container","alignItems","item","paddingY","component","gutterBottom","textAlign","className","heading","img","src","Box","styled","Typography","React","forwardRef","useCallback","useState","ComponentName","EllipsizeRoot","styled","Box","name","shouldForwardProp","prop","slot","beforeLineHeight","content","display","float","visibility","lineHeight","EllipsizeInnerWrap","position","EllipsizeContentWrap","Typography","theme","ellipsisPosition","fontFamily","unstable_sx","left","overflow","right","textOverflow","whiteSpace","direction","textAlign","useClientHeight","contentWrapHeight","setContentWrapHeight","useState","contentWrapRef","useCallback","node","clientHeight","EllipsizeBox","forwardRef","children","disableSharedRef","typographyProps","props","ref","sharedRef","useShareForwardedRef","React","undefined","component","variant","displayName","Stack","Typography","React","LabeledTextFieldWrapper","children","label","props","React","Stack","flexDirection","Typography","gutterBottom","variant","ListItemButton","React","useNavigate","ListItemButtonExTo","to","toOptions","onClick","props","navigate","useNavigate","localOnClick","event","React","ListItemButton","ListItemButtonEx","FlexGrowRow","React","Typography","FlexGrowCol","React","NotFound","props","React","FlexGrowCol","Typography","variant","marginY","LoadResult","props","notFound","error","searchResult","children","React","NotFound","undefined","FlexGrowRow","busy","minHeight","Typography","React","Pipe","props","React","Typography","marginX","component","Alert","AlertTitle","React","PayloadDataMissing","alertBody","props","React","Alert","severity","AlertTitle","styled","React","StyledScrollTableOnSm","styled","theme","breakpoints","down","overflowX","display","flexGrow","ScrollTableOnSm","children","React","useTheme","FlexGrowRow","React","forwardRef","SectionSpacingRow","children","sx","props","ref","theme","paddingBottom","md","spacing","xs","paddingTop","width","displayName","React","forwardRef","styled","TableCell","asLinkHrefOrToProps","LinkEx","React","forwardRef","useMemo","EllipsisTableCellRoot","styled","TableCell","name","shouldForwardProp","prop","slot","width","EllipsisTableCellWithRef","forwardRef","children","href","link","to","value","props","ref","data","useMemo","React","LinkEx","title","asLinkHrefOrToProps","target","undefined","EllipsizeBox","sx","cursor","displayName","EllipsisTableCell","AddressTableCell","forwardRef","value","archive","exploreDomain","link","props","ref","href","undefined","to","React","EllipsisTableCell","displayName","useEvent","React","useRef","HashTableCell","value","archive","dataType","network","exploreDomain","onHashClick","props","ref","useRef","tableCellRef","dispatch","useEvent","undefined","hashPath","explorePath","handleCellClick","React","EllipsisTableCell","onClick","href","to","Avatar","useTheme","React","ThemeTokenAvatar","props","theme","useTheme","React","Avatar","sx","background","palette","common","white","AvatarGroup","React","ThemeTokenAvatarGroup","images","props","React","AvatarGroup","map","image","index","ThemeTokenAvatar","key","src","Paper","Typography","FlexRow","React","TokenBar","text1","text1Props","text1Suffix","text2","text2Props","text2Suffix","props","React","Paper","elevation","className","FlexRow","justifyContent","Typography","variant","fontWeight","margin","textTransform","color","ada","default","btc","busd","dai","dogecoin","dot","ethereum","frax","link","sol","tether","usdCoin","weth","wrappedBtc","xyo","TokenData","coinmarketcapLink","etherscanLink","icon","dai","readableName","tokenSymbol","uniqueTokenId","weth","ethereum","btc","xyo","frax","wrappedBtc","usdCoin","tether","ada","busd","dogecoin","dot","link","sol","useGetTokenData","symbols","map","symbol","additionalTokenData","TokenData","find","x","tokenSymbol","checkedTokenData","CardHeader","Typography","React","TokenSummary","icon","symbol","symbolElement","children","props","React","CardHeader","avatar","ThemeTokenAvatar","src","alt","title","Typography","variant","fontWeight","textTransform","Typography","React","TypographyEx","gradient","props","classes","useGradientStyles","React","Typography","className","heading","undefined","createContext","createContextEx","createContext","provided","useContext","useContextEx","context","contextName","required","provided","props","useContext","Error","useProvided","ResolvedDivinerContext","createContextEx","useResetState","React","useMemo","ResolvedDivinerProvider","diviner","divinerProp","required","children","context","setDiviner","useResetState","value","useMemo","resolveDiviner","undefined","provided","React","Provider","ListModeContext","createContextEx","React","useMemo","useState","ListModeProvider","children","defaultListMode","listMode","setListMode","useState","value","useMemo","provided","React","ListModeContext","Provider","useListMode","required","useContextEx","ListModeContext","assertDefinedEx","expr","message","undefined","Error","parseMeausureString","measure","absolute","undefined","length","endsWith","Number","parseFloat","slice","Math","max","Error","window","innerWidth","innerHeight","parsePadding","padding","parts","split","bottom","left","right","top","getActualPaddingX","element","globalThis","getComputedStyle","getPropertyValue","paddingLeft","clientWidth","paddingRight","BubbleChartRounded","BubbleChartRoundedIcon","HubRounded","HubRoundedIcon","InsertLinkRounded","InsertLinkRoundedIcon","Inventory2Rounded","Inventory2RoundedIcon","TimerRounded","TimerRoundedIcon","VisibilityRounded","VisibilityRoundedIcon","React","networkComponents","icon","props","React","HubRoundedIcon","name","slug","TimerRoundedIcon","InsertLinkRoundedIcon","Inventory2RoundedIcon","BubbleChartRoundedIcon","VisibilityRoundedIcon","findNetworkComponentIndex","findIndex","info","findNetworkComponent","find"]}
|
|
1
|
+
{"version":3,"sources":["../../src/components/Ampersand.tsx","../../src/components/BasicHero/BasicHero.tsx","../../src/hooks/GradientStyles/GradientStyles.tsx","../../src/hooks/payload/useBoundWitnessValidate.tsx","../../src/hooks/payload/usePayloadHash.tsx","../../src/hooks/payload/usePayloadValidate.tsx","../../src/hooks/useDataState.ts","../../src/hooks/useIsMobile.ts","../../src/hooks/useMediaQuery.ts","../../src/hooks/useShareForwardRef.ts","../../src/components/Ellipsize.tsx","../../src/components/LabeledTextFieldWrapper.tsx","../../src/components/ListItemButtonEx.tsx","../../src/components/LoadResult.tsx","../../src/components/NotFound.tsx","../../src/components/Pipe.tsx","../../src/components/pluginValidation/DataMissing.tsx","../../src/components/ScrollTableOnSm.tsx","../../src/components/SectionSpacingRow/SectionSpacingRow.tsx","../../src/components/TableCell/AddressTableCell.tsx","../../src/components/TableCell/EllipsisTableCell.tsx","../../src/components/TableCell/HashTableCell.tsx","../../src/components/ThemeTokenAvatar/ThemeTokenAvatar.tsx","../../src/components/ThemeTokenAvatarGroup/ThemeTokenAvatarGroup.tsx","../../src/components/TokenBar/TokenBar.tsx","../../src/components/TokenData/img/index.ts","../../src/components/TokenData/TokenData.ts","../../src/components/TokenData/useGetTokenData.tsx","../../src/components/TokenSummary/TokenSummary.tsx","../../src/components/TypographyEx.tsx","../../src/contexts/contextEx/create.ts","../../src/contexts/contextEx/use.ts","../../src/contexts/diviner/Context.ts","../../src/contexts/diviner/Provider.tsx","../../src/contexts/ListMode/Context.ts","../../src/contexts/ListMode/Provider.tsx","../../src/contexts/ListMode/use.ts","../../src/lib/assertDefinedEx.ts","../../src/lib/getActualPaddingX.ts","../../src/lib/networkComponents.tsx"],"sourcesContent":["import type { TypographyProps } from '@mui/material'\nimport { Typography } from '@mui/material'\nimport React from 'react'\n\nexport const Ampersand: React.FC<TypographyProps> = (props) => {\n return (\n <Typography marginX={1} component=\"span\" {...props}>\n &\n </Typography>\n )\n}\n","import {\n Container, Grid, Typography,\n} from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexGrowCol, FlexGrowRow } from '@xylabs/react-flexbox'\nimport { LinkEx } from '@xylabs/react-link'\nimport type { ReactElement } from 'react'\nimport React from 'react'\nimport type { To } from 'react-router-dom'\n\nimport { useGradientStyles, useIsSmall } from '../../hooks/index.ts'\n\nexport interface BasicHeroProps extends FlexBoxProps {\n backgroundColor?: string\n backgroundImage?: string\n button1Href?: string\n button1Text?: string\n button1To?: string\n button2Href?: string\n button2Text?: string\n button2To?: string\n desc: string\n gradientTitle?: string\n heroImage?: string\n subLinkIcon?: ReactElement\n subLinkPath?: string\n subLinkText1?: string\n subLinkText2?: string\n sx?: Record<string, string>\n textColor?: string\n title: string\n title2?: string\n}\n\ninterface SubLinkSectionProps {\n backgroundImageAlignment?: boolean\n subLinkIcon?: ReactElement\n subLinkPath?: string\n subLinkText1?: string\n subLinkText2?: string\n}\n\ninterface ButtonSectionBaseProps {\n buttonText?: string\n}\n\ninterface ButtonSectionHrefProps extends ButtonSectionBaseProps {\n href?: string\n to?: never\n}\n\ninterface ButtonSectionToProps extends ButtonSectionBaseProps {\n href?: never\n to?: To\n}\n\ninterface ButtonSectionClickProps extends ButtonSectionBaseProps {\n href?: never\n to?: never\n}\n\ntype ButtonSectionProps = ButtonSectionHrefProps | ButtonSectionToProps | ButtonSectionClickProps\n\nconst SubLinkSection: React.FC<SubLinkSectionProps> = ({\n backgroundImageAlignment, subLinkIcon, subLinkPath, subLinkText1, subLinkText2,\n}) => {\n return (\n <FlexGrowRow\n width=\"100%\"\n sx={{\n flexDirection: { md: 'row', xs: 'column' },\n justifyContent: { md: backgroundImageAlignment ? 'flex-start' : 'center', xs: 'center' },\n }}\n >\n {subLinkIcon\n ? (\n <span>\n {subLinkIcon}\n \n </span>\n )\n : null}\n <Typography>\n {subLinkText1}\n \n </Typography>\n <LinkEx href={subLinkPath} underline=\"always\" target=\"_blank\" color=\"inherit\">\n <Typography>{subLinkText2}</Typography>\n </LinkEx>\n </FlexGrowRow>\n )\n}\n\nconst ButtonSection: React.FC<ButtonSectionProps> = ({\n href, to, buttonText,\n}) => {\n const isMobile = useIsSmall()\n return href\n ? (\n <ButtonEx\n fullWidth={true}\n marginTop={1}\n marginBottom={1}\n marginRight={isMobile ? 2 : 1}\n marginLeft={isMobile ? 2 : 0}\n target={href ?? '_blank'}\n href={href}\n color=\"primary\"\n variant=\"contained\"\n paddingX={3}\n sx={{ display: href || to ? 'flex' : 'none' }}\n >\n {buttonText}\n </ButtonEx>\n )\n : to\n ? (\n <ButtonEx\n fullWidth={true}\n marginTop={1}\n marginBottom={1}\n marginRight={isMobile ? 2 : 1}\n marginLeft={isMobile ? 2 : 0}\n to={to}\n color=\"primary\"\n variant=\"contained\"\n paddingX={3}\n sx={{ display: href || to ? 'flex' : 'none' }}\n >\n {buttonText}\n </ButtonEx>\n )\n : (\n <ButtonEx\n fullWidth={true}\n marginTop={1}\n marginBottom={1}\n marginRight={isMobile ? 2 : 1}\n marginLeft={isMobile ? 2 : 0}\n color=\"primary\"\n variant=\"contained\"\n paddingX={3}\n sx={{ display: href || to ? 'flex' : 'none' }}\n >\n {buttonText}\n </ButtonEx>\n )\n}\n\n// eslint-disable-next-line complexity\nexport const BasicHero: React.FC<BasicHeroProps> = ({\n backgroundImage,\n title,\n gradientTitle,\n backgroundColor,\n textColor,\n desc,\n heroImage,\n title2,\n subLinkText1,\n subLinkText2,\n subLinkPath,\n button1Text,\n button2Text,\n button2To,\n button1To,\n button2Href,\n button1Href,\n subLinkIcon,\n sx,\n ...props\n}) => {\n const isMobile = useIsSmall()\n const { classes } = useGradientStyles()\n return (\n <FlexGrowCol\n sx={{\n backgroundImage: `url(${backgroundImage})`,\n backgroundPosition: {\n lg: 'bottom', md: 'center left', xs: 'top left',\n },\n minHeight: {\n md: '500px',\n sm: '400px',\n xs: '200px',\n },\n ...sx,\n }}\n style={{\n backgroundColor: backgroundColor ?? '',\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'cover',\n color: textColor ?? '',\n }}\n {...props}\n >\n <Container>\n <Grid\n container\n justifyContent=\"center\"\n alignItems=\"center\"\n sx={{\n alignItems: { xs: 'center' },\n justifyContent: { xs: 'center' },\n }}\n >\n <Grid item xs={12} sm={8} md={backgroundImage ? 6 : 8} lg={backgroundImage ? 6 : 8}>\n <FlexGrowCol paddingY={2} sx={{ alignItems: { xs: backgroundImage && !isMobile ? 'flex-start' : 'center' } }}>\n <Typography variant=\"h1\" component=\"h1\" gutterBottom textAlign={backgroundImage && !isMobile ? 'left' : 'center'}>\n {title\n ? <span>{`${title} `}</span>\n : null}\n {gradientTitle\n ? (\n <span className={classes().heading}>\n {' '}\n {` ${gradientTitle}`}\n </span>\n )\n : null}\n {title2\n ? <span>{` ${title2}`}</span>\n : null}\n </Typography>\n <Typography variant=\"body1\" component=\"h2\" gutterBottom textAlign={backgroundImage && !isMobile ? 'left' : 'center'}>\n {desc}\n </Typography>\n <FlexGrowRow\n sx={{ flexDirection: { lg: 'row', xs: 'column' } }}\n width=\"100%\"\n marginTop={1}\n >\n {\n button1Href\n ? <ButtonSection href={button1Href} buttonText={button1Text} />\n : button1To ? <ButtonSection to={button1To} buttonText={button1Text} /> : <ButtonSection buttonText={button1Text} />\n }\n {\n button2Href\n ? <ButtonSection href={button2Href} buttonText={button2Text} />\n : button2To ? <ButtonSection to={button2To} buttonText={button2Text} /> : <ButtonSection buttonText={button2Text} />\n }\n </FlexGrowRow>\n <SubLinkSection\n subLinkIcon={subLinkIcon}\n subLinkText1={subLinkText1}\n subLinkText2={subLinkText2}\n subLinkPath={subLinkPath}\n backgroundImageAlignment={backgroundImage ? true : false}\n />\n </FlexGrowCol>\n </Grid>\n <Grid item xs={12} md={6}>\n {heroImage\n ? <img src={heroImage} width=\"100%\" />\n : null}\n </Grid>\n </Grid>\n </Container>\n </FlexGrowCol>\n )\n}\n","import { useTheme } from '@mui/material'\nimport { makeStyles } from '@mui/styles'\nimport type { CSSProperties } from 'react'\n\nexport interface GradientStyles {\n background: CSSProperties\n border: CSSProperties\n heading: CSSProperties\n}\n\nexport const colorfulGradientLightMode = () => {\n return {\n background: { backgroundImage: '-webkit-linear-gradient(232deg, #e17751, #d84e7a, #5898dd, #8c8ee5)' },\n border: {\n borderImage: '-webkit-linear-gradient(232deg, #e17751, #d84e7a, #5898dd, #8c8ee5)',\n borderImageSlice: 1,\n borderImageSource: '-webkit-linear-gradient(232deg, #e17751, #d84e7a, #5898dd, #8c8ee5)',\n borderRadius: 0,\n borderStyle: 'solid',\n borderWidth: '2px',\n },\n heading: {\n WebkitBackgroundClip: 'text',\n WebkitTextFillColor: 'transparent',\n background: '-webkit-linear-gradient(232deg, #e17751, #d84e7a, #5898dd, #8c8ee5)',\n display: 'inline-block',\n },\n }\n}\n\nexport const colorfulGradientDarkMode = () => {\n return {\n background: { backgroundImage: '-webkit-linear-gradient(232deg, #F17938, #FF5BDC, #5898dd, #B2FFFD)' },\n border: {\n borderImage: '-webkit-linear-gradient(232deg, #F17938, #FF5BDC, #5898dd, #B2FFFD)',\n borderImageSlice: 1,\n borderImageSource: '-webkit-linear-gradient(232deg, #F17938, #FF5BDC, #5898dd, #B2FFFD)',\n borderRadius: 0,\n borderStyle: 'solid',\n borderWidth: '2px',\n },\n heading: {\n WebkitBackgroundClip: 'text',\n WebkitTextFillColor: 'transparent',\n background: '-webkit-linear-gradient(232deg, #F17938, #FF5BDC, #5898dd, #B2FFFD)',\n display: 'inline-block',\n },\n }\n}\n\nexport const useGradientStyles = () => {\n const theme = useTheme()\n const styles = theme.palette.mode === 'dark' ? colorfulGradientDarkMode() : colorfulGradientLightMode()\n const classes = makeStyles(styles)\n return { classes, styles }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport { isAnyPayload } from '@xyo-network/payload-model'\n\nimport type { ValidatedResponse } from './types/index.ts'\n\nexport const useValidateBoundWitness = (input?: string): ValidatedResponse<BoundWitness> => {\n const [output, validationError] = usePromise(async () => {\n if (!input) return\n\n const object = JSON.parse(input)\n const validPayload = assertEx(isAnyPayload(object) ? object : null, () => 'Invalid payload')\n\n const errors = await new BoundWitnessValidator(validPayload as BoundWitness).validate()\n return {\n payload: validPayload as BoundWitness,\n errors,\n }\n }, [input])\n\n const { payload, errors } = output ?? {}\n\n return {\n payload,\n errors: [validationError, ...errors ?? []].filter<Error>(error => !!error),\n }\n}\n","import type { Hash } from '@xylabs/hex'\nimport { usePromise } from '@xylabs/react-promise'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { type Payload } from '@xyo-network/payload-model'\n\nexport const usePayloadHash = <TPayload extends Payload>(payload: TPayload | undefined | null) => {\n return usePromise(async () => (payload ? await PayloadBuilder.dataHash(payload) : undefined), [payload])[0]\n}\n\nexport const usePayloadRootHash = <TPayload extends Payload>(payload: TPayload | undefined | null) => {\n return usePromise(async () => (payload ? await PayloadBuilder.hash(payload) : undefined), [payload])[0]\n}\n\nexport const usePayloadHashes = <TPayload extends Payload>(payloads: TPayload[] | undefined | null) => {\n return usePromise(\n async () =>\n payloads\n ? await Promise.all(payloads.map<Promise<[TPayload, Hash]>>(async payload => [payload, await PayloadBuilder.dataHash(payload)]))\n : undefined,\n [payloads],\n )[0]\n}\n","import { assertEx } from '@xylabs/assert'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { isAnyPayload } from '@xyo-network/payload-model'\nimport { useMemo } from 'react'\n\nimport type { ValidatedResponse } from './types/index.ts'\n\nexport const usePayloadValidate = <TPayload extends Payload>(input?: string): ValidatedResponse => {\n return useMemo(() => {\n if (!input) return {}\n try {\n const object = JSON.parse(input)\n const validPayload = assertEx(isAnyPayload(object) ? object : null, () => 'Invalid payload')\n const { schema, ...fields } = validPayload\n return { payload: new PayloadBuilder({ schema }).fields(fields).build() as TPayload }\n } catch (error) {\n return { errors: [error as Error] }\n }\n }, [input])\n}\n","import type { Dispatch, SetStateAction } from 'react'\nimport { useState } from 'react'\n\nexport const useDataState = <T>(defaultValue: T | undefined): [T | undefined, Dispatch<SetStateAction<T | undefined>>] => {\n const [state, setState] = useState(defaultValue)\n\n const setDataState: Dispatch<SetStateAction<T | undefined>> = (value: SetStateAction<T | undefined>) => {\n try {\n if (JSON.stringify(value) !== JSON.stringify(state)) {\n setState(value)\n }\n } catch {\n console.error('setDataState failed! Make sure data type is stringifiable!')\n }\n }\n\n return [state, setDataState]\n}\n","import { useTheme } from '@mui/material'\n\nimport { useMediaQuery } from './useMediaQuery.ts'\n\n/** @deprecated use useIsSmall instead */\nexport const useIsMobile = () => {\n const theme = useTheme()\n return useMediaQuery(theme.breakpoints.down('md'))\n}\n\nexport const useIsSmall = () => {\n const theme = useTheme()\n return useMediaQuery(theme.breakpoints.down('md'))\n}\n","/* This file only exists to deal with the false positive lint error */\n\nexport { useMediaQuery } from '@mui/material'\n","import type { ForwardedRef } from 'react'\nimport { useEffect, useRef } from 'react'\n\nexport const useShareForwardedRef = <T>(forwardedRef: ForwardedRef<T>, refresh = 0) => {\n // final ref that will share value with forward ref. this is the one to be attached to components\n const innerRef = useRef<T>(null)\n\n useEffect(() => {\n if (!forwardedRef) {\n return\n }\n if (typeof forwardedRef === 'function') {\n forwardedRef(innerRef.current)\n return\n } else {\n forwardedRef.current = innerRef.current\n }\n }, [forwardedRef, refresh])\n\n return innerRef\n}\n","import type {\n BoxProps, TypographyProps, TypographyTypeMap,\n} from '@mui/material'\nimport {\n Box, styled, Typography,\n} from '@mui/material'\nimport type { PropsWithChildren } from 'react'\nimport React, {\n forwardRef, useCallback, useState,\n} from 'react'\n\nimport { useShareForwardedRef } from '../hooks/index.ts'\n\n/**\n * Heavily inspired by - https://stackoverflow.com/a/30362531/2803259\n */\n\nconst ComponentName = 'Ellipsize'\n\nexport interface EllipsizeRootProps extends BoxProps {\n beforeLineHeight?: string | number\n}\n\nconst EllipsizeRoot = styled(Box, {\n name: ComponentName,\n shouldForwardProp: prop => prop !== 'beforeLineHeight',\n slot: 'Root',\n})<EllipsizeRootProps>(({ beforeLineHeight }) => ({\n '&': {\n // because the cell content ends up absolutely positioned, the cell doesn't know the content height.\n // the pseudo element with a hidden character establishes the proper height of the content and hides it\n ':before': {\n content: \"'nbsp;'\",\n display: 'block',\n // take the pseudo element out of the `display: block` flow so it won't push against our actual content\n float: 'left',\n visibility: 'hidden',\n // since we are `display: block`, lineHeight is the height\n ...(beforeLineHeight && { lineHeight: beforeLineHeight }),\n },\n },\n}))\n\nconst EllipsizeInnerWrap = styled(Box, {\n name: ComponentName,\n slot: 'innerWrap',\n})(() => ({ position: 'relative' }))\n\nconst EllipsizeContentWrap = styled(Typography, {\n name: ComponentName,\n shouldForwardProp: prop => prop !== 'ellipsisPosition',\n slot: 'contentWrap',\n})<TypographyWithComponentProps>(({\n theme, ellipsisPosition, fontFamily,\n}) => {\n return theme.unstable_sx({\n fontFamily: fontFamily ?? 'monospace',\n left: 0,\n overflow: 'hidden',\n position: 'absolute',\n right: 0,\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n ...(ellipsisPosition === 'start'\n ? {\n direction: 'rtl',\n textAlign: 'left',\n }\n : {}),\n })\n})\n\nconst useClientHeight = () => {\n const [contentWrapHeight, setContentWrapHeight] = useState<string>()\n\n const contentWrapRef = useCallback((node: HTMLElement) => {\n if (node !== null) {\n setContentWrapHeight(node.clientHeight + 'px')\n }\n }, [])\n\n return { contentWrapHeight, contentWrapRef }\n}\n\nexport type TypographyWithComponentProps<D extends React.ElementType = TypographyTypeMap['defaultComponent'], P = {}> = TypographyProps<D, P> & {\n ellipsisPosition?: 'start' | 'end'\n}\n\nexport interface EllipsizeBoxProps extends BoxProps {\n disableSharedRef?: boolean\n ellipsisPosition?: 'start' | 'end'\n typographyProps?: TypographyWithComponentProps\n}\n\nexport const EllipsizeBox = forwardRef<HTMLDivElement, PropsWithChildren<EllipsizeBoxProps>>(\n ({\n children, ellipsisPosition = 'start', disableSharedRef, typographyProps, ...props\n }, ref) => {\n // Allow syncing of :before pseudo element height with contentWrapHeight\n const { contentWrapRef, contentWrapHeight } = useClientHeight()\n const sharedRef = useShareForwardedRef(ref)\n\n return (\n <EllipsizeRoot beforeLineHeight={!!sharedRef && !disableSharedRef ? contentWrapHeight : undefined} {...props} ref={sharedRef}>\n <EllipsizeInnerWrap>\n <EllipsizeContentWrap ref={contentWrapRef} component=\"span\" ellipsisPosition={ellipsisPosition} variant=\"body2\" {...typographyProps}>\n {children}\n </EllipsizeContentWrap>\n </EllipsizeInnerWrap>\n </EllipsizeRoot>\n )\n },\n)\nEllipsizeBox.displayName = 'EllipsizeBox'\n","import type { StackProps } from '@mui/material'\nimport { Stack, Typography } from '@mui/material'\nimport React from 'react'\n\nexport interface LabeledTextFieldWrapperProps extends StackProps {\n label: string\n}\n\nexport const LabeledTextFieldWrapper: React.FC<LabeledTextFieldWrapperProps> = ({\n children, label, ...props\n}) => {\n return (\n <Stack flexDirection=\"column\" {...props}>\n <Typography gutterBottom variant=\"caption\">\n {label}\n </Typography>\n {children}\n </Stack>\n )\n}\n","import type { ListItemButtonProps } from '@mui/material'\nimport { ListItemButton } from '@mui/material'\nimport type { MouseEvent } from 'react'\nimport React from 'react'\nimport type { NavigateOptions, To } from 'react-router-dom'\nimport { useNavigate } from 'react-router-dom'\n\nexport interface ListItemButtonExProps extends ListItemButtonProps {\n target?: string\n to?: To\n toOptions?: NavigateOptions\n}\n\nexport const ListItemButtonExTo: React.FC<ListItemButtonExProps> = ({\n to, toOptions, onClick, ...props\n}) => {\n const navigate = useNavigate()\n const localOnClick = (event: MouseEvent<HTMLDivElement>) => {\n onClick?.(event)\n if (to) {\n void navigate(to, toOptions)\n }\n }\n\n return <ListItemButton onClick={localOnClick} {...props} />\n}\n\nexport const ListItemButtonEx: React.FC<ListItemButtonExProps> = ({ to, ...props }) => {\n return to ? <ListItemButtonExTo to={to} {...props} /> : <ListItemButton {...props} />\n}\n","import { FlexGrowRow } from '@xylabs/react-flexbox'\nimport type { PropsWithChildren } from 'react'\nimport React from 'react'\n\nimport { NotFound } from './NotFound.tsx'\n\nexport interface LoadResultProps<T> {\n /** @deprecated - use error prop */\n apiError?: Error\n /** Defer error handling to the children and load them */\n error?: boolean\n notFound: boolean\n searchResult: T | undefined\n}\n\nexport function LoadResult<T>(props: PropsWithChildren<LoadResultProps<T>>) {\n const {\n notFound, error, searchResult, children,\n } = props\n if (notFound) {\n return <NotFound />\n }\n if (error) {\n return <>{children}</>\n }\n return searchResult === undefined ? <FlexGrowRow busy minHeight=\"50px\" /> : <>{children}</>\n}\n","import { Typography } from '@mui/material'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexGrowCol } from '@xylabs/react-flexbox'\nimport React from 'react'\n\n/** @deprecated use from @@xylabs/react-shared instead */\nexport const NotFound: React.FC<FlexBoxProps> = (props) => {\n return (\n <FlexGrowCol {...props}>\n <Typography variant=\"h2\">Sorry!</Typography>\n <Typography marginY={3} variant=\"body2\">\n {'Can\\'t find anything here'}\n </Typography>\n </FlexGrowCol>\n )\n}\n","import type { TypographyProps } from '@mui/material'\nimport { Typography } from '@mui/material'\nimport React from 'react'\n\nexport const Pipe: React.FC<TypographyProps> = (props) => {\n return (\n <Typography marginX={1} component=\"span\" {...props}>\n |\n </Typography>\n )\n}\n","import type { AlertProps } from '@mui/material'\nimport { Alert, AlertTitle } from '@mui/material'\nimport React from 'react'\n\nexport interface PayloadDataMissingProps extends AlertProps {\n alertBody?: string\n}\n\nexport const PayloadDataMissing: React.FC<PayloadDataMissingProps> = ({ alertBody, ...props }) => {\n return (\n <Alert severity=\"warning\" {...props}>\n <AlertTitle>Missing Data</AlertTitle>\n {alertBody ?? 'Payload is missing required data to render correctly'}\n </Alert>\n )\n}\n","import { styled } from '@mui/material'\nimport type { PropsWithChildren } from 'react'\nimport React from 'react'\n\nconst StyledScrollTableOnSm = styled('div')(({ theme }) => ({\n [theme.breakpoints.down('md')]: { overflowX: 'scroll' },\n display: 'flex',\n flexGrow: 1,\n}))\n\nconst ScrollTableOnSm: React.FC<PropsWithChildren> = ({ children }) => <StyledScrollTableOnSm>{children}</StyledScrollTableOnSm>\n\nexport { ScrollTableOnSm }\n","import { useTheme } from '@mui/material'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexGrowRow } from '@xylabs/react-flexbox'\nimport React, { forwardRef } from 'react'\n\nexport const SectionSpacingRow = forwardRef<HTMLDivElement, FlexBoxProps>(({\n children, sx, ...props\n}, ref) => {\n const theme = useTheme()\n return (\n <FlexGrowRow\n sx={{\n paddingBottom: { md: theme.spacing(5), xs: theme.spacing(5) },\n paddingTop: { md: theme.spacing(5), xs: theme.spacing(5) },\n ...sx,\n }}\n width=\"100%\"\n ref={ref}\n {...props}\n >\n {children}\n </FlexGrowRow>\n )\n})\n\nSectionSpacingRow.displayName = 'SectionSpacingRow'\n","import React, { forwardRef } from 'react'\n\nimport type { EllipsisTableCellProps } from './EllipsisTableCell.tsx'\nimport { EllipsisTableCell } from './EllipsisTableCell.tsx'\n\nexport interface AddressTableCellProps extends Omit<EllipsisTableCellProps, 'ref'> {\n /** @deprecated - archives are no longer supported */\n archive?: string\n /** @deprecated - use events instead */\n exploreDomain?: string\n link?: boolean\n}\n\nconst AddressTableCell = forwardRef<HTMLDivElement, AddressTableCellProps>(({\n value, archive, exploreDomain, link, ...props\n}, ref) => {\n const href = exploreDomain && archive ? `${exploreDomain}/archive/${archive}/address/${value}` : undefined\n const to = exploreDomain === undefined && archive ? `/archive/${archive}/address/${value}` : undefined\n\n return <EllipsisTableCell value={value} href={href} to={to} ref={ref} link={link} {...props} />\n})\n\nAddressTableCell.displayName = 'AddressTableCell'\nexport { AddressTableCell }\n","import type { TableCellProps } from '@mui/material'\nimport { styled, TableCell } from '@mui/material'\nimport { asLinkHrefOrToProps, LinkEx } from '@xylabs/react-link'\nimport React, { forwardRef, useMemo } from 'react'\nimport type { To } from 'react-router-dom'\n\nimport { EllipsizeBox } from '../Ellipsize.tsx'\n\nconst EllipsisTableCellRoot = styled(TableCell, {\n name: 'EllipsisTableCell',\n shouldForwardProp: prop => prop !== 'width',\n slot: 'Root',\n})(({ width = '100%' }) => ({ width }))\n\nexport interface EllipsisTableCellProps extends Omit<TableCellProps, 'ref'> {\n href?: string\n link?: boolean\n to?: To\n value?: string\n /**\n * Width of the table cell.\n *\n * Note: When using percentages, this value can be different than what you expect\n * if used on a cell that is not the first cell in the first row.\n */\n width?: string | number\n}\n\nexport const EllipsisTableCellWithRef = forwardRef<HTMLDivElement, EllipsisTableCellProps>(\n ({\n children, href, link = false, to, value, ...props\n }, ref) => {\n const data = useMemo(() => {\n if (children) {\n return children\n }\n if (href || link || to) {\n return (\n <LinkEx title={value} {...asLinkHrefOrToProps({ to, href })} target={href ? '_blank' : undefined}>\n {value}\n </LinkEx>\n )\n }\n return value\n }, [children, href, link, to, value])\n return (\n <EllipsisTableCellRoot {...props}>\n <EllipsizeBox ref={ref} sx={{ cursor: link || to || href ? 'pointer' : 'inherit' }}>{data}</EllipsizeBox>\n </EllipsisTableCellRoot>\n )\n },\n)\n\nEllipsisTableCellWithRef.displayName = 'EllipsisTableCell'\nexport const EllipsisTableCell = EllipsisTableCellWithRef\n","import type { Hash } from '@xylabs/hex'\nimport { useEvent } from '@xyo-network/react-event'\nimport React, { useRef } from 'react'\n\nimport type { EllipsisTableCellProps } from './EllipsisTableCell.tsx'\nimport { EllipsisTableCell } from './EllipsisTableCell.tsx'\n\nexport interface HashTableCellProps extends EllipsisTableCellProps {\n archive?: string\n dataType?: 'block' | 'payload'\n exploreDomain?: string\n network?: string\n onHashClick?: (value: Hash) => void\n}\n\nexport const HashTableCell: React.FC<HashTableCellProps> = ({\n value, archive, dataType, network, exploreDomain, onHashClick, ...props\n}) => {\n const ref = useRef<HTMLTableCellElement | null>(null)\n const [tableCellRef, dispatch] = useEvent<HTMLTableCellElement>(undefined, ref)\n const hashPath = `/${dataType}/hash/${value}?network=${network ?? 'main'}`\n const explorePath = archive ? `/archive/${archive}${hashPath}` : hashPath\n\n const handleCellClick = () => {\n if (onHashClick) {\n onHashClick(value as Hash)\n } else {\n dispatch?.('hash', 'click', value as Hash)\n }\n }\n\n return (\n <EllipsisTableCell\n onClick={handleCellClick}\n ref={tableCellRef}\n value={value}\n href={exploreDomain ? `${exploreDomain}${explorePath}}` : undefined}\n to={exploreDomain ? undefined : explorePath}\n {...props}\n />\n )\n}\n","import type { AvatarProps } from '@mui/material'\nimport { Avatar, useTheme } from '@mui/material'\nimport React from 'react'\n\nexport const ThemeTokenAvatar: React.FC<AvatarProps> = ({ ...props }) => {\n const theme = useTheme()\n return <Avatar sx={{ background: theme.palette.common.white }} {...props} />\n}\n","import type { AvatarGroupProps } from '@mui/material'\nimport { AvatarGroup } from '@mui/material'\nimport React from 'react'\n\nimport { ThemeTokenAvatar } from '../ThemeTokenAvatar/index.ts'\n\nexport interface ThemeTokenAvatarGroupProps extends AvatarGroupProps {\n images?: string[]\n}\n\nexport const ThemeTokenAvatarGroup: React.FC<ThemeTokenAvatarGroupProps> = ({ images, ...props }) => {\n return <AvatarGroup {...props}>{images?.map((image, index) => <ThemeTokenAvatar key={index} src={image} />)}</AvatarGroup>\n}\n","import type { PaperProps, TypographyProps } from '@mui/material'\nimport { Paper, Typography } from '@mui/material'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport type { ReactNode } from 'react'\nimport React from 'react'\nexport interface TokenBarProps extends PaperProps {\n text1?: ReactNode\n text1Props?: TypographyProps\n text1Suffix?: ReactNode\n text2?: ReactNode\n text2Props?: TypographyProps\n text2Suffix?: ReactNode\n}\n\nexport const TokenBar: React.FC<TokenBarProps> = ({\n text1, text1Props, text1Suffix, text2, text2Props, text2Suffix, ...props\n}) => {\n return (\n <Paper elevation={0} className=\"TokenBar-root\" {...props}>\n <FlexRow justifyContent=\"space-between\">\n <Typography variant=\"body1\" fontWeight={300} margin={1} {...text1Props}>\n {text1}\n {text1Suffix}\n </Typography>\n <Typography variant=\"body1\" fontWeight={300} textTransform=\"uppercase\" color=\"gray\" margin={1} {...text2Props}>\n {text2}\n {text2Suffix}\n </Typography>\n </FlexRow>\n </Paper>\n )\n}\n","export { default as ada } from './ada.png'\nexport { default as btc } from './btc.png'\nexport { default as busd } from './busd.png'\nexport { default as dai } from './dai.png'\nexport { default as dogecoin } from './dogecoin.png'\nexport { default as dot } from './dot.png'\nexport { default as ethereum } from './ethereum.png'\nexport { default as frax } from './frax.png'\nexport { default as link } from './link.png'\nexport { default as sol } from './sol.png'\nexport { default as tether } from './tether.png'\nexport { default as usdCoin } from './usd-coin.png'\nexport { default as weth } from './weth.png'\nexport { default as wrappedBtc } from './wrapped-bitcoin.png'\nexport { default as xyo } from './xyo.png'\n","import * as tokenImages from './img/index.ts'\n\nexport interface TokenData {\n coinmarketcapLink: string\n etherscanLink: string\n icon: string\n readableName: string\n tokenSymbol: string\n uniqueTokenId: string\n}\n\nexport const TokenData: TokenData[] = [\n {\n coinmarketcapLink: 'https://coinmarketcap.com/currencies/multi-collateral-dai/',\n etherscanLink: 'https://etherscan.io/token/0x6b175474e89094c44da98b954eedeac495271d0f',\n icon: tokenImages.dai,\n readableName: 'Dai',\n tokenSymbol: 'dai',\n uniqueTokenId: 'dai',\n },\n {\n coinmarketcapLink: 'https://coinmarketcap.com/currencies/weth/',\n etherscanLink: 'https://etherscan.io/token/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',\n icon: tokenImages.weth,\n readableName: 'Weth',\n tokenSymbol: 'weth',\n uniqueTokenId: 'weth',\n },\n {\n coinmarketcapLink: 'https://coinmarketcap.com/currencies/ethereum/',\n etherscanLink: 'n/a',\n icon: tokenImages.ethereum,\n readableName: 'Ethereum',\n tokenSymbol: 'eth',\n uniqueTokenId: 'ethereum',\n },\n {\n coinmarketcapLink: 'https://coinmarketcap.com/currencies/bitcoin/',\n etherscanLink: 'n/a',\n icon: tokenImages.btc,\n readableName: 'Bitcoin',\n tokenSymbol: 'btc',\n uniqueTokenId: 'btc',\n },\n {\n coinmarketcapLink: 'https://coinmarketcap.com/currencies/xyo/',\n etherscanLink: 'https://etherscan.io/token/0x55296f69f40ea6d20e478533c15a6b08b654e758',\n icon: tokenImages.xyo,\n readableName: 'XYO',\n tokenSymbol: 'xyo',\n uniqueTokenId: 'xyo',\n },\n {\n coinmarketcapLink: 'https://coinmarketcap.com/currencies/frax/',\n etherscanLink: 'https://etherscan.io/token/0x853d955acef822db058eb8505911ed77f175b99e',\n icon: tokenImages.frax,\n readableName: 'Frax',\n tokenSymbol: 'frax',\n uniqueTokenId: 'frax',\n },\n {\n coinmarketcapLink: 'https://coinmarketcap.com/currencies/wrapped-bitcoin/',\n etherscanLink: 'https://etherscan.io/token/0x2260fac5e5542a773aa44fbcfedf7c193bc2c599',\n icon: tokenImages.wrappedBtc,\n readableName: 'Wrapped BTC',\n tokenSymbol: 'wbtc',\n uniqueTokenId: 'wbtc',\n },\n {\n coinmarketcapLink: 'https://coinmarketcap.com/currencies/usd-coin/',\n etherscanLink: 'https://etherscan.io/token/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',\n icon: tokenImages.usdCoin,\n readableName: 'USDC',\n tokenSymbol: 'usdc',\n uniqueTokenId: 'usdc',\n },\n {\n coinmarketcapLink: 'https://coinmarketcap.com/currencies/tether/',\n etherscanLink: 'https://etherscan.io/token/0xdac17f958d2ee523a2206206994597c13d831ec7',\n icon: tokenImages.tether,\n readableName: 'Tether',\n tokenSymbol: 'usdt',\n uniqueTokenId: 'usdt',\n },\n {\n coinmarketcapLink: 'https://coinmarketcap.com/currencies/cardano/',\n etherscanLink: 'https://etherscan.io/token/0xc14777c94229582e5758c5a79b83dde876b9be98',\n icon: tokenImages.ada,\n readableName: 'Cardano',\n tokenSymbol: 'ada',\n uniqueTokenId: 'ada',\n },\n {\n coinmarketcapLink: 'https://coinmarketcap.com/currencies/binance-usd/',\n etherscanLink: 'https://etherscan.io/token/0x4Fabb145d64652a948d72533023f6E7A623C7C53',\n icon: tokenImages.busd,\n readableName: 'Binance USD',\n tokenSymbol: 'busd',\n uniqueTokenId: 'busd',\n },\n {\n coinmarketcapLink: 'https://coinmarketcap.com/currencies/dogecoin/',\n etherscanLink: 'https://etherscan.io/token/0x7618b5024a6349f9aef10ddfd33e3428c734551e',\n icon: tokenImages.dogecoin,\n readableName: 'Dogecoin',\n tokenSymbol: 'doge',\n uniqueTokenId: 'doge',\n },\n {\n coinmarketcapLink: 'https://coinmarketcap.com/currencies/polkadot-new/',\n etherscanLink: 'https://etherscan.io/token/0x2d4fb6dd969992c881d8e534c747cc925d5ba221',\n icon: tokenImages.dot,\n readableName: 'Polkadot',\n tokenSymbol: 'dot',\n uniqueTokenId: 'dot',\n },\n {\n coinmarketcapLink: 'https://coinmarketcap.com/currencies/chainlink/',\n etherscanLink: 'https://etherscan.io/token/0x514910771af9ca656af840dff83e8264ecf986ca',\n icon: tokenImages.link,\n readableName: 'ChainLink',\n tokenSymbol: 'link',\n uniqueTokenId: 'link',\n },\n {\n coinmarketcapLink: 'https://coinmarketcap.com/currencies/solana/',\n etherscanLink: 'https://etherscan.io/token/0x1f54638b7737193ffd86c19ec51907a7c41755d8',\n icon: tokenImages.sol,\n readableName: 'Solana',\n tokenSymbol: 'sol',\n uniqueTokenId: 'sol',\n },\n]\n","import { TokenData } from './TokenData.ts'\n\n// eslint-disable-next-line @eslint-react/hooks-extra/no-useless-custom-hooks\nexport const useGetTokenData = (symbols: (string | undefined)[]) => {\n return symbols?.map((symbol) => {\n const additionalTokenData = TokenData.find(x => x.tokenSymbol === symbol)\n const checkedTokenData = additionalTokenData ?? TokenData[0]\n return checkedTokenData\n })\n}\n","import type { AvatarProps, CardHeaderProps } from '@mui/material'\nimport { CardHeader, Typography } from '@mui/material'\nimport type { ReactNode } from 'react'\nimport React from 'react'\n\nimport { ThemeTokenAvatar } from '../ThemeTokenAvatar/index.ts'\n\nexport interface TokenSummaryProps extends CardHeaderProps {\n icon?: string\n imgBgProps?: AvatarProps\n symbol?: string\n symbolElement?: ReactNode\n}\n\nexport const TokenSummary: React.FC<TokenSummaryProps> = ({\n icon, symbol, symbolElement, children, ...props\n}) => {\n return (\n <>\n <CardHeader\n avatar={<ThemeTokenAvatar src={icon} alt={symbol} />}\n title={(\n <Typography variant=\"h6\" fontWeight={300} textTransform=\"uppercase\">\n {symbolElement ?? symbol}\n </Typography>\n )}\n {...props}\n />\n {children}\n </>\n )\n}\n","import type { TypographyProps } from '@mui/material'\nimport { Typography } from '@mui/material'\nimport React from 'react'\n\nimport { useGradientStyles } from '../hooks/index.ts'\n\nexport interface TypographyExProps extends TypographyProps {\n gradient?: 'text'\n}\n\nexport const TypographyEx: React.FC<TypographyExProps> = ({ gradient, ...props }) => {\n const { classes } = useGradientStyles()\n return <Typography className={gradient === 'text' ? classes().heading : undefined} {...props} />\n}\n","import { createContext } from 'react'\n\nimport type { ContextExState } from './State.ts'\n\nexport const createContextEx = <T>() => createContext<T & ContextExState>({ provided: false } as T & ContextExState)\n","import type { Context } from 'react'\nimport { useContext } from 'react'\n\nimport type { ContextExState } from './State.ts'\n\nexport const useContextEx = <T extends ContextExState>(context: Context<T>, contextName: string, required = true) => {\n const { provided, ...props } = useContext(context)\n if (!provided && required) {\n throw new Error(`use${contextName} can not be used outside of a ${contextName}Context when required=true`)\n }\n return props\n}\n\nexport const useProvided = <T extends ContextExState>(context: Context<T>) => {\n const { provided } = useContext(context)\n return provided\n}\n","import { createContextEx } from '../contextEx/index.ts'\n\nexport const ResolvedDivinerContext = <T>() => createContextEx<T>()\n","import { useResetState } from '@xylabs/react-hooks'\nimport type { Context, PropsWithChildren } from 'react'\nimport React, { useMemo } from 'react'\n\nimport type { ContextExProviderProps } from '../contextEx/index.ts'\nimport type { ResolvedDivinerState } from './State.ts'\n\nexport interface DivinerProviderProps<D> extends ContextExProviderProps, PropsWithChildren {\n context: Context<ResolvedDivinerState<D>>\n diviner?: D\n}\n\n/** Exposes a resolved diviner */\nexport const ResolvedDivinerProvider = <D,>({\n diviner: divinerProp, required = false, children, context,\n}: DivinerProviderProps<D>) => {\n const [diviner, setDiviner] = useResetState<D | undefined>(divinerProp)\n\n const value = useMemo(() => {\n const resolveDiviner = () => {\n if (divinerProp) {\n return diviner === divinerProp ? diviner : undefined\n } else {\n return diviner\n }\n }\n return {\n diviner: resolveDiviner(),\n provided: true,\n setDiviner,\n }\n }, [\n setDiviner, divinerProp])\n\n return (\n <context.Provider\n value={value}\n >\n {diviner\n ? children\n : required\n ? null\n : children}\n </context.Provider>\n )\n}\n","import { createContextEx } from '../contextEx/index.ts'\nimport type { ListModeContextState } from './State.ts'\n\nexport const ListModeContext = createContextEx<ListModeContextState>()\n","import type { PropsWithChildren } from 'react'\nimport React, { useMemo, useState } from 'react'\n\nimport type { ListMode } from '../../models/index.ts'\nimport { ListModeContext } from './Context.ts'\n\nexport interface ListModeProviderProps {\n defaultListMode?: ListMode\n}\n\nexport const ListModeProvider: React.FC<PropsWithChildren<ListModeProviderProps>> = ({ children, defaultListMode }) => {\n const [listMode, setListMode] = useState(defaultListMode ?? 'default')\n\n const value = useMemo(() => ({\n listMode,\n provided: true,\n setListMode,\n }), [listMode,\n setListMode])\n\n return (\n <ListModeContext.Provider\n value={value}\n >\n {children}\n </ListModeContext.Provider>\n )\n}\n","import { useContextEx } from '../contextEx/index.ts'\nimport { ListModeContext } from './Context.ts'\n\nexport const useListMode = (required = false) => {\n return useContextEx(ListModeContext, 'ListMode', required)\n}\n","/**\n * @deprecated use from @xylabs/assert instead\n * */\nexport const assertDefinedEx = <T>(expr?: T | null, message?: string): T => {\n if (expr !== null && expr !== undefined) return expr\n throw new Error(message)\n}\n","export const parseMeausureString = (measure?: string, absolute?: number) => {\n if (measure !== undefined && measure !== null && measure.length > 0) {\n if (measure.endsWith('px')) {\n return Number.parseFloat(measure.slice(0, Math.max(0, measure.length - 2)))\n } else if (measure.endsWith('%')) {\n if (absolute !== undefined) {\n return (Number.parseFloat(measure.slice(0, Math.max(0, measure.length - 1))) / 100) * absolute\n }\n throw new Error('Error Parsing Measure [missing absolute]')\n } else if (measure.endsWith('vw')) {\n return (Number.parseFloat(measure.slice(0, Math.max(0, measure.length - 2))) / 100) * window.innerWidth\n } else if (measure.endsWith('vh')) {\n return (Number.parseFloat(measure.slice(0, Math.max(0, measure.length - 2))) / 100) * window.innerHeight\n }\n throw new Error(`Error Parsing Measure [${measure}]`)\n }\n}\n\nexport const parsePadding = (padding: string) => {\n const parts = padding.split(' ')\n switch (parts.length) {\n case 4: {\n return {\n bottom: parts[2],\n left: parts[3],\n right: parts[1],\n top: parts[0],\n }\n }\n case 3: {\n return {\n bottom: parts[2],\n right: parts[1],\n top: parts[0],\n }\n }\n case 2: {\n return {\n bottom: parts[0],\n left: parts[1],\n right: parts[1],\n top: parts[0],\n }\n }\n case 1: {\n return {\n bottom: parts[0],\n left: parts[0],\n right: parts[0],\n top: parts[0],\n }\n }\n }\n}\n\nexport const getActualPaddingX = (element: HTMLElement) => {\n const padding = parsePadding(globalThis.getComputedStyle(element, null).getPropertyValue('padding'))\n const paddingLeft\n = parseMeausureString(globalThis.getComputedStyle(element, null).getPropertyValue('padding-left') ?? padding?.left, element.clientWidth) ?? 0\n const paddingRight\n = parseMeausureString(globalThis.getComputedStyle(element, null).getPropertyValue('padding-right') ?? padding?.right, element.clientWidth) ?? 0\n return paddingLeft + paddingRight\n}\n","import {\n BubbleChartRounded as BubbleChartRoundedIcon,\n HubRounded as HubRoundedIcon,\n InsertLinkRounded as InsertLinkRoundedIcon,\n Inventory2Rounded as Inventory2RoundedIcon,\n TimerRounded as TimerRoundedIcon,\n VisibilityRounded as VisibilityRoundedIcon,\n} from '@mui/icons-material'\nimport type { SvgIconProps } from '@mui/material'\nimport type { ReactElement } from 'react'\nimport React from 'react'\n\nexport type NetworkComponentSlug = 'sentinel' | 'bridge' | 'archivist' | 'diviner' | 'node' | 'witness'\n\nexport interface NetworkComponentDetails {\n icon: (props?: SvgIconProps) => ReactElement\n name: string\n slug: NetworkComponentSlug\n}\n\nexport const networkComponents: NetworkComponentDetails[] = [\n {\n icon: props => <HubRoundedIcon {...props} />, name: 'Node', slug: 'node',\n },\n {\n icon: props => <TimerRoundedIcon {...props} />, name: 'Sentinel', slug: 'sentinel',\n },\n {\n icon: props => <InsertLinkRoundedIcon {...props} />, name: 'Bridge', slug: 'bridge',\n },\n {\n icon: props => <Inventory2RoundedIcon {...props} />, name: 'Archivist', slug: 'archivist',\n },\n {\n icon: props => <BubbleChartRoundedIcon {...props} />, name: 'Diviner', slug: 'diviner',\n },\n {\n icon: props => <VisibilityRoundedIcon {...props} />, name: 'Witness', slug: 'witness',\n },\n]\n\nexport const findNetworkComponentIndex = (slug: string) => {\n return networkComponents.findIndex(info => info.slug === slug)\n}\n\nexport const findNetworkComponent = (slug: string) => {\n return networkComponents.find(info => info.slug === slug)\n}\n"],"mappings":"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","names":["Typography","React","Ampersand","props","Typography","marginX","component","Container","Grid","Typography","ButtonEx","FlexGrowCol","FlexGrowRow","LinkEx","React","useTheme","makeStyles","colorfulGradientLightMode","background","backgroundImage","border","borderImage","borderImageSlice","borderImageSource","borderRadius","borderStyle","borderWidth","heading","WebkitBackgroundClip","WebkitTextFillColor","display","colorfulGradientDarkMode","useGradientStyles","theme","useTheme","styles","palette","mode","classes","makeStyles","assertEx","usePromise","BoundWitnessValidator","isAnyPayload","useValidateBoundWitness","input","output","validationError","usePromise","object","JSON","parse","validPayload","assertEx","isAnyPayload","errors","BoundWitnessValidator","validate","payload","filter","error","usePromise","PayloadBuilder","usePayloadHash","payload","usePromise","PayloadBuilder","dataHash","undefined","usePayloadRootHash","hash","usePayloadHashes","payloads","Promise","all","map","assertEx","PayloadBuilder","isAnyPayload","useMemo","usePayloadValidate","input","useMemo","object","JSON","parse","validPayload","assertEx","isAnyPayload","schema","fields","payload","PayloadBuilder","build","error","errors","useState","useDataState","defaultValue","state","setState","useState","setDataState","value","JSON","stringify","console","error","useTheme","useMediaQuery","useIsMobile","theme","useTheme","useMediaQuery","breakpoints","down","useIsSmall","useEffect","useRef","useShareForwardedRef","forwardedRef","refresh","innerRef","useRef","useEffect","current","SubLinkSection","backgroundImageAlignment","subLinkIcon","subLinkPath","subLinkText1","subLinkText2","React","FlexGrowRow","width","sx","flexDirection","md","xs","justifyContent","span","Typography","LinkEx","href","underline","target","color","ButtonSection","to","buttonText","isMobile","useIsSmall","ButtonEx","fullWidth","marginTop","marginBottom","marginRight","marginLeft","variant","paddingX","display","BasicHero","backgroundImage","title","gradientTitle","backgroundColor","textColor","desc","heroImage","title2","button1Text","button2Text","button2To","button1To","button2Href","button1Href","props","classes","useGradientStyles","FlexGrowCol","backgroundPosition","lg","minHeight","sm","style","backgroundRepeat","backgroundSize","Container","Grid","container","alignItems","item","paddingY","component","gutterBottom","textAlign","className","heading","img","src","Box","styled","Typography","React","forwardRef","useCallback","useState","ComponentName","EllipsizeRoot","styled","Box","name","shouldForwardProp","prop","slot","beforeLineHeight","content","display","float","visibility","lineHeight","EllipsizeInnerWrap","position","EllipsizeContentWrap","Typography","theme","ellipsisPosition","fontFamily","unstable_sx","left","overflow","right","textOverflow","whiteSpace","direction","textAlign","useClientHeight","contentWrapHeight","setContentWrapHeight","useState","contentWrapRef","useCallback","node","clientHeight","EllipsizeBox","forwardRef","children","disableSharedRef","typographyProps","props","ref","sharedRef","useShareForwardedRef","React","undefined","component","variant","displayName","Stack","Typography","React","LabeledTextFieldWrapper","children","label","props","React","Stack","flexDirection","Typography","gutterBottom","variant","ListItemButton","React","useNavigate","ListItemButtonExTo","to","toOptions","onClick","props","navigate","useNavigate","localOnClick","event","React","ListItemButton","ListItemButtonEx","FlexGrowRow","React","Typography","FlexGrowCol","React","NotFound","props","React","FlexGrowCol","Typography","variant","marginY","LoadResult","props","notFound","error","searchResult","children","React","NotFound","undefined","FlexGrowRow","busy","minHeight","Typography","React","Pipe","props","React","Typography","marginX","component","Alert","AlertTitle","React","PayloadDataMissing","alertBody","props","React","Alert","severity","AlertTitle","styled","React","StyledScrollTableOnSm","styled","theme","breakpoints","down","overflowX","display","flexGrow","ScrollTableOnSm","children","React","useTheme","FlexGrowRow","React","forwardRef","SectionSpacingRow","children","sx","props","ref","theme","paddingBottom","md","spacing","xs","paddingTop","width","displayName","React","forwardRef","styled","TableCell","asLinkHrefOrToProps","LinkEx","React","forwardRef","useMemo","EllipsisTableCellRoot","styled","TableCell","name","shouldForwardProp","prop","slot","width","EllipsisTableCellWithRef","forwardRef","children","href","link","to","value","props","ref","data","useMemo","React","LinkEx","title","asLinkHrefOrToProps","target","undefined","EllipsizeBox","sx","cursor","displayName","EllipsisTableCell","AddressTableCell","forwardRef","value","archive","exploreDomain","link","props","ref","href","undefined","to","React","EllipsisTableCell","displayName","useEvent","React","useRef","HashTableCell","value","archive","dataType","network","exploreDomain","onHashClick","props","ref","useRef","tableCellRef","dispatch","useEvent","undefined","hashPath","explorePath","handleCellClick","React","EllipsisTableCell","onClick","href","to","Avatar","useTheme","React","ThemeTokenAvatar","props","theme","useTheme","React","Avatar","sx","background","palette","common","white","AvatarGroup","React","ThemeTokenAvatarGroup","images","props","React","AvatarGroup","map","image","index","ThemeTokenAvatar","key","src","Paper","Typography","FlexRow","React","TokenBar","text1","text1Props","text1Suffix","text2","text2Props","text2Suffix","props","React","Paper","elevation","className","FlexRow","justifyContent","Typography","variant","fontWeight","margin","textTransform","color","ada","default","btc","busd","dai","dogecoin","dot","ethereum","frax","link","sol","tether","usdCoin","weth","wrappedBtc","xyo","TokenData","coinmarketcapLink","etherscanLink","icon","dai","readableName","tokenSymbol","uniqueTokenId","weth","ethereum","btc","xyo","frax","wrappedBtc","usdCoin","tether","ada","busd","dogecoin","dot","link","sol","useGetTokenData","symbols","map","symbol","additionalTokenData","TokenData","find","x","tokenSymbol","checkedTokenData","CardHeader","Typography","React","TokenSummary","icon","symbol","symbolElement","children","props","React","CardHeader","avatar","ThemeTokenAvatar","src","alt","title","Typography","variant","fontWeight","textTransform","Typography","React","TypographyEx","gradient","props","classes","useGradientStyles","React","Typography","className","heading","undefined","createContext","createContextEx","createContext","provided","useContext","useContextEx","context","contextName","required","provided","props","useContext","Error","useProvided","ResolvedDivinerContext","createContextEx","useResetState","React","useMemo","ResolvedDivinerProvider","diviner","divinerProp","required","children","context","setDiviner","useResetState","value","useMemo","resolveDiviner","undefined","provided","React","Provider","ListModeContext","createContextEx","React","useMemo","useState","ListModeProvider","children","defaultListMode","listMode","setListMode","useState","value","useMemo","provided","React","ListModeContext","Provider","useListMode","required","useContextEx","ListModeContext","assertDefinedEx","expr","message","undefined","Error","parseMeausureString","measure","absolute","undefined","length","endsWith","Number","parseFloat","slice","Math","max","Error","window","innerWidth","innerHeight","parsePadding","padding","parts","split","bottom","left","right","top","getActualPaddingX","element","globalThis","getComputedStyle","getPropertyValue","paddingLeft","clientWidth","paddingRight","BubbleChartRounded","BubbleChartRoundedIcon","HubRounded","HubRoundedIcon","InsertLinkRounded","InsertLinkRoundedIcon","Inventory2Rounded","Inventory2RoundedIcon","TimerRounded","TimerRoundedIcon","VisibilityRounded","VisibilityRoundedIcon","React","networkComponents","icon","props","React","HubRoundedIcon","name","slug","TimerRoundedIcon","InsertLinkRoundedIcon","Inventory2RoundedIcon","BubbleChartRoundedIcon","VisibilityRoundedIcon","findNetworkComponentIndex","findIndex","info","findNetworkComponent","find"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyo-network/react-shared",
|
|
3
|
-
"version": "4.4.
|
|
3
|
+
"version": "4.4.1",
|
|
4
4
|
"description": "Common React library for all XYO projects that use React",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"xyo",
|
|
@@ -43,6 +43,7 @@
|
|
|
43
43
|
"lint-pkg": "npmPkgJsonLint ."
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
+
"@xylabs/assert": "^4.5.1",
|
|
46
47
|
"@xylabs/hex": "^4.5.1",
|
|
47
48
|
"@xylabs/react-appbar": "^5.3.22",
|
|
48
49
|
"@xylabs/react-button": "^5.3.22",
|
|
@@ -50,9 +51,11 @@
|
|
|
50
51
|
"@xylabs/react-hooks": "^5.3.22",
|
|
51
52
|
"@xylabs/react-link": "^5.3.22",
|
|
52
53
|
"@xylabs/react-promise": "^5.3.22",
|
|
53
|
-
"@xyo-network/
|
|
54
|
-
"@xyo-network/
|
|
55
|
-
"@xyo-network/
|
|
54
|
+
"@xyo-network/boundwitness-model": "^3.7.1",
|
|
55
|
+
"@xyo-network/boundwitness-validator": "^3.7.0",
|
|
56
|
+
"@xyo-network/payload-builder": "^3.7.1",
|
|
57
|
+
"@xyo-network/payload-model": "^3.7.1",
|
|
58
|
+
"@xyo-network/react-event": "^4.4.1",
|
|
56
59
|
"react-router-dom": "^7.1.3"
|
|
57
60
|
},
|
|
58
61
|
"devDependencies": {
|
package/src/hooks/index.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './ValidatedResponse.ts'
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { assertEx } from '@xylabs/assert'
|
|
2
|
+
import { usePromise } from '@xylabs/react-promise'
|
|
3
|
+
import type { BoundWitness } from '@xyo-network/boundwitness-model'
|
|
4
|
+
import { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'
|
|
5
|
+
import { isAnyPayload } from '@xyo-network/payload-model'
|
|
6
|
+
|
|
7
|
+
import type { ValidatedResponse } from './types/index.ts'
|
|
8
|
+
|
|
9
|
+
export const useValidateBoundWitness = (input?: string): ValidatedResponse<BoundWitness> => {
|
|
10
|
+
const [output, validationError] = usePromise(async () => {
|
|
11
|
+
if (!input) return
|
|
12
|
+
|
|
13
|
+
const object = JSON.parse(input)
|
|
14
|
+
const validPayload = assertEx(isAnyPayload(object) ? object : null, () => 'Invalid payload')
|
|
15
|
+
|
|
16
|
+
const errors = await new BoundWitnessValidator(validPayload as BoundWitness).validate()
|
|
17
|
+
return {
|
|
18
|
+
payload: validPayload as BoundWitness,
|
|
19
|
+
errors,
|
|
20
|
+
}
|
|
21
|
+
}, [input])
|
|
22
|
+
|
|
23
|
+
const { payload, errors } = output ?? {}
|
|
24
|
+
|
|
25
|
+
return {
|
|
26
|
+
payload,
|
|
27
|
+
errors: [validationError, ...errors ?? []].filter<Error>(error => !!error),
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import type { Hash } from '@xylabs/hex'
|
|
2
2
|
import { usePromise } from '@xylabs/react-promise'
|
|
3
3
|
import { PayloadBuilder } from '@xyo-network/payload-builder'
|
|
4
|
-
import type
|
|
4
|
+
import { type Payload } from '@xyo-network/payload-model'
|
|
5
5
|
|
|
6
6
|
export const usePayloadHash = <TPayload extends Payload>(payload: TPayload | undefined | null) => {
|
|
7
7
|
return usePromise(async () => (payload ? await PayloadBuilder.dataHash(payload) : undefined), [payload])[0]
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
+
export const usePayloadRootHash = <TPayload extends Payload>(payload: TPayload | undefined | null) => {
|
|
11
|
+
return usePromise(async () => (payload ? await PayloadBuilder.hash(payload) : undefined), [payload])[0]
|
|
12
|
+
}
|
|
13
|
+
|
|
10
14
|
export const usePayloadHashes = <TPayload extends Payload>(payloads: TPayload[] | undefined | null) => {
|
|
11
15
|
return usePromise(
|
|
12
16
|
async () =>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { assertEx } from '@xylabs/assert'
|
|
2
|
+
import { PayloadBuilder } from '@xyo-network/payload-builder'
|
|
3
|
+
import type { Payload } from '@xyo-network/payload-model'
|
|
4
|
+
import { isAnyPayload } from '@xyo-network/payload-model'
|
|
5
|
+
import { useMemo } from 'react'
|
|
6
|
+
|
|
7
|
+
import type { ValidatedResponse } from './types/index.ts'
|
|
8
|
+
|
|
9
|
+
export const usePayloadValidate = <TPayload extends Payload>(input?: string): ValidatedResponse => {
|
|
10
|
+
return useMemo(() => {
|
|
11
|
+
if (!input) return {}
|
|
12
|
+
try {
|
|
13
|
+
const object = JSON.parse(input)
|
|
14
|
+
const validPayload = assertEx(isAnyPayload(object) ? object : null, () => 'Invalid payload')
|
|
15
|
+
const { schema, ...fields } = validPayload
|
|
16
|
+
return { payload: new PayloadBuilder({ schema }).fields(fields).build() as TPayload }
|
|
17
|
+
} catch (error) {
|
|
18
|
+
return { errors: [error as Error] }
|
|
19
|
+
}
|
|
20
|
+
}, [input])
|
|
21
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"usePayloadHash.d.ts","sourceRoot":"","sources":["../../../src/hooks/usePayloadHash.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEzD,eAAO,MAAM,cAAc,GAAI,QAAQ,SAAS,OAAO,WAAW,QAAQ,GAAG,SAAS,GAAG,IAAI,kCAE5F,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,QAAQ,SAAS,OAAO,YAAY,QAAQ,EAAE,GAAG,SAAS,GAAG,IAAI,gDAQjG,CAAA"}
|