@xyo-network/react-payload-raw-info 2.70.3 → 2.70.4

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.
Files changed (85) hide show
  1. package/dist/browser/components/Button/RawInfoButton.d.cts +1 -2
  2. package/dist/browser/components/Button/RawInfoButton.d.cts.map +1 -1
  3. package/dist/browser/components/Button/RawInfoButton.d.mts +1 -2
  4. package/dist/browser/components/Button/RawInfoButton.d.mts.map +1 -1
  5. package/dist/browser/components/Button/RawInfoButton.d.ts +1 -2
  6. package/dist/browser/components/Button/RawInfoButton.d.ts.map +1 -1
  7. package/dist/browser/components/Button/RawInfoIconButton.d.cts +1 -2
  8. package/dist/browser/components/Button/RawInfoIconButton.d.cts.map +1 -1
  9. package/dist/browser/components/Button/RawInfoIconButton.d.mts +1 -2
  10. package/dist/browser/components/Button/RawInfoIconButton.d.mts.map +1 -1
  11. package/dist/browser/components/Button/RawInfoIconButton.d.ts +1 -2
  12. package/dist/browser/components/Button/RawInfoIconButton.d.ts.map +1 -1
  13. package/dist/browser/components/shared/Dialog/{PayloadCollapse.d.cts → JsonViewerCollapse.d.cts} +4 -4
  14. package/dist/browser/components/shared/Dialog/JsonViewerCollapse.d.cts.map +1 -0
  15. package/dist/browser/components/shared/Dialog/{PayloadCollapse.d.ts → JsonViewerCollapse.d.mts} +4 -4
  16. package/dist/browser/components/shared/Dialog/JsonViewerCollapse.d.mts.map +1 -0
  17. package/dist/browser/components/shared/Dialog/{PayloadCollapse.d.mts → JsonViewerCollapse.d.ts} +4 -4
  18. package/dist/browser/components/shared/Dialog/JsonViewerCollapse.d.ts.map +1 -0
  19. package/dist/browser/components/shared/Dialog/RawInfoDialog.d.cts +2 -2
  20. package/dist/browser/components/shared/Dialog/RawInfoDialog.d.cts.map +1 -1
  21. package/dist/browser/components/shared/Dialog/RawInfoDialog.d.mts +2 -2
  22. package/dist/browser/components/shared/Dialog/RawInfoDialog.d.mts.map +1 -1
  23. package/dist/browser/components/shared/Dialog/RawInfoDialog.d.ts +2 -2
  24. package/dist/browser/components/shared/Dialog/RawInfoDialog.d.ts.map +1 -1
  25. package/dist/browser/components/shared/Dialog/index.d.cts +1 -1
  26. package/dist/browser/components/shared/Dialog/index.d.cts.map +1 -1
  27. package/dist/browser/components/shared/Dialog/index.d.mts +1 -1
  28. package/dist/browser/components/shared/Dialog/index.d.mts.map +1 -1
  29. package/dist/browser/components/shared/Dialog/index.d.ts +1 -1
  30. package/dist/browser/components/shared/Dialog/index.d.ts.map +1 -1
  31. package/dist/browser/index.cjs +27 -17
  32. package/dist/browser/index.cjs.map +1 -1
  33. package/dist/browser/index.js +29 -19
  34. package/dist/browser/index.js.map +1 -1
  35. package/dist/node/components/Button/RawInfoButton.d.cts +1 -2
  36. package/dist/node/components/Button/RawInfoButton.d.cts.map +1 -1
  37. package/dist/node/components/Button/RawInfoButton.d.mts +1 -2
  38. package/dist/node/components/Button/RawInfoButton.d.mts.map +1 -1
  39. package/dist/node/components/Button/RawInfoButton.d.ts +1 -2
  40. package/dist/node/components/Button/RawInfoButton.d.ts.map +1 -1
  41. package/dist/node/components/Button/RawInfoIconButton.d.cts +1 -2
  42. package/dist/node/components/Button/RawInfoIconButton.d.cts.map +1 -1
  43. package/dist/node/components/Button/RawInfoIconButton.d.mts +1 -2
  44. package/dist/node/components/Button/RawInfoIconButton.d.mts.map +1 -1
  45. package/dist/node/components/Button/RawInfoIconButton.d.ts +1 -2
  46. package/dist/node/components/Button/RawInfoIconButton.d.ts.map +1 -1
  47. package/dist/node/components/shared/Dialog/{PayloadCollapse.d.cts → JsonViewerCollapse.d.cts} +4 -4
  48. package/dist/node/components/shared/Dialog/JsonViewerCollapse.d.cts.map +1 -0
  49. package/dist/node/components/shared/Dialog/JsonViewerCollapse.d.mts +9 -0
  50. package/dist/node/components/shared/Dialog/JsonViewerCollapse.d.mts.map +1 -0
  51. package/dist/node/components/shared/Dialog/JsonViewerCollapse.d.ts +9 -0
  52. package/dist/node/components/shared/Dialog/JsonViewerCollapse.d.ts.map +1 -0
  53. package/dist/node/components/shared/Dialog/RawInfoDialog.d.cts +2 -2
  54. package/dist/node/components/shared/Dialog/RawInfoDialog.d.cts.map +1 -1
  55. package/dist/node/components/shared/Dialog/RawInfoDialog.d.mts +2 -2
  56. package/dist/node/components/shared/Dialog/RawInfoDialog.d.mts.map +1 -1
  57. package/dist/node/components/shared/Dialog/RawInfoDialog.d.ts +2 -2
  58. package/dist/node/components/shared/Dialog/RawInfoDialog.d.ts.map +1 -1
  59. package/dist/node/components/shared/Dialog/index.d.cts +1 -1
  60. package/dist/node/components/shared/Dialog/index.d.cts.map +1 -1
  61. package/dist/node/components/shared/Dialog/index.d.mts +1 -1
  62. package/dist/node/components/shared/Dialog/index.d.mts.map +1 -1
  63. package/dist/node/components/shared/Dialog/index.d.ts +1 -1
  64. package/dist/node/components/shared/Dialog/index.d.ts.map +1 -1
  65. package/dist/node/index.cjs +28 -18
  66. package/dist/node/index.cjs.map +1 -1
  67. package/dist/node/index.js +29 -19
  68. package/dist/node/index.js.map +1 -1
  69. package/package.json +6 -3
  70. package/src/components/Button/RawInfoButton.stories.tsx +1 -1
  71. package/src/components/Button/RawInfoButton.tsx +7 -6
  72. package/src/components/Button/RawInfoIconButton.stories.tsx +1 -1
  73. package/src/components/Button/RawInfoIconButton.tsx +9 -5
  74. package/src/components/shared/Dialog/{PayloadCollapse.tsx → JsonViewerCollapse.tsx} +16 -8
  75. package/src/components/shared/Dialog/RawInfoDialog.stories.tsx +2 -1
  76. package/src/components/shared/Dialog/RawInfoDialog.tsx +7 -6
  77. package/src/components/shared/Dialog/index.ts +2 -1
  78. package/dist/browser/components/shared/Dialog/PayloadCollapse.d.cts.map +0 -1
  79. package/dist/browser/components/shared/Dialog/PayloadCollapse.d.mts.map +0 -1
  80. package/dist/browser/components/shared/Dialog/PayloadCollapse.d.ts.map +0 -1
  81. package/dist/node/components/shared/Dialog/PayloadCollapse.d.cts.map +0 -1
  82. package/dist/node/components/shared/Dialog/PayloadCollapse.d.mts +0 -9
  83. package/dist/node/components/shared/Dialog/PayloadCollapse.d.mts.map +0 -1
  84. package/dist/node/components/shared/Dialog/PayloadCollapse.d.ts +0 -9
  85. package/dist/node/components/shared/Dialog/PayloadCollapse.d.ts.map +0 -1
@@ -30,27 +30,29 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
30
30
  // src/index.ts
31
31
  var src_exports = {};
32
32
  __export(src_exports, {
33
+ JsonViewerCollapse: () => JsonViewerCollapse,
33
34
  JsonViewerEx: () => JsonViewerEx,
34
35
  RawInfoButton: () => RawInfoButton,
35
36
  RawInfoDialog: () => RawInfoDialog,
36
37
  RawInfoIconButton: () => RawInfoIconButton,
37
- RawInfoPayloadCollapse: () => RawInfoPayloadCollapse,
38
38
  StyledChipLabel: () => StyledChipLabel
39
39
  });
40
40
  module.exports = __toCommonJS(src_exports);
41
41
 
42
42
  // src/components/Button/RawInfoButton.tsx
43
+ var import_object = require("@xylabs/object");
43
44
  var import_react_button = require("@xylabs/react-button");
44
45
  var import_react = require("react");
45
46
 
46
47
  // src/components/img/index.ts
47
48
  var import_xyo_color_logo = __toESM(require("./xyo-color-logo-LHR2SMEM.svg"), 1);
48
49
 
49
- // src/components/shared/Dialog/PayloadCollapse.tsx
50
+ // src/components/shared/Dialog/JsonViewerCollapse.tsx
50
51
  var import_material3 = require("@mui/material");
51
52
  var import_react_flexbox = require("@xylabs/react-flexbox");
52
53
  var import_react_promise = require("@xylabs/react-promise");
