populateInMeetingDeviceList()

in demo-website/src/meeting.js [612:638]


    populateInMeetingDeviceList(elementId, genericName, devices, additionalOptions, callback) {
        const menu = document.getElementById(elementId);
        while (menu.firstElementChild) {
            menu.removeChild(menu.firstElementChild);
        }
        for (let i = 0; i < devices.length; i++) {
            this.createDropdownMenuItem(menu, devices[i].label || `${genericName} ${i + 1}`, () => {
                callback(devices[i].deviceId);
            });
        }
        if (additionalOptions.length > 0) {
            this.createDropdownMenuItem(menu, '──────────', () => { }).classList.add('text-center');
            for (const additionalOption of additionalOptions) {
                this.createDropdownMenuItem(
                    menu,
                    additionalOption,
                    () => {
                        callback(additionalOption);
                    },
                    `${elementId}-${additionalOption.replace(/\s/g, '-')}`
                );
            }
        }
        if (!menu.firstElementChild) {
            this.createDropdownMenuItem(menu, 'Device selection unavailable', () => { });
        }
    }