initEventListeners()

in demo-website/src/meeting.js [170:335]


    initEventListeners() {
        window.addEventListener('resize', () => {
            this.layoutVideoTiles();
        });

        document.getElementById('form-authenticate').addEventListener('submit', e => {
            e.preventDefault();
            this.startConnectChat();
        });

        const audioInput = document.getElementById('audio-input');
        audioInput.addEventListener('change', async (_ev) => {
            this.log('audio input device is changed');
            await this.openAudioInputFromSelection();
        });

        const videoInput = document.getElementById('video-input');
        videoInput.addEventListener('change', async (_ev) => {
            this.log('Video input device is changed');
            await this.openVideoInputFromSelection(videoInput.value, true);
        });

        const videoInputQuality = document.getElementById('video-input-quality');
        videoInputQuality.addEventListener('change', async (_ev) => {
            this.log('Video input quality is changed');
            switch (videoInputQuality.value) {
                case '360p':
                    this.audioVideo.chooseVideoInputQuality(640, 360, 15, 600);
                    break;
                case '540p':
                    this.audioVideo.chooseVideoInputQuality(960, 540, 15, 1400);
                    break;
                case '720p':
                    this.audioVideo.chooseVideoInputQuality(1280, 720, 15, 1400);
                    break;
            }
            await this.openVideoInputFromSelection(videoInput.value, true);
        });

        const audioOutput = document.getElementById('audio-output');
        audioOutput.addEventListener('change', async (_ev) => {
            this.log('audio output device is changed');
            await this.openAudioOutputFromSelection();
        });

        document.getElementById('button-test-sound').addEventListener('click', e => {
            e.preventDefault();
            const audioOutput = document.getElementById('audio-output');
            new TestSound(audioOutput.value);
        });

        document.getElementById('form-devices').addEventListener('submit', e => {
            e.preventDefault();
            new AsyncScheduler().start(async () => {
                try {
                    this.showProgress('progress-join');
                    await this.join();
                    this.audioVideo.stopVideoPreviewForVideoInput(document.getElementById('video-preview'));
                    this.audioVideo.chooseVideoInputDevice(null);
                    this.hideProgress('progress-join');
                    this.displayButtonStates();
                    this.switchToFlow('flow-meeting');

                    document.getElementById('content').style.display = 'none';
                } catch (error) {
                    console.error(error);
                    document.getElementById('failed-join').innerHTML = `Meeting ID: ${this.externalMeetingId}`;
                    document.getElementById('failed-join-error').innerHTML = `Error: ${error.message}`;
                }
            });
        });

        const buttonMute = document.getElementById('button-microphone');
        buttonMute.addEventListener('mousedown', _e => {
            if (this.toggleButton('button-microphone')) {
                this.audioVideo.realtimeUnmuteLocalAudio();
            } else {
                this.audioVideo.realtimeMuteLocalAudio();
            }
        });

        const buttonVideo = document.getElementById('button-camera');
        buttonVideo.addEventListener('click', _e => {
            new AsyncScheduler().start(async () => {
                if (this.toggleButton('button-camera') && this.canStartLocalVideo) {
                    await this.openVideoInputFromSelection(null, false);
                    this.audioVideo.startLocalVideoTile();
                } else {
                    this.audioVideo.stopLocalVideoTile();
                    this.hideTile(16);
                }
            });
        });

        const buttonScreenShare = document.getElementById('button-screen-share');
        buttonScreenShare.addEventListener('click', _e => {
            new AsyncScheduler().start(async () => {
                if (this.toggleButton('button-screen-share')) {
                    this.audioVideo.startContentShareFromScreenCapture();
                } else {
                    this.audioVideo.stopContentShare();
                }
            });
        });

        const buttonSpeaker = document.getElementById('button-speaker');
        buttonSpeaker.addEventListener('click', _e => {
            new AsyncScheduler().start(async () => {
                if (this.toggleButton('button-speaker')) {
                    this.audioVideo.bindAudioElement(document.getElementById('meeting-audio'));
                } else {
                    this.audioVideo.unbindAudioElement();
                }
            });
        });

        const buttonMeetingEnd = document.getElementById('button-meeting-end');
        buttonMeetingEnd.addEventListener('click', _e => {
            new AsyncScheduler().start(async () => {
                buttonMeetingEnd.disabled = true;
                this.leave();
                buttonMeetingEnd.disabled = false;

                window.location = window.location.pathname;
            });
        });

        const buttonMeetingLeave = document.getElementById('button-meeting-leave');
        buttonMeetingLeave.addEventListener('click', _e => {
            new AsyncScheduler().start(async () => {
                buttonMeetingLeave.disabled = true;
                this.leave();
                buttonMeetingLeave.disabled = false;

                window.location = window.location.pathname;
            });
        });

        const buttonStartVideo = document.getElementById('start-video-button');
        buttonStartVideo.addEventListener('click', _e => {
            this.log('buttonStartVideo click');
            if (document.getElementById('content').style.display === 'none') {
                document.getElementById('content').style.display = 'flex';
            }
            else {
                document.getElementById('content').style.display = 'none';
            }
        });

        const buttonExpandReference = document.getElementById('button-expand-reference');
        buttonExpandReference.firstElementChild.nextElementSibling.style.display = 'none'
        buttonExpandReference.addEventListener('click', _e => {
            const divExpandReference = document.getElementById('div-expand-reference')
            if (divExpandReference.style.display === 'none') {
                divExpandReference.style.display = 'block'
                divExpandReference.classList.add('mb-3')
                buttonExpandReference.firstElementChild.style.display = 'none'
                buttonExpandReference.firstElementChild.nextElementSibling.style.display = 'inline'
            }
            else {
                divExpandReference.style.display = 'none'
                buttonExpandReference.firstElementChild.nextElementSibling.style.display = 'none'
                buttonExpandReference.firstElementChild.style.display = 'inline'
            }
        })
    }