@@ -2,6 +2,8 @@ import React, {Fragment, useState} from 'react';
22import WavesurferPlayer from '@wavesurfer/react' ;
33import RegionsPlugin from 'wavesurfer.js/dist/plugins/regions.js' ;
44import FileDetails from '../../admin/FileDetails' ;
5+ import { useAudioSettings } from '../../common/Storage' ;
6+ import DropDownMenu from '../../common/DropDownMenu' ;
57import PauseIcon from '../../icons/pause.svg' ;
68import PlayIcon from '../../icons/play.svg' ;
79
@@ -14,6 +16,7 @@ export default function Audio(props) {
1416 } ;
1517 const [ wavesurfer , setWavesurfer ] = useState ( null ) ;
1618 const [ isPlaying , setIsPlaying ] = useState ( false ) ;
19+ const [ audioSettings , setAudioSettings ] = useAudioSettings ( ) ;
1720
1821 const onReady = ( ws ) => {
1922 document . getElementById ( 'wavesurfer-initializing' ) ?. remove ( ) ;
@@ -42,11 +45,23 @@ export default function Audio(props) {
4245 wavesurfer && wavesurfer . playPause ( ) ;
4346 } ;
4447
48+ function setVolume ( event ) {
49+ const volume = parseFloat ( event . target . value ) ;
50+ setAudioSettings ( { volume : volume } ) ;
51+ wavesurfer && wavesurfer . setVolume ( volume ) ;
52+ }
53+
4554 const controlButtons = [
4655 < Fragment key = "play-pause" > { isPlaying ?
4756 < button type = "button" onClick = { onPlayPause } > < PauseIcon /> { gettext ( "Pause" ) } </ button > :
4857 < button type = "button" onClick = { onPlayPause } > < PlayIcon /> { gettext ( "Play" ) } </ button >
49- } </ Fragment >
58+ } </ Fragment > ,
59+ < DropDownMenu key = "volume-control" className = "volume-control with-caret" label = { gettext ( "Set Volume" ) } >
60+ < li >
61+ < label htmlFor = "volume_level" > { gettext ( "Volume level" ) } :</ label >
62+ < input name = "volume_level" type = "range" min = "0.0" max = "1.0" step = "0.001" value = { audioSettings . volume } onChange = { setVolume } />
63+ </ li >
64+ </ DropDownMenu > ,
5065 ] ;
5166
5267 const placeholderStyle : React . CSSProperties = {
0 commit comments