@xyo-network/react-payload-details 7.4.1 → 7.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/components/Details/Details.stories.d.ts +8 -8
- package/dist/browser/components/Details/ValidationDetails/ValidationDetails.stories.d.ts +3 -3
- package/dist/browser/components/Details/ValidationDetails/ValidationDetails.stories.d.ts.map +1 -1
- package/dist/browser/index.mjs +154 -151
- package/dist/browser/index.mjs.map +1 -1
- package/package.json +28 -28
- package/src/components/Details/ValidationDetails/ValidationDetails.stories.tsx +2 -2
|
@@ -1,35 +1,35 @@
|
|
|
1
1
|
import type { Meta } from '@storybook/react-vite';
|
|
2
2
|
import { PayloadDetails } from './Details.tsx';
|
|
3
3
|
declare const StorybookEntry: Meta<typeof PayloadDetails>;
|
|
4
|
-
declare const Default: import("
|
|
4
|
+
declare const Default: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, import("@xylabs/react-flexbox").BusyBoxProps & {
|
|
5
5
|
paper?: boolean;
|
|
6
6
|
payload?: import("@xyo-network/payload-model").Payload;
|
|
7
7
|
}>;
|
|
8
|
-
declare const WithSample: import("
|
|
8
|
+
declare const WithSample: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, import("@xylabs/react-flexbox").BusyBoxProps & {
|
|
9
9
|
paper?: boolean;
|
|
10
10
|
payload?: import("@xyo-network/payload-model").Payload;
|
|
11
11
|
}>;
|
|
12
|
-
declare const WithBuilderSample: import("
|
|
12
|
+
declare const WithBuilderSample: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, import("@xylabs/react-flexbox").BusyBoxProps & {
|
|
13
13
|
paper?: boolean;
|
|
14
14
|
payload?: import("@xyo-network/payload-model").Payload;
|
|
15
15
|
}>;
|
|
16
|
-
declare const WithArchiveLink: import("
|
|
16
|
+
declare const WithArchiveLink: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, import("@xylabs/react-flexbox").BusyBoxProps & {
|
|
17
17
|
paper?: boolean;
|
|
18
18
|
payload?: import("@xyo-network/payload-model").Payload;
|
|
19
19
|
}>;
|
|
20
|
-
declare const DefaultPaper: import("
|
|
20
|
+
declare const DefaultPaper: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, import("@xylabs/react-flexbox").BusyBoxProps & {
|
|
21
21
|
paper?: boolean;
|
|
22
22
|
payload?: import("@xyo-network/payload-model").Payload;
|
|
23
23
|
}>;
|
|
24
|
-
declare const WithSamplePaper: import("
|
|
24
|
+
declare const WithSamplePaper: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, import("@xylabs/react-flexbox").BusyBoxProps & {
|
|
25
25
|
paper?: boolean;
|
|
26
26
|
payload?: import("@xyo-network/payload-model").Payload;
|
|
27
27
|
}>;
|
|
28
|
-
declare const WithBuilderSamplePaper: import("
|
|
28
|
+
declare const WithBuilderSamplePaper: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, import("@xylabs/react-flexbox").BusyBoxProps & {
|
|
29
29
|
paper?: boolean;
|
|
30
30
|
payload?: import("@xyo-network/payload-model").Payload;
|
|
31
31
|
}>;
|
|
32
|
-
declare const WithArchiveLinkPaper: import("
|
|
32
|
+
declare const WithArchiveLinkPaper: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, import("@xylabs/react-flexbox").BusyBoxProps & {
|
|
33
33
|
paper?: boolean;
|
|
34
34
|
payload?: import("@xyo-network/payload-model").Payload;
|
|
35
35
|
}>;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { Meta } from '@storybook/react-vite';
|
|
2
2
|
import type { PayloadValidationDetailsProps } from './ValidationDetailsProps.ts';
|
|
3
3
|
declare const StorybookEntry: Meta;
|
|
4
|
-
declare const Default: import("
|
|
5
|
-
declare const WithErrorsInToolTip: import("
|
|
6
|
-
declare const SkipBody: import("
|
|
4
|
+
declare const Default: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, PayloadValidationDetailsProps>;
|
|
5
|
+
declare const WithErrorsInToolTip: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, PayloadValidationDetailsProps>;
|
|
6
|
+
declare const SkipBody: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, PayloadValidationDetailsProps>;
|
|
7
7
|
export { Default, SkipBody, WithErrorsInToolTip, };
|
|
8
8
|
export default StorybookEntry;
|
|
9
9
|
//# sourceMappingURL=ValidationDetails.stories.d.ts.map
|
package/dist/browser/components/Details/ValidationDetails/ValidationDetails.stories.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValidationDetails.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/Details/ValidationDetails/ValidationDetails.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAW,MAAM,uBAAuB,CAAA;AAQ1D,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAA;AAEhF,QAAA,MAAM,cAAc,EAAE,IAMrB,CAAA;AAQD,QAAA,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"ValidationDetails.stories.d.ts","sourceRoot":"","sources":["../../../../../src/components/Details/ValidationDetails/ValidationDetails.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAW,MAAM,uBAAuB,CAAA;AAQ1D,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAA;AAEhF,QAAA,MAAM,cAAc,EAAE,IAMrB,CAAA;AAQD,QAAA,MAAM,OAAO,4HAAoB,CAAA;AAGjC,QAAA,MAAM,mBAAmB,4HAAoB,CAAA;AAW7C,QAAA,MAAM,QAAQ,4HAAoB,CAAA;AAYlC,OAAO,EACL,OAAO,EAAE,QAAQ,EAAE,mBAAmB,GACvC,CAAA;AAED,eAAe,cAAc,CAAA"}
|
package/dist/browser/index.mjs
CHANGED
|
@@ -1,70 +1,57 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
|
|
1
4
|
// src/components/Details/DataDetails.tsx
|
|
2
5
|
import { ContentCopy as ContentCopyIcon2, Visibility as VisibilityIcon } from "@mui/icons-material";
|
|
3
|
-
import {
|
|
4
|
-
Dialog,
|
|
5
|
-
DialogActions,
|
|
6
|
-
DialogContent,
|
|
7
|
-
DialogTitle
|
|
8
|
-
} from "@mui/material";
|
|
6
|
+
import { Dialog, DialogActions, DialogContent, DialogTitle } from "@mui/material";
|
|
9
7
|
import { forget } from "@xylabs/forget";
|
|
10
8
|
import { ButtonEx } from "@xylabs/react-button";
|
|
11
9
|
import { PayloadBuilder as PayloadBuilder2 } from "@xyo-network/payload-builder";
|
|
12
10
|
import { Property } from "@xyo-network/react-property";
|
|
13
11
|
import { usePayloadHash } from "@xyo-network/react-shared";
|
|
14
|
-
import { useState } from "react";
|
|
12
|
+
import React2, { useState } from "react";
|
|
15
13
|
|
|
16
14
|
// src/components/Details/HashSourceDetails.tsx
|
|
17
15
|
import { ContentCopy as ContentCopyIcon } from "@mui/icons-material";
|
|
18
|
-
import {
|
|
19
|
-
|
|
20
|
-
Typography,
|
|
21
|
-
useTheme
|
|
22
|
-
} from "@mui/material";
|
|
23
|
-
import {
|
|
24
|
-
FlexCol,
|
|
25
|
-
FlexGrowRow,
|
|
26
|
-
FlexRow
|
|
27
|
-
} from "@xylabs/react-flexbox";
|
|
16
|
+
import { IconButton, Typography, useTheme } from "@mui/material";
|
|
17
|
+
import { FlexCol, FlexGrowRow, FlexRow } from "@xylabs/react-flexbox";
|
|
28
18
|
import { QuickTipButton } from "@xylabs/react-quick-tip-button";
|
|
29
19
|
import { PayloadBuilder } from "@xyo-network/payload-builder";
|
|
30
|
-
import
|
|
31
|
-
var PayloadHashSourceDetails = ({
|
|
32
|
-
noTitle = false,
|
|
33
|
-
payload,
|
|
34
|
-
...props
|
|
35
|
-
}) => {
|
|
20
|
+
import React from "react";
|
|
21
|
+
var PayloadHashSourceDetails = /* @__PURE__ */ __name(({ noTitle = false, payload, ...props }) => {
|
|
36
22
|
const theme = useTheme();
|
|
37
23
|
const payloadString = payload ? JSON.stringify(PayloadBuilder.hashableFields(payload), null, 2) : "";
|
|
38
|
-
return /* @__PURE__ */
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}
|
|
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");
|
|
59
52
|
|
|
60
53
|
// src/components/Details/DataDetails.tsx
|
|
61
|
-
|
|
62
|
-
var PayloadDataDetails = ({
|
|
63
|
-
size,
|
|
64
|
-
badge,
|
|
65
|
-
payload,
|
|
66
|
-
...props
|
|
67
|
-
}) => {
|
|
54
|
+
var PayloadDataDetails = /* @__PURE__ */ __name(({ size, badge, payload, ...props }) => {
|
|
68
55
|
const payloadString = payload ? JSON.stringify(PayloadBuilder2.hashableFields(payload), null, 2) : "";
|
|
69
56
|
const [viewSourceOpen, setViewSourceOpen] = useState(false);
|
|
70
57
|
const hash = usePayloadHash(payload);
|
|
@@ -74,91 +61,87 @@ var PayloadDataDetails = ({
|
|
|
74
61
|
}
|
|
75
62
|
const actions = [
|
|
76
63
|
{
|
|
77
|
-
icon: /* @__PURE__ */
|
|
64
|
+
icon: /* @__PURE__ */ React2.createElement(VisibilityIcon, null),
|
|
78
65
|
name: "View",
|
|
79
|
-
onClick: () => setViewSourceOpen(true)
|
|
66
|
+
onClick: /* @__PURE__ */ __name(() => setViewSourceOpen(true), "onClick")
|
|
80
67
|
},
|
|
81
68
|
{
|
|
82
|
-
icon: /* @__PURE__ */
|
|
69
|
+
icon: /* @__PURE__ */ React2.createElement(ContentCopyIcon2, null),
|
|
83
70
|
name: "Copy",
|
|
84
|
-
onClick: () => forget(navigator.clipboard.writeText(hash ?? ""))
|
|
71
|
+
onClick: /* @__PURE__ */ __name(() => forget(navigator.clipboard.writeText(hash ?? "")), "onClick")
|
|
85
72
|
}
|
|
86
73
|
];
|
|
87
|
-
const onCopy = () => {
|
|
74
|
+
const onCopy = /* @__PURE__ */ __name(() => {
|
|
88
75
|
forget(navigator.clipboard.writeText(payloadString));
|
|
89
|
-
};
|
|
90
|
-
return /* @__PURE__ */
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
),
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
};
|
|
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");
|
|
114
102
|
|
|
115
103
|
// src/components/Details/Details.tsx
|
|
116
104
|
import { FlexCol as FlexCol3 } from "@xylabs/react-flexbox";
|
|
105
|
+
import React5 from "react";
|
|
117
106
|
|
|
118
107
|
// src/components/Details/JsonDetails.tsx
|
|
119
|
-
import {
|
|
120
|
-
Paper,
|
|
121
|
-
useMediaQuery,
|
|
122
|
-
useTheme as useTheme2
|
|
123
|
-
} from "@mui/material";
|
|
108
|
+
import { Paper, useMediaQuery, useTheme as useTheme2 } from "@mui/material";
|
|
124
109
|
import { JsonViewerEx } from "@xyo-network/react-payload-raw-info";
|
|
125
110
|
import { PropertyGroup } from "@xyo-network/react-property";
|
|
126
|
-
import
|
|
127
|
-
var PayloadJsonDetails = ({
|
|
128
|
-
jsonViewProps,
|
|
129
|
-
payload,
|
|
130
|
-
...props
|
|
131
|
-
}) => {
|
|
111
|
+
import React3 from "react";
|
|
112
|
+
var PayloadJsonDetails = /* @__PURE__ */ __name(({ jsonViewProps, payload, ...props }) => {
|
|
132
113
|
const { breakpoints } = useTheme2();
|
|
133
114
|
const belowSm = useMediaQuery(breakpoints.down("sm"));
|
|
134
115
|
let elevation = 2;
|
|
135
116
|
if (props.paper) {
|
|
136
117
|
elevation += props.elevation ?? 0;
|
|
137
118
|
}
|
|
138
|
-
return /* @__PURE__ */
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
style: { overflow: "hidden" },
|
|
153
|
-
value: payload,
|
|
154
|
-
enableClipboard: true,
|
|
155
|
-
collapseStringsAfterLength: belowSm ? 24 : 32,
|
|
156
|
-
...jsonViewProps
|
|
157
|
-
}
|
|
158
|
-
)
|
|
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%"
|
|
159
133
|
}
|
|
160
|
-
|
|
161
|
-
|
|
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");
|
|
162
145
|
|
|
163
146
|
// src/components/Details/ValidationDetails/ValidationDetails.tsx
|
|
164
147
|
import { Typography as Typography2 } from "@mui/material";
|
|
@@ -167,49 +150,69 @@ import { usePromise } from "@xylabs/react-promise";
|
|
|
167
150
|
import { PayloadValidator } from "@xyo-network/payload-validator";
|
|
168
151
|
import { Property as Property2, PropertyGroup as PropertyGroup2 } from "@xyo-network/react-property";
|
|
169
152
|
import { SchemaProperty } from "@xyo-network/react-schema";
|
|
170
|
-
import
|
|
171
|
-
var PayloadValidationDetails = ({
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
}) => {
|
|
176
|
-
const [validateErrors] = usePromise(async () => value ? await new PayloadValidator(value).validate() : void 0, [value]);
|
|
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
|
+
]);
|
|
177
158
|
const bodyErrors = skipBody ? [] : validateErrors ?? [];
|
|
178
|
-
const errors = [
|
|
159
|
+
const errors = [
|
|
160
|
+
...bodyErrors
|
|
161
|
+
];
|
|
179
162
|
let elevation = 2;
|
|
180
163
|
if (props.paper) {
|
|
181
164
|
elevation += props.elevation ?? 0;
|
|
182
165
|
}
|
|
183
|
-
return /* @__PURE__ */
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
value
|
|
197
|
-
|
|
198
|
-
|
|
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");
|
|
199
193
|
|
|
200
194
|
// src/components/Details/Details.tsx
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
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");
|
|
213
216
|
PayloadDetails.displayName = "PayloadDetails";
|
|
214
217
|
export {
|
|
215
218
|
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 { forget } from '@xylabs/forget'\nimport { ButtonEx } from '@xylabs/react-button'\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":["ContentCopyIcon","PayloadBuilder","jsx","jsxs","PayloadBuilder","ContentCopyIcon","FlexCol","useTheme","jsx","Typography","FlexCol","Property","PropertyGroup","jsx","jsxs","jsx","jsxs","FlexCol"]}
|
|
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 { forget } from '@xylabs/forget'\nimport { ButtonEx } from '@xylabs/react-button'\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","forget","ButtonEx","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"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyo-network/react-payload-details",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.5.0",
|
|
4
4
|
"description": "Common React library for all XYO projects that use React",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"xyo",
|
|
@@ -43,37 +43,37 @@
|
|
|
43
43
|
"src"
|
|
44
44
|
],
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@xylabs/forget": "~5.0.
|
|
47
|
-
"@xylabs/react-button": "~7.1.
|
|
48
|
-
"@xylabs/react-flexbox": "~7.1.
|
|
49
|
-
"@xylabs/react-promise": "~7.1.
|
|
50
|
-
"@xylabs/react-quick-tip-button": "~7.1.
|
|
51
|
-
"@xyo-network/payload-builder": "~5.2
|
|
52
|
-
"@xyo-network/payload-model": "~5.2
|
|
53
|
-
"@xyo-network/payload-validator": "~5.2
|
|
54
|
-
"@xyo-network/react-payload-raw-info": "
|
|
55
|
-
"@xyo-network/react-property": "
|
|
56
|
-
"@xyo-network/react-schema": "
|
|
57
|
-
"@xyo-network/react-shared": "
|
|
46
|
+
"@xylabs/forget": "~5.0.64",
|
|
47
|
+
"@xylabs/react-button": "~7.1.9",
|
|
48
|
+
"@xylabs/react-flexbox": "~7.1.9",
|
|
49
|
+
"@xylabs/react-promise": "~7.1.9",
|
|
50
|
+
"@xylabs/react-quick-tip-button": "~7.1.9",
|
|
51
|
+
"@xyo-network/payload-builder": "~5.3.2",
|
|
52
|
+
"@xyo-network/payload-model": "~5.3.2",
|
|
53
|
+
"@xyo-network/payload-validator": "~5.3.2",
|
|
54
|
+
"@xyo-network/react-payload-raw-info": "7.5.0",
|
|
55
|
+
"@xyo-network/react-property": "7.5.0",
|
|
56
|
+
"@xyo-network/react-schema": "7.5.0",
|
|
57
|
+
"@xyo-network/react-shared": "7.5.0"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
60
60
|
"@emotion/react": "~11.14.0",
|
|
61
61
|
"@emotion/styled": "~11.14.1",
|
|
62
|
-
"@mui/icons-material": "~7.3.
|
|
63
|
-
"@mui/material": "~7.3.
|
|
64
|
-
"@storybook/react-vite": "~10.1
|
|
65
|
-
"@types/react": "^19.2.
|
|
66
|
-
"@xylabs/ts-scripts-yarn3": "~7.2
|
|
67
|
-
"@xylabs/tsconfig": "~7.2
|
|
68
|
-
"@xylabs/tsconfig-dom": "~7.2
|
|
69
|
-
"@xylabs/tsconfig-react": "~7.2
|
|
70
|
-
"@xyo-network/react-storybook": "
|
|
71
|
-
"react": "^19.2.
|
|
72
|
-
"react-dom": "^19.2.
|
|
73
|
-
"react-router-dom": "^7.
|
|
74
|
-
"storybook": "~10.1
|
|
62
|
+
"@mui/icons-material": "~7.3.7",
|
|
63
|
+
"@mui/material": "~7.3.7",
|
|
64
|
+
"@storybook/react-vite": "~10.2.1",
|
|
65
|
+
"@types/react": "^19.2.10",
|
|
66
|
+
"@xylabs/ts-scripts-yarn3": "~7.3.2",
|
|
67
|
+
"@xylabs/tsconfig": "~7.3.2",
|
|
68
|
+
"@xylabs/tsconfig-dom": "~7.3.2",
|
|
69
|
+
"@xylabs/tsconfig-react": "~7.3.2",
|
|
70
|
+
"@xyo-network/react-storybook": "7.5.0",
|
|
71
|
+
"react": "^19.2.4",
|
|
72
|
+
"react-dom": "^19.2.4",
|
|
73
|
+
"react-router-dom": "^7.13.0",
|
|
74
|
+
"storybook": "~10.2.1",
|
|
75
75
|
"typescript": "^5.9.3",
|
|
76
|
-
"vite": "~7.
|
|
76
|
+
"vite": "~7.3.1"
|
|
77
77
|
},
|
|
78
78
|
"peerDependencies": {
|
|
79
79
|
"@emotion/react": "~11",
|
|
@@ -87,4 +87,4 @@
|
|
|
87
87
|
"access": "public"
|
|
88
88
|
},
|
|
89
89
|
"docs": "dist/docs.json"
|
|
90
|
-
}
|
|
90
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Meta, StoryFn } from '@storybook/react-vite'
|
|
2
|
-
import type
|
|
2
|
+
import { asSchema, type Payload } from '@xyo-network/payload-model'
|
|
3
3
|
import { sampleIdPayload } from '@xyo-network/react-storybook'
|
|
4
4
|
import React from 'react'
|
|
5
5
|
import { BrowserRouter } from 'react-router-dom'
|
|
@@ -44,7 +44,7 @@ SkipBody.args = {
|
|
|
44
44
|
value: {
|
|
45
45
|
_hash: '44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a',
|
|
46
46
|
_timestamp: Date.now(),
|
|
47
|
-
schema: 'network.xyo.test',
|
|
47
|
+
schema: asSchema('network.xyo.test', true),
|
|
48
48
|
} as Payload,
|
|
49
49
|
}
|
|
50
50
|
|