-
Notifications
You must be signed in to change notification settings - Fork 4.7k
/
UserMediaManager.js.map
1 lines (1 loc) · 9.24 KB
/
UserMediaManager.js.map
1
{"version":3,"file":"UserMediaManager.js","sourceRoot":"","sources":["../../src/CameraModule/UserMediaManager.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE1D,MAAM,CAAC,MAAM,kBAAkB,GAAY,KAAK,CAAC;AACjD,MAAM,CAAC,MAAM,gBAAgB,GAAU,EAAE,CAAC;AAE1C,KAAK,UAAU,2BAA2B,CAAC,KAAK;IAC9C,MAAM,cAAc,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IAEhE,MAAM,oBAAoB,GAAG,UAAU,CAAC,EAAE;QACxC,MAAM,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC;QAEhC,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;YAChC,OAAO,QAAQ,CAAC;SACjB;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YAClD,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;SACpB;QAED,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,KAAK,EAAE;YAClD,OAAO,QAAQ,CAAC,KAAK,CAAC;SACvB;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,OAAO,GAAU,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;IACjD,gHAAgH;IAChH,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CACzD,CAAC;IAEF,IAAI,WAAW,GAAG,IAAI,CAAC;IACvB,IAAI,WAAW,GAAG,IAAI,CAAC;IAEvB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACvB,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE;YAC3B,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC;SACzB;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE;YAClC,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC;SACzB;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,oBAAoB,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACnE,IAAI,aAAa,EAAE;QACjB,WAAW,GAAG,aAAa,CAAC;KAC7B;IAED,MAAM,aAAa,GAAG,oBAAoB,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACnE,IAAI,aAAa,EAAE;QACjB,WAAW,GAAG,aAAa,CAAC;KAC7B;IAED,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,OAAgB,EAChB,gBAAkD,EAClD,gBAAkD;IAElD,MAAM,WAAW,GAA2B;QAC1C,KAAK,EAAE,OAAO,gBAAgB,KAAK,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI;KACzE,CAAC;IAEF,IAAI,CAAC,OAAO,EAAE;QACZ,WAAW,CAAC,KAAK,GAAG,OAAO,gBAAgB,KAAK,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC;KACvF;IAED,OAAO,MAAM,oBAAoB,CAAC,WAAW,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,KAAmC,EACnC,UAAmB,IAAI;IAEvB,IAAI,eAAe,EAAE,EAAE;QACrB,OAAO,MAAM,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;KACrE;IACD,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,2BAA2B,CAAC,KAAK,CAAC,CAAC;IAChE,OAAO,MAAM,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,WAAmC,EACnC,oBAA6B,KAAK;IAElC,IAAI;QACF,OAAO,MAAM,iBAAiB,CAAC;YAC7B,GAAG,WAAW;YACd,KAAK,EAAE,iBAAiB,IAAI,WAAW,CAAC,KAAK;SAC9C,CAAC,CAAC;KACJ;IAAC,OAAO,KAAK,EAAE;QACd,IAAI,CAAC,iBAAiB,IAAI,KAAK,CAAC,IAAI,KAAK,6BAA6B,EAAE;YACtE,OAAO,MAAM,oBAAoB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;SACtD;QACD,MAAM,KAAK,CAAC;KACb;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,WAAmC;IACzE,IAAI,SAAS,CAAC,YAAY,IAAI,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE;QACjE,OAAO,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;KACzD;IAED,MAAM,aAAa,GACjB,SAAS,CAAC,iBAAiB,CAAC,IAAI,SAAS,CAAC,oBAAoB,CAAC,IAAI,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACjG,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CACrC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,CAC5D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO;IACL,MAAM;IACN,SAAS;QACT,4BAA4B;QAC5B,CAAC,CAAC,CACA,CAAC,SAAS,CAAC,YAAY,IAAI,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC;YAC/D,SAAS,CAAC,iBAAiB,CAAC;YAC5B,SAAS,CAAC,oBAAoB,CAAC;YAC/B,SAAS,CAAC,gBAAgB,CAAC,CAC5B,CACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,OAA2B;IAE3B,OAAO,MAAM,kBAAkB,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,OAA2B;IAE3B,OAAO,MAAM,kBAAkB,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;AAC5E,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,MAAgB,EAChB,IAAY,EACZ,OAA2B;IAE3B,IAAI,CAAC,OAAO,EAAE;QACZ,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,gBAAgB,EAAE;YAC5C,OAAO,IAAI,CAAC;SACb;QACD,OAAO,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC;KAC3D;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;IAC7D,MAAM,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAC1C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CACjE,CAAC;IACF,MAAM,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;QAC1C,IAAI,CAAC,CAAC,iBAAiB,IAAI,MAAM,CAAC,EAAE;YAClC,OAAO,IAAI,CAAC;SACb;QAED,MAAM,YAAY,GAAI,MAAc,CAAC,eAAe,EAAE,CAAC;QACvD,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;YAC5B,OAAO,IAAI,CAAC;SACb;QAED,OAAO,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,OAAO,SAAS,EAAE,QAAQ,IAAI,SAAS,EAAE,QAAQ,IAAI,IAAI,CAAC;AAC5D,CAAC","sourcesContent":["/* eslint-env browser */\nimport { canUseDOM } from 'fbjs/lib/ExecutionEnvironment';\n\nexport const userMediaRequested: boolean = false;\nexport const mountedInstances: any[] = [];\n\nasync function requestLegacyUserMediaAsync(props): Promise<any[]> {\n const optionalSource = id => ({ optional: [{ sourceId: id }] });\n\n const constraintToSourceId = constraint => {\n const { deviceId } = constraint;\n\n if (typeof deviceId === 'string') {\n return deviceId;\n }\n\n if (Array.isArray(deviceId) && deviceId.length > 0) {\n return deviceId[0];\n }\n\n if (typeof deviceId === 'object' && deviceId.ideal) {\n return deviceId.ideal;\n }\n\n return null;\n };\n\n const sources: any[] = await new Promise(resolve =>\n // @ts-ignore: https://caniuse.com/#search=getSources Chrome for Android (78) & Samsung Internet (10.1) use this\n MediaStreamTrack.getSources(sources => resolve(sources))\n );\n\n let audioSource = null;\n let videoSource = null;\n\n sources.forEach(source => {\n if (source.kind === 'audio') {\n audioSource = source.id;\n } else if (source.kind === 'video') {\n videoSource = source.id;\n }\n });\n\n const audioSourceId = constraintToSourceId(props.audioConstraints);\n if (audioSourceId) {\n audioSource = audioSourceId;\n }\n\n const videoSourceId = constraintToSourceId(props.videoConstraints);\n if (videoSourceId) {\n videoSource = videoSourceId;\n }\n\n return [optionalSource(audioSource), optionalSource(videoSource)];\n}\n\nasync function sourceSelectedAsync(\n isMuted: boolean,\n audioConstraints?: MediaTrackConstraints | boolean,\n videoConstraints?: MediaTrackConstraints | boolean\n): Promise<MediaStream> {\n const constraints: MediaStreamConstraints = {\n video: typeof videoConstraints !== 'undefined' ? videoConstraints : true,\n };\n\n if (!isMuted) {\n constraints.audio = typeof audioConstraints !== 'undefined' ? audioConstraints : true;\n }\n\n return await getAnyUserMediaAsync(constraints);\n}\n\nexport async function requestUserMediaAsync(\n props: { audio?: any; video?: any },\n isMuted: boolean = true\n): Promise<MediaStream> {\n if (canGetUserMedia()) {\n return await sourceSelectedAsync(isMuted, props.audio, props.video);\n }\n const [audio, video] = await requestLegacyUserMediaAsync(props);\n return await sourceSelectedAsync(isMuted, audio, video);\n}\n\nexport async function getAnyUserMediaAsync(\n constraints: MediaStreamConstraints,\n ignoreConstraints: boolean = false\n): Promise<MediaStream> {\n try {\n return await getUserMediaAsync({\n ...constraints,\n video: ignoreConstraints || constraints.video,\n });\n } catch (error) {\n if (!ignoreConstraints && error.name === 'ConstraintNotSatisfiedError') {\n return await getAnyUserMediaAsync(constraints, true);\n }\n throw error;\n }\n}\n\nexport async function getUserMediaAsync(constraints: MediaStreamConstraints): Promise<MediaStream> {\n if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {\n return navigator.mediaDevices.getUserMedia(constraints);\n }\n\n const _getUserMedia =\n navigator['mozGetUserMedia'] || navigator['webkitGetUserMedia'] || navigator['msGetUserMedia'];\n return new Promise((resolve, reject) =>\n _getUserMedia.call(navigator, constraints, resolve, reject)\n );\n}\n\nexport function canGetUserMedia(): boolean {\n return (\n // SSR\n canUseDOM &&\n // Has any form of media API\n !!(\n (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) ||\n navigator['mozGetUserMedia'] ||\n navigator['webkitGetUserMedia'] ||\n navigator['msGetUserMedia']\n )\n );\n}\n\nexport async function isFrontCameraAvailableAsync(\n devices?: MediaDeviceInfo[]\n): Promise<null | string> {\n return await supportsCameraType(['front', 'user', 'facetime'], 'user', devices);\n}\n\nexport async function isBackCameraAvailableAsync(\n devices?: MediaDeviceInfo[]\n): Promise<null | string> {\n return await supportsCameraType(['back', 'rear'], 'environment', devices);\n}\n\nasync function supportsCameraType(\n labels: string[],\n type: string,\n devices?: MediaDeviceInfo[]\n): Promise<null | string> {\n if (!devices) {\n if (!navigator.mediaDevices.enumerateDevices) {\n return null;\n }\n devices = await navigator.mediaDevices.enumerateDevices();\n }\n const cameras = devices.filter(t => t.kind === 'videoinput');\n const [hasCamera] = cameras.filter(camera =>\n labels.some(label => camera.label.toLowerCase().includes(label))\n );\n const [isCapable] = cameras.filter(camera => {\n if (!('getCapabilities' in camera)) {\n return null;\n }\n\n const capabilities = (camera as any).getCapabilities();\n if (!capabilities.facingMode) {\n return null;\n }\n\n return capabilities.facingMode.find((_: string) => type);\n });\n\n return isCapable?.deviceId || hasCamera?.deviceId || null;\n}\n"]}