File tree Expand file tree Collapse file tree 2 files changed +42
-3
lines changed
Expand file tree Collapse file tree 2 files changed +42
-3
lines changed Original file line number Diff line number Diff line change @@ -42,7 +42,8 @@ export interface IAudioState {
4242 time ?: number ;
4343 duration ?: number ;
4444 isPlaying ?: boolean ;
45- volume : number ;
45+ muted ?: boolean ;
46+ volume ?: number ;
4647}
4748
4849export class Audio extends Component < IAudioProps , IAudioState > {
@@ -52,7 +53,8 @@ export class Audio extends Component<IAudioProps, IAudioState> {
5253 time : 0 ,
5354 duration : 0 ,
5455 isPlaying : false ,
55- volume : NaN
56+ muted : false ,
57+ volume : 1
5658 } ;
5759
5860 ref = ( el ) => {
@@ -103,6 +105,18 @@ export class Audio extends Component<IAudioProps, IAudioState> {
103105 }
104106 } ;
105107
108+ mute = ( ) => {
109+ if ( this . el ) {
110+ this . el . muted = true ;
111+ }
112+ } ;
113+
114+ unmute = ( ) => {
115+ if ( this . el ) {
116+ this . el . muted = false ;
117+ }
118+ } ;
119+
106120 event = ( name : string ) => ( event ) => {
107121 const handler = this . props [ name ] ;
108122
@@ -128,8 +142,11 @@ export class Audio extends Component<IAudioProps, IAudioState> {
128142 } ;
129143
130144 onVolumeChange = ( event ) => {
145+ const { muted, volume} = this . el ;
146+
131147 this . setState ( {
132- volume : this . el . volume
148+ muted,
149+ volume
133150 } ) ;
134151
135152 this . event ( 'onVolumeChange' ) ( event ) ;
Original file line number Diff line number Diff line change @@ -31,9 +31,31 @@ storiesOf('Generators/Audio', module)
3131 < button onClick = { ( ) => audio . seek ( state . time + 5 ) } > Seek +</ button >
3232 < button onClick = { ( ) => audio . volume ( state . volume - 0.05 ) } > Volume -</ button >
3333 < button onClick = { ( ) => audio . volume ( state . volume + 0.05 ) } > Volume +</ button >
34+ < button onClick = { audio . mute } > Mute</ button >
35+ < button onClick = { audio . unmute } > Unmute</ button >
3436 < pre style = { { fontFamily : 'monospace' } } >
3537 { JSON . stringify ( state , null , 4 ) }
3638 </ pre >
39+ < hr />
40+ < pre style = { { fontFamily : 'monospace' } } >
41+ { `
42+ <Audio src={src}>{(audio, state) =>
43+ <div>
44+ <button onClick={audio.play}>Play</button>
45+ <button onClick={audio.pause}>Pause</button>
46+ <button onClick={() => audio.seek(state.time - 5)}>Seek -</button>
47+ <button onClick={() => audio.seek(state.time + 5)}>Seek +</button>
48+ <button onClick={() => audio.volume(state.volume - 0.05)}>Volume -</button>
49+ <button onClick={() => audio.volume(state.volume + 0.05)}>Volume +</button>
50+ <button onClick={audio.mute}>Mute</button>
51+ <button onClick={audio.unmute}>Unmute</button>
52+ <pre style={{fontFamily: 'monospace'}}>
53+ {JSON.stringify(state, null, 4)}
54+ </pre>
55+ </div>
56+ }</Audio>
57+ ` }
58+ </ pre >
3759 </ div >
3860 } </ Audio >
3961 ) ;
You can’t perform that action at this time.
0 commit comments