@xyo-network/react-payload-details 7.5.8 → 7.5.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.
@@ -1,57 +1,70 @@
1
- var __defProp = Object.defineProperty;
2
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
-
4
1
  // src/components/Details/DataDetails.tsx
5
2
  import { ContentCopy as ContentCopyIcon2, Visibility as VisibilityIcon } from "@mui/icons-material";
6
- import { Dialog, DialogActions, DialogContent, DialogTitle } from "@mui/material";
3
+ import {
4
+ Dialog,
5
+ DialogActions,
6
+ DialogContent,
7
+ DialogTitle
8
+ } from "@mui/material";
7
9
  import { ButtonEx } from "@xylabs/react-button";
8
10
  import { forget } from "@xylabs/sdk-js";
9
11
  import { PayloadBuilder as PayloadBuilder2 } from "@xyo-network/payload-builder";
10
12
  import { Property } from "@xyo-network/react-property";
11
13
  import { usePayloadHash } from "@xyo-network/react-shared";
12
- import React2, { useState } from "react";
14
+ import { useState } from "react";
13
15
 
14
16
  // src/components/Details/HashSourceDetails.tsx
15
17
  import { ContentCopy as ContentCopyIcon } from "@mui/icons-material";
16
- import { IconButton, Typography, useTheme } from "@mui/material";
17
- import { FlexCol, FlexGrowRow, FlexRow } from "@xylabs/react-flexbox";
18
+ import {
19
+ IconButton,
20
+ Typography,
21
+ useTheme
22
+ } from "@mui/material";
23
+ import {
24
+ FlexCol,
25
+ FlexGrowRow,
26
+ FlexRow
27
+ } from "@xylabs/react-flexbox";
18
28
  import { QuickTipButton } from "@xylabs/react-quick-tip-button";
19
29
  import { PayloadBuilder } from "@xyo-network/payload-builder";
20
- import React from "react";
21
- var PayloadHashSourceDetails = /* @__PURE__ */ __name(({ noTitle = false, payload, ...props }) => {
30
+ import { jsx, jsxs } from "react/jsx-runtime";
31
+ var PayloadHashSourceDetails = ({
32
+ noTitle = false,
33
+ payload,
34
+ ...props
35
+ }) => {
22
36
  const theme = useTheme();
23
37
  const payloadString = payload ? JSON.stringify(PayloadBuilder.hashableFields(payload), null, 2) : "";
24
- return /* @__PURE__ */ React.createElement(FlexCol, {
25
- alignItems: "stretch",
26
- ...props
27
- }, noTitle ? null : /* @__PURE__ */ React.createElement(FlexRow, {
28
- margin: 1,
29
- justifyContent: "flex-start"
30
- }, /* @__PURE__ */ React.createElement(Typography, null, "Hash Source"), /* @__PURE__ */ React.createElement(QuickTipButton, {
31
- title: "Hash Source"
32
- }, "The actual string used to generate the hash (SHA256)")), /* @__PURE__ */ React.createElement(FlexRow, null, /* @__PURE__ */ React.createElement(FlexGrowRow, {
33
- background: true,
34
- border: 1,
35
- borderColor: theme.vars.palette.divider,
36
- justifyContent: "start"
37
- }, /* @__PURE__ */ React.createElement(Typography, {
38
- padding: 2,
39
- fontFamily: "monospace",
40
- variant: "body1",
41
- sx: {
42
- overflowWrap: "break-word",
43
- wordBreak: "break-all"
44
- }
45
- }, payloadString)), /* @__PURE__ */ React.createElement(IconButton, null, /* @__PURE__ */ React.createElement(ContentCopyIcon, null))), noTitle ? /* @__PURE__ */ React.createElement(FlexRow, {
46
- margin: 1,
47
- justifyContent: "flex-start"
48
- }, /* @__PURE__ */ React.createElement(Typography, {
49
- variant: "body2"
50
- }, "The actual string used to generate the hash (SHA256). This can be used to validate the hash manually.")) : null);
51
- }, "PayloadHashSourceDetails");
38
+ return /* @__PURE__ */ jsxs(FlexCol, { alignItems: "stretch", ...props, children: [
39
+ noTitle ? null : /* @__PURE__ */ jsxs(FlexRow, { margin: 1, justifyContent: "flex-start", children: [
40
+ /* @__PURE__ */ jsx(Typography, { children: "Hash Source" }),
41
+ /* @__PURE__ */ jsx(QuickTipButton, { title: "Hash Source", children: "The actual string used to generate the hash (SHA256)" })
42
+ ] }),
43
+ /* @__PURE__ */ jsxs(FlexRow, { children: [
44
+ /* @__PURE__ */ jsx(FlexGrowRow, { background: true, border: 1, borderColor: theme.vars.palette.divider, justifyContent: "start", children: /* @__PURE__ */ jsx(
45
+ Typography,
46
+ {
47
+ padding: 2,
48
+ fontFamily: "monospace",
49
+ variant: "body1",
50
+ sx: { overflowWrap: "break-word", wordBreak: "break-all" },
51
+ children: payloadString
52
+ }
53
+ ) }),
54
+ /* @__PURE__ */ jsx(IconButton, { children: /* @__PURE__ */ jsx(ContentCopyIcon, {}) })
55
+ ] }),
56
+ noTitle ? /* @__PURE__ */ jsx(FlexRow, { margin: 1, justifyContent: "flex-start", children: /* @__PURE__ */ jsx(Typography, { variant: "body2", children: "The actual string used to generate the hash (SHA256). This can be used to validate the hash manually." }) }) : null
57
+ ] });
58
+ };
52
59
 
53
60
  // src/components/Details/DataDetails.tsx
