@xyo-network/react-payload-details 6.2.0 → 7.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, import("@xylabs/react-flexbox").BusyBoxProps & {
4
+ declare const Default: import(".store/storybook-virtual-997ab3c959/package/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").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("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, import("@xylabs/react-flexbox").BusyBoxProps & {
8
+ declare const WithSample: import(".store/storybook-virtual-997ab3c959/package/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").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("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, import("@xylabs/react-flexbox").BusyBoxProps & {
12
+ declare const WithBuilderSample: import(".store/storybook-virtual-997ab3c959/package/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").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("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, import("@xylabs/react-flexbox").BusyBoxProps & {
16
+ declare const WithArchiveLink: import(".store/storybook-virtual-997ab3c959/package/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").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("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, import("@xylabs/react-flexbox").BusyBoxProps & {
20
+ declare const DefaultPaper: import(".store/storybook-virtual-997ab3c959/package/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").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("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, import("@xylabs/react-flexbox").BusyBoxProps & {
24
+ declare const WithSamplePaper: import(".store/storybook-virtual-997ab3c959/package/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").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("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, import("@xylabs/react-flexbox").BusyBoxProps & {
28
+ declare const WithBuilderSamplePaper: import(".store/storybook-virtual-997ab3c959/package/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").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("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, import("@xylabs/react-flexbox").BusyBoxProps & {
32
+ declare const WithArchiveLinkPaper: import(".store/storybook-virtual-997ab3c959/package/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").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("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, PayloadValidationDetailsProps>;
5
- declare const WithErrorsInToolTip: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, PayloadValidationDetailsProps>;
6
- declare const SkipBody: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, PayloadValidationDetailsProps>;
4
+ declare const Default: import(".store/storybook-virtual-997ab3c959/package/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, PayloadValidationDetailsProps>;
5
+ declare const WithErrorsInToolTip: import(".store/storybook-virtual-997ab3c959/package/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, PayloadValidationDetailsProps>;
6
+ declare const SkipBody: import(".store/storybook-virtual-997ab3c959/package/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, PayloadValidationDetailsProps>;
7
7
  export { Default, SkipBody, WithErrorsInToolTip, };
8
8
  export default StorybookEntry;
9
9
  //# sourceMappingURL=ValidationDetails.stories.d.ts.map
@@ -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,iIAAoB,CAAA;AAGjC,QAAA,MAAM,mBAAmB,iIAAoB,CAAA;AAW7C,QAAA,MAAM,QAAQ,iIAAoB,CAAA;AAYlC,OAAO,EACL,OAAO,EAAE,QAAQ,EAAE,mBAAmB,GACvC,CAAA;AAED,eAAe,cAAc,CAAA"}
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,mKAAoB,CAAA;AAGjC,QAAA,MAAM,mBAAmB,mKAAoB,CAAA;AAW7C,QAAA,MAAM,QAAQ,mKAAoB,CAAA;AAYlC,OAAO,EACL,OAAO,EAAE,QAAQ,EAAE,mBAAmB,GACvC,CAAA;AAED,eAAe,cAAc,CAAA"}
@@ -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 { forget } from "@xylabs/forget";
8
10
  import { ButtonEx } from "@xylabs/react-button";
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, index) => {
192
+ return /* @__PURE__ */ jsx4(Typography2, { children: error.toString() }, index);
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 { 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"]}
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":";AAAA,SAAS,eAAeA,kBAAiB,cAAc,sBAAsB;AAC7E;AAAA,EACE;AAAA,EAAQ;AAAA,EAAe;AAAA,EAAe;AAAA,OACjC;AACP,SAAS,cAAc;AACvB,SAAS,gBAAgB;AACzB,SAAS,kBAAAC,uBAAsB;AAG/B,SAAS,gBAAgB;AAEzB,SAAS,sBAAsB;AAC/B,SAAgB,gBAAgB;;;ACZhC,SAAS,eAAe,uBAAuB;AAC/C;AAAA,EACE;AAAA,EAAY;AAAA,EAAY;AAAA,OACnB;AAEP;AAAA,EACE;AAAA,EAAS;AAAA,EAAa;AAAA,OACjB;AACP,SAAS,sBAAsB;AAC/B,SAAS,sBAAsB;AAoBnB,SACE,KADF;AAXL,IAAM,2BAAoE,CAAC;AAAA,EAChF,UAAU;AAAA,EAAO;AAAA,EAAS,GAAG;AAC/B,MAAM;AACJ,QAAM,QAAQ,SAAS;AACvB,QAAM,gBAAgB,UAAU,KAAK,UAAU,eAAe,eAAe,OAAO,GAAG,MAAM,CAAC,IAAI;AAElG,SACE,qBAAC,WAAQ,YAAW,WAAW,GAAG,OAC/B;AAAA,cACG,OAEE,qBAAC,WAAQ,QAAQ,GAAG,gBAAe,cACjC;AAAA,0BAAC,cAAW,yBAAW;AAAA,MACvB,oBAAC,kBAAe,OAAM,eAAc,kEAAoD;AAAA,OAC1F;AAAA,IAEN,qBAAC,WACC;AAAA,0BAAC,eAAY,YAAU,MAAC,QAAQ,GAAG,aAAa,MAAM,KAAK,QAAQ,SAAS,gBAAe,SACzF;AAAA,QAAC;AAAA;AAAA,UACC,SAAS;AAAA,UACT,YAAW;AAAA,UACX,SAAQ;AAAA,UACR,IAAI,EAAE,cAAc,cAAc,WAAW,YAAY;AAAA,UAExD;AAAA;AAAA,MACH,GACF;AAAA,MACA,oBAAC,cACC,8BAAC,mBAAgB,GACnB;AAAA,OACF;AAAA,IACC,UAEK,oBAAC,WAAQ,QAAQ,GAAG,gBAAe,cACjC,8BAAC,cAAW,SAAQ,SAAQ,mHAE5B,GACF,IAEF;AAAA,KACN;AAEJ;;;ADvBY,SAgBR,UAhBQ,OAAAC,MAgCJ,QAAAC,aAhCI;AAfL,IAAM,qBAAwD,CAAC;AAAA,EACpE;AAAA,EAAM;AAAA,EAAO;AAAA,EAAS,GAAG;AAC3B,MAAM;AACJ,QAAM,gBAAgB,UAAU,KAAK,UAAUC,gBAAe,eAAe,OAAO,GAAG,MAAM,CAAC,IAAI;AAElG,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAS,KAAK;AAC1D,QAAM,OAAO,eAAe,OAAO;AAEnC,MAAI,YAAY;AAChB,MAAI,MAAM,OAAO;AACf,iBAAa,MAAM,aAAa;AAAA,EAClC;AAEA,QAAM,UAA4B;AAAA,IAChC;AAAA,MACE,MAAM,gBAAAF,KAAC,kBAAe;AAAA,MACtB,MAAM;AAAA,MACN,SAAS,MAAM,kBAAkB,IAAI;AAAA,IACvC;AAAA,IACA;AAAA,MACE,MAAM,gBAAAA,KAACG,kBAAA,EAAgB;AAAA,MACvB,MAAM;AAAA,MACN,SAAS,MAAM,OAAO,UAAU,UAAU,UAAU,QAAQ,EAAE,CAAC;AAAA,IACjE;AAAA,EACF;AAEA,QAAM,SAAS,MAAM;AACnB,WAAO,UAAU,UAAU,UAAU,aAAa,CAAC;AAAA,EACrD;AAEA,SACE,gBAAAF,MAAA,YACE;AAAA,oBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,YAAY,EAAE,UAAU;AAAA,QACxB;AAAA,QACA;AAAA,QACA;AAAA,QACA,OAAM;AAAA,QACN,OAAO,QAAQ;AAAA,QACf,KAAI;AAAA,QACH,GAAG;AAAA;AAAA,IACN;AAAA,IACA,gBAAAC,MAAC,UAAO,MAAM,gBAAgB,SAAS,MAAM,kBAAkB,KAAK,GAClE;AAAA,sBAAAD,KAAC,eAAY,yBAAW;AAAA,MACxB,gBAAAA,KAAC,iBACC,0BAAAA,KAAC,4BAAyB,SAAO,MAAC,SAAkB,GACtD;AAAA,MACA,gBAAAC,MAAC,iBACC;AAAA,wBAAAD,KAAC,YAAS,OAAM,aAAY,SAAS,QAAQ,kBAE7C;AAAA,QACA,gBAAAA,KAAC,YAAS,OAAM,aAAY,SAAS,MAAM,kBAAkB,KAAK,GAAG,mBAErE;AAAA,SACF;AAAA,OACF;AAAA,KACF;AAEJ;;;AE/EA,SAAS,WAAAI,gBAAe;;;ACDxB;AAAA,EACE;AAAA,EAAO;AAAA,EAAe,YAAAC;AAAA,OACjB;AAGP,SAAS,oBAAoB;AAE7B,SAAS,qBAAqB;AA4BtB,gBAAAC,YAAA;AApBD,IAAM,qBAAwD,CAAC;AAAA,EACpE;AAAA,EAAe;AAAA,EAAS,GAAG;AAC7B,MAAM;AACJ,QAAM,EAAE,YAAY,IAAID,UAAS;AACjC,QAAM,UAAU,cAAc,YAAY,KAAK,IAAI,CAAC;AAEpD,MAAI,YAAY;AAChB,MAAI,MAAM,OAAO;AACf,iBAAa,MAAM,aAAa;AAAA,EAClC;AAEA,SACE,gBAAAC,KAAC,iBAAc,YAAY,EAAE,UAAU,GAAG,OAAM,QAAO,KAAI,+BAA+B,GAAG,OAC3F,0BAAAA;AAAA,IAAC;AAAA;AAAA,MACC,QAAM;AAAA,MACN,SAAQ;AAAA,MACR,OAAO;AAAA,QACL,UAAU;AAAA,QAAU,SAAS;AAAA,QAAQ,OAAO;AAAA,MAC9C;AAAA,MAEA,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACC,wBAAwB;AAAA,UACxB,OAAO,EAAE,UAAU,SAAS;AAAA,UAC5B,OAAO;AAAA,UACP,iBAAe;AAAA,UACf,4BAA4B,UAAU,KAAK;AAAA,UAC1C,GAAG;AAAA;AAAA,MACN;AAAA;AAAA,EACF,GACF;AAEJ;;;AC9CA,SAAS,cAAAC,mBAAkB;AAC3B,SAAS,WAAAC,gBAAe;AACxB,SAAS,kBAAkB;AAC3B,SAAS,wBAAwB;AACjC,SAAS,YAAAC,WAAU,iBAAAC,sBAAqB;AACxC,SAAS,sBAAsB;AAmB3B,SAWuB,OAAAC,MAXvB,QAAAC,aAAA;AAdG,IAAM,2BAAoE,CAAC;AAAA,EAChF,WAAW;AAAA,EAAO;AAAA,EAAO,GAAG;AAC9B,MAAM;AACJ,QAAM,CAAC,cAAc,IAAI,WAAW,YAAa,QAAQ,MAAM,IAAI,iBAAiB,KAAK,EAAE,SAAS,IAAI,QAAY,CAAC,KAAK,CAAC;AAE3H,QAAM,aAAa,WAAW,CAAC,IAAK,kBAAkB,CAAC;AACvD,QAAM,SAAkB,CAAC,GAAG,UAAU;AAEtC,MAAI,YAAY;AAChB,MAAI,MAAM,OAAO;AACf,iBAAa,MAAM,aAAa;AAAA,EAClC;AAEA,SACE,gBAAAA,MAACF,gBAAA,EAAc,YAAY,EAAE,UAAU,GAAG,OAAM,cAAa,KAAI,2CAA2C,GAAG,OAC7G;AAAA,oBAAAC;AAAA,MAACF;AAAA,MAAA;AAAA,QACC,YAAY,EAAE,UAAU;AAAA,QACxB,UAAU;AAAA,QACV,OAAM;AAAA,QACN,OAAO,OAAO,WAAW,IAAI,SAAS;AAAA,QACtC,KACE,OAAO,SAAS,IAEV,gBAAAE,KAACH,UAAA,EACE,iBAAO,IAAI,CAAC,OAAO,UAAU;AAC5B,iBAAO,gBAAAG,KAACJ,aAAA,EAAwB,gBAAM,SAAS,KAAvB,KAAyB;AAAA,QACnD,CAAC,GACH,IAEF,gBAAAI,KAACJ,aAAA,EAAW,uBAAS;AAAA;AAAA,IAE7B;AAAA,IACC,OAAO,UAAU,gBAAAI,KAAC,kBAAe,UAAU,GAAG,YAAY,EAAE,UAAU,GAAG,OAAO,MAAM,QAAQ;AAAA,KACjG;AAEJ;;;AFxBI,SACE,OAAAE,MADF,QAAAC,aAAA;AAJG,IAAM,iBAAgD,CAAC;AAAA,EAC5D;AAAA,EAAO;AAAA,EAAS,GAAG;AACrB,MAAM;AACJ,SACE,gBAAAA,MAACC,UAAA,EAAQ,KAAK,GAAG,gBAAe,cAAa,YAAW,WAAU,WAAW,GAAG,cAAc,GAAI,GAAG,OACnG;AAAA,oBAAAF,KAAC,sBAAmB,OAAc,MAAK,SAAQ,OAAK,MAAC,SAAkB;AAAA,IACvE,gBAAAA,KAAC,4BAAyB,OAAc,OAAO,SAAS;AAAA,IACxD,gBAAAA,KAAC,sBAAmB,OAAc,SAAkB;AAAA,KACtD;AAEJ;AAEA,eAAe,cAAc;","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": "6.2.0",
3
+ "version": "7.0.1",
4
4
  "description": "Common React library for all XYO projects that use React",
5
5
  "keywords": [
6
6
  "xyo",
@@ -38,43 +38,50 @@
38
38
  },
39
39
  "module": "dist/browser/index.mjs",
40
40
  "types": "dist/browser/index.d.ts",
41
+ "files": [
42
+ "dist",
43
+ "src"
44
+ ],
41
45
  "dependencies": {
42
- "@xylabs/forget": "^4.15.0",
43
- "@xylabs/react-button": "^6.4.0",
44
- "@xylabs/react-flexbox": "^6.4.0",
45
- "@xylabs/react-promise": "^6.4.0",
46
- "@xylabs/react-quick-tip-button": "^6.4.0",
47
- "@xyo-network/payload-builder": "^4.3.0",
48
- "@xyo-network/payload-model": "^4.3.0",
49
- "@xyo-network/payload-validator": "^4.3.0",
50
- "@xyo-network/react-payload-raw-info": "^6.2.0",
51
- "@xyo-network/react-property": "^6.2.0",
52
- "@xyo-network/react-schema": "^6.2.0",
53
- "@xyo-network/react-shared": "^6.2.0"
46
+ "@xylabs/forget": "~5.0.8",
47
+ "@xylabs/react-button": "~7.0.1",
48
+ "@xylabs/react-flexbox": "~7.0.1",
49
+ "@xylabs/react-promise": "~7.0.1",
50
+ "@xylabs/react-quick-tip-button": "~7.0.1",
51
+ "@xyo-network/payload-builder": "~5.0.5",
52
+ "@xyo-network/payload-model": "~5.0.5",
53
+ "@xyo-network/payload-validator": "~5.0.5",
54
+ "@xyo-network/react-payload-raw-info": "^7.0.1",
55
+ "@xyo-network/react-property": "^7.0.1",
56
+ "@xyo-network/react-schema": "^7.0.1",
57
+ "@xyo-network/react-shared": "^7.0.1"
54
58
  },
55
59
  "devDependencies": {
56
- "@emotion/react": "^11.14.0",
57
- "@emotion/styled": "^11.14.1",
58
- "@mui/icons-material": "^7.2.0",
59
- "@mui/material": "^7.2.0",
60
- "@storybook/react-vite": "^9.0.18",
61
- "@types/react": "^19.1.8",
62
- "@xylabs/ts-scripts-yarn3": "^7.0.1",
63
- "@xylabs/tsconfig-react": "^7.0.1",
64
- "@xyo-network/react-storybook": "^6.2.0",
65
- "react": "^19.1.1",
66
- "react-dom": "^19.1.1",
67
- "react-router-dom": "^7.7.1",
68
- "storybook": "^9.0.18",
69
- "typescript": "^5.8.3"
60
+ "@emotion/react": "~11.14.0",
61
+ "@emotion/styled": "~11.14.1",
62
+ "@mui/icons-material": "~7.3.1",
63
+ "@mui/material": "~7.3.1",
64
+ "@storybook/react-vite": "~9.1.2",
65
+ "@types/react": "~19.1.10",
66
+ "@xylabs/ts-scripts-yarn3": "~7.1.1",
67
+ "@xylabs/tsconfig": "~7.1.1",
68
+ "@xylabs/tsconfig-dom": "~7.1.1",
69
+ "@xylabs/tsconfig-react": "~7.1.1",
70
+ "@xyo-network/react-storybook": "^7.0.1",
71
+ "react": "~19.1.1",
72
+ "react-dom": "~19.1.1",
73
+ "react-router-dom": "~7.8.0",
74
+ "storybook": "~9.1.2",
75
+ "typescript": "~5.9.2",
76
+ "vite": "~7.1.2"
70
77
  },
71
78
  "peerDependencies": {
72
- "@emotion/react": "^11",
73
- "@emotion/styled": "^11",
79
+ "@emotion/react": "~11",
80
+ "@emotion/styled": "~11",
74
81
  "@mui/icons-material": ">=6 <8",
75
82
  "@mui/material": ">=6 <8",
76
- "react": "^19",
77
- "react-dom": "^19"
83
+ "react": "~19",
84
+ "react-dom": "~19"
78
85
  },
79
86
  "publishConfig": {
80
87
  "access": "public"
package/typedoc.json DELETED
@@ -1,5 +0,0 @@
1
- {
2
- "$schema": "https://typedoc.org/schema.json",
3
- "entryPoints": ["src/index.ts"],
4
- "tsconfig": "./tsconfig.typedoc.json"
5
- }
package/xy.config.ts DELETED
@@ -1,10 +0,0 @@
1
- import type { XyTsupConfig } from '@xylabs/ts-scripts-yarn3'
2
- const config: XyTsupConfig = {
3
- compile: {
4
- browser: { src: true },
5
- node: {},
6
- neutral: {},
7
- },
8
- }
9
-
10
- export default config