@@ -22,15 +22,18 @@ class Waveform extends React.PureComponent {
22
22
const filteredData = takeEveryN === 1 ? data . slice ( 0 ) :
23
23
data . filter ( ( _ , i ) => i % takeEveryN === 0 ) ;
24
24
25
- filteredData [ 0 ] = 0 ;
26
- filteredData [ filteredData . length - 1 ] = 0 ;
25
+ // Need at least two points to render waveform.
26
+ if ( filteredData . length === 1 ) {
27
+ filteredData . push ( filteredData [ 0 ] ) ;
28
+ }
27
29
30
+ const maxIndex = filteredData . length - 1 ;
28
31
const points = [
29
32
...filteredData . map ( ( v , i ) =>
30
- [ width * i / filteredData . length , height * v / 2 ]
33
+ [ width * ( i / maxIndex ) , height * v / 2 ]
31
34
) ,
32
35
...filteredData . reverse ( ) . map ( ( v , i ) =>
33
- [ width * ( filteredData . length - i - 1 ) / filteredData . length , - height * v / 2 ]
36
+ [ width * ( 1 - ( i / maxIndex ) ) , - height * v / 2 ]
34
37
)
35
38
] ;
36
39
const pathComponents = points . map ( ( [ x , y ] , i ) => {
@@ -41,15 +44,8 @@ class Waveform extends React.PureComponent {
41
44
return (
42
45
< svg
43
46
className = { styles . container }
44
- viewBox = { `-1 0 ${ width } ${ height } ` }
47
+ viewBox = { `0 0 ${ width } ${ height } ` }
45
48
>
46
- < line
47
- className = { styles . baseline }
48
- x1 = { - 1 }
49
- x2 = { width }
50
- y1 = { height / 2 }
51
- y2 = { height / 2 }
52
- />
53
49
< g transform = { `scale(1, -1) translate(0, -${ height / 2 } )` } >
54
50
< path
55
51
className = { styles . waveformPath }
0 commit comments