import React, { useState } from "react"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faPlusSquare } from "@fortawesome/free-regular-svg-icons/faPlusSquare"; import { faMinusSquare } from "@fortawesome/free-regular-svg-icons/faMinusSquare"; import { Switch } from "@headlessui/react"; import AddressHighlighter from "../components/AddressHighlighter"; import DecoratedAddressLink from "../components/DecoratedAddressLink"; import FormattedBalance from "../components/FormattedBalance"; import FunctionSignature from "./FunctionSignature"; import { TransactionData } from "../types"; import { extract4Bytes, FourBytesEntry } from "../use4Bytes"; import { TraceGroup } from "../useErigonHooks"; import { ResolvedAddresses } from "../api/address-resolver"; type TraceItemProps = { t: TraceGroup; txData: TransactionData; last: boolean; fourBytesMap: Record; resolvedAddresses: ResolvedAddresses | undefined; }; const TraceItem: React.FC = ({ t, txData, last, fourBytesMap, resolvedAddresses, }) => { const [expanded, setExpanded] = useState(true); const raw4Bytes = extract4Bytes(t.input); const sigText = raw4Bytes === null ? "" : fourBytesMap[raw4Bytes]?.name ?? raw4Bytes; return ( <>
{!last && (
)} {t.children && ( )}
{t.type} . {t.value && !t.value.isZero() && ( {"{"}value: ETH{"}"} )} ({t.input.length > 10 && <>input=[0x{t.input.slice(10)}]})
{expanded && t.children && (
{t.children.map((tc, i, a) => ( ))}
)} ); }; export default TraceItem;