| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 | 
							- import {
 -     SET_AUDIO_INPUT_DEVICE,
 -     SET_AUDIO_OUTPUT_DEVICE,
 -     SET_VIDEO_INPUT_DEVICE,
 -     UPDATE_DEVICE_LIST
 - } from './actionTypes';
 - 
 - import { ReducerRegistry } from '../redux';
 - 
 - const DEFAULT_STATE = {
 -     audioInput: [],
 -     audioOutput: [],
 -     videoInput: []
 - };
 - 
 - /**
 -  * Listen for actions which changes the state of known and used devices.
 -  *
 -  * @param {Object} state - The Redux state of the feature features/base/devices.
 -  * @param {Object} action - Action object.
 -  * @param {string} action.type - Type of action.
 -  * @param {Array<MediaDeviceInfo>} action.devices - All available audio and
 -  * video devices.
 -  * @returns {Object}
 -  */
 - ReducerRegistry.register(
 -     'features/base/devices',
 -     (state = DEFAULT_STATE, action) => {
 -         switch (action.type) {
 -         case UPDATE_DEVICE_LIST: {
 -             const deviceList = _groupDevicesByKind(action.devices);
 - 
 -             return {
 -                 ...deviceList
 -             };
 -         }
 - 
 -         // TODO: Changing of current audio and video device id is currently
 -         // handled outside of react/redux. Fall through to default logic for
 -         // now.
 -         case SET_AUDIO_INPUT_DEVICE:
 -         case SET_VIDEO_INPUT_DEVICE:
 -         case SET_AUDIO_OUTPUT_DEVICE:
 -         default:
 -             return state;
 -         }
 -     });
 - 
 - /**
 -  * Converts an array of media devices into an object organized by device kind.
 -  *
 -  * @param {Array<MediaDeviceInfo>} devices - Available media devices.
 -  * @private
 -  * @returns {Object} An object with the media devices split by type. The keys
 -  * are device type and the values are arrays with devices matching the device
 -  * type.
 -  */
 - function _groupDevicesByKind(devices) {
 -     return {
 -         audioInput: devices.filter(device => device.kind === 'audioinput'),
 -         audioOutput: devices.filter(device => device.kind === 'audiooutput'),
 -         videoInput: devices.filter(device => device.kind === 'videoinput')
 -     };
 - }
 
 
  |