{
  "version": 3,
  "sources": ["../../src/modules/payload-details/components/Details/DataDetails.tsx", "../../src/modules/payload-details/components/Details/HashSourceDetails.tsx", "../../src/modules/payload-details/components/Details/Details.tsx", "../../src/modules/payload-details/components/Details/JsonDetails.tsx", "../../src/modules/payload-details/components/Details/ValidationDetails/ValidationDetails.tsx"],
  "sourcesContent": ["import { forget } from '@ariestools/sdk'\nimport { ButtonEx } from '@ariestools/sdk-react/button'\nimport { ContentCopy as ContentCopyIcon, Visibility as VisibilityIcon } from '@mui/icons-material'\nimport {\n  Dialog, DialogActions, DialogContent, DialogTitle,\n} from '@mui/material'\nimport type { Payload } from '@xyo-network/sdk'\nimport { PayloadBuilder } from '@xyo-network/sdk'\nimport React, { useState } from 'react'\n\nimport type { PropertyAction, PropertyProps } from '#property'\nimport { Property } from '#property'\nimport type { SizeProp } from '#shared'\nimport { usePayloadHash } from '#shared'\n\nimport { PayloadHashSourceDetails } from './HashSourceDetails.tsx'\n\n/** Props for {@link PayloadDataDetails}. */\nexport type PayloadDataDetailsProps = PropertyProps & {\n  badge?: boolean\n  payload?: Payload\n  size?: SizeProp\n}\n\n/** Displays payload hash data with actions to view or copy the hash source. */\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\n            onClick={onCopy}\n            sx={{ color: 'secondary' }}\n          >\n            Copy\n          </ButtonEx>\n          <ButtonEx\n            onClick={() => setViewSourceOpen(false)}\n            sx={{ color: 'secondary' }}\n          >\n            Close\n          </ButtonEx>\n        </DialogActions>\n      </Dialog>\n    </>\n  )\n}\n", "import type { FlexBoxProps } from '@ariestools/sdk-react/flexbox'\nimport {\n  FlexCol, FlexGrowRow, FlexRow,\n} from '@ariestools/sdk-react/flexbox'\nimport { QuickTipButton } from '@ariestools/sdk-react/quick-tip-button'\nimport { ContentCopy as ContentCopyIcon } from '@mui/icons-material'\nimport {\n  IconButton, Typography, useTheme,\n} from '@mui/material'\nimport type { Payload } from '@xyo-network/sdk'\nimport { PayloadBuilder } from '@xyo-network/sdk'\nimport React from 'react'\n\n/** Props for {@link PayloadHashSourceDetails}. */\nexport interface PayloadHashSourceDetailsProps extends FlexBoxProps {\n  noTitle?: boolean\n  payload?: Payload\n}\n\n/** Shows the hashable JSON source fields of a payload with copy support. */\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\n      {...props}\n      sx={[{ alignItems: 'stretch' }, ...(Array.isArray(props.sx) ? props.sx : [props.sx])]}\n    >\n      {noTitle\n        ? null\n        : (\n            <FlexRow\n              sx={{\n                margin: 1,\n                justifyContent: 'flex-start',\n              }}\n            >\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\n          background\n          sx={{\n            border: 1,\n            borderColor: theme.vars.palette.divider,\n            justifyContent: 'start',\n          }}\n        >\n          <Typography\n            variant=\"body1\"\n            sx={{\n              padding: 2,\n              fontFamily: 'monospace',\n              overflowWrap: 'break-word',\n              wordBreak: 'break-all',\n            }}\n          >\n            {payloadString}\n          </Typography>\n        </FlexGrowRow>\n        <IconButton>\n          <ContentCopyIcon />\n        </IconButton>\n      </FlexRow>\n      {noTitle\n        ? (\n            <FlexRow\n              sx={{\n                margin: 1,\n                justifyContent: 'flex-start',\n              }}\n            >\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 '@ariestools/sdk-react/flexbox'\nimport { FlexCol } from '@ariestools/sdk-react/flexbox'\nimport type { Payload } from '@xyo-network/sdk'\nimport React from 'react'\n\nimport { PayloadDataDetails } from './DataDetails.tsx'\nimport { PayloadJsonDetails } from './JsonDetails.tsx'\nimport { PayloadValidationDetails } from './ValidationDetails/index.ts'\n\n/** Marks a details props type as requiring paper elevation styling. */\nexport type WithPaper<T> = T & { paper: true }\n/** Marks a details props type as not using paper elevation styling. */\nexport type WithoutPaper<T> = T & { paper?: false }\n\n/** Props for {@link PayloadDetails}. */\nexport type PayloadDetailsProps = FlexBoxProps & {\n  paper?: boolean\n  payload?: Payload\n}\n\n/** Composite payload details view with data, validation, and JSON sections. */\nexport const PayloadDetails: React.FC<PayloadDetailsProps> = ({\n  paper, payload, ...props\n}) => {\n  return (\n    <FlexCol\n      {...props}\n      sx={[{\n        gap: 1,\n        justifyContent: 'flex-start',\n        alignItems: 'stretch',\n        marginTop: 2,\n        marginBottom: 8,\n      }, ...(Array.isArray(props.sx) ? props.sx : [props.sx])]}\n    >\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/sdk'\nimport React from 'react'\n\nimport type { JsonViewerExProps } from '#payload-raw-info'\nimport { JsonViewerEx } from '#payload-raw-info'\nimport type { PropertyGroupProps } from '#property'\nimport { PropertyGroup } from '#property'\n\n/** Props for {@link PayloadJsonDetails}. */\nexport type PayloadJsonDetailsProps = PropertyGroupProps & {\n  jsonViewProps?: JsonViewerExProps\n  payload?: Payload\n}\n\n/** Property group that displays the raw JSON of a payload. */\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 { FlexCol } from '@ariestools/sdk-react/flexbox'\nimport { usePromise } from '@ariestools/sdk-react/promise'\nimport { Typography } from '@mui/material'\nimport { PayloadValidator } from '@xyo-network/sdk'\nimport React from 'react'\n\nimport { Property, PropertyGroup } from '#property'\nimport { SchemaProperty } from '#schema'\n\nimport type { PayloadValidationDetailsProps } from './ValidationDetailsProps.ts'\n\n/** Shows payload schema validation results and any validation errors. */\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        title=\"Valid\"\n        value={errors.length === 0 ? 'True' : 'False'}\n        tip={\n          errors.length > 0\n            ? (\n                <FlexCol>\n                  {errors.map((error) => {\n                    return <Typography key={error.message}>{error.toString()}</Typography>\n                  })}\n                </FlexCol>\n              )\n            : <Typography>No Errors</Typography>\n        }\n        sx={{ flexGrow: 1 }}\n      />\n      {value?.schema && (\n        <SchemaProperty\n          titleProps={{ elevation }}\n          value={value.schema}\n          sx={{ flexGrow: 1 }}\n        />\n      )}\n    </PropertyGroup>\n  )\n}\n"],
  "mappings": "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",
  "names": ["ContentCopyIcon", "PayloadBuilder", "jsx", "jsxs", "PayloadBuilder", "ContentCopyIcon", "FlexCol", "useTheme", "jsx", "FlexCol", "Typography", "Property", "PropertyGroup", "jsx", "jsxs", "jsx", "jsxs", "FlexCol"]
}
