| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 | 
							- import PropTypes from 'prop-types';
 - import React, { Component } from 'react';
 - 
 - /**
 -  * The number of dots to display in AudioLevelIndicator.
 -  *
 -  * IMPORTANT: AudioLevelIndicator assumes that this is an odd number.
 -  */
 - const AUDIO_LEVEL_DOTS = 5;
 - 
 - /**
 -  * The index of the dot that is at the direct middle of all other dots.
 -  */
 - const CENTER_DOT_INDEX = Math.floor(AUDIO_LEVEL_DOTS / 2);
 - 
 - /**
 -  * Creates a ReactElement responsible for drawing audio levels.
 -  *
 -  * @extends {Component}
 -  */
 - class AudioLevelIndicator extends Component {
 -     /**
 -      * {@code AudioLevelIndicator}'s property types.
 -      *
 -      * @static
 -      */
 -     static propTypes = {
 -         /**
 -          * The current audio level to display. The value should be a number
 -          * between 0 and 1.
 -          *
 -          * @type {number}
 -          */
 -         audioLevel: PropTypes.number
 -     };
 - 
 -     /**
 -      * Implements React's {@link Component#render()}.
 -      *
 -      * @inheritdoc
 -      * @returns {ReactElement}
 -      */
 -     render() {
 -         // First make sure we are sensitive enough.
 -         const audioLevel = Math.min(this.props.audioLevel * 1.2, 1);
 - 
 -         // Let's now stretch the audio level over the number of dots we have.
 -         const stretchedAudioLevel = AUDIO_LEVEL_DOTS * audioLevel;
 - 
 -         const audioLevelDots = [];
 - 
 -         for (let i = 0; i < AUDIO_LEVEL_DOTS; i++) {
 -             const distanceFromCenter = CENTER_DOT_INDEX - i;
 -             const audioLevelFromCenter
 -                 = stretchedAudioLevel - Math.abs(distanceFromCenter);
 -             const cappedOpacity = Math.min(
 -                 1, Math.max(0, audioLevelFromCenter));
 -             let className;
 - 
 -             if (distanceFromCenter === 0) {
 -                 className = 'audiodot-middle';
 -             } else if (distanceFromCenter < 0) {
 -                 className = 'audiodot-top';
 -             } else {
 -                 className = 'audiodot-bottom';
 -             }
 - 
 -             audioLevelDots.push(
 -                 <span
 -                     className = { className }
 -                     key = { i }
 -                     style = {{ opacity: cappedOpacity }} />
 -             );
 -         }
 - 
 -         return (
 -             <span className = 'audioindicator in-react'>
 -                 { audioLevelDots }
 -             </span>
 -         );
 -     }
 - }
 - 
 - export default AudioLevelIndicator;
 
 
  |