-
Notifications
You must be signed in to change notification settings - Fork 73
Expand file tree
/
Copy pathConfigPanel.tsx
More file actions
103 lines (96 loc) Β· 2.59 KB
/
Copy pathConfigPanel.tsx
File metadata and controls
103 lines (96 loc) Β· 2.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
import React from 'react';
import { ArrayVisualization } from '../../sortingVisualizer/components/ArrayVisualization';
import StepExplanationPanel from '../../sortingVisualizer/components/StepExplanationPanel';
import {
AlgorithmSelector,
ComplexityInfo,
ArraySizeControl,
SpeedControl,
ControlButtons,
} from '../config';
import type { ConfigPanelProps } from '../config';
const ConfigPanel = ({
algorithm,
setAlgorithm,
arraySize,
setArraySize,
speed,
setSpeed,
isSorting,
isPaused,
getAlgorithmTimeComplexity,
array,
currentBar,
currentTestingAlgo,
isStopped,
generateNewArray,
startSorting,
pauseSorting,
resumeSorting,
audio,
}: ConfigPanelProps) => {
return (
<div className="space-y-6">
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
{/* Algorithm Selection */}
<AlgorithmSelector
algorithm={algorithm}
setAlgorithm={setAlgorithm}
isSorting={isSorting}
audio={audio}
/>
{/* Algorithm Complexity Information */}
<ComplexityInfo
getAlgorithmTimeComplexity={getAlgorithmTimeComplexity}
/>
{/* Array Size Control */}
<ArraySizeControl
arraySize={arraySize}
setArraySize={setArraySize}
isSorting={isSorting}
/>
{/* Animation Speed Control */}
<SpeedControl
speed={speed}
setSpeed={setSpeed}
isSorting={isSorting}
audio={audio}
/>
</div>
{/* Control Buttons */}
<ControlButtons
generateNewArray={generateNewArray}
startSorting={startSorting}
pauseSorting={pauseSorting}
resumeSorting={resumeSorting}
isSorting={isSorting}
isPaused={isPaused}
/>
{/* Add the array visualization */}
{array && (
<div className="grid grid-cols-1 xl:grid-cols-[minmax(0,1fr)_18rem] gap-4 items-stretch">
<ArrayVisualization
algorithm={algorithm}
array={array}
currentBar={currentBar}
isSorting={isSorting}
isPaused={isPaused}
currentTestingAlgo={currentTestingAlgo}
isStopped={isStopped}
height="h-100"
/>
<StepExplanationPanel
algorithm={algorithm}
array={array}
currentBar={currentBar}
isSorting={isSorting}
isPaused={isPaused}
currentTestingAlgo={currentTestingAlgo}
isStopped={isStopped}
/>
</div>
)}
</div>
);
};
export default ConfigPanel;