'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 { StackView } from '../data-structures/stack-view'; import { ArrayView } from '../data-structures/array-view'; interface DFSVisualizationProps { algorithm: AlgorithmDefinition; className?: string; } export function DFSVisualization({ algorithm, className, }: DFSVisualizationProps) { const { currentStep, currentStepIndex, totalSteps, playback, controls, currentPhase, progress, } = useVisualization(algorithm); const { dataState } = currentStep; const tree = dataState.trees?.[0] ?? null; const dfsStack = dataState.stacks?.[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 (
{/* Left: Binary tree */} {tree && ( )} {/* Right side: Stack + Output */}
{/* DFS Stack */} {dfsStack && ( )} {/* Output array */} {outputArray && ( )}
); }