53
54
  var import_payload_builder = require("@xyo-network/payload-builder");
55
+ var import_payload_model = require("@xyo-network/payload-model");
54
56
  var import_react_shared = require("@xyo-network/react-shared");
55
57
 
56
58
  // src/components/styled/StyledChipLabel.tsx
@@ -87,22 +89,26 @@ var JsonViewerEx = (props) => {
87
89
  );
88
90
  };
89
91
 
90
- // src/components/shared/Dialog/PayloadCollapse.tsx
92
+ // src/components/shared/Dialog/JsonViewerCollapse.tsx
91
93
  var import_jsx_runtime2 = require("react/jsx-runtime");
92
- var RawInfoPayloadCollapse = ({ defaultExpandedJson, payload, updateExpandedJson, ...props }) => {
94
+ var JsonViewerCollapse = ({ defaultExpandedJson, jsonValue, updateExpandedJson, ...props }) => {
93
95
  const [expandedJson, setExpandedJson] = (0, import_react_shared.useDataState)(defaultExpandedJson);
94
- const [hash] = (0, import_react_promise.usePromise)(async () => payload ? await import_payload_builder.PayloadBuilder.dataHash(payload) : void 0, [payload]);
96
+ const [hash] = (0, import_react_promise.usePromise)(async () => {
97
+ if (!jsonValue || !(0, import_payload_model.isAnyPayload)(jsonValue))
98
+ return;
99
+ return await import_payload_builder.PayloadBuilder.dataHash(jsonValue);
100
+ }, [jsonValue]);
95
101
  const actionText = expandedJson ? "Hide JSON" : "Show JSON";
96
102
  const handleExpansion = () => {
97
103
  updateExpandedJson == null ? void 0 : updateExpandedJson(!expandedJson);
98
104
  setExpandedJson(!expandedJson);
99
105
  };
100
106
  return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_jsx_runtime2.Fragment, { children: [
101
- payload ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_react_flexbox.FlexRow, { children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_material3.Button, { onClick: handleExpansion, size: "small", variant: "outlined", children: actionText }) }) : null,
102
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_material3.Collapse, { in: expandedJson, ...props, children: payload ? /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_react_flexbox.FlexCol, { alignItems: "stretch", gap: 1.5, children: [
107
+ jsonValue ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_react_flexbox.FlexRow, { children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_material3.Button, { onClick: handleExpansion, size: "small", variant: "outlined", children: actionText }) }) : null,
108
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_material3.Collapse, { in: expandedJson, ...props, children: jsonValue ? /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_react_flexbox.FlexCol, { alignItems: "stretch", gap: 1.5, children: [
103
109
  /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_material3.Typography, { sx: { lineHeight: 1 }, children: "Payload Hash:" }),
104
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_material3.Chip, { label: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(StyledChipLabel, { children: hash }), sx: { alignSelf: "start" } }),
105
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(JsonViewerEx, { value: payload })
110
+ hash ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_material3.Chip, { label: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(StyledChipLabel, { children: hash }), sx: { alignSelf: "start" } }) : null,
111
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(JsonViewerEx, { value: jsonValue })
106
112
  ] }) : null })
107
113
  ] });
108
114
  };
@@ -114,8 +120,9 @@ var RawInfoDialog = ({
114
120
  defaultExpandedJson,
115
121
  dialogContent,
116
122
  onCloseCallback,
117
- payload,
123
+ jsonValue: jsonObject,
118
124
  updateExpandedJson,
125
+ open = false,
119
126
  ...props
120
127
  }) => {
121
128
  const onDialogClick = (event) => {
@@ -123,11 +130,11 @@ var RawInfoDialog = ({
123
130
  };
124
131
  return (
125
132
  // Wrapping in a span so we can catch click events and prevent them from propagating outside the component
126
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { onClick: onDialogClick, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_material4.Dialog, { fullWidth: true, maxWidth: "lg", onClose: () => onCloseCallback == null ? void 0 : onCloseCallback(), ...props, children: [
133
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { onClick: onDialogClick, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_material4.Dialog, { fullWidth: true, maxWidth: "lg", onClose: () => onCloseCallback == null ? void 0 : onCloseCallback(), open, ...props, children: [
127
134
  /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_material4.DialogTitle, { children: "Raw Data" }),
128
135
  /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_material4.DialogContent, { sx: { display: "flex", flexDirection: "column", gap: 2 }, children: [
129
136
  dialogContent,
130
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(RawInfoPayloadCollapse, { defaultExpandedJson, payload, updateExpandedJson })
137
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(JsonViewerCollapse, { defaultExpandedJson, jsonValue: jsonObject, updateExpandedJson })
131
138
  ] }),
132
139
  /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_material4.DialogActions, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_material4.Button, { variant: "contained", onClick: () => onCloseCallback == null ? void 0 : onCloseCallback(), children: "Close" }) })
133
140
  ] }) })
