| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 | 
							- /* global interfaceConfig */
 - 
 - import UIUtil from '../util/UIUtil';
 - 
 - /**
 -  * Responsible for drawing audio levels.
 -  */
 - const AudioLevels = {
 -     /**
 -      * Fills the dot(s) with the specified "index", with as much opacity as
 -      * indicated by "opacity".
 -      *
 -      * @param {string} elementID the parent audio indicator span element
 -      * @param {number} index the index of the dots to fill, where 0 indicates
 -      * the middle dot and the following increments point toward the
 -      * corresponding pair of dots.
 -      * @param {number} opacity the opacity to set for the specified dot.
 -      */
 -     _setDotLevel(elementID, index, opacity) {
 -         let audioSpan
 -             = document.getElementById(elementID)
 -                 .getElementsByClassName('audioindicator');
 - 
 -         // Make sure the audio span is still around.
 -         if (audioSpan && audioSpan.length > 0) {
 -             audioSpan = audioSpan[0];
 -         } else {
 -             return;
 -         }
 - 
 -         const audioTopDots
 -             = audioSpan.getElementsByClassName('audiodot-top');
 -         const audioDotMiddle
 -             = audioSpan.getElementsByClassName('audiodot-middle');
 -         const audioBottomDots
 -             = audioSpan.getElementsByClassName('audiodot-bottom');
 - 
 -         // First take care of the middle dot case.
 -         if (index === 0) {
 -             audioDotMiddle[0].style.opacity = opacity;
 - 
 -             return;
 -         }
 - 
 -         // Index > 0 : we are setting non-middle dots.
 -         index--;// eslint-disable-line no-param-reassign
 -         audioBottomDots[index].style.opacity = opacity;
 -         audioTopDots[this.sideDotsCount - index - 1].style.opacity = opacity;
 -     },
 - 
 -     /**
 -      * Updates the audio level of the large video.
 -      *
 -      * @param audioLevel the new audio level to set.
 -      */
 -     updateLargeVideoAudioLevel(elementId, audioLevel) {
 -         const element = document.getElementById(elementId);
 - 
 -         if (!UIUtil.isVisible(element)) {
 -             return;
 -         }
 - 
 -         let level = parseFloat(audioLevel);
 - 
 -         level = isNaN(level) ? 0 : level;
 - 
 -         let shadowElement = element.getElementsByClassName('dynamic-shadow');
 - 
 -         if (shadowElement && shadowElement.length > 0) {
 -             shadowElement = shadowElement[0];
 -         }
 - 
 -         shadowElement.style.boxShadow = this._updateLargeVideoShadow(level);
 -     },
 - 
 -     /**
 -      * Updates the large video shadow effect.
 -      */
 -     _updateLargeVideoShadow(level) {
 -         const scale = 2;
 - 
 -         // Internal circle audio level.
 -         const int = {
 -             level: level > 0.15 ? 20 : 0,
 -             color: interfaceConfig.AUDIO_LEVEL_PRIMARY_COLOR
 -         };
 - 
 -         // External circle audio level.
 -         const ext = {
 -             level: ((int.level * scale * level) + int.level).toFixed(0),
 -             color: interfaceConfig.AUDIO_LEVEL_SECONDARY_COLOR
 -         };
 - 
 -         // Internal blur.
 -         int.blur = int.level ? 2 : 0;
 - 
 -         // External blur.
 -         ext.blur = ext.level ? 6 : 0;
 - 
 -         return [
 -             `0 0 ${int.blur}px ${int.level}px ${int.color}`,
 -             `0 0 ${ext.blur}px ${ext.level}px ${ext.color}`
 -         ].join(', ');
 -     }
 - };
 - 
 - export default AudioLevels;
 
 
  |