UNPKG

enumerate-devices

Version:

A small project to normalize browser differences for enumerating media devices

51 lines (49 loc) 2.73 kB
(function(e){if("function"==typeof bootstrap)bootstrap("enumeratedevices",e);else if("object"==typeof exports)module.exports=e();else if("function"==typeof define&&define.amd)define(e);else if("undefined"!=typeof ses){if(!ses.ok())return;ses.makeEnumerateDevices=e}else"undefined"!=typeof window?window.enumerateDevices=e():global.enumerateDevices=e()})(function(){var define,ses,bootstrap,module,exports; return (function(e,t,n){function i(n,s){if(!t[n]){if(!e[n]){var o=typeof require=="function"&&require;if(!s&&o)return o(n,!0);if(r)return r(n,!0);throw new Error("Cannot find module '"+n+"'")}var u=t[n]={exports:{}};e[n][0].call(u.exports,function(t){var r=e[n][1][t];return i(r?r:t)},u,u.exports)}return t[n].exports}var r=typeof require=="function"&&require;for(var s=0;s<n.length;s++)i(n[s]);return i})({1:[function(require,module,exports){ module.exports = function (cb) { return new Promise(function(resolve, reject) { var processDevices = function (devices) { var normalizedDevices = []; for (var i = 0; i < devices.length; i++) { var device = devices[i]; //make chrome values match spec var kind = device.kind || null; if (kind && kind.toLowerCase() === 'audio') { kind = 'audioinput'; } else if (kind && kind.toLowerCase() === 'video') { kind = 'videoinput'; } normalizedDevices.push({ facing: device.facing || null, deviceId: device.id || device.deviceId || null, label: device.label || null, kind: kind, groupId: device.groupId || null }); } resolve(normalizedDevices); if (cb) { console.warn('module now uses promise based api - callback is deprecated'); cb(null, normalizedDevices); } }; if (window.navigator && window.navigator.mediaDevices && window.navigator.mediaDevices.enumerateDevices) { window.navigator.mediaDevices.enumerateDevices().then(processDevices); } else if (window.MediaStreamTrack && window.MediaStreamTrack.getSources) { window.MediaStreamTrack.getSources(processDevices); } else { err = { message: 'Device enumeration not supported.', kind: 'METHOD_NOT_AVAILABLE' }; reject(err); if (cb) { console.warn('module now uses promise based api - callback is deprecated'); cb(err); } } }); }; },{}]},{},[1])(1) }); ;