@xyo-network/react-chain-transfer-plugin 1.15.27 → 1.15.28

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.
@@ -120,7 +120,7 @@ var TransferCardHelper = class {
120
120
  if (this.options?.links?.has("address")) {
121
121
  return /* @__PURE__ */ React2.createElement(React2.Fragment, null, resolvedPrefix, " ", /* @__PURE__ */ React2.createElement(Link, {
122
122
  onClick: /* @__PURE__ */ __name(() => {
123
- this.dispatch?.("address", "click", this.payload?.from);
123
+ this.dispatch?.("address", "click", address);
124
124
  }, "onClick"),
125
125
  sx: {
126
126
  cursor: "pointer"
@@ -224,8 +224,7 @@ var TransferRenderCard = /* @__PURE__ */ __name(({ options, payload, ...props })
224
224
  }
225
225
  }
226
226
  }, /* @__PURE__ */ React4.createElement(List, null, Object.entries(transfers ?? {}).map(([address, amount], index) => /* @__PURE__ */ React4.createElement(TransferRenderListItem, {
227
- // eslint-disable-next-line @eslint-react/no-array-index-key
228
- key: index,
227
+ key: address,
229
228
  address: asAddress2(address),
230
229
  amount: asHex(amount),
231
230
  transferCardHelper
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/transfer/box/Details.tsx","../../src/transfer/card/TransferRenderCard.tsx","../../src/transfer/card/ListItem.tsx","../../src/transfer/card/TransferRenderCardHelper.tsx","../../src/transfer/card/TransferRenderTotalTypography.tsx","../../src/transfer/Plugin.ts"],"sourcesContent":["import type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport type { Payload } from '@xyo-network/payload-model'\nimport type { PayloadDetailsRenderProps } from '@xyo-network/react-payload-plugin'\nimport React from 'react'\n\nimport { TransferRenderCard } from '../card/index.ts'\nimport type { TransferRenderOptions } from '../lib/index.ts'\n\nexport interface TransferRenderBoxDetailsProps extends PayloadDetailsRenderProps, FlexBoxProps {\n options?: TransferRenderOptions\n payload?: Payload\n}\n\nexport const TransferRenderBoxDetails: React.FC<TransferRenderBoxDetailsProps> = ({\n options,\n payload,\n ...props\n}) => {\n return (\n <FlexCol {...props}>\n <TransferRenderCard\n options={options}\n payload={payload}\n />\n </FlexCol>\n )\n}\n","import type { CardProps } from '@mui/material'\nimport {\n Card, CardContent, CardHeader, List, useMediaQuery, useTheme,\n} from '@mui/material'\nimport { asAddress, asHex } from '@xylabs/hex'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { BlockiesAvatar } from '@xyo-network/react-chain-blockies'\nimport { useEvent } from '@xyo-network/react-event'\nimport type { PayloadDetailsRenderProps } from '@xyo-network/react-payload-plugin'\nimport { asTransfer } from '@xyo-network/xl1-protocol'\nimport React, { useMemo } from 'react'\n\nimport type { TransferRenderOptions } from '../lib/index.ts'\nimport { TransferRenderListItem } from './ListItem.tsx'\nimport { TransferCardHelper } from './TransferRenderCardHelper.tsx'\nimport { TransferRenderTotalTypography } from './TransferRenderTotalTypography.tsx'\n\nexport interface TransferRenderCardProps extends PayloadDetailsRenderProps, CardProps {\n options?: TransferRenderOptions\n payload?: Payload\n}\n\nexport const TransferRenderCard: React.FC<TransferRenderCardProps> = ({\n options, payload, ...props\n}) => {\n const theme = useTheme()\n const isMedium = useMediaQuery(theme => theme.breakpoints.up('sm'))\n const [ref, dispatch] = useEvent<HTMLDivElement>()\n const transfer = asTransfer(payload)\n const { from, transfers } = transfer ?? {}\n\n const transferCardHelper = useMemo(\n () =>\n new TransferCardHelper(isMedium, asTransfer(payload), dispatch, options),\n [isMedium, payload, dispatch, options],\n )\n\n return (\n <Card ref={ref} {...props}>\n <CardHeader\n title={transferCardHelper.addressComponent(from, 'From')}\n slotProps={{\n title: {\n title: from, variant: 'body1', fontFamily: 'monospace',\n },\n }}\n avatar={<BlockiesAvatar sx={{ width: 30, height: 30 }} title={from} blockiesOptions={{ seed: from }} />}\n />\n <CardContent sx={{ '&:last-child': { pb: theme.spacing(0) } }}>\n <List>\n {Object.entries(transfers ?? {}).map(([address, amount], index) => (\n <TransferRenderListItem\n // eslint-disable-next-line @eslint-react/no-array-index-key\n key={index}\n address={asAddress(address)}\n amount={asHex(amount)}\n transferCardHelper={transferCardHelper}\n />\n ))}\n </List>\n <TransferRenderTotalTypography\n transferRenderHelper={transferCardHelper}\n sx={{\n // pt matches bottom padding of the ListItem\n width: '100%', justifyContent: 'end', pt: 0.666_666_666_7, pb: theme.spacing(2),\n }}\n />\n </CardContent>\n </Card>\n )\n}\n","import {\n ListItem, ListItemAvatar, type ListItemProps, ListItemText, Stack, Typography,\n useTheme,\n} from '@mui/material'\nimport type { Address, Hex } from '@xylabs/hex'\nimport { asAddress, hexToBigInt } from '@xylabs/hex'\nimport { isDefined } from '@xylabs/typeof'\nimport { BlockiesAvatar } from '@xyo-network/react-chain-blockies'\nimport { NetworkIcon } from '@xyo-network/react-chain-network'\nimport { MainNetworkIconString } from '@xyo-network/xl1-network-model'\nimport React from 'react'\n\nimport type { TransferCardHelper } from './TransferRenderCardHelper.tsx'\n\nexport interface TransferRenderListItem extends ListItemProps {\n address?: Address\n amount?: Hex\n transferCardHelper: TransferCardHelper\n}\n\nexport const TransferRenderListItem: React.FC<TransferRenderListItem> = ({\n address, amount, sx, transferCardHelper, ...props\n}) => {\n const theme = useTheme()\n return (\n <ListItem sx={{ px: 0, ...sx }} {...props}>\n <ListItemAvatar sx={{ minWidth: 30, mr: theme.spacing(2) }}>\n <BlockiesAvatar title={address} sx={{ width: 30, height: 30 }} blockiesOptions={{ seed: address }} />\n </ListItemAvatar>\n <ListItemText sx={{ borderBottom: `1px solid ${theme.vars.palette.divider}` }}>\n <Stack direction=\"row\" gap={2} justifyContent=\"space-between\" width=\"100%\">\n <Typography component=\"span\" fontFamily=\"monospace\" variant=\"caption\">\n {transferCardHelper.addressComponent(asAddress(address), 'To')}\n </Typography>\n <Typography\n component=\"span\"\n fontFamily=\"monospace\"\n variant=\"caption\"\n title={isDefined(amount) ? hexToBigInt(amount).toString() : ''}\n sx={{\n display: 'inline-flex', alignItems: 'center', gap: theme.spacing(0.25),\n }}\n >\n {transferCardHelper.formatAmountToXl1(amount)}\n <NetworkIcon\n icon={MainNetworkIconString}\n style={{\n width: 16, height: 16, display: 'inline-flex', alignItems: 'end',\n }}\n />\n (XL1)\n </Typography>\n </Stack>\n </ListItemText>\n </ListItem>\n )\n}\n","import { Link } from '@mui/material'\nimport { ellipsize } from '@xylabs/eth-address'\nimport type { Address, Hex } from '@xylabs/hex'\nimport { hexToBigInt, isHex } from '@xylabs/hex'\nimport { isDefined, isUndefined } from '@xylabs/typeof'\nimport type { EventDispatch } from '@xyo-network/react-event'\nimport {\n type AttoXL1, type Transfer, XL1Places,\n} from '@xyo-network/xl1-protocol'\nimport { XL1Amount } from '@xyo-network/xl1-protocol'\nimport type { ReactNode } from 'react'\nimport React from 'react'\n\nimport type { TransferRenderOptions } from '../lib/index.ts'\n\nexport class TransferCardHelper {\n private _dispatch: EventDispatch | undefined\n private _isMedium: boolean\n private _options: TransferRenderOptions | undefined\n private _payload: Transfer | undefined\n\n constructor(\n isMedium: boolean,\n payload?: Transfer,\n dispatch?: EventDispatch,\n options?: TransferRenderOptions,\n ) {\n this._isMedium = isMedium\n this._options = options\n this._payload = payload\n this._dispatch = dispatch\n }\n\n get dispatch() {\n return this._dispatch\n }\n\n get isMedium() {\n return this._isMedium\n }\n\n get linkedAddresses() {\n return this.options?.links?.has('address')\n }\n\n get options() {\n return this._options\n }\n\n get payload() {\n return this._payload\n }\n\n addressComponent(address?: Address, prefix?: string): ReactNode {\n const resolvedPrefix = isDefined(prefix) ? `${prefix}: ` : ''\n const text = `${this.formatAddress(address) ?? 'Unknown'}`\n if (this.options?.links?.has('address')) {\n return (\n <>\n {resolvedPrefix}\n {' '}\n <Link\n onClick={() => {\n this.dispatch?.('address', 'click', this.payload?.from)\n }}\n sx={{ cursor: 'pointer' }}\n >\n {text}\n </Link>\n </>\n )\n }\n return `${resolvedPrefix}${text}`\n }\n\n formatAddress(address?: Address): string {\n return (address ? (this.isMedium ? address : ellipsize(address, 5)) : '')\n }\n\n formatAmountToXl1(amount?: Hex | bigint): string {\n if (isUndefined(amount)) return ''\n const amountBigInt = isHex(amount) ? hexToBigInt(amount) : amount\n const xl1Amount = XL1Amount.fromAtto(amountBigInt as AttoXL1).toString(Number(XL1Places.xl1), {\n maxDecimal: 18, maxCharacters: 19, minDecimals: 0, locale: navigator.language,\n })\n return xl1Amount\n }\n\n totalTransferred() {\n if (isUndefined(this.payload?.transfers)) return '0'\n let total = 0n\n for (const [, amount] of Object.entries(this.payload.transfers)) {\n if (isDefined(amount)) {\n total += hexToBigInt(amount)\n }\n }\n return this.formatAmountToXl1(total)\n }\n}\n","import type { TypographyProps } from '@mui/material'\nimport { Typography, useTheme } from '@mui/material'\nimport { NetworkIcon } from '@xyo-network/react-chain-network'\nimport { MainNetworkIconString } from '@xyo-network/xl1-network-model'\nimport React from 'react'\n\nimport type { TransferCardHelper } from './TransferRenderCardHelper.tsx'\n\nexport interface TransferRenderTotalTypographyProps extends TypographyProps {\n transferRenderHelper: TransferCardHelper\n}\n\nexport const TransferRenderTotalTypography: React.FC<TransferRenderTotalTypographyProps> = ({\n transferRenderHelper, sx, ...props\n}) => {\n const theme = useTheme()\n\n return (\n <Typography\n sx={{\n display: 'inline-flex', gap: theme.spacing(0.25), fontFamily: 'monospace', ...sx,\n }}\n variant=\"caption\"\n {...props}\n >\n Total:\n {' '}\n <strong>{transferRenderHelper?.totalTransferred()}</strong>\n <NetworkIcon\n icon={MainNetworkIconString}\n style={{\n width: 16, height: 16, display: 'inline-flex', alignItems: 'end',\n }}\n />\n (XL1)\n </Typography>\n )\n}\n","import type { Payload } from '@xyo-network/payload-model'\nimport type { PayloadRenderPlugin } from '@xyo-network/react-payload-plugin'\nimport { createPayloadRenderPlugin } from '@xyo-network/react-payload-plugin'\nimport { TransferSchema } from '@xyo-network/xl1-protocol'\n\nimport { TransferRenderBoxDetails } from './box/index.ts'\nimport { TransferRenderCard } from './card/index.ts'\n\nexport const TransferRenderPlugin: PayloadRenderPlugin = {\n ...createPayloadRenderPlugin({\n canRender: (payload?: Payload) => payload?.schema === TransferSchema,\n components: { box: { detailsBox: TransferRenderBoxDetails, detailsCard: TransferRenderCard } },\n name: 'Transfer',\n }),\n}\n\nexport default TransferRenderPlugin\n"],"mappings":"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","names":["FlexCol","React","Card","CardContent","CardHeader","List","useMediaQuery","useTheme","asAddress","asHex","BlockiesAvatar","useEvent","asTransfer","React","useMemo","ListItem","ListItemAvatar","ListItemText","Stack","Typography","useTheme","asAddress","hexToBigInt","isDefined","BlockiesAvatar","NetworkIcon","MainNetworkIconString","React","TransferRenderListItem","address","amount","sx","transferCardHelper","props","theme","useTheme","ListItem","px","ListItemAvatar","minWidth","mr","spacing","BlockiesAvatar","title","width","height","blockiesOptions","seed","ListItemText","borderBottom","vars","palette","divider","Stack","direction","gap","justifyContent","Typography","component","fontFamily","variant","addressComponent","asAddress","isDefined","hexToBigInt","toString","display","alignItems","formatAmountToXl1","NetworkIcon","icon","MainNetworkIconString","style","Link","ellipsize","hexToBigInt","isHex","isDefined","isUndefined","XL1Places","XL1Amount","React","TransferCardHelper","_dispatch","_isMedium","_options","_payload","isMedium","payload","dispatch","options","linkedAddresses","links","has","addressComponent","address","prefix","resolvedPrefix","isDefined","text","formatAddress","React","Link","onClick","from","sx","cursor","ellipsize","formatAmountToXl1","amount","isUndefined","amountBigInt","isHex","hexToBigInt","xl1Amount","XL1Amount","fromAtto","toString","Number","XL1Places","xl1","maxDecimal","maxCharacters","minDecimals","locale","navigator","language","totalTransferred","transfers","total","Object","entries","Typography","useTheme","NetworkIcon","MainNetworkIconString","React","TransferRenderTotalTypography","transferRenderHelper","sx","props","theme","useTheme","React","Typography","display","gap","spacing","fontFamily","variant","strong","totalTransferred","NetworkIcon","icon","MainNetworkIconString","style","width","height","alignItems","TransferRenderCard","options","payload","props","theme","useTheme","isMedium","useMediaQuery","breakpoints","up","ref","dispatch","useEvent","transfer","asTransfer","from","transfers","transferCardHelper","useMemo","TransferCardHelper","React","Card","CardHeader","title","addressComponent","slotProps","variant","fontFamily","avatar","BlockiesAvatar","sx","width","height","blockiesOptions","seed","CardContent","pb","spacing","List","Object","entries","map","address","amount","index","TransferRenderListItem","key","asAddress","asHex","TransferRenderTotalTypography","transferRenderHelper","justifyContent","pt","TransferRenderBoxDetails","options","payload","props","React","FlexCol","TransferRenderCard","createPayloadRenderPlugin","TransferSchema","TransferRenderPlugin","createPayloadRenderPlugin","canRender","payload","schema","TransferSchema","components","box","detailsBox","TransferRenderBoxDetails","detailsCard","TransferRenderCard","name"]}
1
+ {"version":3,"sources":["../../src/transfer/box/Details.tsx","../../src/transfer/card/TransferRenderCard.tsx","../../src/transfer/card/ListItem.tsx","../../src/transfer/card/TransferRenderCardHelper.tsx","../../src/transfer/card/TransferRenderTotalTypography.tsx","../../src/transfer/Plugin.ts"],"sourcesContent":["import type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport type { Payload } from '@xyo-network/payload-model'\nimport type { PayloadDetailsRenderProps } from '@xyo-network/react-payload-plugin'\nimport React from 'react'\n\nimport { TransferRenderCard } from '../card/index.ts'\nimport type { TransferRenderOptions } from '../lib/index.ts'\n\nexport interface TransferRenderBoxDetailsProps extends PayloadDetailsRenderProps, FlexBoxProps {\n options?: TransferRenderOptions\n payload?: Payload\n}\n\nexport const TransferRenderBoxDetails: React.FC<TransferRenderBoxDetailsProps> = ({\n options,\n payload,\n ...props\n}) => {\n return (\n <FlexCol {...props}>\n <TransferRenderCard\n options={options}\n payload={payload}\n />\n </FlexCol>\n )\n}\n","import type { CardProps } from '@mui/material'\nimport {\n Card, CardContent, CardHeader, List, useMediaQuery, useTheme,\n} from '@mui/material'\nimport { asAddress, asHex } from '@xylabs/hex'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { BlockiesAvatar } from '@xyo-network/react-chain-blockies'\nimport { useEvent } from '@xyo-network/react-event'\nimport type { PayloadDetailsRenderProps } from '@xyo-network/react-payload-plugin'\nimport { asTransfer } from '@xyo-network/xl1-protocol'\nimport React, { useMemo } from 'react'\n\nimport type { TransferRenderOptions } from '../lib/index.ts'\nimport { TransferRenderListItem } from './ListItem.tsx'\nimport { TransferCardHelper } from './TransferRenderCardHelper.tsx'\nimport { TransferRenderTotalTypography } from './TransferRenderTotalTypography.tsx'\n\nexport interface TransferRenderCardProps extends PayloadDetailsRenderProps, CardProps {\n options?: TransferRenderOptions\n payload?: Payload\n}\n\nexport const TransferRenderCard: React.FC<TransferRenderCardProps> = ({\n options, payload, ...props\n}) => {\n const theme = useTheme()\n const isMedium = useMediaQuery(theme => theme.breakpoints.up('sm'))\n const [ref, dispatch] = useEvent<HTMLDivElement>()\n const transfer = asTransfer(payload)\n const { from, transfers } = transfer ?? {}\n\n const transferCardHelper = useMemo(\n () =>\n new TransferCardHelper(isMedium, asTransfer(payload), dispatch, options),\n [isMedium, payload, dispatch, options],\n )\n\n return (\n <Card ref={ref} {...props}>\n <CardHeader\n title={transferCardHelper.addressComponent(from, 'From')}\n slotProps={{\n title: {\n title: from, variant: 'body1', fontFamily: 'monospace',\n },\n }}\n avatar={<BlockiesAvatar sx={{ width: 30, height: 30 }} title={from} blockiesOptions={{ seed: from }} />}\n />\n <CardContent sx={{ '&:last-child': { pb: theme.spacing(0) } }}>\n <List>\n {Object.entries(transfers ?? {}).map(([address, amount], index) => (\n <TransferRenderListItem\n key={address}\n address={asAddress(address)}\n amount={asHex(amount)}\n transferCardHelper={transferCardHelper}\n />\n ))}\n </List>\n <TransferRenderTotalTypography\n transferRenderHelper={transferCardHelper}\n sx={{\n // pt matches bottom padding of the ListItem\n width: '100%', justifyContent: 'end', pt: 0.666_666_666_7, pb: theme.spacing(2),\n }}\n />\n </CardContent>\n </Card>\n )\n}\n","import {\n ListItem, ListItemAvatar, type ListItemProps, ListItemText, Stack, Typography,\n useTheme,\n} from '@mui/material'\nimport type { Address, Hex } from '@xylabs/hex'\nimport { asAddress, hexToBigInt } from '@xylabs/hex'\nimport { isDefined } from '@xylabs/typeof'\nimport { BlockiesAvatar } from '@xyo-network/react-chain-blockies'\nimport { NetworkIcon } from '@xyo-network/react-chain-network'\nimport { MainNetworkIconString } from '@xyo-network/xl1-network-model'\nimport React from 'react'\n\nimport type { TransferCardHelper } from './TransferRenderCardHelper.tsx'\n\nexport interface TransferRenderListItem extends ListItemProps {\n address?: Address\n amount?: Hex\n transferCardHelper: TransferCardHelper\n}\n\nexport const TransferRenderListItem: React.FC<TransferRenderListItem> = ({\n address, amount, sx, transferCardHelper, ...props\n}) => {\n const theme = useTheme()\n return (\n <ListItem sx={{ px: 0, ...sx }} {...props}>\n <ListItemAvatar sx={{ minWidth: 30, mr: theme.spacing(2) }}>\n <BlockiesAvatar title={address} sx={{ width: 30, height: 30 }} blockiesOptions={{ seed: address }} />\n </ListItemAvatar>\n <ListItemText sx={{ borderBottom: `1px solid ${theme.vars.palette.divider}` }}>\n <Stack direction=\"row\" gap={2} justifyContent=\"space-between\" width=\"100%\">\n <Typography component=\"span\" fontFamily=\"monospace\" variant=\"caption\">\n {transferCardHelper.addressComponent(asAddress(address), 'To')}\n </Typography>\n <Typography\n component=\"span\"\n fontFamily=\"monospace\"\n variant=\"caption\"\n title={isDefined(amount) ? hexToBigInt(amount).toString() : ''}\n sx={{\n display: 'inline-flex', alignItems: 'center', gap: theme.spacing(0.25),\n }}\n >\n {transferCardHelper.formatAmountToXl1(amount)}\n <NetworkIcon\n icon={MainNetworkIconString}\n style={{\n width: 16, height: 16, display: 'inline-flex', alignItems: 'end',\n }}\n />\n (XL1)\n </Typography>\n </Stack>\n </ListItemText>\n </ListItem>\n )\n}\n","import { Link } from '@mui/material'\nimport { ellipsize } from '@xylabs/eth-address'\nimport type { Address, Hex } from '@xylabs/hex'\nimport { hexToBigInt, isHex } from '@xylabs/hex'\nimport { isDefined, isUndefined } from '@xylabs/typeof'\nimport type { EventDispatch } from '@xyo-network/react-event'\nimport {\n type AttoXL1, type Transfer, XL1Places,\n} from '@xyo-network/xl1-protocol'\nimport { XL1Amount } from '@xyo-network/xl1-protocol'\nimport type { ReactNode } from 'react'\nimport React from 'react'\n\nimport type { TransferRenderOptions } from '../lib/index.ts'\n\nexport class TransferCardHelper {\n private _dispatch: EventDispatch | undefined\n private _isMedium: boolean\n private _options: TransferRenderOptions | undefined\n private _payload: Transfer | undefined\n\n constructor(\n isMedium: boolean,\n payload?: Transfer,\n dispatch?: EventDispatch,\n options?: TransferRenderOptions,\n ) {\n this._isMedium = isMedium\n this._options = options\n this._payload = payload\n this._dispatch = dispatch\n }\n\n get dispatch() {\n return this._dispatch\n }\n\n get isMedium() {\n return this._isMedium\n }\n\n get linkedAddresses() {\n return this.options?.links?.has('address')\n }\n\n get options() {\n return this._options\n }\n\n get payload() {\n return this._payload\n }\n\n addressComponent(address?: Address, prefix?: string): ReactNode {\n const resolvedPrefix = isDefined(prefix) ? `${prefix}: ` : ''\n const text = `${this.formatAddress(address) ?? 'Unknown'}`\n if (this.options?.links?.has('address')) {\n return (\n <>\n {resolvedPrefix}\n {' '}\n <Link\n onClick={() => {\n this.dispatch?.('address', 'click', address)\n }}\n sx={{ cursor: 'pointer' }}\n >\n {text}\n </Link>\n </>\n )\n }\n return `${resolvedPrefix}${text}`\n }\n\n formatAddress(address?: Address): string {\n return (address ? (this.isMedium ? address : ellipsize(address, 5)) : '')\n }\n\n formatAmountToXl1(amount?: Hex | bigint): string {\n if (isUndefined(amount)) return ''\n const amountBigInt = isHex(amount) ? hexToBigInt(amount) : amount\n const xl1Amount = XL1Amount.fromAtto(amountBigInt as AttoXL1).toString(Number(XL1Places.xl1), {\n maxDecimal: 18, maxCharacters: 19, minDecimals: 0, locale: navigator.language,\n })\n return xl1Amount\n }\n\n totalTransferred() {\n if (isUndefined(this.payload?.transfers)) return '0'\n let total = 0n\n for (const [, amount] of Object.entries(this.payload.transfers)) {\n if (isDefined(amount)) {\n total += hexToBigInt(amount)\n }\n }\n return this.formatAmountToXl1(total)\n }\n}\n","import type { TypographyProps } from '@mui/material'\nimport { Typography, useTheme } from '@mui/material'\nimport { NetworkIcon } from '@xyo-network/react-chain-network'\nimport { MainNetworkIconString } from '@xyo-network/xl1-network-model'\nimport React from 'react'\n\nimport type { TransferCardHelper } from './TransferRenderCardHelper.tsx'\n\nexport interface TransferRenderTotalTypographyProps extends TypographyProps {\n transferRenderHelper: TransferCardHelper\n}\n\nexport const TransferRenderTotalTypography: React.FC<TransferRenderTotalTypographyProps> = ({\n transferRenderHelper, sx, ...props\n}) => {\n const theme = useTheme()\n\n return (\n <Typography\n sx={{\n display: 'inline-flex', gap: theme.spacing(0.25), fontFamily: 'monospace', ...sx,\n }}\n variant=\"caption\"\n {...props}\n >\n Total:\n {' '}\n <strong>{transferRenderHelper?.totalTransferred()}</strong>\n <NetworkIcon\n icon={MainNetworkIconString}\n style={{\n width: 16, height: 16, display: 'inline-flex', alignItems: 'end',\n }}\n />\n (XL1)\n </Typography>\n )\n}\n","import type { Payload } from '@xyo-network/payload-model'\nimport type { PayloadRenderPlugin } from '@xyo-network/react-payload-plugin'\nimport { createPayloadRenderPlugin } from '@xyo-network/react-payload-plugin'\nimport { TransferSchema } from '@xyo-network/xl1-protocol'\n\nimport { TransferRenderBoxDetails } from './box/index.ts'\nimport { TransferRenderCard } from './card/index.ts'\n\nexport const TransferRenderPlugin: PayloadRenderPlugin = {\n ...createPayloadRenderPlugin({\n canRender: (payload?: Payload) => payload?.schema === TransferSchema,\n components: { box: { detailsBox: TransferRenderBoxDetails, detailsCard: TransferRenderCard } },\n name: 'Transfer',\n }),\n}\n\nexport default TransferRenderPlugin\n"],"mappings":"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","names":["FlexCol","React","Card","CardContent","CardHeader","List","useMediaQuery","useTheme","asAddress","asHex","BlockiesAvatar","useEvent","asTransfer","React","useMemo","ListItem","ListItemAvatar","ListItemText","Stack","Typography","useTheme","asAddress","hexToBigInt","isDefined","BlockiesAvatar","NetworkIcon","MainNetworkIconString","React","TransferRenderListItem","address","amount","sx","transferCardHelper","props","theme","useTheme","ListItem","px","ListItemAvatar","minWidth","mr","spacing","BlockiesAvatar","title","width","height","blockiesOptions","seed","ListItemText","borderBottom","vars","palette","divider","Stack","direction","gap","justifyContent","Typography","component","fontFamily","variant","addressComponent","asAddress","isDefined","hexToBigInt","toString","display","alignItems","formatAmountToXl1","NetworkIcon","icon","MainNetworkIconString","style","Link","ellipsize","hexToBigInt","isHex","isDefined","isUndefined","XL1Places","XL1Amount","React","TransferCardHelper","_dispatch","_isMedium","_options","_payload","isMedium","payload","dispatch","options","linkedAddresses","links","has","addressComponent","address","prefix","resolvedPrefix","isDefined","text","formatAddress","React","Link","onClick","sx","cursor","ellipsize","formatAmountToXl1","amount","isUndefined","amountBigInt","isHex","hexToBigInt","xl1Amount","XL1Amount","fromAtto","toString","Number","XL1Places","xl1","maxDecimal","maxCharacters","minDecimals","locale","navigator","language","totalTransferred","transfers","total","Object","entries","Typography","useTheme","NetworkIcon","MainNetworkIconString","React","TransferRenderTotalTypography","transferRenderHelper","sx","props","theme","useTheme","React","Typography","display","gap","spacing","fontFamily","variant","strong","totalTransferred","NetworkIcon","icon","MainNetworkIconString","style","width","height","alignItems","TransferRenderCard","options","payload","props","theme","useTheme","isMedium","useMediaQuery","breakpoints","up","ref","dispatch","useEvent","transfer","asTransfer","from","transfers","transferCardHelper","useMemo","TransferCardHelper","React","Card","CardHeader","title","addressComponent","slotProps","variant","fontFamily","avatar","BlockiesAvatar","sx","width","height","blockiesOptions","seed","CardContent","pb","spacing","List","Object","entries","map","address","amount","index","TransferRenderListItem","key","asAddress","asHex","TransferRenderTotalTypography","transferRenderHelper","justifyContent","pt","TransferRenderBoxDetails","options","payload","props","React","FlexCol","TransferRenderCard","createPayloadRenderPlugin","TransferSchema","TransferRenderPlugin","createPayloadRenderPlugin","canRender","payload","schema","TransferSchema","components","box","detailsBox","TransferRenderBoxDetails","detailsCard","TransferRenderCard","name"]}
@@ -124,7 +124,7 @@ var TransferCardHelper = class {
124
124
  if (this.options?.links?.has("address")) {
125
125
  return /* @__PURE__ */ React2.createElement(React2.Fragment, null, resolvedPrefix, " ", /* @__PURE__ */ React2.createElement(Link, {
126
126
  onClick: /* @__PURE__ */ __name(() => {
127
- this.dispatch?.("address", "click", this.payload?.from);
127
+ this.dispatch?.("address", "click", address);
128
128
  }, "onClick"),
129
129
  sx: {
130
130
  cursor: "pointer"
@@ -228,8 +228,7 @@ var TransferRenderCard = /* @__PURE__ */ __name(({ options, payload, ...props })
228
228
  }
229
229
  }
230
230
  }, /* @__PURE__ */ React4.createElement(List, null, Object.entries(transfers ?? {}).map(([address, amount], index) => /* @__PURE__ */ React4.createElement(TransferRenderListItem, {
231
- // eslint-disable-next-line @eslint-react/no-array-index-key
232
- key: index,
231
+ key: address,
233
232
  address: asAddress2(address),
234
233
  amount: asHex(amount),
235
234
  transferCardHelper
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/transfer/Plugin.ts","../../../src/transfer/box/Details.tsx","../../../src/transfer/card/TransferRenderCard.tsx","../../../src/transfer/card/ListItem.tsx","../../../src/transfer/card/TransferRenderCardHelper.tsx","../../../src/transfer/card/TransferRenderTotalTypography.tsx"],"sourcesContent":["import type { Payload } from '@xyo-network/payload-model'\nimport type { PayloadRenderPlugin } from '@xyo-network/react-payload-plugin'\nimport { createPayloadRenderPlugin } from '@xyo-network/react-payload-plugin'\nimport { TransferSchema } from '@xyo-network/xl1-protocol'\n\nimport { TransferRenderBoxDetails } from './box/index.ts'\nimport { TransferRenderCard } from './card/index.ts'\n\nexport const TransferRenderPlugin: PayloadRenderPlugin = {\n ...createPayloadRenderPlugin({\n canRender: (payload?: Payload) => payload?.schema === TransferSchema,\n components: { box: { detailsBox: TransferRenderBoxDetails, detailsCard: TransferRenderCard } },\n name: 'Transfer',\n }),\n}\n\nexport default TransferRenderPlugin\n","import type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport type { Payload } from '@xyo-network/payload-model'\nimport type { PayloadDetailsRenderProps } from '@xyo-network/react-payload-plugin'\nimport React from 'react'\n\nimport { TransferRenderCard } from '../card/index.ts'\nimport type { TransferRenderOptions } from '../lib/index.ts'\n\nexport interface TransferRenderBoxDetailsProps extends PayloadDetailsRenderProps, FlexBoxProps {\n options?: TransferRenderOptions\n payload?: Payload\n}\n\nexport const TransferRenderBoxDetails: React.FC<TransferRenderBoxDetailsProps> = ({\n options,\n payload,\n ...props\n}) => {\n return (\n <FlexCol {...props}>\n <TransferRenderCard\n options={options}\n payload={payload}\n />\n </FlexCol>\n )\n}\n","import type { CardProps } from '@mui/material'\nimport {\n Card, CardContent, CardHeader, List, useMediaQuery, useTheme,\n} from '@mui/material'\nimport { asAddress, asHex } from '@xylabs/hex'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { BlockiesAvatar } from '@xyo-network/react-chain-blockies'\nimport { useEvent } from '@xyo-network/react-event'\nimport type { PayloadDetailsRenderProps } from '@xyo-network/react-payload-plugin'\nimport { asTransfer } from '@xyo-network/xl1-protocol'\nimport React, { useMemo } from 'react'\n\nimport type { TransferRenderOptions } from '../lib/index.ts'\nimport { TransferRenderListItem } from './ListItem.tsx'\nimport { TransferCardHelper } from './TransferRenderCardHelper.tsx'\nimport { TransferRenderTotalTypography } from './TransferRenderTotalTypography.tsx'\n\nexport interface TransferRenderCardProps extends PayloadDetailsRenderProps, CardProps {\n options?: TransferRenderOptions\n payload?: Payload\n}\n\nexport const TransferRenderCard: React.FC<TransferRenderCardProps> = ({\n options, payload, ...props\n}) => {\n const theme = useTheme()\n const isMedium = useMediaQuery(theme => theme.breakpoints.up('sm'))\n const [ref, dispatch] = useEvent<HTMLDivElement>()\n const transfer = asTransfer(payload)\n const { from, transfers } = transfer ?? {}\n\n const transferCardHelper = useMemo(\n () =>\n new TransferCardHelper(isMedium, asTransfer(payload), dispatch, options),\n [isMedium, payload, dispatch, options],\n )\n\n return (\n <Card ref={ref} {...props}>\n <CardHeader\n title={transferCardHelper.addressComponent(from, 'From')}\n slotProps={{\n title: {\n title: from, variant: 'body1', fontFamily: 'monospace',\n },\n }}\n avatar={<BlockiesAvatar sx={{ width: 30, height: 30 }} title={from} blockiesOptions={{ seed: from }} />}\n />\n <CardContent sx={{ '&:last-child': { pb: theme.spacing(0) } }}>\n <List>\n {Object.entries(transfers ?? {}).map(([address, amount], index) => (\n <TransferRenderListItem\n // eslint-disable-next-line @eslint-react/no-array-index-key\n key={index}\n address={asAddress(address)}\n amount={asHex(amount)}\n transferCardHelper={transferCardHelper}\n />\n ))}\n </List>\n <TransferRenderTotalTypography\n transferRenderHelper={transferCardHelper}\n sx={{\n // pt matches bottom padding of the ListItem\n width: '100%', justifyContent: 'end', pt: 0.666_666_666_7, pb: theme.spacing(2),\n }}\n />\n </CardContent>\n </Card>\n )\n}\n","import {\n ListItem, ListItemAvatar, type ListItemProps, ListItemText, Stack, Typography,\n useTheme,\n} from '@mui/material'\nimport type { Address, Hex } from '@xylabs/hex'\nimport { asAddress, hexToBigInt } from '@xylabs/hex'\nimport { isDefined } from '@xylabs/typeof'\nimport { BlockiesAvatar } from '@xyo-network/react-chain-blockies'\nimport { NetworkIcon } from '@xyo-network/react-chain-network'\nimport { MainNetworkIconString } from '@xyo-network/xl1-network-model'\nimport React from 'react'\n\nimport type { TransferCardHelper } from './TransferRenderCardHelper.tsx'\n\nexport interface TransferRenderListItem extends ListItemProps {\n address?: Address\n amount?: Hex\n transferCardHelper: TransferCardHelper\n}\n\nexport const TransferRenderListItem: React.FC<TransferRenderListItem> = ({\n address, amount, sx, transferCardHelper, ...props\n}) => {\n const theme = useTheme()\n return (\n <ListItem sx={{ px: 0, ...sx }} {...props}>\n <ListItemAvatar sx={{ minWidth: 30, mr: theme.spacing(2) }}>\n <BlockiesAvatar title={address} sx={{ width: 30, height: 30 }} blockiesOptions={{ seed: address }} />\n </ListItemAvatar>\n <ListItemText sx={{ borderBottom: `1px solid ${theme.vars.palette.divider}` }}>\n <Stack direction=\"row\" gap={2} justifyContent=\"space-between\" width=\"100%\">\n <Typography component=\"span\" fontFamily=\"monospace\" variant=\"caption\">\n {transferCardHelper.addressComponent(asAddress(address), 'To')}\n </Typography>\n <Typography\n component=\"span\"\n fontFamily=\"monospace\"\n variant=\"caption\"\n title={isDefined(amount) ? hexToBigInt(amount).toString() : ''}\n sx={{\n display: 'inline-flex', alignItems: 'center', gap: theme.spacing(0.25),\n }}\n >\n {transferCardHelper.formatAmountToXl1(amount)}\n <NetworkIcon\n icon={MainNetworkIconString}\n style={{\n width: 16, height: 16, display: 'inline-flex', alignItems: 'end',\n }}\n />\n (XL1)\n </Typography>\n </Stack>\n </ListItemText>\n </ListItem>\n )\n}\n","import { Link } from '@mui/material'\nimport { ellipsize } from '@xylabs/eth-address'\nimport type { Address, Hex } from '@xylabs/hex'\nimport { hexToBigInt, isHex } from '@xylabs/hex'\nimport { isDefined, isUndefined } from '@xylabs/typeof'\nimport type { EventDispatch } from '@xyo-network/react-event'\nimport {\n type AttoXL1, type Transfer, XL1Places,\n} from '@xyo-network/xl1-protocol'\nimport { XL1Amount } from '@xyo-network/xl1-protocol'\nimport type { ReactNode } from 'react'\nimport React from 'react'\n\nimport type { TransferRenderOptions } from '../lib/index.ts'\n\nexport class TransferCardHelper {\n private _dispatch: EventDispatch | undefined\n private _isMedium: boolean\n private _options: TransferRenderOptions | undefined\n private _payload: Transfer | undefined\n\n constructor(\n isMedium: boolean,\n payload?: Transfer,\n dispatch?: EventDispatch,\n options?: TransferRenderOptions,\n ) {\n this._isMedium = isMedium\n this._options = options\n this._payload = payload\n this._dispatch = dispatch\n }\n\n get dispatch() {\n return this._dispatch\n }\n\n get isMedium() {\n return this._isMedium\n }\n\n get linkedAddresses() {\n return this.options?.links?.has('address')\n }\n\n get options() {\n return this._options\n }\n\n get payload() {\n return this._payload\n }\n\n addressComponent(address?: Address, prefix?: string): ReactNode {\n const resolvedPrefix = isDefined(prefix) ? `${prefix}: ` : ''\n const text = `${this.formatAddress(address) ?? 'Unknown'}`\n if (this.options?.links?.has('address')) {\n return (\n <>\n {resolvedPrefix}\n {' '}\n <Link\n onClick={() => {\n this.dispatch?.('address', 'click', this.payload?.from)\n }}\n sx={{ cursor: 'pointer' }}\n >\n {text}\n </Link>\n </>\n )\n }\n return `${resolvedPrefix}${text}`\n }\n\n formatAddress(address?: Address): string {\n return (address ? (this.isMedium ? address : ellipsize(address, 5)) : '')\n }\n\n formatAmountToXl1(amount?: Hex | bigint): string {\n if (isUndefined(amount)) return ''\n const amountBigInt = isHex(amount) ? hexToBigInt(amount) : amount\n const xl1Amount = XL1Amount.fromAtto(amountBigInt as AttoXL1).toString(Number(XL1Places.xl1), {\n maxDecimal: 18, maxCharacters: 19, minDecimals: 0, locale: navigator.language,\n })\n return xl1Amount\n }\n\n totalTransferred() {\n if (isUndefined(this.payload?.transfers)) return '0'\n let total = 0n\n for (const [, amount] of Object.entries(this.payload.transfers)) {\n if (isDefined(amount)) {\n total += hexToBigInt(amount)\n }\n }\n return this.formatAmountToXl1(total)\n }\n}\n","import type { TypographyProps } from '@mui/material'\nimport { Typography, useTheme } from '@mui/material'\nimport { NetworkIcon } from '@xyo-network/react-chain-network'\nimport { MainNetworkIconString } from '@xyo-network/xl1-network-model'\nimport React from 'react'\n\nimport type { TransferCardHelper } from './TransferRenderCardHelper.tsx'\n\nexport interface TransferRenderTotalTypographyProps extends TypographyProps {\n transferRenderHelper: TransferCardHelper\n}\n\nexport const TransferRenderTotalTypography: React.FC<TransferRenderTotalTypographyProps> = ({\n transferRenderHelper, sx, ...props\n}) => {\n const theme = useTheme()\n\n return (\n <Typography\n sx={{\n display: 'inline-flex', gap: theme.spacing(0.25), fontFamily: 'monospace', ...sx,\n }}\n variant=\"caption\"\n {...props}\n >\n Total:\n {' '}\n <strong>{transferRenderHelper?.totalTransferred()}</strong>\n <NetworkIcon\n icon={MainNetworkIconString}\n style={{\n width: 16, height: 16, display: 'inline-flex', alignItems: 'end',\n }}\n />\n (XL1)\n </Typography>\n )\n}\n"],"mappings":"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","names":["createPayloadRenderPlugin","TransferSchema","FlexCol","React","Card","CardContent","CardHeader","List","useMediaQuery","useTheme","asAddress","asHex","BlockiesAvatar","useEvent","asTransfer","React","useMemo","ListItem","ListItemAvatar","ListItemText","Stack","Typography","useTheme","asAddress","hexToBigInt","isDefined","BlockiesAvatar","NetworkIcon","MainNetworkIconString","React","TransferRenderListItem","address","amount","sx","transferCardHelper","props","theme","useTheme","ListItem","px","ListItemAvatar","minWidth","mr","spacing","BlockiesAvatar","title","width","height","blockiesOptions","seed","ListItemText","borderBottom","vars","palette","divider","Stack","direction","gap","justifyContent","Typography","component","fontFamily","variant","addressComponent","asAddress","isDefined","hexToBigInt","toString","display","alignItems","formatAmountToXl1","NetworkIcon","icon","MainNetworkIconString","style","Link","ellipsize","hexToBigInt","isHex","isDefined","isUndefined","XL1Places","XL1Amount","React","TransferCardHelper","_dispatch","_isMedium","_options","_payload","isMedium","payload","dispatch","options","linkedAddresses","links","has","addressComponent","address","prefix","resolvedPrefix","isDefined","text","formatAddress","React","Link","onClick","from","sx","cursor","ellipsize","formatAmountToXl1","amount","isUndefined","amountBigInt","isHex","hexToBigInt","xl1Amount","XL1Amount","fromAtto","toString","Number","XL1Places","xl1","maxDecimal","maxCharacters","minDecimals","locale","navigator","language","totalTransferred","transfers","total","Object","entries","Typography","useTheme","NetworkIcon","MainNetworkIconString","React","TransferRenderTotalTypography","transferRenderHelper","sx","props","theme","useTheme","React","Typography","display","gap","spacing","fontFamily","variant","strong","totalTransferred","NetworkIcon","icon","MainNetworkIconString","style","width","height","alignItems","TransferRenderCard","options","payload","props","theme","useTheme","isMedium","useMediaQuery","breakpoints","up","ref","dispatch","useEvent","transfer","asTransfer","from","transfers","transferCardHelper","useMemo","TransferCardHelper","React","Card","CardHeader","title","addressComponent","slotProps","variant","fontFamily","avatar","BlockiesAvatar","sx","width","height","blockiesOptions","seed","CardContent","pb","spacing","List","Object","entries","map","address","amount","index","TransferRenderListItem","key","asAddress","asHex","TransferRenderTotalTypography","transferRenderHelper","justifyContent","pt","TransferRenderBoxDetails","options","payload","props","React","FlexCol","TransferRenderCard","TransferRenderPlugin","createPayloadRenderPlugin","canRender","payload","schema","TransferSchema","components","box","detailsBox","TransferRenderBoxDetails","detailsCard","TransferRenderCard","name"]}
1
+ {"version":3,"sources":["../../../src/transfer/Plugin.ts","../../../src/transfer/box/Details.tsx","../../../src/transfer/card/TransferRenderCard.tsx","../../../src/transfer/card/ListItem.tsx","../../../src/transfer/card/TransferRenderCardHelper.tsx","../../../src/transfer/card/TransferRenderTotalTypography.tsx"],"sourcesContent":["import type { Payload } from '@xyo-network/payload-model'\nimport type { PayloadRenderPlugin } from '@xyo-network/react-payload-plugin'\nimport { createPayloadRenderPlugin } from '@xyo-network/react-payload-plugin'\nimport { TransferSchema } from '@xyo-network/xl1-protocol'\n\nimport { TransferRenderBoxDetails } from './box/index.ts'\nimport { TransferRenderCard } from './card/index.ts'\n\nexport const TransferRenderPlugin: PayloadRenderPlugin = {\n ...createPayloadRenderPlugin({\n canRender: (payload?: Payload) => payload?.schema === TransferSchema,\n components: { box: { detailsBox: TransferRenderBoxDetails, detailsCard: TransferRenderCard } },\n name: 'Transfer',\n }),\n}\n\nexport default TransferRenderPlugin\n","import type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport type { Payload } from '@xyo-network/payload-model'\nimport type { PayloadDetailsRenderProps } from '@xyo-network/react-payload-plugin'\nimport React from 'react'\n\nimport { TransferRenderCard } from '../card/index.ts'\nimport type { TransferRenderOptions } from '../lib/index.ts'\n\nexport interface TransferRenderBoxDetailsProps extends PayloadDetailsRenderProps, FlexBoxProps {\n options?: TransferRenderOptions\n payload?: Payload\n}\n\nexport const TransferRenderBoxDetails: React.FC<TransferRenderBoxDetailsProps> = ({\n options,\n payload,\n ...props\n}) => {\n return (\n <FlexCol {...props}>\n <TransferRenderCard\n options={options}\n payload={payload}\n />\n </FlexCol>\n )\n}\n","import type { CardProps } from '@mui/material'\nimport {\n Card, CardContent, CardHeader, List, useMediaQuery, useTheme,\n} from '@mui/material'\nimport { asAddress, asHex } from '@xylabs/hex'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { BlockiesAvatar } from '@xyo-network/react-chain-blockies'\nimport { useEvent } from '@xyo-network/react-event'\nimport type { PayloadDetailsRenderProps } from '@xyo-network/react-payload-plugin'\nimport { asTransfer } from '@xyo-network/xl1-protocol'\nimport React, { useMemo } from 'react'\n\nimport type { TransferRenderOptions } from '../lib/index.ts'\nimport { TransferRenderListItem } from './ListItem.tsx'\nimport { TransferCardHelper } from './TransferRenderCardHelper.tsx'\nimport { TransferRenderTotalTypography } from './TransferRenderTotalTypography.tsx'\n\nexport interface TransferRenderCardProps extends PayloadDetailsRenderProps, CardProps {\n options?: TransferRenderOptions\n payload?: Payload\n}\n\nexport const TransferRenderCard: React.FC<TransferRenderCardProps> = ({\n options, payload, ...props\n}) => {\n const theme = useTheme()\n const isMedium = useMediaQuery(theme => theme.breakpoints.up('sm'))\n const [ref, dispatch] = useEvent<HTMLDivElement>()\n const transfer = asTransfer(payload)\n const { from, transfers } = transfer ?? {}\n\n const transferCardHelper = useMemo(\n () =>\n new TransferCardHelper(isMedium, asTransfer(payload), dispatch, options),\n [isMedium, payload, dispatch, options],\n )\n\n return (\n <Card ref={ref} {...props}>\n <CardHeader\n title={transferCardHelper.addressComponent(from, 'From')}\n slotProps={{\n title: {\n title: from, variant: 'body1', fontFamily: 'monospace',\n },\n }}\n avatar={<BlockiesAvatar sx={{ width: 30, height: 30 }} title={from} blockiesOptions={{ seed: from }} />}\n />\n <CardContent sx={{ '&:last-child': { pb: theme.spacing(0) } }}>\n <List>\n {Object.entries(transfers ?? {}).map(([address, amount], index) => (\n <TransferRenderListItem\n key={address}\n address={asAddress(address)}\n amount={asHex(amount)}\n transferCardHelper={transferCardHelper}\n />\n ))}\n </List>\n <TransferRenderTotalTypography\n transferRenderHelper={transferCardHelper}\n sx={{\n // pt matches bottom padding of the ListItem\n width: '100%', justifyContent: 'end', pt: 0.666_666_666_7, pb: theme.spacing(2),\n }}\n />\n </CardContent>\n </Card>\n )\n}\n","import {\n ListItem, ListItemAvatar, type ListItemProps, ListItemText, Stack, Typography,\n useTheme,\n} from '@mui/material'\nimport type { Address, Hex } from '@xylabs/hex'\nimport { asAddress, hexToBigInt } from '@xylabs/hex'\nimport { isDefined } from '@xylabs/typeof'\nimport { BlockiesAvatar } from '@xyo-network/react-chain-blockies'\nimport { NetworkIcon } from '@xyo-network/react-chain-network'\nimport { MainNetworkIconString } from '@xyo-network/xl1-network-model'\nimport React from 'react'\n\nimport type { TransferCardHelper } from './TransferRenderCardHelper.tsx'\n\nexport interface TransferRenderListItem extends ListItemProps {\n address?: Address\n amount?: Hex\n transferCardHelper: TransferCardHelper\n}\n\nexport const TransferRenderListItem: React.FC<TransferRenderListItem> = ({\n address, amount, sx, transferCardHelper, ...props\n}) => {\n const theme = useTheme()\n return (\n <ListItem sx={{ px: 0, ...sx }} {...props}>\n <ListItemAvatar sx={{ minWidth: 30, mr: theme.spacing(2) }}>\n <BlockiesAvatar title={address} sx={{ width: 30, height: 30 }} blockiesOptions={{ seed: address }} />\n </ListItemAvatar>\n <ListItemText sx={{ borderBottom: `1px solid ${theme.vars.palette.divider}` }}>\n <Stack direction=\"row\" gap={2} justifyContent=\"space-between\" width=\"100%\">\n <Typography component=\"span\" fontFamily=\"monospace\" variant=\"caption\">\n {transferCardHelper.addressComponent(asAddress(address), 'To')}\n </Typography>\n <Typography\n component=\"span\"\n fontFamily=\"monospace\"\n variant=\"caption\"\n title={isDefined(amount) ? hexToBigInt(amount).toString() : ''}\n sx={{\n display: 'inline-flex', alignItems: 'center', gap: theme.spacing(0.25),\n }}\n >\n {transferCardHelper.formatAmountToXl1(amount)}\n <NetworkIcon\n icon={MainNetworkIconString}\n style={{\n width: 16, height: 16, display: 'inline-flex', alignItems: 'end',\n }}\n />\n (XL1)\n </Typography>\n </Stack>\n </ListItemText>\n </ListItem>\n )\n}\n","import { Link } from '@mui/material'\nimport { ellipsize } from '@xylabs/eth-address'\nimport type { Address, Hex } from '@xylabs/hex'\nimport { hexToBigInt, isHex } from '@xylabs/hex'\nimport { isDefined, isUndefined } from '@xylabs/typeof'\nimport type { EventDispatch } from '@xyo-network/react-event'\nimport {\n type AttoXL1, type Transfer, XL1Places,\n} from '@xyo-network/xl1-protocol'\nimport { XL1Amount } from '@xyo-network/xl1-protocol'\nimport type { ReactNode } from 'react'\nimport React from 'react'\n\nimport type { TransferRenderOptions } from '../lib/index.ts'\n\nexport class TransferCardHelper {\n private _dispatch: EventDispatch | undefined\n private _isMedium: boolean\n private _options: TransferRenderOptions | undefined\n private _payload: Transfer | undefined\n\n constructor(\n isMedium: boolean,\n payload?: Transfer,\n dispatch?: EventDispatch,\n options?: TransferRenderOptions,\n ) {\n this._isMedium = isMedium\n this._options = options\n this._payload = payload\n this._dispatch = dispatch\n }\n\n get dispatch() {\n return this._dispatch\n }\n\n get isMedium() {\n return this._isMedium\n }\n\n get linkedAddresses() {\n return this.options?.links?.has('address')\n }\n\n get options() {\n return this._options\n }\n\n get payload() {\n return this._payload\n }\n\n addressComponent(address?: Address, prefix?: string): ReactNode {\n const resolvedPrefix = isDefined(prefix) ? `${prefix}: ` : ''\n const text = `${this.formatAddress(address) ?? 'Unknown'}`\n if (this.options?.links?.has('address')) {\n return (\n <>\n {resolvedPrefix}\n {' '}\n <Link\n onClick={() => {\n this.dispatch?.('address', 'click', address)\n }}\n sx={{ cursor: 'pointer' }}\n >\n {text}\n </Link>\n </>\n )\n }\n return `${resolvedPrefix}${text}`\n }\n\n formatAddress(address?: Address): string {\n return (address ? (this.isMedium ? address : ellipsize(address, 5)) : '')\n }\n\n formatAmountToXl1(amount?: Hex | bigint): string {\n if (isUndefined(amount)) return ''\n const amountBigInt = isHex(amount) ? hexToBigInt(amount) : amount\n const xl1Amount = XL1Amount.fromAtto(amountBigInt as AttoXL1).toString(Number(XL1Places.xl1), {\n maxDecimal: 18, maxCharacters: 19, minDecimals: 0, locale: navigator.language,\n })\n return xl1Amount\n }\n\n totalTransferred() {\n if (isUndefined(this.payload?.transfers)) return '0'\n let total = 0n\n for (const [, amount] of Object.entries(this.payload.transfers)) {\n if (isDefined(amount)) {\n total += hexToBigInt(amount)\n }\n }\n return this.formatAmountToXl1(total)\n }\n}\n","import type { TypographyProps } from '@mui/material'\nimport { Typography, useTheme } from '@mui/material'\nimport { NetworkIcon } from '@xyo-network/react-chain-network'\nimport { MainNetworkIconString } from '@xyo-network/xl1-network-model'\nimport React from 'react'\n\nimport type { TransferCardHelper } from './TransferRenderCardHelper.tsx'\n\nexport interface TransferRenderTotalTypographyProps extends TypographyProps {\n transferRenderHelper: TransferCardHelper\n}\n\nexport const TransferRenderTotalTypography: React.FC<TransferRenderTotalTypographyProps> = ({\n transferRenderHelper, sx, ...props\n}) => {\n const theme = useTheme()\n\n return (\n <Typography\n sx={{\n display: 'inline-flex', gap: theme.spacing(0.25), fontFamily: 'monospace', ...sx,\n }}\n variant=\"caption\"\n {...props}\n >\n Total:\n {' '}\n <strong>{transferRenderHelper?.totalTransferred()}</strong>\n <NetworkIcon\n icon={MainNetworkIconString}\n style={{\n width: 16, height: 16, display: 'inline-flex', alignItems: 'end',\n }}\n />\n (XL1)\n </Typography>\n )\n}\n"],"mappings":"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","names":["createPayloadRenderPlugin","TransferSchema","FlexCol","React","Card","CardContent","CardHeader","List","useMediaQuery","useTheme","asAddress","asHex","BlockiesAvatar","useEvent","asTransfer","React","useMemo","ListItem","ListItemAvatar","ListItemText","Stack","Typography","useTheme","asAddress","hexToBigInt","isDefined","BlockiesAvatar","NetworkIcon","MainNetworkIconString","React","TransferRenderListItem","address","amount","sx","transferCardHelper","props","theme","useTheme","ListItem","px","ListItemAvatar","minWidth","mr","spacing","BlockiesAvatar","title","width","height","blockiesOptions","seed","ListItemText","borderBottom","vars","palette","divider","Stack","direction","gap","justifyContent","Typography","component","fontFamily","variant","addressComponent","asAddress","isDefined","hexToBigInt","toString","display","alignItems","formatAmountToXl1","NetworkIcon","icon","MainNetworkIconString","style","Link","ellipsize","hexToBigInt","isHex","isDefined","isUndefined","XL1Places","XL1Amount","React","TransferCardHelper","_dispatch","_isMedium","_options","_payload","isMedium","payload","dispatch","options","linkedAddresses","links","has","addressComponent","address","prefix","resolvedPrefix","isDefined","text","formatAddress","React","Link","onClick","sx","cursor","ellipsize","formatAmountToXl1","amount","isUndefined","amountBigInt","isHex","hexToBigInt","xl1Amount","XL1Amount","fromAtto","toString","Number","XL1Places","xl1","maxDecimal","maxCharacters","minDecimals","locale","navigator","language","totalTransferred","transfers","total","Object","entries","Typography","useTheme","NetworkIcon","MainNetworkIconString","React","TransferRenderTotalTypography","transferRenderHelper","sx","props","theme","useTheme","React","Typography","display","gap","spacing","fontFamily","variant","strong","totalTransferred","NetworkIcon","icon","MainNetworkIconString","style","width","height","alignItems","TransferRenderCard","options","payload","props","theme","useTheme","isMedium","useMediaQuery","breakpoints","up","ref","dispatch","useEvent","transfer","asTransfer","from","transfers","transferCardHelper","useMemo","TransferCardHelper","React","Card","CardHeader","title","addressComponent","slotProps","variant","fontFamily","avatar","BlockiesAvatar","sx","width","height","blockiesOptions","seed","CardContent","pb","spacing","List","Object","entries","map","address","amount","index","TransferRenderListItem","key","asAddress","asHex","TransferRenderTotalTypography","transferRenderHelper","justifyContent","pt","TransferRenderBoxDetails","options","payload","props","React","FlexCol","TransferRenderCard","TransferRenderPlugin","createPayloadRenderPlugin","canRender","payload","schema","TransferSchema","components","box","detailsBox","TransferRenderBoxDetails","detailsCard","TransferRenderCard","name"]}
@@ -1,8 +1,8 @@
1
1
  import type { Meta } from '@storybook/react-vite';
2
2
  declare const _default: Meta;
3
3
  export default _default;
4
- declare const Default: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, import("./Details.tsx").TransferRenderBoxDetailsProps>;
5
- declare const WithValue: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, import("./Details.tsx").TransferRenderBoxDetailsProps>;
6
- declare const WithOptions: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, import("./Details.tsx").TransferRenderBoxDetailsProps>;
4
+ declare const Default: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, import("./Details.tsx").TransferRenderBoxDetailsProps>;
5
+ declare const WithValue: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, import("./Details.tsx").TransferRenderBoxDetailsProps>;
6
+ declare const WithOptions: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, import("./Details.tsx").TransferRenderBoxDetailsProps>;
7
7
  export { Default, WithOptions, WithValue, };
8
8
  //# sourceMappingURL=Details.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Details.stories.d.ts","sourceRoot":"","sources":["../../../../src/transfer/box/Details.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAW,MAAM,uBAAuB,CAAA;wBA2BrD,IAAI;AAHT,wBAGS;AAaT,QAAA,MAAM,OAAO,yJAAoB,CAAA;AAGjC,QAAA,MAAM,SAAS,yJAAoB,CAAA;AAGnC,QAAA,MAAM,WAAW,yJAAoB,CAAA;AAGrC,OAAO,EACL,OAAO,EAAE,WAAW,EAAE,SAAS,GAChC,CAAA"}
1
+ {"version":3,"file":"Details.stories.d.ts","sourceRoot":"","sources":["../../../../src/transfer/box/Details.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAW,MAAM,uBAAuB,CAAA;wBA2BrD,IAAI;AAHT,wBAGS;AAaT,QAAA,MAAM,OAAO,oJAAoB,CAAA;AAGjC,QAAA,MAAM,SAAS,oJAAoB,CAAA;AAGnC,QAAA,MAAM,WAAW,oJAAoB,CAAA;AAGrC,OAAO,EACL,OAAO,EAAE,WAAW,EAAE,SAAS,GAChC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"TransferRenderCard.d.ts","sourceRoot":"","sources":["../../../../src/transfer/card/TransferRenderCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAK9C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAGzD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAElF,OAAO,KAAkB,MAAM,OAAO,CAAA;AAEtC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAK5D,MAAM,WAAW,uBAAwB,SAAQ,yBAAyB,EAAE,SAAS;IACnF,OAAO,CAAC,EAAE,qBAAqB,CAAA;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAgDhE,CAAA"}
1
+ {"version":3,"file":"TransferRenderCard.d.ts","sourceRoot":"","sources":["../../../../src/transfer/card/TransferRenderCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAK9C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAGzD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAElF,OAAO,KAAkB,MAAM,OAAO,CAAA;AAEtC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAK5D,MAAM,WAAW,uBAAwB,SAAQ,yBAAyB,EAAE,SAAS;IACnF,OAAO,CAAC,EAAE,qBAAqB,CAAA;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA+ChE,CAAA"}
@@ -1,8 +1,8 @@
1
1
  import type { Meta } from '@storybook/react-vite';
2
2
  declare const _default: Meta;
3
3
  export default _default;
4
- declare const Default: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, import("./TransferRenderCard.tsx").TransferRenderCardProps>;
5
- declare const WithValue: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, import("./TransferRenderCard.tsx").TransferRenderCardProps>;
6
- declare const WithOptions: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, import("./TransferRenderCard.tsx").TransferRenderCardProps>;
4
+ declare const Default: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, import("./TransferRenderCard.tsx").TransferRenderCardProps>;
5
+ declare const WithValue: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, import("./TransferRenderCard.tsx").TransferRenderCardProps>;
6
+ declare const WithOptions: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, import("./TransferRenderCard.tsx").TransferRenderCardProps>;
7
7
  export { Default, WithOptions, WithValue, };
8
8
  //# sourceMappingURL=TransferRenderCard.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TransferRenderCard.stories.d.ts","sourceRoot":"","sources":["../../../../src/transfer/card/TransferRenderCard.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAW,MAAM,uBAAuB,CAAA;wBA6BrD,IAAI;AAHT,wBAGS;AAaT,QAAA,MAAM,OAAO,8JAAoB,CAAA;AAGjC,QAAA,MAAM,SAAS,8JAAoB,CAAA;AAGnC,QAAA,MAAM,WAAW,8JAAoB,CAAA;AAGrC,OAAO,EACL,OAAO,EAAE,WAAW,EAAE,SAAS,GAChC,CAAA"}
1
+ {"version":3,"file":"TransferRenderCard.stories.d.ts","sourceRoot":"","sources":["../../../../src/transfer/card/TransferRenderCard.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAW,MAAM,uBAAuB,CAAA;wBA6BrD,IAAI;AAHT,wBAGS;AAaT,QAAA,MAAM,OAAO,yJAAoB,CAAA;AAGjC,QAAA,MAAM,SAAS,yJAAoB,CAAA;AAGnC,QAAA,MAAM,WAAW,yJAAoB,CAAA;AAGrC,OAAO,EACL,OAAO,EAAE,WAAW,EAAE,SAAS,GAChC,CAAA"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "http://json.schemastore.org/package.json",
3
3
  "name": "@xyo-network/react-chain-transfer-plugin",
4
- "version": "1.15.27",
4
+ "version": "1.15.28",
5
5
  "description": "XYO Layer One API",
6
6
  "homepage": "https://xylabs.com",
7
7
  "bugs": {
@@ -46,28 +46,28 @@
46
46
  "src"
47
47
  ],
48
48
  "dependencies": {
49
- "@mui/material": "~7.3.4",
50
- "@xylabs/eth-address": "~5.0.17",
51
- "@xylabs/hex": "~5.0.17",
49
+ "@mui/material": "~7.3.5",
50
+ "@xylabs/eth-address": "~5.0.18",
51
+ "@xylabs/hex": "~5.0.18",
52
52
  "@xylabs/react-flexbox": "~7.1.8",
53
- "@xylabs/typeof": "~5.0.17",
54
- "@xyo-network/react-chain-blockies": "~1.15.27",
55
- "@xyo-network/react-chain-network": "~1.15.27",
53
+ "@xylabs/typeof": "~5.0.18",
54
+ "@xyo-network/react-chain-blockies": "~1.15.28",
55
+ "@xyo-network/react-chain-network": "~1.15.28",
56
56
  "@xyo-network/react-event": "~7.3.8",
57
57
  "@xyo-network/react-payload-plugin": "~7.3.8",
58
- "@xyo-network/xl1-network-model": "~1.15.27",
59
- "@xyo-network/xl1-protocol": "~1.12.95"
58
+ "@xyo-network/xl1-network-model": "~1.15.28",
59
+ "@xyo-network/xl1-protocol": "~1.12.102"
60
60
  },
61
61
  "devDependencies": {
62
62
  "@emotion/react": "~11.14.0",
63
63
  "@emotion/styled": "~11.14.1",
64
- "@storybook/react-vite": "~9.1.16",
64
+ "@storybook/react-vite": "~10.0.5",
65
65
  "@types/react": "~19.2.2",
66
- "@xylabs/ts-scripts-yarn3": "~7.1.8",
67
- "@xylabs/tsconfig": "~7.1.8",
68
- "@xylabs/tsconfig-dom": "~7.1.8",
69
- "@xylabs/tsconfig-react": "~7.1.8",
70
- "@xyo-network/payload-model": "~5.1.15",
66
+ "@xylabs/ts-scripts-yarn3": "~7.2.4",
67
+ "@xylabs/tsconfig": "~7.2.4",
68
+ "@xylabs/tsconfig-dom": "~7.2.4",
69
+ "@xylabs/tsconfig-react": "~7.2.4",
70
+ "@xyo-network/payload-model": "~5.1.17",
71
71
  "typescript": "~5.9.3"
72
72
  },
73
73
  "peerDependencies": {
@@ -50,8 +50,7 @@ export const TransferRenderCard: React.FC<TransferRenderCardProps> = ({
50
50
  <List>
51
51
  {Object.entries(transfers ?? {}).map(([address, amount], index) => (
52
52
  <TransferRenderListItem
53
- // eslint-disable-next-line @eslint-react/no-array-index-key
54
- key={index}
53
+ key={address}
55
54
  address={asAddress(address)}
56
55
  amount={asHex(amount)}
57
56
  transferCardHelper={transferCardHelper}
@@ -61,7 +61,7 @@ export class TransferCardHelper {
61
61
  {' '}
62
62
  <Link
63
63
  onClick={() => {
64
- this.dispatch?.('address', 'click', this.payload?.from)
64
+ this.dispatch?.('address', 'click', address)
65
65
  }}
66
66
  sx={{ cursor: 'pointer' }}
67
67
  >