@@ -7,8 +7,8 @@ import Timeline from 'wavesurfer.js/plugins/timeline';
77import { AudioVisibleStyles } from './AudioVisible.style' ;
88
99// WaveSurfer hook
10- const useWavesurfer = ( containerRef , options ) => {
11- const [ wavesurfer , setWavesurfer ] = useState ( null ) ;
10+ const useWavesurfer = ( containerRef : React . RefObject < HTMLDivElement > , options : any ) => {
11+ const [ wavesurfer , setWavesurfer ] = useState < WaveSurfer | null > ( null ) ;
1212
1313 // Initialize wavesurfer when the container mounts
1414 // or any of the props change
@@ -25,21 +25,22 @@ const useWavesurfer = (containerRef, options) => {
2525 return ( ) => {
2626 ws . destroy ( ) ;
2727 } ;
28- } , [ options , containerRef ] ) ;
28+ } , [ ] ) ; // eslint-disable-line react-hooks/exhaustive-deps
2929
3030 return wavesurfer ;
3131} ;
3232
3333// Create a React component that will render wavesurfer.
3434// Props are wavesurfer options.
3535const WaveSurferPlayer = ( props : any ) => {
36- const containerRef = useRef ( ) ;
36+ const containerRef = useRef < HTMLDivElement > ( null ) ;
3737 const [ isPlaying , setIsPlaying ] = useState ( false ) ;
3838 const [ currentTime , setCurrentTime ] = useState ( 0 ) ;
3939 const wavesurfer = useWavesurfer ( containerRef , props ) ;
4040
4141 // On play button click
4242 const onPlayClick = useCallback ( ( ) => {
43+ if ( ! wavesurfer ) return ;
4344 // eslint-disable-next-line @typescript-eslint/no-unused-expressions
4445 wavesurfer . isPlaying ( ) ? wavesurfer . pause ( ) : wavesurfer . play ( ) ;
4546 } , [ wavesurfer ] ) ;
@@ -55,7 +56,7 @@ const WaveSurferPlayer = (props: any) => {
5556 const subscriptions = [
5657 wavesurfer . on ( 'play' , ( ) => setIsPlaying ( true ) ) ,
5758 wavesurfer . on ( 'pause' , ( ) => setIsPlaying ( false ) ) ,
58- wavesurfer . on ( 'timeupdate' , ( currentTime ) => setCurrentTime ( currentTime ) ) ,
59+ wavesurfer . on ( 'timeupdate' , ( currentTime : number ) => setCurrentTime ( currentTime ) ) ,
5960 ] ;
6061
6162 return ( ) => {
0 commit comments