@@ -158,13 +165,14 @@ var RawInfoButton = ({
158
165
  iconSize = 24,
159
166
  onCloseCallback,
160
167
  children,
161
- payload,
168
+ rawValue,
162
169
  presetIconSize,
163
170
  updateExpandedJson,
164
171
  ...props
165
172
  }) => {
166
173
  const [open, setOpen] = (0, import_react.useState)(false);
167
174
  const size = presetIconSizeValue(presetIconSize);
175
+ const json = (0, import_react.useMemo)(() => (0, import_object.toJson)(rawValue), [rawValue]);
168
176
  const handleClick = (event) => {
169
177
  event.stopPropagation();
170
178
  setOpen(true);
@@ -181,7 +189,7 @@ var RawInfoButton = ({
181
189
  size: "small",
182
190
  startIcon: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("img", { src: import_xyo_color_logo.default, height: size ?? iconSize, width: size ?? iconSize }),
183
191
  onClick: handleClick,
184
- disabled: iconOnly ? false : !payload,
192
+ disabled: iconOnly ? false : !rawValue,
185
193
  ...props,
186
194
  children: children ?? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { children: "Data" })
187
195
  }
@@ -190,7 +198,7 @@ var RawInfoButton = ({
190
198
  RawInfoDialog,
191
199
  {
192
200
  defaultExpandedJson,
193
- payload,
201
+ jsonValue: json,
194
202
  onCloseCallback: onCloseCallBackWrapped,
195
203
  dialogContent,
196
204
  open,
@@ -202,12 +210,14 @@ var RawInfoButton = ({
202
210
 
203
211
  // src/components/Button/RawInfoIconButton.tsx
204
212
  var import_material5 = require("@mui/material");
213
+ var import_object2 = require("@xylabs/object");
205
214
  var import_react2 = require("react");
206
215
  var import_jsx_runtime5 = require("react/jsx-runtime");
207
216
  var RawInfoIconButton = (0, import_react2.forwardRef)(
208
- ({ defaultExpandedJson, dialogContent, iconOnly, iconSize = 32, onCloseCallback, payload, presetIconSize, updateExpandedJson, ...props }, ref) => {
217
+ ({ defaultExpandedJson = true, dialogContent, iconOnly, iconSize = 32, onCloseCallback, rawValue, presetIconSize, updateExpandedJson, ...props }, ref) => {
209
218
  const [open, setOpen] = (0, import_react2.useState)(false);
210
219
  const size = presetIconSizeValue(presetIconSize);
220
+ const json = (0, import_react2.useMemo)(() => (0, import_object2.toJson)(rawValue), [rawValue]);
211
221
  const handleClick = (event) => {
212
222
  event.stopPropagation();
213
223
  setOpen(true);
@@ -222,7 +232,7 @@ var RawInfoIconButton = (0, import_react2.forwardRef)(
222
232
  RawInfoDialog,
223
233
  {
224
234
  defaultExpandedJson,
225
- payload,
235
+ jsonValue: json,
226
236
  onCloseCallback: onCloseCallBackWrapped,
227
237
  dialogContent,
228
238
  open,
@@ -235,11 +245,11 @@ var RawInfoIconButton = (0, import_react2.forwardRef)(
235
245
  RawInfoIconButton.displayName = "RawInfoIcon";
236
246
  // Annotate the CommonJS export names for ESM import in node:
237
247
  0 && (module.exports = {
248
+ JsonViewerCollapse,
238
249
  JsonViewerEx,
239
250
  RawInfoButton,
240
251
  RawInfoDialog,
241
252
  RawInfoIconButton,
242
- RawInfoPayloadCollapse,
243
253
  StyledChipLabel
244
254
  });
245
255
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/components/Button/RawInfoButton.tsx","../../src/components/img/index.ts","../../src/components/shared/Dialog/PayloadCollapse.tsx","../../src/components/styled/StyledChipLabel.tsx","../../src/components/shared/JsonViewerEx.tsx","../../src/components/shared/Dialog/RawInfoDialog.tsx","../../src/components/Button/lib/presetIconSize.ts","../../src/components/Button/RawInfoIconButton.tsx"],"sourcesContent":["export * from './components'\n","import { ButtonEx, ButtonExProps } from '@xylabs/react-button'\nimport { Payload, WithSchema } from '@xyo-network/payload-model'\nimport { MouseEventHandler, ReactNode, useState } from 'react'\n\nimport { ExpansionProps } from '../../lib'\nimport { xyoColorLogo } from '../img'\nimport { RawInfoDialog } from '../shared'\nimport { IconSize, presetIconSizeValue } from './lib'\n\nexport interface RawInfoButtonProps extends ButtonExProps, ExpansionProps {\n dialogContent?: ReactNode\n iconOnly?: boolean\n iconSize?: number\n onCloseCallback?: () => void\n payload?: Payload<WithSchema> | null\n presetIconSize?: IconSize\n}\n\nexport const RawInfoButton: React.FC<RawInfoButtonProps> = ({\n defaultExpandedJson = true,\n dialogContent,\n iconOnly,\n iconSize = 24,\n onCloseCallback,\n children,\n payload,\n presetIconSize,\n updateExpandedJson,\n ...props\n}) => {\n const [open, setOpen] = useState(false)\n const size = presetIconSizeValue(presetIconSize)\n\n const handleClick: MouseEventHandler<HTMLButtonElement> = (event) => {\n event.stopPropagation()\n setOpen(true)\n }\n\n const onCloseCallBackWrapped = () => {\n setOpen(false)\n onCloseCallback?.()\n }\n\n return (\n <span>\n <ButtonEx\n variant=\"outlined\"\n size=\"small\"\n startIcon={<img src={xyoColorLogo} height={size ?? iconSize} width={size ?? iconSize} />}\n onClick={handleClick}\n disabled={iconOnly ? false : !payload}\n {...props}\n >\n {children ?? <span>Data</span>}\n </ButtonEx>\n {iconOnly ? null : (\n <RawInfoDialog\n defaultExpandedJson={defaultExpandedJson}\n payload={payload}\n onCloseCallback={onCloseCallBackWrapped}\n dialogContent={dialogContent}\n open={open}\n updateExpandedJson={updateExpandedJson}\n />\n )}\n </span>\n )\n}\n","export { default as xyoColorLogo } from './xyo-color-logo.svg'\n","import { Button, Chip, Collapse, CollapseProps, Typography } from '@mui/material'\nimport { FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload } from '@xyo-network/payload-model'\nimport { useDataState } from '@xyo-network/react-shared'\n\nimport { ExpansionProps } from '../../../lib'\nimport { StyledChipLabel } from '../../styled'\nimport { JsonViewerEx } from '../JsonViewerEx'\n\nexport interface RawInfoPayloadCollapse extends CollapseProps, ExpansionProps {\n payload?: Payload | null\n}\n\nexport const RawInfoPayloadCollapse: React.FC<RawInfoPayloadCollapse> = ({ defaultExpandedJson, payload, updateExpandedJson, ...props }) => {\n const [expandedJson, setExpandedJson] = useDataState(defaultExpandedJson)\n const [hash] = usePromise(async () => (payload ? await PayloadBuilder.dataHash(payload) : undefined), [payload])\n const actionText = expandedJson ? 'Hide JSON' : 'Show JSON'\n\n const handleExpansion = () => {\n updateExpandedJson?.(!expandedJson)\n setExpandedJson(!expandedJson)\n }\n\n return (\n <>\n {payload ?\n <FlexRow>\n <Button onClick={handleExpansion} size=\"small\" variant=\"outlined\">\n {actionText}\n </Button>\n </FlexRow>\n : null}\n <Collapse in={expandedJson} {...props}>\n {payload ?\n <FlexCol alignItems=\"stretch\" gap={1.5}>\n <Typography sx={{ lineHeight: 1 }}>Payload Hash:</Typography>\n <Chip label={<StyledChipLabel>{hash}</StyledChipLabel>} sx={{ alignSelf: 'start' }} />\n <JsonViewerEx value={payload} />\n </FlexCol>\n : null}\n </Collapse>\n </>\n )\n}\n","import { styled, Typography } from '@mui/material'\n\nexport const StyledChipLabel = styled(Typography, { name: 'StyledChipLabel' })(({ theme }) => ({\n display: 'block',\n lineHeight: 1,\n overflow: 'hidden',\n paddingRight: theme.spacing(0.95),\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n}))\n","import { useTheme } from '@mui/material'\nimport { JsonViewer, JsonViewerProps } from '@textea/json-viewer'\nimport { useColorSchemeEx } from '@xylabs/react-invertible-theme'\n\nexport const JsonViewerEx: React.FC<JsonViewerProps> = (props) => {\n const theme = useTheme()\n const { darkMode } = useColorSchemeEx()\n\n return (\n <JsonViewer\n theme={darkMode ? 'dark' : 'light'}\n collapseStringsAfterLength={50}\n style={{\n background: darkMode ? theme.palette.background.paper : theme.palette.grey[200],\n borderRadius: theme.shape.borderRadius,\n padding: theme.spacing(2),\n }}\n {...props}\n />\n )\n}\n","import { Button, Dialog, DialogActions, DialogContent, DialogProps, DialogTitle } from '@mui/material'\nimport { Payload } from '@xyo-network/payload-model'\nimport { MouseEventHandler, ReactNode } from 'react'\n\nimport { ExpansionProps } from '../../../lib'\nimport { RawInfoPayloadCollapse } from './PayloadCollapse'\n\nexport interface RawInfoDialogProps extends DialogProps, ExpansionProps {\n dialogContent?: ReactNode\n onCloseCallback?: () => void\n payload?: Payload | null\n}\n\nexport const RawInfoDialog: React.FC<RawInfoDialogProps> = ({\n defaultExpandedJson,\n dialogContent,\n onCloseCallback,\n payload,\n updateExpandedJson,\n ...props\n}) => {\n const onDialogClick: MouseEventHandler<HTMLSpanElement> = (event) => {\n event.stopPropagation()\n }\n\n return (\n // Wrapping in a span so we can catch click events and prevent them from propagating outside the component\n <span onClick={onDialogClick}>\n <Dialog fullWidth maxWidth=\"lg\" onClose={() => onCloseCallback?.()} {...props}>\n <DialogTitle>Raw Data</DialogTitle>\n <DialogContent sx={{ display: 'flex', flexDirection: 'column', gap: 2 }}>\n {dialogContent}\n <RawInfoPayloadCollapse defaultExpandedJson={defaultExpandedJson} payload={payload} updateExpandedJson={updateExpandedJson} />\n </DialogContent>\n <DialogActions>\n <Button variant=\"contained\" onClick={() => onCloseCallback?.()}>\n Close\n </Button>\n </DialogActions>\n </Dialog>\n </span>\n )\n}\n","import { IconSize } from './IconSize'\n\nexport const presetIconSizeValue = (size?: IconSize) => {\n switch (size) {\n case 'small': {\n return 16\n }\n case 'medium': {\n return 32\n }\n case 'large': {\n return 48\n }\n }\n}\n","import { IconButton, IconButtonProps } from '@mui/material'\nimport { Payload } from '@xyo-network/payload-model'\nimport { forwardRef, MouseEventHandler, ReactNode, useState } from 'react'\n\nimport { ExpansionProps } from '../../lib'\nimport { xyoColorLogo } from '../img'\nimport { RawInfoDialog } from '../shared'\nimport { IconSize, presetIconSizeValue } from './lib'\n\nexport interface RawInfoIconProps extends IconButtonProps, ExpansionProps {\n dialogContent?: ReactNode\n iconOnly?: boolean\n iconSize?: number\n onCloseCallback?: () => void\n payload?: Payload\n presetIconSize?: IconSize\n}\n\nexport const RawInfoIconButton = forwardRef<HTMLButtonElement, RawInfoIconProps>(\n ({ defaultExpandedJson, dialogContent, iconOnly, iconSize = 32, onCloseCallback, payload, presetIconSize, updateExpandedJson, ...props }, ref) => {\n const [open, setOpen] = useState(false)\n const size = presetIconSizeValue(presetIconSize)\n\n const handleClick: MouseEventHandler<HTMLButtonElement> = (event) => {\n event.stopPropagation()\n setOpen(true)\n }\n\n const onCloseCallBackWrapped = () => {\n setOpen(false)\n onCloseCallback?.()\n }\n\n return (\n <>\n <IconButton onClick={handleClick} ref={ref} {...props}>\n <img src={xyoColorLogo} height={size ?? iconSize} width={size ?? iconSize} />\n </IconButton>\n {iconOnly ? null : (\n <RawInfoDialog\n defaultExpandedJson={defaultExpandedJson}\n payload={payload}\n onCloseCallback={onCloseCallBackWrapped}\n dialogContent={dialogContent}\n open={open}\n updateExpandedJson={updateExpandedJson}\n />\n )}\n </>\n )\n },\n)\n\nRawInfoIconButton.displayName = 'RawInfoIcon'\n"],"mappings":"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","names":["import_material","import_material","import_jsx_runtime","import_material","import_jsx_runtime","import_jsx_runtime","import_material","import_react","import_jsx_runtime"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/components/Button/RawInfoButton.tsx","../../src/components/img/index.ts","../../src/components/shared/Dialog/JsonViewerCollapse.tsx","../../src/components/styled/StyledChipLabel.tsx","../../src/components/shared/JsonViewerEx.tsx","../../src/components/shared/Dialog/RawInfoDialog.tsx","../../src/components/Button/lib/presetIconSize.ts","../../src/components/Button/RawInfoIconButton.tsx"],"sourcesContent":["export * from './components'\n","import { toJson } from '@xylabs/object'\nimport { ButtonEx, ButtonExProps } from '@xylabs/react-button'\nimport { MouseEventHandler, ReactNode, useMemo, useState } from 'react'\n\nimport { ExpansionProps } from '../../lib'\nimport { xyoColorLogo } from '../img'\nimport { RawInfoDialog } from '../shared'\nimport { IconSize, presetIconSizeValue } from './lib'\n\nexport interface RawInfoButtonProps extends ButtonExProps, ExpansionProps {\n dialogContent?: ReactNode\n iconOnly?: boolean\n iconSize?: number\n onCloseCallback?: () => void\n presetIconSize?: IconSize\n rawValue?: unknown\n}\n\nexport const RawInfoButton: React.FC<RawInfoButtonProps> = ({\n defaultExpandedJson = true,\n dialogContent,\n iconOnly,\n iconSize = 24,\n onCloseCallback,\n children,\n rawValue,\n presetIconSize,\n updateExpandedJson,\n ...props\n}) => {\n const [open, setOpen] = useState(false)\n const size = presetIconSizeValue(presetIconSize)\n const json = useMemo(() => toJson(rawValue), [rawValue])\n\n const handleClick: MouseEventHandler<HTMLButtonElement> = (event) => {\n event.stopPropagation()\n setOpen(true)\n }\n\n const onCloseCallBackWrapped = () => {\n setOpen(false)\n onCloseCallback?.()\n }\n\n return (\n <span>\n <ButtonEx\n variant=\"outlined\"\n size=\"small\"\n startIcon={<img src={xyoColorLogo} height={size ?? iconSize} width={size ?? iconSize} />}\n onClick={handleClick}\n disabled={iconOnly ? false : !rawValue}\n {...props}\n >\n {children ?? <span>Data</span>}\n </ButtonEx>\n {iconOnly ? null : (\n <RawInfoDialog\n defaultExpandedJson={defaultExpandedJson}\n jsonValue={json}\n onCloseCallback={onCloseCallBackWrapped}\n dialogContent={dialogContent}\n open={open}\n updateExpandedJson={updateExpandedJson}\n />\n )}\n </span>\n )\n}\n","export { default as xyoColorLogo } from './xyo-color-logo.svg'\n","import { Button, Chip, Collapse, CollapseProps, Typography } from '@mui/material'\nimport { JsonValue } from '@xylabs/object'\nimport { FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { isAnyPayload } from '@xyo-network/payload-model'\nimport { useDataState } from '@xyo-network/react-shared'\n\nimport { ExpansionProps } from '../../../lib'\nimport { StyledChipLabel } from '../../styled'\nimport { JsonViewerEx } from '../JsonViewerEx'\n\nexport interface RawInfoPayloadCollapse extends CollapseProps, ExpansionProps {\n jsonValue?: JsonValue\n}\n\nexport const JsonViewerCollapse: React.FC<RawInfoPayloadCollapse> = ({ defaultExpandedJson, jsonValue, updateExpandedJson, ...props }) => {\n const [expandedJson, setExpandedJson] = useDataState(defaultExpandedJson)\n\n const [hash] = usePromise(async () => {\n if (!jsonValue || !isAnyPayload(jsonValue)) return\n return await PayloadBuilder.dataHash(jsonValue)\n }, [jsonValue])\n\n const actionText = expandedJson ? 'Hide JSON' : 'Show JSON'\n\n const handleExpansion = () => {\n updateExpandedJson?.(!expandedJson)\n setExpandedJson(!expandedJson)\n }\n\n return (\n <>\n {jsonValue ?\n <FlexRow>\n <Button onClick={handleExpansion} size=\"small\" variant=\"outlined\">\n {actionText}\n </Button>\n </FlexRow>\n : null}\n <Collapse in={expandedJson} {...props}>\n {jsonValue ?\n <FlexCol alignItems=\"stretch\" gap={1.5}>\n <Typography sx={{ lineHeight: 1 }}>Payload Hash:</Typography>\n {hash ?\n <Chip label={<StyledChipLabel>{hash}</StyledChipLabel>} sx={{ alignSelf: 'start' }} />\n : null}\n <JsonViewerEx value={jsonValue} />\n </FlexCol>\n : null}\n </Collapse>\n </>\n )\n}\n","import { styled, Typography } from '@mui/material'\n\nexport const StyledChipLabel = styled(Typography, { name: 'StyledChipLabel' })(({ theme }) => ({\n display: 'block',\n lineHeight: 1,\n overflow: 'hidden',\n paddingRight: theme.spacing(0.95),\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n}))\n","import { useTheme } from '@mui/material'\nimport { JsonViewer, JsonViewerProps } from '@textea/json-viewer'\nimport { useColorSchemeEx } from '@xylabs/react-invertible-theme'\n\nexport const JsonViewerEx: React.FC<JsonViewerProps> = (props) => {\n const theme = useTheme()\n const { darkMode } = useColorSchemeEx()\n\n return (\n <JsonViewer\n theme={darkMode ? 'dark' : 'light'}\n collapseStringsAfterLength={50}\n style={{\n background: darkMode ? theme.palette.background.paper : theme.palette.grey[200],\n borderRadius: theme.shape.borderRadius,\n padding: theme.spacing(2),\n }}\n {...props}\n />\n )\n}\n","import { Button, Dialog, DialogActions, DialogContent, DialogProps, DialogTitle } from '@mui/material'\nimport { JsonValue } from '@xylabs/object'\nimport { MouseEventHandler, ReactNode } from 'react'\n\nimport { ExpansionProps } from '../../../lib'\nimport { JsonViewerCollapse } from './JsonViewerCollapse'\n\nexport interface RawInfoDialogProps extends DialogProps, ExpansionProps {\n dialogContent?: ReactNode\n jsonValue?: JsonValue\n onCloseCallback?: () => void\n}\n\nexport const RawInfoDialog: React.FC<RawInfoDialogProps> = ({\n defaultExpandedJson,\n dialogContent,\n onCloseCallback,\n jsonValue: jsonObject,\n updateExpandedJson,\n open = false,\n ...props\n}) => {\n const onDialogClick: MouseEventHandler<HTMLSpanElement> = (event) => {\n event.stopPropagation()\n }\n\n return (\n // Wrapping in a span so we can catch click events and prevent them from propagating outside the component\n <span onClick={onDialogClick}>\n <Dialog fullWidth maxWidth=\"lg\" onClose={() => onCloseCallback?.()} open={open} {...props}>\n <DialogTitle>Raw Data</DialogTitle>\n <DialogContent sx={{ display: 'flex', flexDirection: 'column', gap: 2 }}>\n {dialogContent}\n <JsonViewerCollapse defaultExpandedJson={defaultExpandedJson} jsonValue={jsonObject} updateExpandedJson={updateExpandedJson} />\n </DialogContent>\n <DialogActions>\n <Button variant=\"contained\" onClick={() => onCloseCallback?.()}>\n Close\n </Button>\n </DialogActions>\n </Dialog>\n </span>\n )\n}\n","import { IconSize } from './IconSize'\n\nexport const presetIconSizeValue = (size?: IconSize) => {\n switch (size) {\n case 'small': {\n return 16\n }\n case 'medium': {\n return 32\n }\n case 'large': {\n return 48\n }\n }\n}\n","import { IconButton, IconButtonProps } from '@mui/material'\nimport { toJson } from '@xylabs/object'\nimport { forwardRef, MouseEventHandler, ReactNode, useMemo, useState } from 'react'\n\nimport { ExpansionProps } from '../../lib'\nimport { xyoColorLogo } from '../img'\nimport { RawInfoDialog } from '../shared'\nimport { IconSize, presetIconSizeValue } from './lib'\n\nexport interface RawInfoIconProps extends IconButtonProps, ExpansionProps {\n dialogContent?: ReactNode\n iconOnly?: boolean\n iconSize?: number\n onCloseCallback?: () => void\n presetIconSize?: IconSize\n rawValue?: unknown\n}\n\nexport const RawInfoIconButton = forwardRef<HTMLButtonElement, RawInfoIconProps>(\n (\n { defaultExpandedJson = true, dialogContent, iconOnly, iconSize = 32, onCloseCallback, rawValue, presetIconSize, updateExpandedJson, ...props },\n ref,\n ) => {\n const [open, setOpen] = useState(false)\n const size = presetIconSizeValue(presetIconSize)\n const json = useMemo(() => toJson(rawValue), [rawValue])\n\n const handleClick: MouseEventHandler<HTMLButtonElement> = (event) => {\n event.stopPropagation()\n setOpen(true)\n }\n\n const onCloseCallBackWrapped = () => {\n setOpen(false)\n onCloseCallback?.()\n }\n\n return (\n <>\n <IconButton onClick={handleClick} ref={ref} {...props}>\n <img src={xyoColorLogo} height={size ?? iconSize} width={size ?? iconSize} />\n </IconButton>\n {iconOnly ? null : (\n <RawInfoDialog\n defaultExpandedJson={defaultExpandedJson}\n jsonValue={json}\n onCloseCallback={onCloseCallBackWrapped}\n dialogContent={dialogContent}\n open={open}\n updateExpandedJson={updateExpandedJson}\n />\n )}\n </>\n )\n },\n)\n\nRawInfoIconButton.displayName = 'RawInfoIcon'\n"],"mappings":"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","names":["import_material","import_material","import_jsx_runtime","import_material","import_jsx_runtime","import_jsx_runtime","import_material","import_object","import_react","import_jsx_runtime"]}
@@ -1,15 +1,17 @@
1
1
  // src/components/Button/RawInfoButton.tsx
2
+ import { toJson } from "@xylabs/object";
2
3
  import { ButtonEx } from "@xylabs/react-button";
3
- import { useState } from "react";
4
+ import { useMemo, useState } from "react";
4
5
 
5
6
  // src/components/img/index.ts
6
7
  import { default as default2 } from "./xyo-color-logo-LHR2SMEM.svg";
7
8
 
8
- // src/components/shared/Dialog/PayloadCollapse.tsx
9
+ // src/components/shared/Dialog/JsonViewerCollapse.tsx
9
10
  import { Button, Chip, Collapse, Typography as Typography2 } from "@mui/material";
10
11
  import { FlexCol, FlexRow } from "@xylabs/react-flexbox";
11
12
  import { usePromise } from "@xylabs/react-promise";
12
13
  import { PayloadBuilder } from "@xyo-network/payload-builder";
14
+ import { isAnyPayload } from "@xyo-network/payload-model";
13
15
  import { useDataState } from "@xyo-network/react-shared";
14
16
 
15
17
  // src/components/styled/StyledChipLabel.tsx
@@ -46,22 +48,26 @@ var JsonViewerEx = (props) => {
46
48
  );
47
49
  };
48
50
 
49
- // src/components/shared/Dialog/PayloadCollapse.tsx
51
+ // src/components/shared/Dialog/JsonViewerCollapse.tsx
50
52
  import { Fragment, jsx as jsx2, jsxs } from "react/jsx-runtime";
51
- var RawInfoPayloadCollapse = ({ defaultExpandedJson, payload, updateExpandedJson, ...props }) => {
53
+ var JsonViewerCollapse = ({ defaultExpandedJson, jsonValue, updateExpandedJson, ...props }) => {
52
54
  const [expandedJson, setExpandedJson] = useDataState(defaultExpandedJson);
53
- const [hash] = usePromise(async () => payload ? await PayloadBuilder.dataHash(payload) : void 0, [payload]);
55
+ const [hash] = usePromise(async () => {
56
+ if (!jsonValue || !isAnyPayload(jsonValue))
57
+ return;
58
+ return await PayloadBuilder.dataHash(jsonValue);
59
+ }, [jsonValue]);
54
60
  const actionText = expandedJson ? "Hide JSON" : "Show JSON";
55
61
  const handleExpansion = () => {
56
62
  updateExpandedJson == null ? void 0 : updateExpandedJson(!expandedJson);
57
63
  setExpandedJson(!expandedJson);
58
64
  };
59
65
  return /* @__PURE__ */ jsxs(Fragment, { children: [
60
- payload ? /* @__PURE__ */ jsx2(FlexRow, { children: /* @__PURE__ */ jsx2(Button, { onClick: handleExpansion, size: "small", variant: "outlined", children: actionText }) }) : null,
61
- /* @__PURE__ */ jsx2(Collapse, { in: expandedJson, ...props, children: payload ? /* @__PURE__ */ jsxs(FlexCol, { alignItems: "stretch", gap: 1.5, children: [
66
+ jsonValue ? /* @__PURE__ */ jsx2(FlexRow, { children: /* @__PURE__ */ jsx2(Button, { onClick: handleExpansion, size: "small", variant: "outlined", children: actionText }) }) : null,
67
+ /* @__PURE__ */ jsx2(Collapse, { in: expandedJson, ...props, children: jsonValue ? /* @__PURE__ */ jsxs(FlexCol, { alignItems: "stretch", gap: 1.5, children: [
62
68
  /* @__PURE__ */ jsx2(Typography2, { sx: { lineHeight: 1 }, children: "Payload Hash:" }),
63
- /* @__PURE__ */ jsx2(Chip, { label: /* @__PURE__ */ jsx2(StyledChipLabel, { children: hash }), sx: { alignSelf: "start" } }),
64
- /* @__PURE__ */ jsx2(JsonViewerEx, { value: payload })
69
+ hash ? /* @__PURE__ */ jsx2(Chip, { label: /* @__PURE__ */ jsx2(StyledChipLabel, { children: hash }), sx: { alignSelf: "start" } }) : null,
70
+ /* @__PURE__ */ jsx2(JsonViewerEx, { value: jsonValue })
65
71
  ] }) : null })
66
72
  ] });
67
73
  };
@@ -73,8 +79,9 @@ var RawInfoDialog = ({
73
79
  defaultExpandedJson,
74
80
  dialogContent,
75
81
  onCloseCallback,
76
- payload,
82
+ jsonValue: jsonObject,
77
83
  updateExpandedJson,
84
+ open = false,
78
85
  ...props
79
86
  }) => {
80
87
  const onDialogClick = (event) => {
@@ -82,11 +89,11 @@ var RawInfoDialog = ({
82
89
  };
83
90
  return (
84
91
  // Wrapping in a span so we can catch click events and prevent them from propagating outside the component
85
- /* @__PURE__ */ jsx3("span", { onClick: onDialogClick, children: /* @__PURE__ */ jsxs2(Dialog, { fullWidth: true, maxWidth: "lg", onClose: () => onCloseCallback == null ? void 0 : onCloseCallback(), ...props, children: [
92
+ /* @__PURE__ */ jsx3("span", { onClick: onDialogClick, children: /* @__PURE__ */ jsxs2(Dialog, { fullWidth: true, maxWidth: "lg", onClose: () => onCloseCallback == null ? void 0 : onCloseCallback(), open, ...props, children: [
86
93
  /* @__PURE__ */ jsx3(DialogTitle, { children: "Raw Data" }),
87
94
  /* @__PURE__ */ jsxs2(DialogContent, { sx: { display: "flex", flexDirection: "column", gap: 2 }, children: [
88
95
  dialogContent,
89
- /* @__PURE__ */ jsx3(RawInfoPayloadCollapse, { defaultExpandedJson, payload, updateExpandedJson })
96
+ /* @__PURE__ */ jsx3(JsonViewerCollapse, { defaultExpandedJson, jsonValue: jsonObject, updateExpandedJson })
90
97
  ] }),
91
98
  /* @__PURE__ */ jsx3(DialogActions, { children: /* @__PURE__ */ jsx3(Button2, { variant: "contained", onClick: () => onCloseCallback == null ? void 0 : onCloseCallback(), children: "Close" }) })
92
99
  ] }) })
@@ -117,13 +124,14 @@ var RawInfoButton = ({
117
124
  iconSize = 24,
118
125
  onCloseCallback,
119
126
  children,
120
- payload,
127
+ rawValue,
121
128
  presetIconSize,
122
129
  updateExpandedJson,
123
130
  ...props
124
131
  }) => {
125
132
  const [open, setOpen] = useState(false);
126
133
  const size = presetIconSizeValue(presetIconSize);
134
+ const json = useMemo(() => toJson(rawValue), [rawValue]);
127
135
  const handleClick = (event) => {
128
136
  event.stopPropagation();
129
137
  setOpen(true);
@@ -140,7 +148,7 @@ var RawInfoButton = ({
140
148
  size: "small",
141
149
  startIcon: /* @__PURE__ */ jsx4("img", { src: default2, height: size ?? iconSize, width: size ?? iconSize }),
142
150
  onClick: handleClick,
143
- disabled: iconOnly ? false : !payload,
151
+ disabled: iconOnly ? false : !rawValue,
144
152
  ...props,
145
153
  children: children ?? /* @__PURE__ */ jsx4("span", { children: "Data" })
146
154
  }
@@ -149,7 +157,7 @@ var RawInfoButton = ({
149
157
  RawInfoDialog,
150
158
  {
151
159
  defaultExpandedJson,
152
- payload,
160
+ jsonValue: json,
153
161
  onCloseCallback: onCloseCallBackWrapped,
154
162
  dialogContent,
155
163
  open,
@@ -161,12 +169,14 @@ var RawInfoButton = ({
161
169
 
162
170
  // src/components/Button/RawInfoIconButton.tsx
163
171
  import { IconButton } from "@mui/material";
164
- import { forwardRef, useState as useState2 } from "react";
172
+ import { toJson as toJson2 } from "@xylabs/object";
173
+ import { forwardRef, useMemo as useMemo2, useState as useState2 } from "react";
165
174
  import { Fragment as Fragment2, jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
166
175
  var RawInfoIconButton = forwardRef(
167
- ({ defaultExpandedJson, dialogContent, iconOnly, iconSize = 32, onCloseCallback, payload, presetIconSize, updateExpandedJson, ...props }, ref) => {
176
+ ({ defaultExpandedJson = true, dialogContent, iconOnly, iconSize = 32, onCloseCallback, rawValue, presetIconSize, updateExpandedJson, ...props }, ref) => {
168
177
  const [open, setOpen] = useState2(false);
169
178
  const size = presetIconSizeValue(presetIconSize);
179
+ const json = useMemo2(() => toJson2(rawValue), [rawValue]);
170
180
  const handleClick = (event) => {
171
181
  event.stopPropagation();
172
182
  setOpen(true);
@@ -181,7 +191,7 @@ var RawInfoIconButton = forwardRef(
181
191
  RawInfoDialog,
182
192
  {
183
193
  defaultExpandedJson,
184
- payload,
194
+ jsonValue: json,
185
195
  onCloseCallback: onCloseCallBackWrapped,
186
196
  dialogContent,
187
197
  open,
@@ -193,11 +203,11 @@ var RawInfoIconButton = forwardRef(
193
203
  );
194
204
  RawInfoIconButton.displayName = "RawInfoIcon";
195
205
  export {
206
+ JsonViewerCollapse,
196
207
  JsonViewerEx,
197
208
  RawInfoButton,
198
209
  RawInfoDialog,
199
210
  RawInfoIconButton,
200
- RawInfoPayloadCollapse,
201
211
  StyledChipLabel
202
212
  };
203
213
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/Button/RawInfoButton.tsx","../../src/components/img/index.ts","../../src/components/shared/Dialog/PayloadCollapse.tsx","../../src/components/styled/StyledChipLabel.tsx","../../src/components/shared/JsonViewerEx.tsx","../../src/components/shared/Dialog/RawInfoDialog.tsx","../../src/components/Button/lib/presetIconSize.ts","../../src/components/Button/RawInfoIconButton.tsx"],"sourcesContent":["import { ButtonEx, ButtonExProps } from '@xylabs/react-button'\nimport { Payload, WithSchema } from '@xyo-network/payload-model'\nimport { MouseEventHandler, ReactNode, useState } from 'react'\n\nimport { ExpansionProps } from '../../lib'\nimport { xyoColorLogo } from '../img'\nimport { RawInfoDialog } from '../shared'\nimport { IconSize, presetIconSizeValue } from './lib'\n\nexport interface RawInfoButtonProps extends ButtonExProps, ExpansionProps {\n dialogContent?: ReactNode\n iconOnly?: boolean\n iconSize?: number\n onCloseCallback?: () => void\n payload?: Payload<WithSchema> | null\n presetIconSize?: IconSize\n}\n\nexport const RawInfoButton: React.FC<RawInfoButtonProps> = ({\n defaultExpandedJson = true,\n dialogContent,\n iconOnly,\n iconSize = 24,\n onCloseCallback,\n children,\n payload,\n presetIconSize,\n updateExpandedJson,\n ...props\n}) => {\n const [open, setOpen] = useState(false)\n const size = presetIconSizeValue(presetIconSize)\n\n const handleClick: MouseEventHandler<HTMLButtonElement> = (event) => {\n event.stopPropagation()\n setOpen(true)\n }\n\n const onCloseCallBackWrapped = () => {\n setOpen(false)\n onCloseCallback?.()\n }\n\n return (\n <span>\n <ButtonEx\n variant=\"outlined\"\n size=\"small\"\n startIcon={<img src={xyoColorLogo} height={size ?? iconSize} width={size ?? iconSize} />}\n onClick={handleClick}\n disabled={iconOnly ? false : !payload}\n {...props}\n >\n {children ?? <span>Data</span>}\n </ButtonEx>\n {iconOnly ? null : (\n <RawInfoDialog\n defaultExpandedJson={defaultExpandedJson}\n payload={payload}\n onCloseCallback={onCloseCallBackWrapped}\n dialogContent={dialogContent}\n open={open}\n updateExpandedJson={updateExpandedJson}\n />\n )}\n </span>\n )\n}\n","export { default as xyoColorLogo } from './xyo-color-logo.svg'\n","import { Button, Chip, Collapse, CollapseProps, Typography } from '@mui/material'\nimport { FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { Payload } from '@xyo-network/payload-model'\nimport { useDataState } from '@xyo-network/react-shared'\n\nimport { ExpansionProps } from '../../../lib'\nimport { StyledChipLabel } from '../../styled'\nimport { JsonViewerEx } from '../JsonViewerEx'\n\nexport interface RawInfoPayloadCollapse extends CollapseProps, ExpansionProps {\n payload?: Payload | null\n}\n\nexport const RawInfoPayloadCollapse: React.FC<RawInfoPayloadCollapse> = ({ defaultExpandedJson, payload, updateExpandedJson, ...props }) => {\n const [expandedJson, setExpandedJson] = useDataState(defaultExpandedJson)\n const [hash] = usePromise(async () => (payload ? await PayloadBuilder.dataHash(payload) : undefined), [payload])\n const actionText = expandedJson ? 'Hide JSON' : 'Show JSON'\n\n const handleExpansion = () => {\n updateExpandedJson?.(!expandedJson)\n setExpandedJson(!expandedJson)\n }\n\n return (\n <>\n {payload ?\n <FlexRow>\n <Button onClick={handleExpansion} size=\"small\" variant=\"outlined\">\n {actionText}\n </Button>\n </FlexRow>\n : null}\n <Collapse in={expandedJson} {...props}>\n {payload ?\n <FlexCol alignItems=\"stretch\" gap={1.5}>\n <Typography sx={{ lineHeight: 1 }}>Payload Hash:</Typography>\n <Chip label={<StyledChipLabel>{hash}</StyledChipLabel>} sx={{ alignSelf: 'start' }} />\n <JsonViewerEx value={payload} />\n </FlexCol>\n : null}\n </Collapse>\n </>\n )\n}\n","import { styled, Typography } from '@mui/material'\n\nexport const StyledChipLabel = styled(Typography, { name: 'StyledChipLabel' })(({ theme }) => ({\n display: 'block',\n lineHeight: 1,\n overflow: 'hidden',\n paddingRight: theme.spacing(0.95),\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n}))\n","import { useTheme } from '@mui/material'\nimport { JsonViewer, JsonViewerProps } from '@textea/json-viewer'\nimport { useColorSchemeEx } from '@xylabs/react-invertible-theme'\n\nexport const JsonViewerEx: React.FC<JsonViewerProps> = (props) => {\n const theme = useTheme()\n const { darkMode } = useColorSchemeEx()\n\n return (\n <JsonViewer\n theme={darkMode ? 'dark' : 'light'}\n collapseStringsAfterLength={50}\n style={{\n background: darkMode ? theme.palette.background.paper : theme.palette.grey[200],\n borderRadius: theme.shape.borderRadius,\n padding: theme.spacing(2),\n }}\n {...props}\n />\n )\n}\n","import { Button, Dialog, DialogActions, DialogContent, DialogProps, DialogTitle } from '@mui/material'\nimport { Payload } from '@xyo-network/payload-model'\nimport { MouseEventHandler, ReactNode } from 'react'\n\nimport { ExpansionProps } from '../../../lib'\nimport { RawInfoPayloadCollapse } from './PayloadCollapse'\n\nexport interface RawInfoDialogProps extends DialogProps, ExpansionProps {\n dialogContent?: ReactNode\n onCloseCallback?: () => void\n payload?: Payload | null\n}\n\nexport const RawInfoDialog: React.FC<RawInfoDialogProps> = ({\n defaultExpandedJson,\n dialogContent,\n onCloseCallback,\n payload,\n updateExpandedJson,\n ...props\n}) => {\n const onDialogClick: MouseEventHandler<HTMLSpanElement> = (event) => {\n event.stopPropagation()\n }\n\n return (\n // Wrapping in a span so we can catch click events and prevent them from propagating outside the component\n <span onClick={onDialogClick}>\n <Dialog fullWidth maxWidth=\"lg\" onClose={() => onCloseCallback?.()} {...props}>\n <DialogTitle>Raw Data</DialogTitle>\n <DialogContent sx={{ display: 'flex', flexDirection: 'column', gap: 2 }}>\n {dialogContent}\n <RawInfoPayloadCollapse defaultExpandedJson={defaultExpandedJson} payload={payload} updateExpandedJson={updateExpandedJson} />\n </DialogContent>\n <DialogActions>\n <Button variant=\"contained\" onClick={() => onCloseCallback?.()}>\n Close\n </Button>\n </DialogActions>\n </Dialog>\n </span>\n )\n}\n","import { IconSize } from './IconSize'\n\nexport const presetIconSizeValue = (size?: IconSize) => {\n switch (size) {\n case 'small': {\n return 16\n }\n case 'medium': {\n return 32\n }\n case 'large': {\n return 48\n }\n }\n}\n","import { IconButton, IconButtonProps } from '@mui/material'\nimport { Payload } from '@xyo-network/payload-model'\nimport { forwardRef, MouseEventHandler, ReactNode, useState } from 'react'\n\nimport { ExpansionProps } from '../../lib'\nimport { xyoColorLogo } from '../img'\nimport { RawInfoDialog } from '../shared'\nimport { IconSize, presetIconSizeValue } from './lib'\n\nexport interface RawInfoIconProps extends IconButtonProps, ExpansionProps {\n dialogContent?: ReactNode\n iconOnly?: boolean\n iconSize?: number\n onCloseCallback?: () => void\n payload?: Payload\n presetIconSize?: IconSize\n}\n\nexport const RawInfoIconButton = forwardRef<HTMLButtonElement, RawInfoIconProps>(\n ({ defaultExpandedJson, dialogContent, iconOnly, iconSize = 32, onCloseCallback, payload, presetIconSize, updateExpandedJson, ...props }, ref) => {\n const [open, setOpen] = useState(false)\n const size = presetIconSizeValue(presetIconSize)\n\n const handleClick: MouseEventHandler<HTMLButtonElement> = (event) => {\n event.stopPropagation()\n setOpen(true)\n }\n\n const onCloseCallBackWrapped = () => {\n setOpen(false)\n onCloseCallback?.()\n }\n\n return (\n <>\n <IconButton onClick={handleClick} ref={ref} {...props}>\n <img src={xyoColorLogo} height={size ?? iconSize} width={size ?? iconSize} />\n </IconButton>\n {iconOnly ? null : (\n <RawInfoDialog\n defaultExpandedJson={defaultExpandedJson}\n payload={payload}\n onCloseCallback={onCloseCallBackWrapped}\n dialogContent={dialogContent}\n open={open}\n updateExpandedJson={updateExpandedJson}\n />\n )}\n </>\n )\n },\n)\n\nRawInfoIconButton.displayName = 'RawInfoIcon'\n"],"mappings":"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","names":["default","Typography","jsx","Typography","Button","jsx","jsxs","Button","jsx","jsxs","default","useState","Fragment","jsx","jsxs","useState","default"]}
1
+ {"version":3,"sources":["../../src/components/Button/RawInfoButton.tsx","../../src/components/img/index.ts","../../src/components/shared/Dialog/JsonViewerCollapse.tsx","../../src/components/styled/StyledChipLabel.tsx","../../src/components/shared/JsonViewerEx.tsx","../../src/components/shared/Dialog/RawInfoDialog.tsx","../../src/components/Button/lib/presetIconSize.ts","../../src/components/Button/RawInfoIconButton.tsx"],"sourcesContent":["import { toJson } from '@xylabs/object'\nimport { ButtonEx, ButtonExProps } from '@xylabs/react-button'\nimport { MouseEventHandler, ReactNode, useMemo, useState } from 'react'\n\nimport { ExpansionProps } from '../../lib'\nimport { xyoColorLogo } from '../img'\nimport { RawInfoDialog } from '../shared'\nimport { IconSize, presetIconSizeValue } from './lib'\n\nexport interface RawInfoButtonProps extends ButtonExProps, ExpansionProps {\n dialogContent?: ReactNode\n iconOnly?: boolean\n iconSize?: number\n onCloseCallback?: () => void\n presetIconSize?: IconSize\n rawValue?: unknown\n}\n\nexport const RawInfoButton: React.FC<RawInfoButtonProps> = ({\n defaultExpandedJson = true,\n dialogContent,\n iconOnly,\n iconSize = 24,\n onCloseCallback,\n children,\n rawValue,\n presetIconSize,\n updateExpandedJson,\n ...props\n}) => {\n const [open, setOpen] = useState(false)\n const size = presetIconSizeValue(presetIconSize)\n const json = useMemo(() => toJson(rawValue), [rawValue])\n\n const handleClick: MouseEventHandler<HTMLButtonElement> = (event) => {\n event.stopPropagation()\n setOpen(true)\n }\n\n const onCloseCallBackWrapped = () => {\n setOpen(false)\n onCloseCallback?.()\n }\n\n return (\n <span>\n <ButtonEx\n variant=\"outlined\"\n size=\"small\"\n startIcon={<img src={xyoColorLogo} height={size ?? iconSize} width={size ?? iconSize} />}\n onClick={handleClick}\n disabled={iconOnly ? false : !rawValue}\n {...props}\n >\n {children ?? <span>Data</span>}\n </ButtonEx>\n {iconOnly ? null : (\n <RawInfoDialog\n defaultExpandedJson={defaultExpandedJson}\n jsonValue={json}\n onCloseCallback={onCloseCallBackWrapped}\n dialogContent={dialogContent}\n open={open}\n updateExpandedJson={updateExpandedJson}\n />\n )}\n </span>\n )\n}\n","export { default as xyoColorLogo } from './xyo-color-logo.svg'\n","import { Button, Chip, Collapse, CollapseProps, Typography } from '@mui/material'\nimport { JsonValue } from '@xylabs/object'\nimport { FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport { isAnyPayload } from '@xyo-network/payload-model'\nimport { useDataState } from '@xyo-network/react-shared'\n\nimport { ExpansionProps } from '../../../lib'\nimport { StyledChipLabel } from '../../styled'\nimport { JsonViewerEx } from '../JsonViewerEx'\n\nexport interface RawInfoPayloadCollapse extends CollapseProps, ExpansionProps {\n jsonValue?: JsonValue\n}\n\nexport const JsonViewerCollapse: React.FC<RawInfoPayloadCollapse> = ({ defaultExpandedJson, jsonValue, updateExpandedJson, ...props }) => {\n const [expandedJson, setExpandedJson] = useDataState(defaultExpandedJson)\n\n const [hash] = usePromise(async () => {\n if (!jsonValue || !isAnyPayload(jsonValue)) return\n return await PayloadBuilder.dataHash(jsonValue)\n }, [jsonValue])\n\n const actionText = expandedJson ? 'Hide JSON' : 'Show JSON'\n\n const handleExpansion = () => {\n updateExpandedJson?.(!expandedJson)\n setExpandedJson(!expandedJson)\n }\n\n return (\n <>\n {jsonValue ?\n <FlexRow>\n <Button onClick={handleExpansion} size=\"small\" variant=\"outlined\">\n {actionText}\n </Button>\n </FlexRow>\n : null}\n <Collapse in={expandedJson} {...props}>\n {jsonValue ?\n <FlexCol alignItems=\"stretch\" gap={1.5}>\n <Typography sx={{ lineHeight: 1 }}>Payload Hash:</Typography>\n {hash ?\n <Chip label={<StyledChipLabel>{hash}</StyledChipLabel>} sx={{ alignSelf: 'start' }} />\n : null}\n <JsonViewerEx value={jsonValue} />\n </FlexCol>\n : null}\n </Collapse>\n </>\n )\n}\n","import { styled, Typography } from '@mui/material'\n\nexport const StyledChipLabel = styled(Typography, { name: 'StyledChipLabel' })(({ theme }) => ({\n display: 'block',\n lineHeight: 1,\n overflow: 'hidden',\n paddingRight: theme.spacing(0.95),\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n}))\n","import { useTheme } from '@mui/material'\nimport { JsonViewer, JsonViewerProps } from '@textea/json-viewer'\nimport { useColorSchemeEx } from '@xylabs/react-invertible-theme'\n\nexport const JsonViewerEx: React.FC<JsonViewerProps> = (props) => {\n const theme = useTheme()\n const { darkMode } = useColorSchemeEx()\n\n return (\n <JsonViewer\n theme={darkMode ? 'dark' : 'light'}\n collapseStringsAfterLength={50}\n style={{\n background: darkMode ? theme.palette.background.paper : theme.palette.grey[200],\n borderRadius: theme.shape.borderRadius,\n padding: theme.spacing(2),\n }}\n {...props}\n />\n )\n}\n","import { Button, Dialog, DialogActions, DialogContent, DialogProps, DialogTitle } from '@mui/material'\nimport { JsonValue } from '@xylabs/object'\nimport { MouseEventHandler, ReactNode } from 'react'\n\nimport { ExpansionProps } from '../../../lib'\nimport { JsonViewerCollapse } from './JsonViewerCollapse'\n\nexport interface RawInfoDialogProps extends DialogProps, ExpansionProps {\n dialogContent?: ReactNode\n jsonValue?: JsonValue\n onCloseCallback?: () => void\n}\n\nexport const RawInfoDialog: React.FC<RawInfoDialogProps> = ({\n defaultExpandedJson,\n dialogContent,\n onCloseCallback,\n jsonValue: jsonObject,\n updateExpandedJson,\n open = false,\n ...props\n}) => {\n const onDialogClick: MouseEventHandler<HTMLSpanElement> = (event) => {\n event.stopPropagation()\n }\n\n return (\n // Wrapping in a span so we can catch click events and prevent them from propagating outside the component\n <span onClick={onDialogClick}>\n <Dialog fullWidth maxWidth=\"lg\" onClose={() => onCloseCallback?.()} open={open} {...props}>\n <DialogTitle>Raw Data</DialogTitle>\n <DialogContent sx={{ display: 'flex', flexDirection: 'column', gap: 2 }}>\n {dialogContent}\n <JsonViewerCollapse defaultExpandedJson={defaultExpandedJson} jsonValue={jsonObject} updateExpandedJson={updateExpandedJson} />\n </DialogContent>\n <DialogActions>\n <Button variant=\"contained\" onClick={() => onCloseCallback?.()}>\n Close\n </Button>\n </DialogActions>\n </Dialog>\n </span>\n )\n}\n","import { IconSize } from './IconSize'\n\nexport const presetIconSizeValue = (size?: IconSize) => {\n switch (size) {\n case 'small': {\n return 16\n }\n case 'medium': {\n return 32\n }\n case 'large': {\n return 48\n }\n }\n}\n","import { IconButton, IconButtonProps } from '@mui/material'\nimport { toJson } from '@xylabs/object'\nimport { forwardRef, MouseEventHandler, ReactNode, useMemo, useState } from 'react'\n\nimport { ExpansionProps } from '../../lib'\nimport { xyoColorLogo } from '../img'\nimport { RawInfoDialog } from '../shared'\nimport { IconSize, presetIconSizeValue } from './lib'\n\nexport interface RawInfoIconProps extends IconButtonProps, ExpansionProps {\n dialogContent?: ReactNode\n iconOnly?: boolean\n iconSize?: number\n onCloseCallback?: () => void\n presetIconSize?: IconSize\n rawValue?: unknown\n}\n\nexport const RawInfoIconButton = forwardRef<HTMLButtonElement, RawInfoIconProps>(\n (\n { defaultExpandedJson = true, dialogContent, iconOnly, iconSize = 32, onCloseCallback, rawValue, presetIconSize, updateExpandedJson, ...props },\n ref,\n ) => {\n const [open, setOpen] = useState(false)\n const size = presetIconSizeValue(presetIconSize)\n const json = useMemo(() => toJson(rawValue), [rawValue])\n\n const handleClick: MouseEventHandler<HTMLButtonElement> = (event) => {\n event.stopPropagation()\n setOpen(true)\n }\n\n const onCloseCallBackWrapped = () => {\n setOpen(false)\n onCloseCallback?.()\n }\n\n return (\n <>\n <IconButton onClick={handleClick} ref={ref} {...props}>\n <img src={xyoColorLogo} height={size ?? iconSize} width={size ?? iconSize} />\n </IconButton>\n {iconOnly ? null : (\n <RawInfoDialog\n defaultExpandedJson={defaultExpandedJson}\n jsonValue={json}\n onCloseCallback={onCloseCallBackWrapped}\n dialogContent={dialogContent}\n open={open}\n updateExpandedJson={updateExpandedJson}\n />\n )}\n </>\n )\n },\n)\n\nRawInfoIconButton.displayName = 'RawInfoIcon'\n"],"mappings":"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","names":["default","Typography","jsx","Typography","Button","jsx","jsxs","Button","jsx","jsxs","default","toJson","useMemo","useState","Fragment","jsx","jsxs","useState","useMemo","toJson","default"]}
package/package.json CHANGED
@@ -11,13 +11,14 @@
11
11
  },
12
12
  "dependencies": {
13
13
  "@textea/json-viewer": "^3.4.0",
14
+ "@xylabs/object": "^3.0.11",
14
15
  "@xylabs/react-button": "^3.1.4",
15
16
  "@xylabs/react-flexbox": "^3.1.4",
16
17
  "@xylabs/react-invertible-theme": "^3.1.4",
17
18
  "@xylabs/react-promise": "^3.1.4",
18
19
  "@xyo-network/payload-builder": "^2.92.0",
19
20
  "@xyo-network/payload-model": "^2.92.0",
20
- "@xyo-network/react-shared": "~2.70.4"
21
+ "@xyo-network/react-shared": "~2.70.5"
21
22
  },
22
23
  "devDependencies": {
23
24
  "@storybook/react": "^7.6.17",
@@ -26,11 +27,13 @@
26
27
  "typescript": "^5.3.3"
27
28
  },
28
29
  "peerDependencies": {
30
+ "@emotion/react": "^11",
31
+ "@emotion/styled": "^11",
29
32
  "@mui/icons-material": "^5",
30
33
  "@mui/material": "^5",
31
34
  "@mui/styles": "^5",
32
35
  "react": "^18",
33
- "react-dom": "^18.0.0"
36
+ "react-dom": "^18"
34
37
  },
35
38
  "description": "Common React library for all XYO projects that use React",
36
39
  "docs": "dist/docs.json",
@@ -83,6 +86,6 @@
83
86
  "license": "yarn license-checker --exclude \"MIT, ISC, Apache-2.0, BSD, BSD-2-Clause, CC-BY-4.0, Unlicense, CC-BY-3.0, CC0-1.0\""
84
87
  },
85
88
  "sideEffects": false,
86
- "version": "2.70.3",
89
+ "version": "2.70.4",
87
90
  "type": "module"
88
91
  }
@@ -21,7 +21,7 @@ const Default = Template.bind({})
21
21
  const WithPayload = Template.bind({})
22
22
  WithPayload.args = {
23
23
  dialogContent: 'This is a test',
24
- payload: TestPayload
24
+ rawValue: TestPayload
25
25
  }
26
26
 
27
27
  export { Default, WithPayload };
@@ -1,6 +1,6 @@
1
+ import { toJson } from '@xylabs/object'
1
2
  import { ButtonEx, ButtonExProps } from '@xylabs/react-button'
2
- import { Payload, WithSchema } from '@xyo-network/payload-model'
3
- import { MouseEventHandler, ReactNode, useState } from 'react'
3
+ import { MouseEventHandler, ReactNode, useMemo, useState } from 'react'
4
4
 
5
5
  import { ExpansionProps } from '../../lib'
6
6
  import { xyoColorLogo } from '../img'
@@ -12,8 +12,8 @@ export interface RawInfoButtonProps extends ButtonExProps, ExpansionProps {
12
12
  iconOnly?: boolean
13
13
  iconSize?: number
14
14
  onCloseCallback?: () => void
15
- payload?: Payload<WithSchema> | null
16
15
  presetIconSize?: IconSize
16
+ rawValue?: unknown
17
17
  }
18
18
 
19
19
  export const RawInfoButton: React.FC<RawInfoButtonProps> = ({
@@ -23,13 +23,14 @@ export const RawInfoButton: React.FC<RawInfoButtonProps> = ({
23
23
  iconSize = 24,
24
24
  onCloseCallback,
25
25
  children,
26
- payload,
26
+ rawValue,
27
27
  presetIconSize,
28
28
  updateExpandedJson,
29
29
  ...props
30
30
  }) => {
31
31
  const [open, setOpen] = useState(false)
32
32
  const size = presetIconSizeValue(presetIconSize)
33
+ const json = useMemo(() => toJson(rawValue), [rawValue])
33
34
 
34
35
  const handleClick: MouseEventHandler<HTMLButtonElement> = (event) => {
35
36
  event.stopPropagation()
@@ -48,7 +49,7 @@ export const RawInfoButton: React.FC<RawInfoButtonProps> = ({
48
49
  size="small"
49
50
  startIcon={<img src={xyoColorLogo} height={size ?? iconSize} width={size ?? iconSize} />}
50
51
  onClick={handleClick}
51
- disabled={iconOnly ? false : !payload}
52
+ disabled={iconOnly ? false : !rawValue}
52
53
  {...props}
53
54
  >
54
55
  {children ?? <span>Data</span>}
@@ -56,7 +57,7 @@ export const RawInfoButton: React.FC<RawInfoButtonProps> = ({
56
57
  {iconOnly ? null : (
57
58
  <RawInfoDialog
58
59
  defaultExpandedJson={defaultExpandedJson}
59
- payload={payload}
60
+ jsonValue={json}
60
61
  onCloseCallback={onCloseCallBackWrapped}
61
62
  dialogContent={dialogContent}
62
63
  open={open}
@@ -21,7 +21,7 @@ const Default = Template.bind({})
21
21
  const WithPayload = Template.bind({})
22
22
  WithPayload.args = {
23
23
  dialogContent: 'This is a test',
24
- payload: TestPayload
24
+ rawValue: TestPayload
25
25
  }
26
26
 
27
27
  export { Default, WithPayload };
@@ -1,6 +1,6 @@
1
1
  import { IconButton, IconButtonProps } from '@mui/material'
2
- import { Payload } from '@xyo-network/payload-model'
3
- import { forwardRef, MouseEventHandler, ReactNode, useState } from 'react'
2
+ import { toJson } from '@xylabs/object'
3
+ import { forwardRef, MouseEventHandler, ReactNode, useMemo, useState } from 'react'
4
4
 
5
5
  import { ExpansionProps } from '../../lib'
6
6
  import { xyoColorLogo } from '../img'
@@ -12,14 +12,18 @@ export interface RawInfoIconProps extends IconButtonProps, ExpansionProps {
12
12
  iconOnly?: boolean
13
13
  iconSize?: number
14
14
  onCloseCallback?: () => void
15
- payload?: Payload
16
15
  presetIconSize?: IconSize
16
+ rawValue?: unknown
17
17
  }
18
18
 
19
19
  export const RawInfoIconButton = forwardRef<HTMLButtonElement, RawInfoIconProps>(
20
- ({ defaultExpandedJson, dialogContent, iconOnly, iconSize = 32, onCloseCallback, payload, presetIconSize, updateExpandedJson, ...props }, ref) => {
20
+ (
21
+ { defaultExpandedJson = true, dialogContent, iconOnly, iconSize = 32, onCloseCallback, rawValue, presetIconSize, updateExpandedJson, ...props },
22
+ ref,
23
+ ) => {
21
24
  const [open, setOpen] = useState(false)
22
25
  const size = presetIconSizeValue(presetIconSize)
26
+ const json = useMemo(() => toJson(rawValue), [rawValue])
23
27
 
24
28
  const handleClick: MouseEventHandler<HTMLButtonElement> = (event) => {
25
29
  event.stopPropagation()
@@ -39,7 +43,7 @@ export const RawInfoIconButton = forwardRef<HTMLButtonElement, RawInfoIconProps>
39
43
  {iconOnly ? null : (
40
44
  <RawInfoDialog
41
45
  defaultExpandedJson={defaultExpandedJson}
42
- payload={payload}
46
+ jsonValue={json}
43
47
  onCloseCallback={onCloseCallBackWrapped}
44
48
  dialogContent={dialogContent}
45
49
  open={open}