diff --git a/frontend/src/components/visualizations-new/algorithms/bit-manipulation.tsx b/frontend/src/components/visualizations-new/algorithms/bit-manipulation.tsx new file mode 100644 index 0000000..4d76a87 --- /dev/null +++ b/frontend/src/components/visualizations-new/algorithms/bit-manipulation.tsx @@ -0,0 +1,72 @@ +'use client'; + +import { useVisualization } from '@/lib/visualizations/use-visualization'; +import type { AlgorithmDefinition } from '@/lib/visualizations/types'; +import { VisualizationContainer } from '../core/visualization-container'; +import { BitManipulationView } from '../data-structures/bit-manipulation-view'; +import { ArrayView } from '../data-structures/array-view'; + +interface BitManipulationVisualizationProps { + algorithm: AlgorithmDefinition; + className?: string; +} + +export function BitManipulationVisualization({ + algorithm, + className, +}: BitManipulationVisualizationProps) { + const { + currentStep, + currentStepIndex, + totalSteps, + playback, + controls, + currentPhase, + progress, + } = useVisualization(algorithm); + + const { dataState } = currentStep; + const bitManipulation = dataState.bitManipulation?.[0] ?? null; + const array = dataState.arrays?.[0] ?? null; + const pointers = dataState.pointers ?? []; + + return ( + +
+ {/* Array view with current element pointer */} + {array && ( + + )} + + {/* Bit manipulation operation view */} + {bitManipulation && ( + + )} +
+
+ ); +}