54
- var PayloadDataDetails = /* @__PURE__ */ __name(({ size, badge, payload, ...props }) => {
61
+ import { Fragment, jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
62
+ var PayloadDataDetails = ({
63
+ size,
64
+ badge,
65
+ payload,
66
+ ...props
67
+ }) => {
55
68
  const payloadString = payload ? JSON.stringify(PayloadBuilder2.hashableFields(payload), null, 2) : "";
56
69
  const [viewSourceOpen, setViewSourceOpen] = useState(false);
57
70
  const hash = usePayloadHash(payload);
@@ -61,87 +74,91 @@ var PayloadDataDetails = /* @__PURE__ */ __name(({ size, badge, payload, ...prop
61
74
  }
62
75
  const actions = [
63
76
  {
64
- icon: /* @__PURE__ */ React2.createElement(VisibilityIcon, null),
77
+ icon: /* @__PURE__ */ jsx2(VisibilityIcon, {}),
65
78
  name: "View",
66
- onClick: /* @__PURE__ */ __name(() => setViewSourceOpen(true), "onClick")
79
+ onClick: () => setViewSourceOpen(true)
67
80
  },
68
81
  {
69
- icon: /* @__PURE__ */ React2.createElement(ContentCopyIcon2, null),
82
+ icon: /* @__PURE__ */ jsx2(ContentCopyIcon2, {}),
70
83
  name: "Copy",
71
- onClick: /* @__PURE__ */ __name(() => forget(navigator.clipboard.writeText(hash ?? "")), "onClick")
84
+ onClick: () => forget(navigator.clipboard.writeText(hash ?? ""))
72
85
  }
73
86
  ];
74
- const onCopy = /* @__PURE__ */ __name(() => {
87
+ const onCopy = () => {
75
88
  forget(navigator.clipboard.writeText(payloadString));
76
- }, "onCopy");
77
- return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(Property, {
78
- titleProps: {
79
- elevation
80
- },
81
- badge,
82
- size,
83
- actions,
84
- title: "Payload Hash",
85
- value: hash ?? "<Unknown>",
86
- tip: "This is the payload hash",
87
- ...props
88
- }), /* @__PURE__ */ React2.createElement(Dialog, {
89
- open: viewSourceOpen,
90
- onClose: /* @__PURE__ */ __name(() => setViewSourceOpen(false), "onClose")
91
- }, /* @__PURE__ */ React2.createElement(DialogTitle, null, "Hash Source"), /* @__PURE__ */ React2.createElement(DialogContent, null, /* @__PURE__ */ React2.createElement(PayloadHashSourceDetails, {
92
- noTitle: true,
93
- payload
94
- })), /* @__PURE__ */ React2.createElement(DialogActions, null, /* @__PURE__ */ React2.createElement(ButtonEx, {
95
- color: "secondary",
96
- onClick: onCopy
97
- }, "Copy"), /* @__PURE__ */ React2.createElement(ButtonEx, {
98
- color: "secondary",
99
- onClick: /* @__PURE__ */ __name(() => setViewSourceOpen(false), "onClick")
100
- }, "Close"))));
101
- }, "PayloadDataDetails");
89
+ };
90
+ return /* @__PURE__ */ jsxs2(Fragment, { children: [
91
+ /* @__PURE__ */ jsx2(
92
+ Property,
93
+ {
94
+ titleProps: { elevation },
95
+ badge,
96
+ size,
97
+ actions,
98
+ title: "Payload Hash",
99
+ value: hash ?? "<Unknown>",
100
+ tip: "This is the payload hash",
101
+ ...props
102
+ }
103
+ ),
104
+ /* @__PURE__ */ jsxs2(Dialog, { open: viewSourceOpen, onClose: () => setViewSourceOpen(false), children: [
105
+ /* @__PURE__ */ jsx2(DialogTitle, { children: "Hash Source" }),
106
+ /* @__PURE__ */ jsx2(DialogContent, { children: /* @__PURE__ */ jsx2(PayloadHashSourceDetails, { noTitle: true, payload }) }),
107
+ /* @__PURE__ */ jsxs2(DialogActions, { children: [
108
+ /* @__PURE__ */ jsx2(ButtonEx, { color: "secondary", onClick: onCopy, children: "Copy" }),
109
+ /* @__PURE__ */ jsx2(ButtonEx, { color: "secondary", onClick: () => setViewSourceOpen(false), children: "Close" })
110
+ ] })
111
+ ] })
112
+ ] });
113
+ };
102
114
 
103
115
  // src/components/Details/Details.tsx
104
116
  import { FlexCol as FlexCol3 } from "@xylabs/react-flexbox";
105
- import React5 from "react";
106
117
 
107
118
  // src/components/Details/JsonDetails.tsx
108
- import { Paper, useMediaQuery, useTheme as useTheme2 } from "@mui/material";
119
+ import {
120
+ Paper,
121
+ useMediaQuery,
122
+ useTheme as useTheme2
123
+ } from "@mui/material";
109
124
  import { JsonViewerEx } from "@xyo-network/react-payload-raw-info";
110
125
  import { PropertyGroup } from "@xyo-network/react-property";
111
- import React3 from "react";
112
- var PayloadJsonDetails = /* @__PURE__ */ __name(({ jsonViewProps, payload, ...props }) => {
126
+ import { jsx as jsx3 } from "react/jsx-runtime";
127
+ var PayloadJsonDetails = ({
128
+ jsonViewProps,
129
+ payload,
130
+ ...props
131
+ }) => {
113
132
  const { breakpoints } = useTheme2();
114
133
  const belowSm = useMediaQuery(breakpoints.down("sm"));
115
134
  let elevation = 2;
116
135
  if (props.paper) {
117
136
  elevation += props.elevation ?? 0;
118
137
  }
119
- return /* @__PURE__ */ React3.createElement(PropertyGroup, {
120
- titleProps: {
121
- elevation
122
- },
123
- title: "JSON",
124
- tip: "The raw JSON of the payload",
125
- ...props
126
- }, /* @__PURE__ */ React3.createElement(Paper, {
127
- square: true,
128
- variant: "elevation",
129
- style: {
130
- overflow: "hidden",
131
- padding: "16px",
132
- width: "100%"
138
+ return /* @__PURE__ */ jsx3(PropertyGroup, { titleProps: { elevation }, title: "JSON", tip: "The raw JSON of the payload", ...props, children: /* @__PURE__ */ jsx3(
139
+ Paper,
140
+ {
141
+ square: true,
142
+ variant: "elevation",
143
+ style: {
144
+ overflow: "hidden",
145
+ padding: "16px",
146
+ width: "100%"
147
+ },
148
+ children: /* @__PURE__ */ jsx3(
149
+ JsonViewerEx,
150
+ {
151
+ groupArraysAfterLength: 20,
152
+ style: { overflow: "hidden" },
153
+ value: payload,
154
+ enableClipboard: true,
155
+ collapseStringsAfterLength: belowSm ? 24 : 32,
156
+ ...jsonViewProps
157
+ }
158
+ )
133
159
  }
134
- }, /* @__PURE__ */ React3.createElement(JsonViewerEx, {
135
- groupArraysAfterLength: 20,
136
- style: {
137
- overflow: "hidden"
138
- },
139
- value: payload,
140
- enableClipboard: true,
141
- collapseStringsAfterLength: belowSm ? 24 : 32,
142
- ...jsonViewProps
143
- })));
144
- }, "PayloadJsonDetails");
160
+ ) });
161
+ };
145
162
 
146
163
  // src/components/Details/ValidationDetails/ValidationDetails.tsx
147
164
  import { Typography as Typography2 } from "@mui/material";
@@ -150,69 +167,49 @@ import { usePromise } from "@xylabs/react-promise";
150
167
  import { PayloadValidator } from "@xyo-network/payload-validator";
151
168
  import { Property as Property2, PropertyGroup as PropertyGroup2 } from "@xyo-network/react-property";
152
169
  import { SchemaProperty } from "@xyo-network/react-schema";
153
- import React4 from "react";
154
- var PayloadValidationDetails = /* @__PURE__ */ __name(({ skipBody = false, value, ...props }) => {
155
- const [validateErrors] = usePromise(async () => value ? await new PayloadValidator(value).validate() : void 0, [
156
- value
157
- ]);
170
+ import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
171
+ var PayloadValidationDetails = ({
172
+ skipBody = false,
173
+ value,
174
+ ...props
175
+ }) => {
176
+ const [validateErrors] = usePromise(async () => value ? await new PayloadValidator(value).validate() : void 0, [value]);
158
177
  const bodyErrors = skipBody ? [] : validateErrors ?? [];
159
- const errors = [
160
- ...bodyErrors
161
- ];
178
+ const errors = [...bodyErrors];
162
179
  let elevation = 2;
163
180
  if (props.paper) {
164
181
  elevation += props.elevation ?? 0;
165
182
  }
166
- return /* @__PURE__ */ React4.createElement(PropertyGroup2, {
167
- titleProps: {
168
- elevation
169
- },
170
- title: "Validation",
171
- tip: "The results from validating the payload",
172
- ...props
173
- }, /* @__PURE__ */ React4.createElement(Property2, {
174
- titleProps: {
175
- elevation
176
- },
177
- flexGrow: 1,
178
- title: "Valid",
179
- value: errors.length === 0 ? "True" : "False",
180
- tip: errors.length > 0 ? /* @__PURE__ */ React4.createElement(FlexCol2, null, errors.map((error, index) => {
181
- return /* @__PURE__ */ React4.createElement(Typography2, {
182
- key: index
183
- }, error.toString());
184
- })) : /* @__PURE__ */ React4.createElement(Typography2, null, "No Errors")
185
- }), value?.schema && /* @__PURE__ */ React4.createElement(SchemaProperty, {
186
- flexGrow: 1,
187
- titleProps: {
188
- elevation
189
- },
190
- value: value.schema
191
- }));
192
- }, "PayloadValidationDetails");
183
+ return /* @__PURE__ */ jsxs3(PropertyGroup2, { titleProps: { elevation }, title: "Validation", tip: "The results from validating the payload", ...props, children: [
184
+ /* @__PURE__ */ jsx4(
185
+ Property2,
186
+ {
187
+ titleProps: { elevation },
188
+ flexGrow: 1,
189
+ title: "Valid",
190
+ value: errors.length === 0 ? "True" : "False",
191
+ tip: errors.length > 0 ? /* @__PURE__ */ jsx4(FlexCol2, { children: errors.map((error) => {
192
+ return /* @__PURE__ */ jsx4(Typography2, { children: error.toString() }, error.message);
193
+ }) }) : /* @__PURE__ */ jsx4(Typography2, { children: "No Errors" })
194
+ }
195
+ ),
196
+ value?.schema && /* @__PURE__ */ jsx4(SchemaProperty, { flexGrow: 1, titleProps: { elevation }, value: value.schema })
197
+ ] });
198
+ };
193
199
 
194
200
  // src/components/Details/Details.tsx
195
- var PayloadDetails = /* @__PURE__ */ __name(({ paper, payload, ...props }) => {
196
- return /* @__PURE__ */ React5.createElement(FlexCol3, {
197
- gap: 1,
198
- justifyContent: "flex-start",
199
- alignItems: "stretch",
200
- marginTop: 2,
201
- marginBottom: 8,
202
- ...props
203
- }, /* @__PURE__ */ React5.createElement(PayloadDataDetails, {
204
- paper,
205
- size: "large",
206
- badge: true,
207
- payload
208
- }), /* @__PURE__ */ React5.createElement(PayloadValidationDetails, {
209
- paper,
210
- value: payload
211
- }), /* @__PURE__ */ React5.createElement(PayloadJsonDetails, {
212
- paper,
213
- payload
214
- }));
215
- }, "PayloadDetails");
201
+ import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
202
+ var PayloadDetails = ({
203
+ paper,
204
+ payload,
205
+ ...props
206
+ }) => {
207
+ return /* @__PURE__ */ jsxs4(FlexCol3, { gap: 1, justifyContent: "flex-start", alignItems: "stretch", marginTop: 2, marginBottom: 8, ...props, children: [
208
+ /* @__PURE__ */ jsx5(PayloadDataDetails, { paper, size: "large", badge: true, payload }),
209
+ /* @__PURE__ */ jsx5(PayloadValidationDetails, { paper, value: payload }),
210
+ /* @__PURE__ */ jsx5(PayloadJsonDetails, { paper, payload })
211
+ ] });
212
+ };
216
213
  PayloadDetails.displayName = "PayloadDetails";
217
214
  export {
218
215
  PayloadDataDetails,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/Details/DataDetails.tsx","../../src/components/Details/HashSourceDetails.tsx","../../src/components/Details/Details.tsx","../../src/components/Details/JsonDetails.tsx","../../src/components/Details/ValidationDetails/ValidationDetails.tsx"],"sourcesContent":["import { ContentCopy as ContentCopyIcon, Visibility as VisibilityIcon } from '@mui/icons-material'\nimport {\n Dialog, DialogActions, DialogContent, DialogTitle,\n} from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { forget } from '@xylabs/sdk-js'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload } from '@xyo-network/payload-model'\nimport type { PropertyAction, PropertyProps } from '@xyo-network/react-property'\nimport { Property } from '@xyo-network/react-property'\nimport type { SizeProp } from '@xyo-network/react-shared'\nimport { usePayloadHash } from '@xyo-network/react-shared'\nimport React, { useState } from 'react'\n\nimport { PayloadHashSourceDetails } from './HashSourceDetails.tsx'\n\nexport type PayloadDataDetailsProps = PropertyProps & {\n badge?: boolean\n payload?: Payload\n size?: SizeProp\n}\n\nexport const PayloadDataDetails: React.FC<PayloadDataDetailsProps> = ({\n size, badge, payload, ...props\n}) => {\n const payloadString = payload ? JSON.stringify(PayloadBuilder.hashableFields(payload), null, 2) : ''\n\n const [viewSourceOpen, setViewSourceOpen] = useState(false)\n const hash = usePayloadHash(payload)\n\n let elevation = 2\n if (props.paper) {\n elevation += props.elevation ?? 0\n }\n\n const actions: PropertyAction[] = [\n {\n icon: <VisibilityIcon />,\n name: 'View',\n onClick: () => setViewSourceOpen(true),\n },\n {\n icon: <ContentCopyIcon />,\n name: 'Copy',\n onClick: () => forget(navigator.clipboard.writeText(hash ?? '')),\n },\n ]\n\n const onCopy = () => {\n forget(navigator.clipboard.writeText(payloadString))\n }\n\n return (\n <>\n <Property\n titleProps={{ elevation }}\n badge={badge}\n size={size}\n actions={actions}\n title=\"Payload Hash\"\n value={hash ?? '<Unknown>'}\n tip=\"This is the payload hash\"\n {...props}\n />\n <Dialog open={viewSourceOpen} onClose={() => setViewSourceOpen(false)}>\n <DialogTitle>Hash Source</DialogTitle>\n <DialogContent>\n <PayloadHashSourceDetails noTitle payload={payload} />\n </DialogContent>\n <DialogActions>\n <ButtonEx color=\"secondary\" onClick={onCopy}>\n Copy\n </ButtonEx>\n <ButtonEx color=\"secondary\" onClick={() => setViewSourceOpen(false)}>\n Close\n </ButtonEx>\n </DialogActions>\n </Dialog>\n </>\n )\n}\n","import { ContentCopy as ContentCopyIcon } from '@mui/icons-material'\nimport {\n IconButton, Typography, useTheme,\n} from '@mui/material'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport {\n FlexCol, FlexGrowRow, FlexRow,\n} from '@xylabs/react-flexbox'\nimport { QuickTipButton } from '@xylabs/react-quick-tip-button'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload } from '@xyo-network/payload-model'\nimport React from 'react'\n\nexport interface PayloadHashSourceDetailsProps extends FlexBoxProps {\n noTitle?: boolean\n payload?: Payload\n}\n\nexport const PayloadHashSourceDetails: React.FC<PayloadHashSourceDetailsProps> = ({\n noTitle = false, payload, ...props\n}) => {\n const theme = useTheme()\n const payloadString = payload ? JSON.stringify(PayloadBuilder.hashableFields(payload), null, 2) : ''\n\n return (\n <FlexCol alignItems=\"stretch\" {...props}>\n {noTitle\n ? null\n : (\n <FlexRow margin={1} justifyContent=\"flex-start\">\n <Typography>Hash Source</Typography>\n <QuickTipButton title=\"Hash Source\">The actual string used to generate the hash (SHA256)</QuickTipButton>\n </FlexRow>\n )}\n <FlexRow>\n <FlexGrowRow background border={1} borderColor={theme.vars.palette.divider} justifyContent=\"start\">\n <Typography\n padding={2}\n fontFamily=\"monospace\"\n variant=\"body1\"\n sx={{ overflowWrap: 'break-word', wordBreak: 'break-all' }}\n >\n {payloadString}\n </Typography>\n </FlexGrowRow>\n <IconButton>\n <ContentCopyIcon />\n </IconButton>\n </FlexRow>\n {noTitle\n ? (\n <FlexRow margin={1} justifyContent=\"flex-start\">\n <Typography variant=\"body2\">\n The actual string used to generate the hash (SHA256). This can be used to validate the hash manually.\n </Typography>\n </FlexRow>\n )\n : null}\n </FlexCol>\n )\n}\n","import type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport type { Payload } from '@xyo-network/payload-model'\nimport React from 'react'\n\nimport { PayloadDataDetails } from './DataDetails.tsx'\nimport { PayloadJsonDetails } from './JsonDetails.tsx'\nimport { PayloadValidationDetails } from './ValidationDetails/index.ts'\n\nexport type WithPaper<T> = T & { paper: true }\nexport type WithoutPaper<T> = T & { paper?: false }\n\nexport type PayloadDetailsProps = FlexBoxProps & {\n paper?: boolean\n payload?: Payload\n}\n\nexport const PayloadDetails: React.FC<PayloadDetailsProps> = ({\n paper, payload, ...props\n}) => {\n return (\n <FlexCol gap={1} justifyContent=\"flex-start\" alignItems=\"stretch\" marginTop={2} marginBottom={8} {...props}>\n <PayloadDataDetails paper={paper} size=\"large\" badge payload={payload} />\n <PayloadValidationDetails paper={paper} value={payload} />\n <PayloadJsonDetails paper={paper} payload={payload} />\n </FlexCol>\n )\n}\n\nPayloadDetails.displayName = 'PayloadDetails'\n","import {\n Paper, useMediaQuery, useTheme,\n} from '@mui/material'\nimport type { Payload } from '@xyo-network/payload-model'\nimport type { JsonViewerExProps } from '@xyo-network/react-payload-raw-info'\nimport { JsonViewerEx } from '@xyo-network/react-payload-raw-info'\nimport type { PropertyGroupProps } from '@xyo-network/react-property'\nimport { PropertyGroup } from '@xyo-network/react-property'\nimport React from 'react'\n\nexport type PayloadJsonDetailsProps = PropertyGroupProps & {\n jsonViewProps?: JsonViewerExProps\n payload?: Payload\n}\n\nexport const PayloadJsonDetails: React.FC<PayloadJsonDetailsProps> = ({\n jsonViewProps, payload, ...props\n}) => {\n const { breakpoints } = useTheme()\n const belowSm = useMediaQuery(breakpoints.down('sm'))\n\n let elevation = 2\n if (props.paper) {\n elevation += props.elevation ?? 0\n }\n\n return (\n <PropertyGroup titleProps={{ elevation }} title=\"JSON\" tip=\"The raw JSON of the payload\" {...props}>\n <Paper\n square\n variant=\"elevation\"\n style={{\n overflow: 'hidden', padding: '16px', width: '100%',\n }}\n >\n <JsonViewerEx\n groupArraysAfterLength={20}\n style={{ overflow: 'hidden' }}\n value={payload}\n enableClipboard\n collapseStringsAfterLength={belowSm ? 24 : 32}\n {...jsonViewProps}\n />\n </Paper>\n </PropertyGroup>\n )\n}\n","import { Typography } from '@mui/material'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport { PayloadValidator } from '@xyo-network/payload-validator'\nimport { Property, PropertyGroup } from '@xyo-network/react-property'\nimport { SchemaProperty } from '@xyo-network/react-schema'\nimport React from 'react'\n\nimport type { PayloadValidationDetailsProps } from './ValidationDetailsProps.ts'\n\nexport const PayloadValidationDetails: React.FC<PayloadValidationDetailsProps> = ({\n skipBody = false, value, ...props\n}) => {\n const [validateErrors] = usePromise(async () => (value ? await new PayloadValidator(value).validate() : undefined), [value])\n\n const bodyErrors = skipBody ? [] : (validateErrors ?? [])\n const errors: Error[] = [...bodyErrors]\n\n let elevation = 2\n if (props.paper) {\n elevation += props.elevation ?? 0\n }\n\n return (\n <PropertyGroup titleProps={{ elevation }} title=\"Validation\" tip=\"The results from validating the payload\" {...props}>\n <Property\n titleProps={{ elevation }}\n flexGrow={1}\n title=\"Valid\"\n value={errors.length === 0 ? 'True' : 'False'}\n tip={\n errors.length > 0\n ? (\n <FlexCol>\n {errors.map((error, index) => {\n return <Typography key={index}>{error.toString()}</Typography>\n })}\n </FlexCol>\n )\n : <Typography>No Errors</Typography>\n }\n />\n {value?.schema && <SchemaProperty flexGrow={1} titleProps={{ elevation }} value={value.schema} />}\n </PropertyGroup>\n )\n}\n"],"mappings":"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","names":["ContentCopy","ContentCopyIcon","Visibility","VisibilityIcon","Dialog","DialogActions","DialogContent","DialogTitle","ButtonEx","forget","PayloadBuilder","Property","usePayloadHash","React","useState","ContentCopy","ContentCopyIcon","IconButton","Typography","useTheme","FlexCol","FlexGrowRow","FlexRow","QuickTipButton","PayloadBuilder","React","PayloadHashSourceDetails","noTitle","payload","props","theme","useTheme","payloadString","JSON","stringify","PayloadBuilder","hashableFields","FlexCol","alignItems","FlexRow","margin","justifyContent","Typography","QuickTipButton","title","FlexGrowRow","background","border","borderColor","vars","palette","divider","padding","fontFamily","variant","sx","overflowWrap","wordBreak","IconButton","ContentCopyIcon","PayloadDataDetails","size","badge","payload","props","payloadString","JSON","stringify","PayloadBuilder","hashableFields","viewSourceOpen","setViewSourceOpen","useState","hash","usePayloadHash","elevation","paper","actions","icon","React","VisibilityIcon","name","onClick","ContentCopyIcon","forget","navigator","clipboard","writeText","onCopy","Property","titleProps","title","value","tip","Dialog","open","onClose","DialogTitle","DialogContent","PayloadHashSourceDetails","noTitle","DialogActions","ButtonEx","color","FlexCol","React","Paper","useMediaQuery","useTheme","JsonViewerEx","PropertyGroup","React","PayloadJsonDetails","jsonViewProps","payload","props","breakpoints","useTheme","belowSm","useMediaQuery","down","elevation","paper","React","PropertyGroup","titleProps","title","tip","Paper","square","variant","style","overflow","padding","width","JsonViewerEx","groupArraysAfterLength","value","enableClipboard","collapseStringsAfterLength","Typography","FlexCol","usePromise","PayloadValidator","Property","PropertyGroup","SchemaProperty","React","PayloadValidationDetails","skipBody","value","props","validateErrors","usePromise","PayloadValidator","validate","undefined","bodyErrors","errors","elevation","paper","React","PropertyGroup","titleProps","title","tip","Property","flexGrow","length","FlexCol","map","error","index","Typography","key","toString","schema","SchemaProperty","PayloadDetails","paper","payload","props","React","FlexCol","gap","justifyContent","alignItems","marginTop","marginBottom","PayloadDataDetails","size","badge","PayloadValidationDetails","value","PayloadJsonDetails","displayName"]}
1
+ {"version":3,"sources":["../../src/components/Details/DataDetails.tsx","../../src/components/Details/HashSourceDetails.tsx","../../src/components/Details/Details.tsx","../../src/components/Details/JsonDetails.tsx","../../src/components/Details/ValidationDetails/ValidationDetails.tsx"],"sourcesContent":["import { ContentCopy as ContentCopyIcon, Visibility as VisibilityIcon } from '@mui/icons-material'\nimport {\n Dialog, DialogActions, DialogContent, DialogTitle,\n} from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { forget } from '@xylabs/sdk-js'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload } from '@xyo-network/payload-model'\nimport type { PropertyAction, PropertyProps } from '@xyo-network/react-property'\nimport { Property } from '@xyo-network/react-property'\nimport type { SizeProp } from '@xyo-network/react-shared'\nimport { usePayloadHash } from '@xyo-network/react-shared'\nimport React, { useState } from 'react'\n\nimport { PayloadHashSourceDetails } from './HashSourceDetails.tsx'\n\nexport type PayloadDataDetailsProps = PropertyProps & {\n badge?: boolean\n payload?: Payload\n size?: SizeProp\n}\n\nexport const PayloadDataDetails: React.FC<PayloadDataDetailsProps> = ({\n size, badge, payload, ...props\n}) => {\n const payloadString = payload ? JSON.stringify(PayloadBuilder.hashableFields(payload), null, 2) : ''\n\n const [viewSourceOpen, setViewSourceOpen] = useState(false)\n const hash = usePayloadHash(payload)\n\n let elevation = 2\n if (props.paper) {\n elevation += props.elevation ?? 0\n }\n\n const actions: PropertyAction[] = [\n {\n icon: <VisibilityIcon />,\n name: 'View',\n onClick: () => setViewSourceOpen(true),\n },\n {\n icon: <ContentCopyIcon />,\n name: 'Copy',\n onClick: () => forget(navigator.clipboard.writeText(hash ?? '')),\n },\n ]\n\n const onCopy = () => {\n forget(navigator.clipboard.writeText(payloadString))\n }\n\n return (\n <>\n <Property\n titleProps={{ elevation }}\n badge={badge}\n size={size}\n actions={actions}\n title=\"Payload Hash\"\n value={hash ?? '<Unknown>'}\n tip=\"This is the payload hash\"\n {...props}\n />\n <Dialog open={viewSourceOpen} onClose={() => setViewSourceOpen(false)}>\n <DialogTitle>Hash Source</DialogTitle>\n <DialogContent>\n <PayloadHashSourceDetails noTitle payload={payload} />\n </DialogContent>\n <DialogActions>\n <ButtonEx color=\"secondary\" onClick={onCopy}>\n Copy\n </ButtonEx>\n <ButtonEx color=\"secondary\" onClick={() => setViewSourceOpen(false)}>\n Close\n </ButtonEx>\n </DialogActions>\n </Dialog>\n </>\n )\n}\n","import { ContentCopy as ContentCopyIcon } from '@mui/icons-material'\nimport {\n IconButton, Typography, useTheme,\n} from '@mui/material'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport {\n FlexCol, FlexGrowRow, FlexRow,\n} from '@xylabs/react-flexbox'\nimport { QuickTipButton } from '@xylabs/react-quick-tip-button'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload } from '@xyo-network/payload-model'\nimport React from 'react'\n\nexport interface PayloadHashSourceDetailsProps extends FlexBoxProps {\n noTitle?: boolean\n payload?: Payload\n}\n\nexport const PayloadHashSourceDetails: React.FC<PayloadHashSourceDetailsProps> = ({\n noTitle = false, payload, ...props\n}) => {\n const theme = useTheme()\n const payloadString = payload ? JSON.stringify(PayloadBuilder.hashableFields(payload), null, 2) : ''\n\n return (\n <FlexCol alignItems=\"stretch\" {...props}>\n {noTitle\n ? null\n : (\n <FlexRow margin={1} justifyContent=\"flex-start\">\n <Typography>Hash Source</Typography>\n <QuickTipButton title=\"Hash Source\">The actual string used to generate the hash (SHA256)</QuickTipButton>\n </FlexRow>\n )}\n <FlexRow>\n <FlexGrowRow background border={1} borderColor={theme.vars.palette.divider} justifyContent=\"start\">\n <Typography\n padding={2}\n fontFamily=\"monospace\"\n variant=\"body1\"\n sx={{ overflowWrap: 'break-word', wordBreak: 'break-all' }}\n >\n {payloadString}\n </Typography>\n </FlexGrowRow>\n <IconButton>\n <ContentCopyIcon />\n </IconButton>\n </FlexRow>\n {noTitle\n ? (\n <FlexRow margin={1} justifyContent=\"flex-start\">\n <Typography variant=\"body2\">\n The actual string used to generate the hash (SHA256). This can be used to validate the hash manually.\n </Typography>\n </FlexRow>\n )\n : null}\n </FlexCol>\n )\n}\n","import type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport type { Payload } from '@xyo-network/payload-model'\nimport React from 'react'\n\nimport { PayloadDataDetails } from './DataDetails.tsx'\nimport { PayloadJsonDetails } from './JsonDetails.tsx'\nimport { PayloadValidationDetails } from './ValidationDetails/index.ts'\n\nexport type WithPaper<T> = T & { paper: true }\nexport type WithoutPaper<T> = T & { paper?: false }\n\nexport type PayloadDetailsProps = FlexBoxProps & {\n paper?: boolean\n payload?: Payload\n}\n\nexport const PayloadDetails: React.FC<PayloadDetailsProps> = ({\n paper, payload, ...props\n}) => {\n return (\n <FlexCol gap={1} justifyContent=\"flex-start\" alignItems=\"stretch\" marginTop={2} marginBottom={8} {...props}>\n <PayloadDataDetails paper={paper} size=\"large\" badge payload={payload} />\n <PayloadValidationDetails paper={paper} value={payload} />\n <PayloadJsonDetails paper={paper} payload={payload} />\n </FlexCol>\n )\n}\n\nPayloadDetails.displayName = 'PayloadDetails'\n","import {\n Paper, useMediaQuery, useTheme,\n} from '@mui/material'\nimport type { Payload } from '@xyo-network/payload-model'\nimport type { JsonViewerExProps } from '@xyo-network/react-payload-raw-info'\nimport { JsonViewerEx } from '@xyo-network/react-payload-raw-info'\nimport type { PropertyGroupProps } from '@xyo-network/react-property'\nimport { PropertyGroup } from '@xyo-network/react-property'\nimport React from 'react'\n\nexport type PayloadJsonDetailsProps = PropertyGroupProps & {\n jsonViewProps?: JsonViewerExProps\n payload?: Payload\n}\n\nexport const PayloadJsonDetails: React.FC<PayloadJsonDetailsProps> = ({\n jsonViewProps, payload, ...props\n}) => {\n const { breakpoints } = useTheme()\n const belowSm = useMediaQuery(breakpoints.down('sm'))\n\n let elevation = 2\n if (props.paper) {\n elevation += props.elevation ?? 0\n }\n\n return (\n <PropertyGroup titleProps={{ elevation }} title=\"JSON\" tip=\"The raw JSON of the payload\" {...props}>\n <Paper\n square\n variant=\"elevation\"\n style={{\n overflow: 'hidden', padding: '16px', width: '100%',\n }}\n >\n <JsonViewerEx\n groupArraysAfterLength={20}\n style={{ overflow: 'hidden' }}\n value={payload}\n enableClipboard\n collapseStringsAfterLength={belowSm ? 24 : 32}\n {...jsonViewProps}\n />\n </Paper>\n </PropertyGroup>\n )\n}\n","import { Typography } from '@mui/material'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport { PayloadValidator } from '@xyo-network/payload-validator'\nimport { Property, PropertyGroup } from '@xyo-network/react-property'\nimport { SchemaProperty } from '@xyo-network/react-schema'\nimport React from 'react'\n\nimport type { PayloadValidationDetailsProps } from './ValidationDetailsProps.ts'\n\nexport const PayloadValidationDetails: React.FC<PayloadValidationDetailsProps> = ({\n skipBody = false, value, ...props\n}) => {\n const [validateErrors] = usePromise(async () => (value ? await new PayloadValidator(value).validate() : undefined), [value])\n\n const bodyErrors = skipBody ? [] : (validateErrors ?? [])\n const errors: Error[] = [...bodyErrors]\n\n let elevation = 2\n if (props.paper) {\n elevation += props.elevation ?? 0\n }\n\n return (\n <PropertyGroup titleProps={{ elevation }} title=\"Validation\" tip=\"The results from validating the payload\" {...props}>\n <Property\n titleProps={{ elevation }}\n flexGrow={1}\n title=\"Valid\"\n value={errors.length === 0 ? 'True' : 'False'}\n tip={\n errors.length > 0\n ? (\n <FlexCol>\n {errors.map((error) => {\n return <Typography key={error.message}>{error.toString()}</Typography>\n })}\n </FlexCol>\n )\n : <Typography>No Errors</Typography>\n }\n />\n {value?.schema && <SchemaProperty flexGrow={1} titleProps={{ elevation }} value={value.schema} />}\n </PropertyGroup>\n )\n}\n"],"mappings":"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","names":["ContentCopyIcon","PayloadBuilder","jsx","jsxs","PayloadBuilder","ContentCopyIcon","FlexCol","useTheme","jsx","Typography","FlexCol","Property","PropertyGroup","jsx","jsxs","jsx","jsxs","FlexCol"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/react-payload-details",
3
- "version": "7.5.8",
3
+ "version": "7.5.11",
4
4
  "description": "Common React library for all XYO projects that use React",
5
5
  "keywords": [
6
6
  "xyo",
@@ -36,66 +36,173 @@
36
36
  },
37
37
  "./package.json": "./package.json"
38
38
  },
39
- "module": "dist/browser/index.mjs",
40
- "types": "dist/browser/index.d.ts",
41
39
  "files": [
42
40
  "dist",
43
- "src"
41
+ "README.md"
44
42
  ],
45
43
  "dependencies": {
46
- "@xylabs/react-button": "~7.1.17",
47
- "@xylabs/react-flexbox": "~7.1.17",
48
- "@xylabs/react-promise": "~7.1.17",
49
- "@xylabs/react-quick-tip-button": "~7.1.17",
50
- "@xylabs/sdk-js": "~5.0.90",
51
- "@xyo-network/payload-builder": "~5.3.17",
52
- "@xyo-network/payload-model": "~5.3.17",
53
- "@xyo-network/payload-validator": "~5.3.17",
54
- "@xyo-network/react-payload-raw-info": "7.5.8",
55
- "@xyo-network/react-property": "7.5.8",
56
- "@xyo-network/react-schema": "7.5.8",
57
- "@xyo-network/react-shared": "7.5.8"
44
+ "@xyo-network/react-payload-raw-info": "~7.5.11",
45
+ "@xyo-network/react-shared": "~7.5.11",
46
+ "@xyo-network/react-schema": "~7.5.11",
47
+ "@xyo-network/react-property": "~7.5.11"
58
48
  },
59
49
  "devDependencies": {
60
- "@emotion/react": "~11.14.0",
61
- "@emotion/styled": "~11.14.1",
62
- "@mui/icons-material": "~7.3.9",
63
- "@mui/material": "~7.3.9",
64
- "@storybook/react-vite": "~10.3.3",
50
+ "@bitauth/libauth": "~3.0.0",
51
+ "@emotion/react": "^11.14.0",
52
+ "@emotion/styled": "^11.14.1",
53
+ "@mui/icons-material": "^7.3.10",
54
+ "@mui/material": "^7.3.10",
55
+ "@mui/system": "^7.3.10",
56
+ "@mui/x-tree-view": "~8.27.2",
57
+ "@opentelemetry/api": "^1.9.1",
58
+ "@opentelemetry/sdk-trace-base": "^2.7.0",
59
+ "@scure/base": "~2.2.0",
60
+ "@storybook/react-vite": "~10.3.5",
61
+ "@textea/json-viewer": "~4.0.1",
62
+ "@types/node": "~25.6.0",
65
63
  "@types/react": "^19.2.14",
66
- "@xylabs/ts-scripts-common": "~7.5.6",
67
- "@xylabs/ts-scripts-yarn3": "~7.5.6",
68
- "@xylabs/tsconfig": "~7.5.6",
69
- "@xylabs/tsconfig-dom": "~7.5.6",
70
- "@xylabs/tsconfig-react": "~7.5.6",
71
- "@xyo-network/react-storybook": "7.5.8",
64
+ "@xylabs/react-async-effect": "~7.1.20",
65
+ "@xylabs/react-button": "~7.1.20",
66
+ "@xylabs/react-dialogs": "~7.1.20",
67
+ "@xylabs/react-flexbox": "~7.1.20",
68
+ "@xylabs/react-hooks": "~7.1.20",
69
+ "@xylabs/react-identicon": "~7.1.20",
70
+ "@xylabs/react-link": "~7.1.20",
71
+ "@xylabs/react-promise": "~7.1.20",
72
+ "@xylabs/react-quick-tip-button": "~7.1.20",
73
+ "@xylabs/react-select": "~7.1.20",
74
+ "@xylabs/react-shared": "~7.1.20",
75
+ "@xylabs/react-theme": "~7.1.20",
76
+ "@xylabs/sdk-js": "^5.0.100",
77
+ "@xylabs/threads": "~5.0.100",
78
+ "@xylabs/toolchain": "~7.11.9",
79
+ "@xylabs/tsconfig": "^7.11.9",
80
+ "@xylabs/tsconfig-dom": "^7.11.9",
81
+ "@xylabs/tsconfig-react": "~7.11.9",
82
+ "@xylabs/zod": "~5.0.100",
83
+ "@xyo-network/account": "~5.5.1",
84
+ "@xyo-network/account-model": "^5.5.1",
85
+ "@xyo-network/boundwitness-builder": "^5.5.1",
86
+ "@xyo-network/boundwitness-model": "^5.5.1",
87
+ "@xyo-network/boundwitness-validator": "^5.5.1",
88
+ "@xyo-network/boundwitness-wrapper": "~5.5.1",
89
+ "@xyo-network/config-payload-plugin": "~5.5.1",
90
+ "@xyo-network/diviner-model": "^5.5.5",
91
+ "@xyo-network/diviner-schema-list-model": "~5.5.2",
92
+ "@xyo-network/diviner-schema-stats-model": "~5.5.2",
93
+ "@xyo-network/manifest-model": "~5.5.1",
94
+ "@xyo-network/module-abstract": "^5.5.5",
95
+ "@xyo-network/module-model": "^5.5.5",
96
+ "@xyo-network/node-core-types": "~4.1.10",
97
+ "@xyo-network/node-memory": "~5.5.5",
98
+ "@xyo-network/node-model": "^5.5.5",
99
+ "@xyo-network/payload-builder": "^5.5.1",
100
+ "@xyo-network/payload-model": "^5.5.1",
101
+ "@xyo-network/payload-validator": "^5.5.1",
102
+ "@xyo-network/query-payload-plugin": "~5.5.1",
103
+ "@xyo-network/schema-cache": "~5.5.1",
104
+ "@xyo-network/schema-payload-plugin": "~5.5.1",
105
+ "@xyo-network/typeof": "~5.3.30",
106
+ "@xyo-network/wallet-model": "^5.5.1",
72
107
  "ajv": "^8.18.0",
73
- "axios": "^1.14.0",
108
+ "async-mutex": "^0.5.0",
109
+ "axios": "^1.15.2",
110
+ "bn.js": "^5.2.3",
111
+ "bowser": "^2.14.1",
112
+ "buffer": "^6.0.3",
113
+ "chalk": "^5.6.2",
114
+ "debug": "~4.4.3",
115
+ "esbuild": "~0.28.0",
116
+ "eslint": "^10.2.1",
74
117
  "ethers": "^6.16.0",
75
- "lru-cache": "^11.2.7",
76
- "react": "^19.2.4",
77
- "react-dom": "^19.2.4",
78
- "react-router-dom": "^7.13.2",
79
- "storybook": "~10.3.3",
118
+ "fast-deep-equal": "~3.1.3",
119
+ "hash-wasm": "~4.12.0",
120
+ "js-cookie": "~3.0.5",
121
+ "lru-cache": "^11.3.5",
122
+ "observable-fns": "~0.6.1",
123
+ "pako": "^2.1.0",
124
+ "react": "^19.2.5",
125
+ "react-dom": "^19.2.5",
126
+ "react-router-dom": "^7.14.2",
127
+ "spark-md5": "~3.0.2",
128
+ "storybook": "^10.3.5",
80
129
  "typescript": "^5.9.3",
81
- "vite": "~8.0.3",
82
- "zod": "^4.3.6"
130
+ "vite": "^8.0.10",
131
+ "wasm-feature-detect": "~1.8.0",
132
+ "zod": "^4.3.6",
133
+ "@xyo-network/react-storybook": "~7.5.11"
83
134
  },
84
135
  "peerDependencies": {
85
- "@emotion/react": "~11",
86
- "@emotion/styled": "~11",
87
- "@mui/icons-material": ">=6 <8",
88
- "@mui/material": ">=6 <8",
89
- "ajv": "~8",
90
- "axios": "~1",
91
- "ethers": "~6",
92
- "lru-cache": "~11",
93
- "react": "^19",
94
- "react-dom": "^19",
95
- "zod": "^4"
136
+ "@emotion/react": "^11.14.0",
137
+ "@emotion/styled": "^11.14.1",
138
+ "@mui/icons-material": "^7.3.10",
139
+ "@mui/material": "^7.3.10",
140
+ "@mui/system": "^7.3.10",
141
+ "@mui/x-tree-view": "~8.27.2",
142
+ "@opentelemetry/api": "^1.9.1",
143
+ "@opentelemetry/sdk-trace-base": "^2.7.0",
144
+ "@scure/base": "~2.2.0",
145
+ "@textea/json-viewer": "~4.0.1",
146
+ "@xylabs/react-async-effect": "~7.1.20",
147
+ "@xylabs/react-button": "~7.1.20",
148
+ "@xylabs/react-dialogs": "~7.1.20",
149
+ "@xylabs/react-flexbox": "~7.1.20",
150
+ "@xylabs/react-hooks": "~7.1.20",
151
+ "@xylabs/react-identicon": "~7.1.20",
152
+ "@xylabs/react-link": "~7.1.20",
153
+ "@xylabs/react-promise": "~7.1.20",
154
+ "@xylabs/react-quick-tip-button": "~7.1.20",
155
+ "@xylabs/react-select": "~7.1.20",
156
+ "@xylabs/react-shared": "~7.1.20",
157
+ "@xylabs/react-theme": "~7.1.20",
158
+ "@xylabs/sdk-js": "^5.0.100",
159
+ "@xylabs/tsconfig": "^7.11.9",
160
+ "@xylabs/tsconfig-dom": "^7.11.9",
161
+ "@xylabs/zod": "~5.0.100",
162
+ "@xyo-network/account": "~5.5.1",
163
+ "@xyo-network/account-model": "^5.5.1",
164
+ "@xyo-network/boundwitness-builder": "^5.5.1",
165
+ "@xyo-network/boundwitness-model": "^5.5.1",
166
+ "@xyo-network/boundwitness-validator": "^5.5.1",
167
+ "@xyo-network/boundwitness-wrapper": "~5.5.1",
168
+ "@xyo-network/config-payload-plugin": "~5.5.1",
169
+ "@xyo-network/diviner-model": "^5.5.5",
170
+ "@xyo-network/diviner-schema-list-model": "~5.5.2",
171
+ "@xyo-network/diviner-schema-stats-model": "~5.5.2",
172
+ "@xyo-network/manifest-model": "~5.5.1",
173
+ "@xyo-network/module-abstract": "^5.5.5",
174
+ "@xyo-network/module-model": "^5.5.5",
175
+ "@xyo-network/node-core-types": "~4.1.10",
176
+ "@xyo-network/node-memory": "~5.5.5",
177
+ "@xyo-network/node-model": "^5.5.5",
178
+ "@xyo-network/payload-builder": "^5.5.1",
179
+ "@xyo-network/payload-model": "^5.5.1",
180
+ "@xyo-network/payload-validator": "^5.5.1",
181
+ "@xyo-network/query-payload-plugin": "~5.5.1",
182
+ "@xyo-network/schema-cache": "~5.5.1",
183
+ "@xyo-network/schema-payload-plugin": "~5.5.1",
184
+ "@xyo-network/typeof": "~5.3.30",
185
+ "@xyo-network/wallet-model": "^5.5.1",
186
+ "ajv": "^8.18.0",
187
+ "async-mutex": "^0.5.0",
188
+ "axios": "^1.15.2",
189
+ "bn.js": "^5.2.3",
190
+ "bowser": "^2.14.1",
191
+ "buffer": "^6.0.3",
192
+ "chalk": "^5.6.2",
193
+ "ethers": "^6.16.0",
194
+ "fast-deep-equal": "~3.1.3",
195
+ "js-cookie": "~3.0.5",
196
+ "lru-cache": "^11.3.5",
197
+ "pako": "^2.1.0",
198
+ "react": "^19.2.5",
199
+ "react-dom": "^19.2.5",
200
+ "react-router-dom": "^7.14.2",
201
+ "spark-md5": "~3.0.2",
202
+ "zod": "^4.3.6"
96
203
  },
97
204
  "publishConfig": {
98
205
  "access": "public"
99
206
  },
100
207
  "docs": "dist/docs.json"
101
- }
208
+ }
@@ -1,81 +0,0 @@
1
- import { ContentCopy as ContentCopyIcon, Visibility as VisibilityIcon } from '@mui/icons-material'
2
- import {
3
- Dialog, DialogActions, DialogContent, DialogTitle,
4
- } from '@mui/material'
5
- import { ButtonEx } from '@xylabs/react-button'
6
- import { forget } from '@xylabs/sdk-js'
7
- import { PayloadBuilder } from '@xyo-network/payload-builder'
8
- import type { Payload } from '@xyo-network/payload-model'
9
- import type { PropertyAction, PropertyProps } from '@xyo-network/react-property'
10
- import { Property } from '@xyo-network/react-property'
11
- import type { SizeProp } from '@xyo-network/react-shared'
12
- import { usePayloadHash } from '@xyo-network/react-shared'
13
- import React, { useState } from 'react'
14
-
15
- import { PayloadHashSourceDetails } from './HashSourceDetails.tsx'
16
-
17
- export type PayloadDataDetailsProps = PropertyProps & {
18
- badge?: boolean
19
- payload?: Payload
20
- size?: SizeProp
21
- }
22
-
23
- export const PayloadDataDetails: React.FC<PayloadDataDetailsProps> = ({
24
- size, badge, payload, ...props
25
- }) => {
26
- const payloadString = payload ? JSON.stringify(PayloadBuilder.hashableFields(payload), null, 2) : ''
27
-
28
- const [viewSourceOpen, setViewSourceOpen] = useState(false)
29
- const hash = usePayloadHash(payload)
30
-
31
- let elevation = 2
32
- if (props.paper) {
33
- elevation += props.elevation ?? 0
34
- }
35
-
36
- const actions: PropertyAction[] = [
37
- {
38
- icon: <VisibilityIcon />,
39
- name: 'View',
40
- onClick: () => setViewSourceOpen(true),
41
- },
42
- {
43
- icon: <ContentCopyIcon />,
44
- name: 'Copy',
45
- onClick: () => forget(navigator.clipboard.writeText(hash ?? '')),
46
- },
47
- ]
48
-
49
- const onCopy = () => {
50
- forget(navigator.clipboard.writeText(payloadString))
51
- }
52
-
53
- return (
54
- <>
55
- <Property
56
- titleProps={{ elevation }}
57
- badge={badge}
58
- size={size}
59
- actions={actions}
60
- title="Payload Hash"
61
- value={hash ?? '<Unknown>'}
62
- tip="This is the payload hash"
63
- {...props}
64
- />
65
- <Dialog open={viewSourceOpen} onClose={() => setViewSourceOpen(false)}>
66
- <DialogTitle>Hash Source</DialogTitle>
67
- <DialogContent>
68
- <PayloadHashSourceDetails noTitle payload={payload} />
69
- </DialogContent>
70
- <DialogActions>
71
- <ButtonEx color="secondary" onClick={onCopy}>
72
- Copy
73
- </ButtonEx>
74
- <ButtonEx color="secondary" onClick={() => setViewSourceOpen(false)}>
75
- Close
76
- </ButtonEx>
77
- </DialogActions>
78
- </Dialog>
79
- </>
80
- )
81
- }
@@ -1,54 +0,0 @@
1
- import type { Meta, StoryFn } from '@storybook/react-vite'
2
- import { sampleIdPayload, samplePayloadFromBuilder } from '@xyo-network/react-storybook'
3
- import React from 'react'
4
- import {
5
- BrowserRouter, Route, Routes,
6
- } from 'react-router-dom'
7
-
8
- import { PayloadDetails } from './Details.tsx'
9
-
10
- const StorybookEntry = {
11
- argTypes: {},
12
- component: PayloadDetails,
13
- parameters: { docs: { page: null } },
14
- title: 'payload/Details',
15
- } as Meta<typeof PayloadDetails>
16
-
17
- const Template: StoryFn<typeof PayloadDetails> = args => (
18
- <BrowserRouter>
19
- <Routes>
20
- <Route path="temp" element={<h1>Successfully navigated to archivePath</h1>} />
21
- <Route path="*" element={<PayloadDetails {...args}></PayloadDetails>}></Route>
22
- </Routes>
23
- </BrowserRouter>
24
- )
25
-
26
- const Default = Template.bind({})
27
- Default.args = {}
28
-
29
- const WithSample = Template.bind({})
30
- WithSample.args = { payload: sampleIdPayload }
31
-
32
- const WithBuilderSample = Template.bind({})
33
- WithBuilderSample.args = { payload: samplePayloadFromBuilder }
34
-
35
- const WithArchiveLink = Template.bind({})
36
- WithArchiveLink.args = { payload: samplePayloadFromBuilder }
37
-
38
- const DefaultPaper = Template.bind({})
39
- DefaultPaper.args = { paper: true }
40
-
41
- const WithSamplePaper = Template.bind({})
42
- WithSamplePaper.args = { paper: true, payload: sampleIdPayload }
43
-
44
- const WithBuilderSamplePaper = Template.bind({})
45
- WithBuilderSamplePaper.args = { paper: true, payload: samplePayloadFromBuilder }
46
-
47
- const WithArchiveLinkPaper = Template.bind({})
48
- WithArchiveLinkPaper.args = { paper: true, payload: samplePayloadFromBuilder }
49
-
50
- export {
51
- Default, DefaultPaper, WithArchiveLink, WithArchiveLinkPaper, WithBuilderSample, WithBuilderSamplePaper, WithSample, WithSamplePaper,
52
- }
53
-
54
- export default StorybookEntry
@@ -1,30 +0,0 @@
1
- import type { FlexBoxProps } from '@xylabs/react-flexbox'
2
- import { FlexCol } from '@xylabs/react-flexbox'
3
- import type { Payload } from '@xyo-network/payload-model'
4
- import React from 'react'
5
-
6
- import { PayloadDataDetails } from './DataDetails.tsx'
7
- import { PayloadJsonDetails } from './JsonDetails.tsx'
8
- import { PayloadValidationDetails } from './ValidationDetails/index.ts'
9
-
10
- export type WithPaper<T> = T & { paper: true }
11
- export type WithoutPaper<T> = T & { paper?: false }
12
-
13
- export type PayloadDetailsProps = FlexBoxProps & {
14
- paper?: boolean
15
- payload?: Payload
16
- }
17
-
18
- export const PayloadDetails: React.FC<PayloadDetailsProps> = ({
19
- paper, payload, ...props
20
- }) => {
21
- return (
22
- <FlexCol gap={1} justifyContent="flex-start" alignItems="stretch" marginTop={2} marginBottom={8} {...props}>
23
- <PayloadDataDetails paper={paper} size="large" badge payload={payload} />
24
- <PayloadValidationDetails paper={paper} value={payload} />
25
- <PayloadJsonDetails paper={paper} payload={payload} />
26
- </FlexCol>
27
- )
28
- }
29
-
30
- PayloadDetails.displayName = 'PayloadDetails'
@@ -1,61 +0,0 @@
1
- import { ContentCopy as ContentCopyIcon } from '@mui/icons-material'
2
- import {
3
- IconButton, Typography, useTheme,
4
- } from '@mui/material'
5
- import type { FlexBoxProps } from '@xylabs/react-flexbox'
6
- import {
7
- FlexCol, FlexGrowRow, FlexRow,
8
- } from '@xylabs/react-flexbox'
9
- import { QuickTipButton } from '@xylabs/react-quick-tip-button'
10
- import { PayloadBuilder } from '@xyo-network/payload-builder'
11
- import type { Payload } from '@xyo-network/payload-model'
12
- import React from 'react'
13
-
14
- export interface PayloadHashSourceDetailsProps extends FlexBoxProps {
15
- noTitle?: boolean
16
- payload?: Payload
17
- }
18
-
19
- export const PayloadHashSourceDetails: React.FC<PayloadHashSourceDetailsProps> = ({
20
- noTitle = false, payload, ...props
21
- }) => {
22
- const theme = useTheme()
23
- const payloadString = payload ? JSON.stringify(PayloadBuilder.hashableFields(payload), null, 2) : ''
24
-
25
- return (
26
- <FlexCol alignItems="stretch" {...props}>
27
- {noTitle
28
- ? null
29
- : (
30
- <FlexRow margin={1} justifyContent="flex-start">
31
- <Typography>Hash Source</Typography>
32
- <QuickTipButton title="Hash Source">The actual string used to generate the hash (SHA256)</QuickTipButton>
33
- </FlexRow>
34
- )}
35
- <FlexRow>
36
- <FlexGrowRow background border={1} borderColor={theme.vars.palette.divider} justifyContent="start">
37
- <Typography
38
- padding={2}
39
- fontFamily="monospace"
40
- variant="body1"
41
- sx={{ overflowWrap: 'break-word', wordBreak: 'break-all' }}
42
- >
43
- {payloadString}
44
- </Typography>
45
- </FlexGrowRow>
46
- <IconButton>
47
- <ContentCopyIcon />
48
- </IconButton>
49
- </FlexRow>
50
- {noTitle
51
- ? (
52
- <FlexRow margin={1} justifyContent="flex-start">
53
- <Typography variant="body2">
54
- The actual string used to generate the hash (SHA256). This can be used to validate the hash manually.
55
- </Typography>
56
- </FlexRow>
57
- )
58
- : null}
59
- </FlexCol>
60
- )
61
- }
@@ -1,47 +0,0 @@
1
- import {
2
- Paper, useMediaQuery, useTheme,
3
- } from '@mui/material'
4
- import type { Payload } from '@xyo-network/payload-model'
5
- import type { JsonViewerExProps } from '@xyo-network/react-payload-raw-info'
6
- import { JsonViewerEx } from '@xyo-network/react-payload-raw-info'
7
- import type { PropertyGroupProps } from '@xyo-network/react-property'
8
- import { PropertyGroup } from '@xyo-network/react-property'
9
- import React from 'react'
10
-
11
- export type PayloadJsonDetailsProps = PropertyGroupProps & {
12
- jsonViewProps?: JsonViewerExProps
13
- payload?: Payload
14
- }
15
-
16
- export const PayloadJsonDetails: React.FC<PayloadJsonDetailsProps> = ({
17
- jsonViewProps, payload, ...props
18
- }) => {
19
- const { breakpoints } = useTheme()
20
- const belowSm = useMediaQuery(breakpoints.down('sm'))
21
-
22
- let elevation = 2
23
- if (props.paper) {
24
- elevation += props.elevation ?? 0
25
- }
26
-
27
- return (
28
- <PropertyGroup titleProps={{ elevation }} title="JSON" tip="The raw JSON of the payload" {...props}>
29
- <Paper
30
- square
31
- variant="elevation"
32
- style={{
33
- overflow: 'hidden', padding: '16px', width: '100%',
34
- }}
35
- >
36
- <JsonViewerEx
37
- groupArraysAfterLength={20}
38
- style={{ overflow: 'hidden' }}
39
- value={payload}
40
- enableClipboard
41
- collapseStringsAfterLength={belowSm ? 24 : 32}
42
- {...jsonViewProps}
43
- />
44
- </Paper>
45
- </PropertyGroup>
46
- )
47
- }
@@ -1,55 +0,0 @@
1
- import type { Meta, StoryFn } from '@storybook/react-vite'
2
- import { asSchema, type Payload } from '@xyo-network/payload-model'
3
- import { sampleIdPayload } from '@xyo-network/react-storybook'
4
- import React from 'react'
5
- import { BrowserRouter } from 'react-router-dom'
6
-
7
- import { PayloadDetails } from '../Details.tsx'
8
- import { PayloadValidationDetails } from './ValidationDetails.tsx'
9
- import type { PayloadValidationDetailsProps } from './ValidationDetailsProps.ts'
10
-
11
- const StorybookEntry: Meta = {
12
- argTypes: {},
13
- args: { value: { schema: 'network.xyo.schema' } },
14
- component: PayloadDetails,
15
- parameters: { docs: { page: null } },
16
- title: 'payload/ValidationDetails',
17
- }
18
-
19
- const Template: StoryFn<typeof PayloadValidationDetails> = (args: PayloadValidationDetailsProps) => (
20
- <BrowserRouter>
21
- <PayloadValidationDetails {...args} />
22
- </BrowserRouter>
23
- )
24
-
25
- const Default = Template.bind({})
26
- Default.args = { skipBody: true }
27
-
28
- const WithErrorsInToolTip = Template.bind({})
29
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
30
- // @ts-ignore
31
- WithErrorsInToolTip.args = {
32
- value: {
33
- ...sampleIdPayload,
34
- _hash: '6fe3f745b1179fefa74cc3c7eab58321bee1c9ca9e34d9585467364cc5d3bbe2',
35
- schema: undefined,
36
- } as unknown as Payload,
37
- }
38
-
39
- const SkipBody = Template.bind({})
40
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
41
- // @ts-ignore
42
- SkipBody.args = {
43
- skipBody: true,
44
- value: {
45
- _hash: '44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a',
46
- _timestamp: Date.now(),
47
- schema: asSchema('network.xyo.test', true),
48
- } as Payload,
49
- }
50
-
51
- export {
52
- Default, SkipBody, WithErrorsInToolTip,
53
- }
54
-
55
- export default StorybookEntry
@@ -1,46 +0,0 @@
1
- import { Typography } from '@mui/material'
2
- import { FlexCol } from '@xylabs/react-flexbox'
3
- import { usePromise } from '@xylabs/react-promise'
4
- import { PayloadValidator } from '@xyo-network/payload-validator'
5
- import { Property, PropertyGroup } from '@xyo-network/react-property'
6
- import { SchemaProperty } from '@xyo-network/react-schema'
7
- import React from 'react'
8
-
9
- import type { PayloadValidationDetailsProps } from './ValidationDetailsProps.ts'
10
-
11
- export const PayloadValidationDetails: React.FC<PayloadValidationDetailsProps> = ({
12
- skipBody = false, value, ...props
13
- }) => {
14
- const [validateErrors] = usePromise(async () => (value ? await new PayloadValidator(value).validate() : undefined), [value])
15
-
16
- const bodyErrors = skipBody ? [] : (validateErrors ?? [])
17
- const errors: Error[] = [...bodyErrors]
18
-
19
- let elevation = 2
20
- if (props.paper) {
21
- elevation += props.elevation ?? 0
22
- }
23
-
24
- return (
25
- <PropertyGroup titleProps={{ elevation }} title="Validation" tip="The results from validating the payload" {...props}>
26
- <Property
27
- titleProps={{ elevation }}
28
- flexGrow={1}
29
- title="Valid"
30
- value={errors.length === 0 ? 'True' : 'False'}
31
- tip={
32
- errors.length > 0
33
- ? (
34
- <FlexCol>
35
- {errors.map((error, index) => {
36
- return <Typography key={index}>{error.toString()}</Typography>
37
- })}
38
- </FlexCol>
39
- )
40
- : <Typography>No Errors</Typography>
41
- }
42
- />
43
- {value?.schema && <SchemaProperty flexGrow={1} titleProps={{ elevation }} value={value.schema} />}
44
- </PropertyGroup>
45
- )
46
- }
@@ -1,7 +0,0 @@
1
- import type { Payload } from '@xyo-network/payload-model'
2
- import type { PropertyGroupProps } from '@xyo-network/react-property'
3
-
4
- export type PayloadValidationDetailsProps = PropertyGroupProps & {
5
- skipBody?: boolean
6
- value?: Payload
7
- }
@@ -1,2 +0,0 @@
1
- export * from './ValidationDetails.tsx'
2
- export * from './ValidationDetailsProps.ts'
@@ -1,4 +0,0 @@
1
- export * from './DataDetails.tsx'
2
- export * from './Details.tsx'
3
- export * from './JsonDetails.tsx'
4
- export * from './ValidationDetails/index.ts'
@@ -1 +0,0 @@
1
- export * from './Details/index.ts'
package/src/global.d.ts DELETED
@@ -1 +0,0 @@
1
- import '@mui/material/themeCssVarsAugmentation'
package/src/index.ts DELETED
@@ -1 +0,0 @@
1
- export * from './components/index.ts'