import type {Organization} from 'sentry/types/organization'; import type {ReplayRecord} from 'sentry/views/replays/types'; import { isMissingInstrumentationNode, isParentAutogroupedNode, isSiblingAutogroupedNode, isSpanNode, isTraceErrorNode, isTransactionNode, } from '../../traceGuards'; import type {TraceTree} from '../../traceModels/traceTree'; import type {TraceTreeNode} from '../../traceModels/traceTreeNode'; import type {VirtualizedViewManager} from '../../traceRenderers/virtualizedViewManager'; import {ErrorNodeDetails} from '../details/error'; import {MissingInstrumentationNodeDetails} from '../details/missingInstrumentation'; import {ParentAutogroupNodeDetails} from '../details/parentAutogroup'; import {SiblingAutogroupNodeDetails} from '../details/siblingAutogroup'; import {SpanNodeDetails} from '../details/span/index'; import {TransactionNodeDetails} from '../details/transaction/index'; export interface TraceTreeNodeDetailsProps { manager: VirtualizedViewManager; node: T; onParentClick: (node: TraceTreeNode) => void; onTabScrollToNode: (node: TraceTreeNode) => void; organization: Organization; replay: ReplayRecord | null; } export function TraceTreeNodeDetails(props: TraceTreeNodeDetailsProps) { if (isTransactionNode(props.node)) { return ; } if (isSpanNode(props.node)) { return ; } if (isTraceErrorNode(props.node)) { return ; } if (isParentAutogroupedNode(props.node)) { return ; } if (isSiblingAutogroupedNode(props.node)) { return ; } if (isMissingInstrumentationNode(props.node)) { return ; } throw new Error('Unknown clicked node type'); }