/
vshmidt
/
label-studio
Обзор
Документация
Войти
/
vshmidt
/
label-studio
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
web/libs/editor/src/components/Timeline/SideControls/VolumeControl.tsx
35 строк
1 KB
bmartel
chore: FIT-339: Remove feature flags ff_front_dev_2715_audio_3_280722_short,ff_front_DEV_1713_audio_ui_150222_short (#7917)
05 июл 2025, 06:03
Не верифицирован
05 июл 2025, 06:03
b5f7923
Код
Авторство
О чём код?
import { type CSSProperties, type FC, useMemo, useRef } from "react"; import { IconVolumeFull, IconVolumeHalf, IconVolumeMute } from "@humansignal/icons"; import { Range } from "../../../common/Range/Range"; import { WS_VOLUME } from "../../../tags/object/Audio/constants"; import type { TimelineSideControlProps } from "../Types"; export const AudioVolumeControl: FC<TimelineSideControlProps> = ({ volume = 0.5, onVolumeChange }) => { const storedVolume = useRef(volume); const style: CSSProperties = { color: "#99A0AE" }; const icon = useMemo(() => { if (volume > 0.5) return <IconVolumeFull style={style} />; if (volume > 0) return <IconVolumeHalf style={style} />; return <IconVolumeMute style={style} />; }, [volume]); return ( <Range continuous min={WS_VOLUME.min} max={WS_VOLUME.max} step={WS_VOLUME.step} value={volume} minIcon={icon} onChange={(volume) => onVolumeChange?.(Number(volume))} onMinIconClick={() => { if (volume === 0) { onVolumeChange?.(storedVolume.current); } else { storedVolume.current = volume; onVolumeChange?.(0); } }} /> ); };