Module 228272

2,871 characters · in no known chunk
Dependencies
Required by (2)
Lazily required by (0)none
Lazily requires (0)none
Source Raw
function(e,t,n){"use strict";n.d(t,{A:()=>c,i:()=>u});var r=n(972347),i=n(118356),s=n(277738),a=n(201327),o=n(731854);let l=new i.Vy("Output");var u=function(e){return e.InteractionRequired="interactionrequired",e.Speaking="speaking",e.Video="video",e}({});class c extends r.A{id;_speakingFlags=o.ME.NONE;_mute=!1;_volume=o.Hz;sinkId=null;audioElement=null;stream=new MediaStream;videoStreamId=null;levelNode=null;streamSourceNode=null;audioContext;constructor(e,t){super(),this.id=e,this.audioContext=t}play(){this.audioElement?.play()}destroy(){this.audioElement?.pause(),null!=this.videoStreamId&&(0,a.it)(this.videoStreamId),null!=this.streamSourceNode&&(this.streamSourceNode.disconnect(),this.streamSourceNode=null),null!=this.levelNode&&(this.levelNode.disconnect(),this.levelNode.port.postMessage("close"),this.levelNode=null),this.setSpeakingFlags(o.ME.NONE),this.removeAllListeners()}addTrack(e){if(this.stream.getTracks().includes(e))return this.stream.getTracks().length;if(this.stream.addTrack(e),null==this.audioElement){let e=document.createElement("audio");e.srcObject=this.stream;let t=e.play();null!=t&&t.catch(()=>this.emit("interactionrequired",!0)),this.audioElement=e,this.updateAudioElement()}if(null==this.levelNode&&this.stream.getAudioTracks().length>0){this.streamSourceNode=this.audioContext.createMediaStreamSource(this.stream);try{this.levelNode=new AudioWorkletNode(this.audioContext,"level-processor"),this.levelNode.port.onmessage=e=>{this.emit("speaking",e.data)},null!=this.streamSourceNode&&this.streamSourceNode.connect(this.levelNode)}catch(e){l.warn(`Output#Failed to setup speaking indicator: ${e}`)}}return"video"===e.kind&&(null!=this.videoStreamId&&(0,a.it)(this.videoStreamId),this.stream.getVideoTracks().forEach(t=>{e!==t&&(t.discordIsTearingDown=!0,this.stream.removeTrack(t))}),this.videoStreamId=(0,a.ju)(this.stream),this.emit("video",this.videoStreamId)),"audio"===e.kind&&this.stream.getAudioTracks().forEach(t=>{e!==t&&(t.discordIsTearingDown=!0,this.stream.removeTrack(t))}),this.stream.getTracks().length}removeTrack(e){return this.stream.removeTrack(e),"video"===e.kind&&(null!=this.videoStreamId&&(0,a.it)(this.videoStreamId),this.emit("video",null)),this.stream.getTracks().length}setSinkId(e){this.sinkId=e,this.updateAudioElement()}get mute(){return this._mute}set mute(e){this._mute=e||!1,this.updateAudioElement()}get priority(){return(this._speakingFlags&o.ME.PRIORITY)===o.ME.PRIORITY}get volume(){return this._volume}set volume(e){this._volume=Math.max(0,Math.min(Math.round(e),o.Hz)),this.updateAudioElement()}get speakingFlags(){return this._speakingFlags}setSpeakingFlags(e){this._speakingFlags!==e&&(this._speakingFlags=e,this.updateAudioElement())}updateAudioElement(){let e=this.audioElement;if(null!=e){e.muted=this._mute,e.volume=this._volume/100;let t=this.sinkId;null!=t&&s.gY&&e.setSinkId(t)}}}}