@ -154,6 +154,7 @@ class Audio extends React.PureComponent {
width : PropTypes . number ,
height : PropTypes . number ,
editable : PropTypes . bool ,
fullscreen : PropTypes . bool ,
intl : PropTypes . object . isRequired ,
cacheWidth : PropTypes . func ,
} ;
@ -180,7 +181,7 @@ class Audio extends React.PureComponent {
_setDimensions ( ) {
const width = this . player . offsetWidth ;
const height = width / ( 16 / 9 ) ;
const height = this . props . fullscreen ? this . player . offsetHeight : ( width / ( 16 / 9 ) ) ;
if ( this . props . cacheWidth ) {
this . props . cacheWidth ( width ) ;
@ -291,8 +292,10 @@ class Audio extends React.PureComponent {
}
handleProgress = ( ) => {
if ( this . audio . buffered . length > 0 ) {
this . setState ( { buffer : this . audio . buffered . end ( 0 ) / this . audio . duration * 100 } ) ;
const lastTimeRange = this . audio . buffered . length - 1 ;
if ( lastTimeRange > - 1 ) {
this . setState ( { buffer : Math . ceil ( this . audio . buffered . end ( lastTimeRange ) / this . audio . duration * 100 ) } ) ;
}
}
@ -349,18 +352,18 @@ class Audio extends React.PureComponent {
handleMouseMove = throttle ( e => {
const { x } = getPointerPosition ( this . seek , e ) ;
const currentTime = Math . floor ( this . audio . duration * x ) ;
const currentTime = this . audio . duration * x ;
if ( ! isNaN ( currentTime ) ) {
this . setState ( { currentTime } , ( ) => {
this . audio . currentTime = currentTime ;
} ) ;
}
} , 60 ) ;
} , 15 ) ;
handleTimeUpdate = ( ) => {
this . setState ( {
currentTime : Math . floor ( this . audio . currentTime ) ,
currentTime : this . audio . currentTime ,
duration : Math . floor ( this . audio . duration ) ,
} ) ;
}
@ -373,7 +376,7 @@ class Audio extends React.PureComponent {
this . audio . volume = x ;
} ) ;
}
} , 60 ) ;
} , 15 ) ;
handleScroll = throttle ( ( ) => {
if ( ! this . canvas || ! this . audio ) {
@ -451,6 +454,7 @@ class Audio extends React.PureComponent {
_renderCanvas ( ) {
requestAnimationFrame ( ( ) => {
this . handleTimeUpdate ( ) ;
this . _clear ( ) ;
this . _draw ( ) ;
@ -622,7 +626,7 @@ class Audio extends React.PureComponent {
const progress = ( currentTime / duration ) * 100 ;
return (
< div className = { classNames ( 'audio-player' , { editable , 'with-light-background' : darkText } ) } ref = { this . setPlayerRef } style = { { width : '100%' , height : this . state . height || this . props . height } } onMouseEnter = { this . handleMouseEnter } onMouseLeave = { this . handleMouseLeave } >
< div className = { classNames ( 'audio-player' , { editable , 'with-light-background' : darkText } ) } ref = { this . setPlayerRef } style = { { width : '100%' , height : this . props . fullscreen ? '100%' : ( this . state. height || this . props . height ) } } onMouseEnter = { this . handleMouseEnter } onMouseLeave = { this . handleMouseLeave } >
< audio
src = { src }
ref = { this . setAudioRef }
@ -630,7 +634,6 @@ class Audio extends React.PureComponent {
onPlay = { this . handlePlay }
onPause = { this . handlePause }
onProgress = { this . handleProgress }
onTimeUpdate = { this . handleTimeUpdate }
crossOrigin = 'anonymous'
/ >
@ -691,7 +694,7 @@ class Audio extends React.PureComponent {
< / d i v >
< span className = 'video-player__time' >
< span className = 'video-player__time-current' > { formatTime ( currentTime ) } < / s p a n >
< span className = 'video-player__time-current' > { formatTime ( Math . floor ( currentTime ) ) } < / s p a n >
< span className = 'video-player__time-sep' > / < / s p a n >
< span className = 'video-player__time-total' > { formatTime ( this . state . duration || Math . floor ( this . props . duration ) ) } < / s p a n >
< / s p a n >