@xyo-network/react-payload-details 2.32.0-rc.11
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/LICENSE +165 -0
- package/README.md +70 -0
- package/dist/cjs/components/Details/DataDetails.d.ts +11 -0
- package/dist/cjs/components/Details/DataDetails.d.ts.map +1 -0
- package/dist/cjs/components/Details/DataDetails.js +43 -0
- package/dist/cjs/components/Details/DataDetails.js.map +1 -0
- package/dist/cjs/components/Details/Details.d.ts +15 -0
- package/dist/cjs/components/Details/Details.d.ts.map +1 -0
- package/dist/cjs/components/Details/Details.js +15 -0
- package/dist/cjs/components/Details/Details.js.map +1 -0
- package/dist/cjs/components/Details/HashSourceDetails.d.ts +9 -0
- package/dist/cjs/components/Details/HashSourceDetails.d.ts.map +1 -0
- package/dist/cjs/components/Details/HashSourceDetails.js +19 -0
- package/dist/cjs/components/Details/HashSourceDetails.js.map +1 -0
- package/dist/cjs/components/Details/JsonDetails.d.ts +10 -0
- package/dist/cjs/components/Details/JsonDetails.d.ts.map +1 -0
- package/dist/cjs/components/Details/JsonDetails.js +24 -0
- package/dist/cjs/components/Details/JsonDetails.js.map +1 -0
- package/dist/cjs/components/Details/ValidationDetails/ValidationDetails.d.ts +4 -0
- package/dist/cjs/components/Details/ValidationDetails/ValidationDetails.d.ts.map +1 -0
- package/dist/cjs/components/Details/ValidationDetails/ValidationDetails.js +26 -0
- package/dist/cjs/components/Details/ValidationDetails/ValidationDetails.js.map +1 -0
- package/dist/cjs/components/Details/ValidationDetails/ValidationDetailsProps.d.ts +8 -0
- package/dist/cjs/components/Details/ValidationDetails/ValidationDetailsProps.d.ts.map +1 -0
- package/dist/cjs/components/Details/ValidationDetails/ValidationDetailsProps.js +3 -0
- package/dist/cjs/components/Details/ValidationDetails/ValidationDetailsProps.js.map +1 -0
- package/dist/cjs/components/Details/ValidationDetails/index.d.ts +3 -0
- package/dist/cjs/components/Details/ValidationDetails/index.d.ts.map +1 -0
- package/dist/cjs/components/Details/ValidationDetails/index.js +6 -0
- package/dist/cjs/components/Details/ValidationDetails/index.js.map +1 -0
- package/dist/cjs/components/Details/index.d.ts +5 -0
- package/dist/cjs/components/Details/index.d.ts.map +1 -0
- package/dist/cjs/components/Details/index.js +8 -0
- package/dist/cjs/components/Details/index.js.map +1 -0
- package/dist/cjs/components/index.d.ts +2 -0
- package/dist/cjs/components/index.d.ts.map +1 -0
- package/dist/cjs/components/index.js +5 -0
- package/dist/cjs/components/index.js.map +1 -0
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +5 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/docs.json +944 -0
- package/dist/esm/components/Details/DataDetails.d.ts +11 -0
- package/dist/esm/components/Details/DataDetails.d.ts.map +1 -0
- package/dist/esm/components/Details/DataDetails.js +35 -0
- package/dist/esm/components/Details/DataDetails.js.map +1 -0
- package/dist/esm/components/Details/Details.d.ts +15 -0
- package/dist/esm/components/Details/Details.d.ts.map +1 -0
- package/dist/esm/components/Details/Details.js +9 -0
- package/dist/esm/components/Details/Details.js.map +1 -0
- package/dist/esm/components/Details/HashSourceDetails.d.ts +9 -0
- package/dist/esm/components/Details/HashSourceDetails.d.ts.map +1 -0
- package/dist/esm/components/Details/HashSourceDetails.js +12 -0
- package/dist/esm/components/Details/HashSourceDetails.js.map +1 -0
- package/dist/esm/components/Details/JsonDetails.d.ts +10 -0
- package/dist/esm/components/Details/JsonDetails.d.ts.map +1 -0
- package/dist/esm/components/Details/JsonDetails.js +17 -0
- package/dist/esm/components/Details/JsonDetails.js.map +1 -0
- package/dist/esm/components/Details/ValidationDetails/ValidationDetails.d.ts +4 -0
- package/dist/esm/components/Details/ValidationDetails/ValidationDetails.d.ts.map +1 -0
- package/dist/esm/components/Details/ValidationDetails/ValidationDetails.js +19 -0
- package/dist/esm/components/Details/ValidationDetails/ValidationDetails.js.map +1 -0
- package/dist/esm/components/Details/ValidationDetails/ValidationDetailsProps.d.ts +8 -0
- package/dist/esm/components/Details/ValidationDetails/ValidationDetailsProps.d.ts.map +1 -0
- package/dist/esm/components/Details/ValidationDetails/ValidationDetailsProps.js +2 -0
- package/dist/esm/components/Details/ValidationDetails/ValidationDetailsProps.js.map +1 -0
- package/dist/esm/components/Details/ValidationDetails/index.d.ts +3 -0
- package/dist/esm/components/Details/ValidationDetails/index.d.ts.map +1 -0
- package/dist/esm/components/Details/ValidationDetails/index.js +3 -0
- package/dist/esm/components/Details/ValidationDetails/index.js.map +1 -0
- package/dist/esm/components/Details/index.d.ts +5 -0
- package/dist/esm/components/Details/index.d.ts.map +1 -0
- package/dist/esm/components/Details/index.js +5 -0
- package/dist/esm/components/Details/index.js.map +1 -0
- package/dist/esm/components/index.d.ts +2 -0
- package/dist/esm/components/index.d.ts.map +1 -0
- package/dist/esm/components/index.js +2 -0
- package/dist/esm/components/index.js.map +1 -0
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -0
- package/package.json +80 -0
- package/src/components/Details/DataDetails.tsx +74 -0
- package/src/components/Details/Details.stories.tsx +62 -0
- package/src/components/Details/Details.tsx +24 -0
- package/src/components/Details/HashSourceDetails.tsx +43 -0
- package/src/components/Details/JsonDetails.tsx +43 -0
- package/src/components/Details/ValidationDetails/ValidationDetails.stories.tsx +55 -0
- package/src/components/Details/ValidationDetails/ValidationDetails.tsx +42 -0
- package/src/components/Details/ValidationDetails/ValidationDetailsProps.ts +8 -0
- package/src/components/Details/ValidationDetails/index.ts +2 -0
- package/src/components/Details/index.ts +4 -0
- package/src/components/index.ts +1 -0
- package/src/index.ts +1 -0
@@ -0,0 +1,11 @@
|
|
1
|
+
/// <reference types="react" />
|
2
|
+
import { XyoPayload } from '@xyo-network/payload';
|
3
|
+
import { PropertyProps } from '@xyo-network/react-property';
|
4
|
+
import { SizeProp } from '@xyo-network/react-shared';
|
5
|
+
export declare type PayloadDataDetailsProps = PropertyProps & {
|
6
|
+
payload?: XyoPayload;
|
7
|
+
size?: SizeProp;
|
8
|
+
badge?: boolean;
|
9
|
+
};
|
10
|
+
export declare const PayloadDataDetails: React.FC<PayloadDataDetailsProps>;
|
11
|
+
//# sourceMappingURL=DataDetails.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"DataDetails.d.ts","sourceRoot":"","sources":["../../../../src/components/Details/DataDetails.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAE,UAAU,EAAqB,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAA4B,aAAa,EAAE,MAAM,6BAA6B,CAAA;AACrF,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAKpD,oBAAY,uBAAuB,GAAG,aAAa,GAAG;IACpD,OAAO,CAAC,EAAE,UAAU,CAAA;IACpB,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAwDhE,CAAA"}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
2
|
+
import ContentCopyIcon from '@mui/icons-material/ContentCopy';
|
3
|
+
import VisibilityIcon from '@mui/icons-material/Visibility';
|
4
|
+
import { Dialog, DialogActions, DialogContent, DialogTitle } from '@mui/material';
|
5
|
+
import { ButtonEx } from '@xylabs/react-button';
|
6
|
+
import { XyoPayloadWrapper } from '@xyo-network/payload';
|
7
|
+
import { Property } from '@xyo-network/react-property';
|
8
|
+
import { useState } from 'react';
|
9
|
+
import { PayloadHashSourceDetails } from './HashSourceDetails';
|
10
|
+
export const PayloadDataDetails = ({ size, badge, payload, ...props }) => {
|
11
|
+
const wrapper = payload ? new XyoPayloadWrapper(payload) : undefined;
|
12
|
+
const [viewSourceOpen, setViewSourceOpen] = useState(false);
|
13
|
+
const hash = wrapper?.hash;
|
14
|
+
let elevation = 2;
|
15
|
+
if (props.paper) {
|
16
|
+
elevation += props.elevation ?? 0;
|
17
|
+
}
|
18
|
+
const actions = [
|
19
|
+
{
|
20
|
+
icon: _jsx(VisibilityIcon, {}),
|
21
|
+
name: 'View',
|
22
|
+
onClick: () => setViewSourceOpen(true),
|
23
|
+
},
|
24
|
+
{
|
25
|
+
icon: _jsx(ContentCopyIcon, {}),
|
26
|
+
name: 'Copy',
|
27
|
+
onClick: async () => await navigator.clipboard.writeText(wrapper?.hash ?? ''),
|
28
|
+
},
|
29
|
+
];
|
30
|
+
const onCopy = async () => {
|
31
|
+
await navigator.clipboard.writeText(wrapper?.stringified ?? '');
|
32
|
+
};
|
33
|
+
return (_jsxs(_Fragment, { children: [_jsx(Property, { titleProps: { elevation }, badge: badge, size: size, actions: actions, title: "Payload Hash", value: hash ?? '<Unknown>', tip: "This is the payload hash", ...props }), _jsxs(Dialog, { open: viewSourceOpen, onClose: () => setViewSourceOpen(false), children: [_jsx(DialogTitle, { children: "Hash Source" }), _jsx(DialogContent, { children: _jsx(PayloadHashSourceDetails, { noTitle: true, payload: payload }) }), _jsxs(DialogActions, { children: [_jsx(ButtonEx, { color: "secondary", onClick: onCopy, children: "Copy" }), _jsx(ButtonEx, { color: "secondary", onClick: () => setViewSourceOpen(false), children: "Close" })] })] })] }));
|
34
|
+
};
|
35
|
+
//# sourceMappingURL=DataDetails.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"DataDetails.js","sourceRoot":"","sources":["../../../../src/components/Details/DataDetails.tsx"],"names":[],"mappings":";AAAA,OAAO,eAAe,MAAM,iCAAiC,CAAA;AAC7D,OAAO,cAAc,MAAM,gCAAgC,CAAA;AAC3D,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAc,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAE,QAAQ,EAAiC,MAAM,6BAA6B,CAAA;AAErF,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AAQ9D,MAAM,CAAC,MAAM,kBAAkB,GAAsC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IAC1G,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAEpE,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC3D,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,CAAA;IAE1B,IAAI,SAAS,GAAG,CAAC,CAAA;IACjB,IAAI,KAAK,CAAC,KAAK,EAAE;QACf,SAAS,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,CAAA;KAClC;IAED,MAAM,OAAO,GAAqB;QAChC;YACE,IAAI,EAAE,KAAC,cAAc,KAAG;YACxB,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC;SACvC;QACD;YACE,IAAI,EAAE,KAAC,eAAe,KAAG;YACzB,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC;SAC9E;KACF,CAAA;IAED,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;QACxB,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,WAAW,IAAI,EAAE,CAAC,CAAA;IACjE,CAAC,CAAA;IAED,OAAO,CACL,8BACE,KAAC,QAAQ,IACP,UAAU,EAAE,EAAE,SAAS,EAAE,EACzB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,KAAK,EAAC,cAAc,EACpB,KAAK,EAAE,IAAI,IAAI,WAAW,EAC1B,GAAG,EAAC,0BAA0B,KAC1B,KAAK,GACT,EACF,MAAC,MAAM,IAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,aACnE,KAAC,WAAW,8BAA0B,EACtC,KAAC,aAAa,cACZ,KAAC,wBAAwB,IAAC,OAAO,QAAC,OAAO,EAAE,OAAO,GAAI,GACxC,EAChB,MAAC,aAAa,eACZ,KAAC,QAAQ,IAAC,KAAK,EAAC,WAAW,EAAC,OAAO,EAAE,MAAM,qBAEhC,EACX,KAAC,QAAQ,IAAC,KAAK,EAAC,WAAW,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,sBAExD,IACG,IACT,IACR,CACJ,CAAA;AACH,CAAC,CAAA"}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
/// <reference types="react" />
|
2
|
+
import { FlexBoxProps } from '@xylabs/react-flexbox';
|
3
|
+
import { XyoPayload } from '@xyo-network/payload';
|
4
|
+
export declare type WithPaper<T> = T & {
|
5
|
+
paper: true;
|
6
|
+
};
|
7
|
+
export declare type WithoutPaper<T> = T & {
|
8
|
+
paper?: false;
|
9
|
+
};
|
10
|
+
export declare type PayloadDetailsProps = FlexBoxProps & {
|
11
|
+
payload?: XyoPayload;
|
12
|
+
paper?: boolean;
|
13
|
+
};
|
14
|
+
export declare const PayloadDetails: React.FC<PayloadDetailsProps>;
|
15
|
+
//# sourceMappingURL=Details.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Details.d.ts","sourceRoot":"","sources":["../../../../src/components/Details/Details.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAW,MAAM,uBAAuB,CAAA;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAMjD,oBAAY,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,CAAA;AAC9C,oBAAY,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,CAAA;AAEnD,oBAAY,mBAAmB,GAAG,YAAY,GAAG;IAC/C,OAAO,CAAC,EAAE,UAAU,CAAA;IACpB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAQxD,CAAA"}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
2
|
+
import { FlexCol } from '@xylabs/react-flexbox';
|
3
|
+
import { PayloadDataDetails } from './DataDetails';
|
4
|
+
import { PayloadJsonDetails } from './JsonDetails';
|
5
|
+
import { PayloadValidationDetails } from './ValidationDetails';
|
6
|
+
export const PayloadDetails = ({ paper, payload, ...props }) => {
|
7
|
+
return (_jsxs(FlexCol, { gap: 1, justifyContent: "flex-start", alignItems: "stretch", marginTop: 2, marginBottom: 8, ...props, children: [_jsx(PayloadDataDetails, { paper: paper, size: "large", badge: true, payload: payload }), _jsx(PayloadValidationDetails, { paper: paper, value: payload }), _jsx(PayloadJsonDetails, { paper: paper, payload: payload })] }));
|
8
|
+
};
|
9
|
+
//# sourceMappingURL=Details.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"Details.js","sourceRoot":"","sources":["../../../../src/components/Details/Details.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAgB,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAG7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AAU9D,MAAM,CAAC,MAAM,cAAc,GAAkC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IAC5F,OAAO,CACL,MAAC,OAAO,IAAC,GAAG,EAAE,CAAC,EAAE,cAAc,EAAC,YAAY,EAAC,UAAU,EAAC,SAAS,EAAC,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,KAAM,KAAK,aACxG,KAAC,kBAAkB,IAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAC,OAAO,EAAC,KAAK,QAAC,OAAO,EAAE,OAAO,GAAI,EACzE,KAAC,wBAAwB,IAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,GAAI,EAC1D,KAAC,kBAAkB,IAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,GAAI,IAC9C,CACX,CAAA;AACH,CAAC,CAAA"}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
/// <reference types="react" />
|
2
|
+
import { FlexBoxProps } from '@xylabs/react-flexbox';
|
3
|
+
import { XyoPayload } from '@xyo-network/payload';
|
4
|
+
export interface PayloadHashSourceDetailsProps extends FlexBoxProps {
|
5
|
+
noTitle?: boolean;
|
6
|
+
payload?: XyoPayload;
|
7
|
+
}
|
8
|
+
export declare const PayloadHashSourceDetails: React.FC<PayloadHashSourceDetailsProps>;
|
9
|
+
//# sourceMappingURL=HashSourceDetails.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"HashSourceDetails.d.ts","sourceRoot":"","sources":["../../../../src/components/Details/HashSourceDetails.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAiC,MAAM,uBAAuB,CAAA;AAEnF,OAAO,EAAE,UAAU,EAAqB,MAAM,sBAAsB,CAAA;AAEpE,MAAM,WAAW,6BAA8B,SAAQ,YAAY;IACjE,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,UAAU,CAAA;CACrB;AAED,eAAO,MAAM,wBAAwB,EAAE,KAAK,CAAC,EAAE,CAAC,6BAA6B,CA+B5E,CAAA"}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
2
|
+
import ContentCopyIcon from '@mui/icons-material/ContentCopy';
|
3
|
+
import { IconButton, Typography, useTheme } from '@mui/material';
|
4
|
+
import { FlexCol, FlexGrowRow, FlexRow } from '@xylabs/react-flexbox';
|
5
|
+
import { QuickTipButton } from '@xylabs/react-quick-tip-button';
|
6
|
+
import { XyoPayloadWrapper } from '@xyo-network/payload';
|
7
|
+
export const PayloadHashSourceDetails = ({ noTitle = false, payload, ...props }) => {
|
8
|
+
const theme = useTheme();
|
9
|
+
const payloadWrapper = payload ? new XyoPayloadWrapper(payload) : null;
|
10
|
+
return (_jsxs(FlexCol, { alignItems: "stretch", ...props, children: [noTitle ? null : (_jsxs(FlexRow, { margin: 1, justifyContent: "flex-start", children: [_jsx(Typography, { children: "Hash Source" }), _jsx(QuickTipButton, { title: "Hash Source", children: "The actual string used to generate the hash (SHA256)" })] })), _jsxs(FlexRow, { children: [_jsx(FlexGrowRow, { background: true, border: 1, borderColor: theme.palette.divider, justifyContent: "start", children: _jsx(Typography, { padding: 2, fontFamily: "monospace", variant: "body1", sx: { overflowWrap: 'break-word', wordBreak: 'break-all' }, children: payloadWrapper?.stringified ?? '' }) }), _jsx(IconButton, { children: _jsx(ContentCopyIcon, {}) })] }), noTitle ? (_jsx(FlexRow, { margin: 1, justifyContent: "flex-start", children: _jsx(Typography, { variant: "body2", children: "The actual string used to generate the hash (SHA256). This can be used to validate the hash manually." }) })) : null] }));
|
11
|
+
};
|
12
|
+
//# sourceMappingURL=HashSourceDetails.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"HashSourceDetails.js","sourceRoot":"","sources":["../../../../src/components/Details/HashSourceDetails.tsx"],"names":[],"mappings":";AAAA,OAAO,eAAe,MAAM,iCAAiC,CAAA;AAC7D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAChE,OAAO,EAAgB,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,EAAc,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAOpE,MAAM,CAAC,MAAM,wBAAwB,GAA4C,CAAC,EAAE,OAAO,GAAG,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IAC1H,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAA;IACxB,MAAM,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAEtE,OAAO,CACL,MAAC,OAAO,IAAC,UAAU,EAAC,SAAS,KAAK,KAAK,aACpC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAChB,MAAC,OAAO,IAAC,MAAM,EAAE,CAAC,EAAE,cAAc,EAAC,YAAY,aAC7C,KAAC,UAAU,8BAAyB,EACpC,KAAC,cAAc,IAAC,KAAK,EAAC,aAAa,qEAAsE,IACjG,CACX,EACD,MAAC,OAAO,eACN,KAAC,WAAW,IAAC,UAAU,QAAC,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,EAAC,OAAO,YAC3F,KAAC,UAAU,IAAC,OAAO,EAAE,CAAC,EAAE,UAAU,EAAC,WAAW,EAAC,OAAO,EAAC,OAAO,EAAC,EAAE,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,YACtH,cAAc,EAAE,WAAW,IAAI,EAAE,GACvB,GACD,EACd,KAAC,UAAU,cACT,KAAC,eAAe,KAAG,GACR,IACL,EACT,OAAO,CAAC,CAAC,CAAC,CACT,KAAC,OAAO,IAAC,MAAM,EAAE,CAAC,EAAE,cAAc,EAAC,YAAY,YAC7C,KAAC,UAAU,IAAC,OAAO,EAAC,OAAO,sHAEd,GACL,CACX,CAAC,CAAC,CAAC,IAAI,IACA,CACX,CAAA;AACH,CAAC,CAAA"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
/// <reference types="react" />
|
2
|
+
import { XyoPayload } from '@xyo-network/payload';
|
3
|
+
import { PropertyGroupProps } from '@xyo-network/react-property';
|
4
|
+
import { ReactJsonViewProps } from 'react-json-view';
|
5
|
+
export declare type PayloadJsonDetailsProps = PropertyGroupProps & {
|
6
|
+
payload?: XyoPayload;
|
7
|
+
jsonViewProps?: ReactJsonViewProps;
|
8
|
+
};
|
9
|
+
export declare const PayloadJsonDetails: React.FC<PayloadJsonDetailsProps>;
|
10
|
+
//# sourceMappingURL=JsonDetails.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"JsonDetails.d.ts","sourceRoot":"","sources":["../../../../src/components/Details/JsonDetails.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAiB,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAE/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAIpD,oBAAY,uBAAuB,GAAG,kBAAkB,GAAG;IACzD,OAAO,CAAC,EAAE,UAAU,CAAA;IACpB,aAAa,CAAC,EAAE,kBAAkB,CAAA;CACnC,CAAA;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA4BhE,CAAA"}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
2
|
+
import { Paper, useMediaQuery, useTheme } from '@mui/material';
|
3
|
+
import { FlexGrowRow } from '@xylabs/react-flexbox';
|
4
|
+
import { PropertyGroup } from '@xyo-network/react-property';
|
5
|
+
import { lazy, Suspense } from 'react';
|
6
|
+
const JsonView = lazy(() => import(/* webpackChunkName: "jsonView" */ 'react-json-view'));
|
7
|
+
export const PayloadJsonDetails = ({ jsonViewProps, payload = {}, ...props }) => {
|
8
|
+
const { breakpoints, palette } = useTheme();
|
9
|
+
const belowSm = useMediaQuery(breakpoints.down('sm'));
|
10
|
+
let elevation = 2;
|
11
|
+
if (props.paper) {
|
12
|
+
elevation += props.elevation ?? 0;
|
13
|
+
}
|
14
|
+
const jsonTheme = palette.mode === 'dark' ? 'shapeshifter' : undefined;
|
15
|
+
return (_jsx(PropertyGroup, { titleProps: { elevation }, title: "JSON", tip: "The raw JSON of the payload", ...props, children: _jsx(Paper, { square: true, variant: "elevation", style: { overflow: 'hidden', padding: '16px', width: '100%' }, children: _jsx(Suspense, { fallback: _jsx(FlexGrowRow, {}), children: _jsx(JsonView, { groupArraysAfterLength: 20, style: { backgroundColor: undefined, overflow: 'hidden' }, src: payload, enableClipboard: true, theme: jsonTheme, collapseStringsAfterLength: belowSm ? 24 : 32, ...jsonViewProps }) }) }) }));
|
16
|
+
};
|
17
|
+
//# sourceMappingURL=JsonDetails.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"JsonDetails.js","sourceRoot":"","sources":["../../../../src/components/Details/JsonDetails.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAEnD,OAAO,EAAE,aAAa,EAAsB,MAAM,6BAA6B,CAAA;AAC/E,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAGtC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,kCAAkC,CAAC,iBAAiB,CAAC,CAAC,CAAA;AAOzF,MAAM,CAAC,MAAM,kBAAkB,GAAsC,CAAC,EAAE,aAAa,EAAE,OAAO,GAAG,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IACjH,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,CAAA;IAC3C,MAAM,OAAO,GAAG,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAErD,IAAI,SAAS,GAAG,CAAC,CAAA;IACjB,IAAI,KAAK,CAAC,KAAK,EAAE;QACf,SAAS,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,CAAA;KAClC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAA;IAEtE,OAAO,CACL,KAAC,aAAa,IAAC,UAAU,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,EAAC,MAAM,EAAC,GAAG,EAAC,6BAA6B,KAAK,KAAK,YAChG,KAAC,KAAK,IAAC,MAAM,QAAC,OAAO,EAAC,WAAW,EAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAC7F,KAAC,QAAQ,IAAC,QAAQ,EAAE,KAAC,WAAW,KAAG,YACjC,KAAC,QAAQ,IACP,sBAAsB,EAAE,EAAE,EAC1B,KAAK,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,EACzD,GAAG,EAAE,OAAO,EACZ,eAAe,QACf,KAAK,EAAE,SAAS,EAChB,0BAA0B,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KACzC,aAAa,GACjB,GACO,GACL,GACM,CACjB,CAAA;AACH,CAAC,CAAA"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ValidationDetails.d.ts","sourceRoot":"","sources":["../../../../../src/components/Details/ValidationDetails/ValidationDetails.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAA;AAExE,eAAO,MAAM,wBAAwB,EAAE,KAAK,CAAC,EAAE,CAAC,6BAA6B,CAiC5E,CAAA"}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
2
|
+
import { Typography } from '@mui/material';
|
3
|
+
import { FlexCol } from '@xylabs/react-flexbox';
|
4
|
+
import { XyoPayloadValidator } from '@xyo-network/payload';
|
5
|
+
import { Property, PropertyGroup } from '@xyo-network/react-property';
|
6
|
+
import { SchemaProperty } from '@xyo-network/react-schema';
|
7
|
+
export const PayloadValidationDetails = ({ viewSchemaUrl, skipBody = false, value, ...props }) => {
|
8
|
+
const validator = value ? new XyoPayloadValidator(value) : undefined;
|
9
|
+
const bodyErrors = skipBody ? [] : validator?.body.validate() ?? [];
|
10
|
+
const errors = [...bodyErrors];
|
11
|
+
let elevation = 2;
|
12
|
+
if (props.paper) {
|
13
|
+
elevation += props.elevation ?? 0;
|
14
|
+
}
|
15
|
+
return (_jsxs(PropertyGroup, { titleProps: { elevation }, title: "Validation", tip: "The results from validating the payload", ...props, children: [_jsx(Property, { titleProps: { elevation }, flexGrow: 1, title: "Valid", value: errors.length === 0 ? 'True' : 'False', tip: errors.length > 0 ? (_jsx(FlexCol, { children: errors.map((error, index) => {
|
16
|
+
return _jsx(Typography, { children: error.toString() }, index);
|
17
|
+
}) })) : (_jsx(Typography, { children: "No Errors" })) }), value?.schema && _jsx(SchemaProperty, { flexGrow: 1, titleProps: { elevation }, value: value.schema, viewSchemaUrl: viewSchemaUrl })] }));
|
18
|
+
};
|
19
|
+
//# sourceMappingURL=ValidationDetails.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ValidationDetails.js","sourceRoot":"","sources":["../../../../../src/components/Details/ValidationDetails/ValidationDetails.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAI1D,MAAM,CAAC,MAAM,wBAAwB,GAA4C,CAAC,EAAE,aAAa,EAAE,QAAQ,GAAG,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IACxI,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAEpE,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAA;IACnE,MAAM,MAAM,GAAY,CAAC,GAAG,UAAU,CAAC,CAAA;IAEvC,IAAI,SAAS,GAAG,CAAC,CAAA;IACjB,IAAI,KAAK,CAAC,KAAK,EAAE;QACf,SAAS,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,CAAA;KAClC;IAED,OAAO,CACL,MAAC,aAAa,IAAC,UAAU,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,EAAC,YAAY,EAAC,GAAG,EAAC,yCAAyC,KAAK,KAAK,aAClH,KAAC,QAAQ,IACP,UAAU,EAAE,EAAE,SAAS,EAAE,EACzB,QAAQ,EAAE,CAAC,EACX,KAAK,EAAC,OAAO,EACb,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAC7C,GAAG,EACD,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAClB,KAAC,OAAO,cACL,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;wBAC3B,OAAO,KAAC,UAAU,cAAc,KAAK,CAAC,QAAQ,EAAE,IAAxB,KAAK,CAAiC,CAAA;oBAChE,CAAC,CAAC,GACM,CACX,CAAC,CAAC,CAAC,CACF,KAAC,UAAU,4BAAuB,CACnC,GAEH,EACD,KAAK,EAAE,MAAM,IAAI,KAAC,cAAc,IAAC,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,GAAI,IACjH,CACjB,CAAA;AACH,CAAC,CAAA"}
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { XyoPayloadWithPartialMeta } from '@xyo-network/payload';
|
2
|
+
import { PropertyGroupProps } from '@xyo-network/react-property';
|
3
|
+
export declare type PayloadValidationDetailsProps = PropertyGroupProps & {
|
4
|
+
skipBody?: boolean;
|
5
|
+
value?: XyoPayloadWithPartialMeta;
|
6
|
+
viewSchemaUrl?: string;
|
7
|
+
};
|
8
|
+
//# sourceMappingURL=ValidationDetailsProps.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ValidationDetailsProps.d.ts","sourceRoot":"","sources":["../../../../../src/components/Details/ValidationDetails/ValidationDetailsProps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAEhE,oBAAY,6BAA6B,GAAG,kBAAkB,GAAG;IAC/D,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,yBAAyB,CAAA;IACjC,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ValidationDetailsProps.js","sourceRoot":"","sources":["../../../../../src/components/Details/ValidationDetails/ValidationDetailsProps.ts"],"names":[],"mappings":""}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/Details/ValidationDetails/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,0BAA0B,CAAA"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/components/Details/ValidationDetails/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,0BAA0B,CAAA"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/Details/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,qBAAqB,CAAA"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/Details/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,qBAAqB,CAAA"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA"}
|
package/package.json
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
{
|
2
|
+
"name": "@xyo-network/react-payload-details",
|
3
|
+
"author": {
|
4
|
+
"email": "support@xyo.network",
|
5
|
+
"name": "XYO Development Team",
|
6
|
+
"url": "https://xyo.network"
|
7
|
+
},
|
8
|
+
"bugs": {
|
9
|
+
"email": "support@xyo.network",
|
10
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-react-js/issues"
|
11
|
+
},
|
12
|
+
"dependencies": {
|
13
|
+
"@xylabs/react-button": "^2.14.16",
|
14
|
+
"@xylabs/react-flexbox": "^2.14.16",
|
15
|
+
"@xylabs/react-quick-tip-button": "^2.14.16",
|
16
|
+
"@xyo-network/react-property": "^2.32.0-rc.11",
|
17
|
+
"@xyo-network/react-schema": "^2.32.0-rc.11",
|
18
|
+
"@xyo-network/react-shared": "^2.32.0-rc.11",
|
19
|
+
"react-json-view": "^1.21.3",
|
20
|
+
"tslib": "^2.4.0"
|
21
|
+
},
|
22
|
+
"peerDependencies": {
|
23
|
+
"@mui/icons-material": "^5.10.3",
|
24
|
+
"@mui/material": "^5.10.3",
|
25
|
+
"@mui/styles": "^5.10.3",
|
26
|
+
"@xyo-network/api": "^2.30.0-rc.3",
|
27
|
+
"@xyo-network/payload": "^2.30.0-rc.3",
|
28
|
+
"@xyo-network/property": "^2.30.0-rc.3",
|
29
|
+
"@xyo-network/schema-payload-plugin": "^2.30.0-rc.3",
|
30
|
+
"@xyo-network/utils": "^2.30.0-rc.3",
|
31
|
+
"react": "^18.2.0",
|
32
|
+
"react-dom": "^18.2.0",
|
33
|
+
"react-router-dom": "^6.3.0"
|
34
|
+
},
|
35
|
+
"description": "Common React library for all XYO projects that use React",
|
36
|
+
"browser": "dist/esm/index.js",
|
37
|
+
"docs": "dist/docs.json",
|
38
|
+
"exports": {
|
39
|
+
".": {
|
40
|
+
"node": {
|
41
|
+
"import": "./dist/esm/index.js",
|
42
|
+
"require": "./dist/cjs/index.js"
|
43
|
+
},
|
44
|
+
"browser": {
|
45
|
+
"import": "./dist/esm/index.js",
|
46
|
+
"require": "./dist/cjs/index.js"
|
47
|
+
},
|
48
|
+
"default": "./dist/esm/index.js"
|
49
|
+
},
|
50
|
+
"./dist/docs.json": {
|
51
|
+
"default": "./dist/docs.json"
|
52
|
+
},
|
53
|
+
"./package.json": "./package.json"
|
54
|
+
},
|
55
|
+
"main": "dist/cjs/index.js",
|
56
|
+
"module": "dist/esm/index.js",
|
57
|
+
"homepage": "https://xyo.network",
|
58
|
+
"keywords": [
|
59
|
+
"xyo",
|
60
|
+
"utility",
|
61
|
+
"typescript",
|
62
|
+
"react"
|
63
|
+
],
|
64
|
+
"license": "LGPL-3.0",
|
65
|
+
"publishConfig": {
|
66
|
+
"access": "public"
|
67
|
+
},
|
68
|
+
"repository": {
|
69
|
+
"type": "git",
|
70
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-react-js.git"
|
71
|
+
},
|
72
|
+
"scripts": {
|
73
|
+
"lint-pkg": "npmPkgJsonLint .",
|
74
|
+
"license": "yarn license-checker --exclude \"MIT, ISC, Apache-2.0, BSD, BSD-2-Clause, CC-BY-4.0, Unlicense, CC-BY-3.0, CC0-1.0\""
|
75
|
+
},
|
76
|
+
"sideEffects": false,
|
77
|
+
"types": "dist/esm/index.d.ts",
|
78
|
+
"version": "2.32.0-rc.11",
|
79
|
+
"stableVersion": "2.31.2"
|
80
|
+
}
|
@@ -0,0 +1,74 @@
|
|
1
|
+
import ContentCopyIcon from '@mui/icons-material/ContentCopy'
|
2
|
+
import VisibilityIcon from '@mui/icons-material/Visibility'
|
3
|
+
import { Dialog, DialogActions, DialogContent, DialogTitle } from '@mui/material'
|
4
|
+
import { ButtonEx } from '@xylabs/react-button'
|
5
|
+
import { XyoPayload, XyoPayloadWrapper } from '@xyo-network/payload'
|
6
|
+
import { Property, PropertyAction, PropertyProps } from '@xyo-network/react-property'
|
7
|
+
import { SizeProp } from '@xyo-network/react-shared'
|
8
|
+
import { useState } from 'react'
|
9
|
+
|
10
|
+
import { PayloadHashSourceDetails } from './HashSourceDetails'
|
11
|
+
|
12
|
+
export type PayloadDataDetailsProps = PropertyProps & {
|
13
|
+
payload?: XyoPayload
|
14
|
+
size?: SizeProp
|
15
|
+
badge?: boolean
|
16
|
+
}
|
17
|
+
|
18
|
+
export const PayloadDataDetails: React.FC<PayloadDataDetailsProps> = ({ size, badge, payload, ...props }) => {
|
19
|
+
const wrapper = payload ? new XyoPayloadWrapper(payload) : undefined
|
20
|
+
|
21
|
+
const [viewSourceOpen, setViewSourceOpen] = useState(false)
|
22
|
+
const hash = wrapper?.hash
|
23
|
+
|
24
|
+
let elevation = 2
|
25
|
+
if (props.paper) {
|
26
|
+
elevation += props.elevation ?? 0
|
27
|
+
}
|
28
|
+
|
29
|
+
const actions: PropertyAction[] = [
|
30
|
+
{
|
31
|
+
icon: <VisibilityIcon />,
|
32
|
+
name: 'View',
|
33
|
+
onClick: () => setViewSourceOpen(true),
|
34
|
+
},
|
35
|
+
{
|
36
|
+
icon: <ContentCopyIcon />,
|
37
|
+
name: 'Copy',
|
38
|
+
onClick: async () => await navigator.clipboard.writeText(wrapper?.hash ?? ''),
|
39
|
+
},
|
40
|
+
]
|
41
|
+
|
42
|
+
const onCopy = async () => {
|
43
|
+
await navigator.clipboard.writeText(wrapper?.stringified ?? '')
|
44
|
+
}
|
45
|
+
|
46
|
+
return (
|
47
|
+
<>
|
48
|
+
<Property
|
49
|
+
titleProps={{ elevation }}
|
50
|
+
badge={badge}
|
51
|
+
size={size}
|
52
|
+
actions={actions}
|
53
|
+
title="Payload Hash"
|
54
|
+
value={hash ?? '<Unknown>'}
|
55
|
+
tip="This is the payload hash"
|
56
|
+
{...props}
|
57
|
+
/>
|
58
|
+
<Dialog open={viewSourceOpen} onClose={() => setViewSourceOpen(false)}>
|
59
|
+
<DialogTitle>Hash Source</DialogTitle>
|
60
|
+
<DialogContent>
|
61
|
+
<PayloadHashSourceDetails noTitle payload={payload} />
|
62
|
+
</DialogContent>
|
63
|
+
<DialogActions>
|
64
|
+
<ButtonEx color="secondary" onClick={onCopy}>
|
65
|
+
Copy
|
66
|
+
</ButtonEx>
|
67
|
+
<ButtonEx color="secondary" onClick={() => setViewSourceOpen(false)}>
|
68
|
+
Close
|
69
|
+
</ButtonEx>
|
70
|
+
</DialogActions>
|
71
|
+
</Dialog>
|
72
|
+
</>
|
73
|
+
)
|
74
|
+
}
|
@@ -0,0 +1,62 @@
|
|
1
|
+
import { ComponentMeta, ComponentStory } from '@storybook/react'
|
2
|
+
import { samplePayload, samplePayloadFromBuilder, useAppThemeDecorator } from '@xyo-network/react-storybook'
|
3
|
+
import { BrowserRouter, Route, Routes } from 'react-router-dom'
|
4
|
+
|
5
|
+
import { PayloadDetails } from './Details'
|
6
|
+
|
7
|
+
const StorybookEntry = {
|
8
|
+
argTypes: {},
|
9
|
+
component: PayloadDetails,
|
10
|
+
parameters: {
|
11
|
+
docs: {
|
12
|
+
page: null,
|
13
|
+
},
|
14
|
+
},
|
15
|
+
title: 'payload/Details',
|
16
|
+
} as ComponentMeta<typeof PayloadDetails>
|
17
|
+
|
18
|
+
const Template: ComponentStory<typeof PayloadDetails> = (args) => (
|
19
|
+
<BrowserRouter>
|
20
|
+
<Routes>
|
21
|
+
<Route path="temp" element={<h1>Successfully navigated to archivePath</h1>} />
|
22
|
+
<Route path="*" element={<PayloadDetails {...args}></PayloadDetails>}></Route>
|
23
|
+
</Routes>
|
24
|
+
</BrowserRouter>
|
25
|
+
)
|
26
|
+
|
27
|
+
const Default = Template.bind({})
|
28
|
+
Default.args = {}
|
29
|
+
Default.decorators = [useAppThemeDecorator]
|
30
|
+
|
31
|
+
const WithSample = Template.bind({})
|
32
|
+
WithSample.args = { payload: samplePayload }
|
33
|
+
WithSample.decorators = [useAppThemeDecorator]
|
34
|
+
|
35
|
+
const WithBuilderSample = Template.bind({})
|
36
|
+
WithBuilderSample.args = { payload: samplePayloadFromBuilder }
|
37
|
+
WithBuilderSample.decorators = [useAppThemeDecorator]
|
38
|
+
|
39
|
+
const WithArchiveLink = Template.bind({})
|
40
|
+
WithArchiveLink.args = { payload: samplePayloadFromBuilder }
|
41
|
+
WithArchiveLink.decorators = [useAppThemeDecorator]
|
42
|
+
|
43
|
+
const DefaultPaper = Template.bind({})
|
44
|
+
DefaultPaper.args = { paper: true }
|
45
|
+
DefaultPaper.decorators = [useAppThemeDecorator]
|
46
|
+
|
47
|
+
const WithSamplePaper = Template.bind({})
|
48
|
+
WithSamplePaper.args = { paper: true, payload: samplePayload }
|
49
|
+
WithSamplePaper.decorators = [useAppThemeDecorator]
|
50
|
+
|
51
|
+
const WithBuilderSamplePaper = Template.bind({})
|
52
|
+
WithBuilderSamplePaper.args = { paper: true, payload: samplePayloadFromBuilder }
|
53
|
+
WithBuilderSamplePaper.decorators = [useAppThemeDecorator]
|
54
|
+
|
55
|
+
const WithArchiveLinkPaper = Template.bind({})
|
56
|
+
WithArchiveLinkPaper.args = { paper: true, payload: samplePayloadFromBuilder }
|
57
|
+
WithArchiveLinkPaper.decorators = [useAppThemeDecorator]
|
58
|
+
|
59
|
+
export { Default, DefaultPaper, WithArchiveLink, WithArchiveLinkPaper, WithBuilderSample, WithBuilderSamplePaper, WithSample, WithSamplePaper }
|
60
|
+
|
61
|
+
// eslint-disable-next-line import/no-default-export
|
62
|
+
export default StorybookEntry
|
@@ -0,0 +1,24 @@
|
|
1
|
+
import { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'
|
2
|
+
import { XyoPayload } from '@xyo-network/payload'
|
3
|
+
|
4
|
+
import { PayloadDataDetails } from './DataDetails'
|
5
|
+
import { PayloadJsonDetails } from './JsonDetails'
|
6
|
+
import { PayloadValidationDetails } from './ValidationDetails'
|
7
|
+
|
8
|
+
export type WithPaper<T> = T & { paper: true }
|
9
|
+
export type WithoutPaper<T> = T & { paper?: false }
|
10
|
+
|
11
|
+
export type PayloadDetailsProps = FlexBoxProps & {
|
12
|
+
payload?: XyoPayload
|
13
|
+
paper?: boolean
|
14
|
+
}
|
15
|
+
|
16
|
+
export const PayloadDetails: React.FC<PayloadDetailsProps> = ({ paper, payload, ...props }) => {
|
17
|
+
return (
|
18
|
+
<FlexCol gap={1} justifyContent="flex-start" alignItems="stretch" marginTop={2} marginBottom={8} {...props}>
|
19
|
+
<PayloadDataDetails paper={paper} size="large" badge payload={payload} />
|
20
|
+
<PayloadValidationDetails paper={paper} value={payload} />
|
21
|
+
<PayloadJsonDetails paper={paper} payload={payload} />
|
22
|
+
</FlexCol>
|
23
|
+
)
|
24
|
+
}
|
@@ -0,0 +1,43 @@
|
|
1
|
+
import ContentCopyIcon from '@mui/icons-material/ContentCopy'
|
2
|
+
import { IconButton, Typography, useTheme } from '@mui/material'
|
3
|
+
import { FlexBoxProps, FlexCol, FlexGrowRow, FlexRow } from '@xylabs/react-flexbox'
|
4
|
+
import { QuickTipButton } from '@xylabs/react-quick-tip-button'
|
5
|
+
import { XyoPayload, XyoPayloadWrapper } from '@xyo-network/payload'
|
6
|
+
|
7
|
+
export interface PayloadHashSourceDetailsProps extends FlexBoxProps {
|
8
|
+
noTitle?: boolean
|
9
|
+
payload?: XyoPayload
|
10
|
+
}
|
11
|
+
|
12
|
+
export const PayloadHashSourceDetails: React.FC<PayloadHashSourceDetailsProps> = ({ noTitle = false, payload, ...props }) => {
|
13
|
+
const theme = useTheme()
|
14
|
+
const payloadWrapper = payload ? new XyoPayloadWrapper(payload) : null
|
15
|
+
|
16
|
+
return (
|
17
|
+
<FlexCol alignItems="stretch" {...props}>
|
18
|
+
{noTitle ? null : (
|
19
|
+
<FlexRow margin={1} justifyContent="flex-start">
|
20
|
+
<Typography>Hash Source</Typography>
|
21
|
+
<QuickTipButton title="Hash Source">The actual string used to generate the hash (SHA256)</QuickTipButton>
|
22
|
+
</FlexRow>
|
23
|
+
)}
|
24
|
+
<FlexRow>
|
25
|
+
<FlexGrowRow background border={1} borderColor={theme.palette.divider} justifyContent="start">
|
26
|
+
<Typography padding={2} fontFamily="monospace" variant="body1" sx={{ overflowWrap: 'break-word', wordBreak: 'break-all' }}>
|
27
|
+
{payloadWrapper?.stringified ?? ''}
|
28
|
+
</Typography>
|
29
|
+
</FlexGrowRow>
|
30
|
+
<IconButton>
|
31
|
+
<ContentCopyIcon />
|
32
|
+
</IconButton>
|
33
|
+
</FlexRow>
|
34
|
+
{noTitle ? (
|
35
|
+
<FlexRow margin={1} justifyContent="flex-start">
|
36
|
+
<Typography variant="body2">
|
37
|
+
The actual string used to generate the hash (SHA256). This can be used to validate the hash manually.
|
38
|
+
</Typography>
|
39
|
+
</FlexRow>
|
40
|
+
) : null}
|
41
|
+
</FlexCol>
|
42
|
+
)
|
43
|
+
}
|