import {useMemo} from 'react'; import Placeholder from 'sentry/components/placeholder'; import {useReplayContext} from 'sentry/components/replays/replayContext'; import type {RawCrumb} from 'sentry/types/breadcrumbs'; import {isBreadcrumbTypeDefault} from 'sentry/types/breadcrumbs'; import useActiveReplayTab from 'sentry/utils/replays/hooks/useActiveReplayTab'; import useOrganization from 'sentry/utils/useOrganization'; import Console from './console'; import DomMutations from './domMutations'; import IssueList from './issueList'; import MemoryChart from './memoryChart'; import NetworkList from './networkList'; import Trace from './trace'; type Props = {}; function getBreadcrumbsByCategory(breadcrumbs: RawCrumb[], categories: string[]) { return breadcrumbs .filter(isBreadcrumbTypeDefault) .filter(breadcrumb => categories.includes(breadcrumb.category || '')); } function FocusArea({}: Props) { const {getActiveTab} = useActiveReplayTab(); const {currentTime, currentHoverTime, replay, setCurrentTime, setCurrentHoverTime} = useReplayContext(); const organization = useOrganization(); // Memoize this because re-renders will interfere with the mouse state of the // chart (e.g. on mouse over and out) const memorySpans = useMemo(() => { return replay?.getRawSpans().filter(replay.isMemorySpan); }, [replay]); if (!replay || !memorySpans) { return ; } const event = replay.getEvent(); const getNetworkSpans = () => { return replay.getRawSpans().filter(replay.isNotMemorySpan); }; switch (getActiveTab()) { case 'console': const consoleMessages = getBreadcrumbsByCategory(replay?.getRawCrumbs(), [ 'console', 'exception', ]); return ( ); case 'network': return ; case 'trace': return ; case 'issues': return ; case 'dom': return ; case 'memory': return ( ); default: return null; } } export default FocusArea;