'use client'; import { useVisualization } from '@/lib/visualizations/use-visualization'; import type { AlgorithmDefinition } from '@/lib/visualizations/types'; import { VisualizationContainer } from '../core/visualization-container'; import { BinaryTreeView } from '../data-structures/binary-tree-view'; import { QueueView } from '../data-structures/queue-view'; import { ArrayView } from '../data-structures/array-view'; interface BFSVisualizationProps { algorithm: AlgorithmDefinition; className?: string; } export function BFSVisualization({ algorithm, className, }: BFSVisualizationProps) { const { currentStep, currentStepIndex, totalSteps, playback, controls, currentPhase, progress, } = useVisualization(algorithm); const { dataState } = currentStep; const tree = dataState.trees?.[0] ?? null; const bfsQueue = dataState.queues?.[0] ?? null; const outputArray = dataState.arrays?.[0] ?? null; // Find the current node ID based on node states const currentNodeId = tree?.nodes.find((n) => n.state === 'current')?.id; return (
{/* Top: Binary tree */} {tree && ( )} {/* Bottom: Queue + Output */}
{/* BFS Queue */} {bfsQueue && ( )} {/* Output array */} {outputArray && ( )}
); }