Skip to content

Commit 9564475

Browse files
committed
refactor: ControlPanel使用自定义SpeedSelector替换原生select
1 parent ec0f809 commit 9564475

File tree

2 files changed

+3
-56
lines changed

2 files changed

+3
-56
lines changed

src/components/ControlPanel.module.css

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -65,41 +65,6 @@
6565
text-align: center;
6666
}
6767

68-
.rateSelector {
69-
display: flex;
70-
align-items: center;
71-
gap: 6px;
72-
margin-left: 12px;
73-
padding-left: 12px;
74-
border-left: 1px solid #3d3d5c;
75-
}
76-
77-
.rateLabel {
78-
color: #888;
79-
font-size: 0.875rem;
80-
}
81-
82-
.rateSelect {
83-
padding: 6px 10px;
84-
background: #2d2d44;
85-
color: #ccc;
86-
border: 1px solid #3d3d5c;
87-
border-radius: 4px;
88-
font-size: 0.875rem;
89-
cursor: pointer;
90-
transition: all 0.2s;
91-
}
92-
93-
.rateSelect:hover {
94-
background: #3d3d5c;
95-
color: #fff;
96-
}
97-
98-
.rateSelect:focus {
99-
outline: none;
100-
border-color: #4caf50;
101-
}
102-
10368
.progressContainer {
10469
cursor: pointer;
10570
padding: 8px 0;

src/components/ControlPanel.tsx

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { PLAYBACK_RATES } from '../hooks/useAlgorithmPlayer'
2-
import type { ControlPanelProps, PlaybackRate } from '../types'
1+
import type { ControlPanelProps } from '../types'
2+
import { SpeedSelector } from './SpeedSelector'
33
import styles from './ControlPanel.module.css'
44

55
export function ControlPanel({
@@ -25,11 +25,6 @@ export function ControlPanel({
2525
onSeek(step)
2626
}
2727

28-
const handleRateChange = (e: React.ChangeEvent<HTMLSelectElement>) => {
29-
const rate = parseFloat(e.target.value) as PlaybackRate
30-
onPlaybackRateChange(rate)
31-
}
32-
3328
return (
3429
<div className={styles.container}>
3530
<div className={styles.controls}>
@@ -84,20 +79,7 @@ export function ControlPanel({
8479
{currentStep + 1} / {totalSteps}
8580
</span>
8681

87-
<div className={styles.rateSelector}>
88-
<label className={styles.rateLabel}>速率:</label>
89-
<select
90-
className={styles.rateSelect}
91-
value={playbackRate}
92-
onChange={handleRateChange}
93-
>
94-
{PLAYBACK_RATES.map((rate) => (
95-
<option key={rate} value={rate}>
96-
{rate}x
97-
</option>
98-
))}
99-
</select>
100-
</div>
82+
<SpeedSelector value={playbackRate} onChange={onPlaybackRateChange} />
10183
</div>
10284

10385
<div className={styles.progressContainer} onClick={handleProgressClick}>

0 commit comments

Comments
 (0)