idmission-web-sdk 0.0.43 → 0.0.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -20,6 +20,8 @@ type Resolution = {
20
20
  ratio: string;
21
21
  };
22
22
  export declare const quickScan: Resolution[];
23
+ export type FacingMode = 'user' | 'environment' | 'left' | 'right';
24
+ export declare function listAvailableCameras(facingMode?: FacingMode): Promise<MediaDeviceInfo[]>;
23
25
  declare function releaseCameraAccess(): void;
24
26
  export declare const useHighestResCaptureDevice: ({ preferFrontFacingCamera, preferContinuityCamera, requestMicrophoneAccess, }?: {
25
27
  preferFrontFacingCamera: boolean;
@@ -0,0 +1,9 @@
1
+ export type Platform = {
2
+ name: string;
3
+ version: string;
4
+ os: {
5
+ family: string;
6
+ version: string;
7
+ };
8
+ };
9
+ export declare function getPlatform(): Platform | undefined;
@@ -299,6 +299,10 @@ var GeolocationAccessDeniedOverlay = function GeolocationAccessDeniedOverlay(_a)
299
299
  }, t('Retry'))))));
300
300
  };
301
301
 
302
+ function getPlatform() {
303
+ return window.platform;
304
+ }
305
+
302
306
  var SubmissionProvider = function SubmissionProvider(_a) {
303
307
  var action = _a.action,
304
308
  children = _a.children,
@@ -505,7 +509,7 @@ var SubmissionProvider = function SubmissionProvider(_a) {
505
509
  sdkVersion: 'WebSDK_9.5.13.2.0',
506
510
  Resolution: "".concat(window.innerWidth, " x ").concat(window.innerHeight)
507
511
  };
508
- platform = window.platform;
512
+ platform = getPlatform();
509
513
  if (platform) {
510
514
  metadata.os = platform.os.family;
511
515
  metadata.osVersion = platform.os.version;
@@ -10738,21 +10742,30 @@ function smallerSideIos() {
10738
10742
  return window.screen.width < window.screen.height ? window.screen.width : window.screen.height;
10739
10743
  }
10740
10744
 
10741
- function listAvailableCameras() {
10745
+ function listAvailableCameras(facingMode) {
10742
10746
  return tslib.__awaiter(this, void 0, void 0, function () {
10743
10747
  var cameraEnumerationStream, videoDevices;
10744
10748
  return tslib.__generator(this, function (_a) {
10745
10749
  switch (_a.label) {
10746
10750
  case 0:
10747
- console.log('enumerating cameras...');
10751
+ _a.trys.push([0, 2,, 3]);
10748
10752
  return [4, navigator.mediaDevices.getUserMedia({
10749
- video: true,
10753
+ video: {
10754
+ facingMode: {
10755
+ exact: facingMode
10756
+ }
10757
+ },
10750
10758
  audio: false
10751
10759
  })];
10752
10760
  case 1:
10753
10761
  cameraEnumerationStream = _a.sent();
10754
- return [4, navigator.mediaDevices.enumerateDevices()];
10762
+ return [3, 3];
10755
10763
  case 2:
10764
+ _a.sent();
10765
+ return [2, []];
10766
+ case 3:
10767
+ return [4, navigator.mediaDevices.enumerateDevices()];
10768
+ case 4:
10756
10769
  videoDevices = _a.sent().filter(function (_a) {
10757
10770
  var kind = _a.kind;
10758
10771
  return kind === 'videoinput';
@@ -10767,6 +10780,22 @@ function listAvailableCameras() {
10767
10780
  });
10768
10781
  });
10769
10782
  }
10783
+ var frontLabels = ['front', 'avant', 'anteriore', 'cameraaanvoorzijde', 'kamerapåframsidan', 'forsidekamera', 'kamerapåforsiden', 'aparatprzedni', 'etukamera', 'kameradepan', 'ÖnKamera', 'cameramặttrước', 'camerăfață', 'prednákamera', 'prednjakamera', 'előlapikamera', 'přednífotoaparát', 'μπροστινήκάμερα', 'переднякамера', 'передняякамера', 'преднакамера', 'алдыңғыкамера', 'מצלמה קדמית', 'الكاميرا الأمامية', 'फ़्रंटकैमरा', '前置相机', '前置鏡頭', '前面カメラ', '전면카메라', 'กล้องด้านหน้า'].map(function (s) {
10784
+ return s.toLocaleLowerCase().split(' ').join('');
10785
+ });
10786
+ var rearLabels = ['back', 'rear', 'posterior', 'trasera', 'traseira', 'arrière', 'rückkamera', 'fotocamera(posteriore)', 'cameraaanachterzijde', 'kamerapåbaksidan', 'kamerapåbaksiden', 'bagsidekamera', 'aparattylny', 'takakamera', 'arkakamera', 'kamerabelakang', 'cameramặtsau', 'camerăspate', 'stražnjakamera', 'zadnákamera', 'hátoldalikamera', 'zadnífotoaparát', 'πίσωκάμερα', 'заднякамера', 'Задняякамера', 'заднакамера', 'артқыкамера', 'מצלמה אחורית', 'الكاميرا الخلفية', 'बैककैमरा', '后置相机', '後置鏡頭', '背面カメラ', '후면카메라', 'กล้องด้านหลัง'].map(function (s) {
10787
+ return s.toLocaleLowerCase().split(' ').join('');
10788
+ });
10789
+ var backUltraWideLabels = ['backultrawidecamera', 'ultraampliaposterior', 'ultra-angulartraseira', 'ultragrandeangulartraseira', 'ultragrandangle', 'ultragranangular', 'ultra-weitwinkelkamera', 'ultra-grandangolo', 'ultrabredecameraaanachterzijde', 'ultravidvinkelkamerapåbaksidan', 'ultravidvinkelkameraetpåbagsiden', 'ultravidvinkelkamerabak', 'ultragenişkameraarkayüzü', 'ultralaajakulmainentakakamera', 'tylnyaparatultraszerokokątny', 'cameracựcrộngmặtsau', 'camerăcuobiectivultra‑superangularspate', 'ultraszéleslátószögűkamera', 'kameraultralebarbelakang', 'stražnjaultraširokakamera', 'zadníultraširokoúhlýfotoaparát', 'ultraširokouhlá', 'πίσωυπερευρείακάμερα', 'заднянадширококутнакамера', 'Задняясверхширокоугольнаякамера', 'Задна свръх широкоъгълна камера', 'артқыультракеңбұрыштыкамера', 'מצלמה אולטרה רחבה אחורית', 'كاميرا خلفية عريضة جدًا', 'बैकअल्ट्रावाइडकैमरा', '后置超广角相机', '後置超廣角鏡頭相機', '背面超広角カメラ', '후면울트라와이드카메라', 'กล้องด้านหลังอัลตร้าไวด์'].map(function (s) {
10790
+ return s.toLocaleLowerCase().split(' ').join('');
10791
+ });
10792
+ var labelMatches = function labelMatches(labelOrDevice, labelSetOrLabel) {
10793
+ var label = labelOrDevice instanceof MediaDeviceInfo ? getDeviceLabel(labelOrDevice) : labelOrDevice;
10794
+ var labelSet = typeof labelSetOrLabel === 'string' ? [labelSetOrLabel] : labelSetOrLabel;
10795
+ return labelSet.some(function (l) {
10796
+ return label.includes(l);
10797
+ });
10798
+ };
10770
10799
  var getDeviceLabel = function getDeviceLabel(deviceInfo) {
10771
10800
  return deviceInfo.label.toLocaleLowerCase().split(' ').join('');
10772
10801
  };
@@ -10778,7 +10807,7 @@ function obtainCameraAccess(stream, deviceLabel, video) {
10778
10807
  width = _a.width,
10779
10808
  height = _a.height;
10780
10809
  var label = deviceLabel.toLocaleLowerCase().split(' ').join('');
10781
- var isRearFacing = label.includes('back') || label.includes('iphonecamera');
10810
+ var isRearFacing = labelMatches(label, tslib.__spreadArray(tslib.__spreadArray(tslib.__spreadArray([], rearLabels, true), backUltraWideLabels, true), ['iphone'], false));
10782
10811
  var release = function release() {
10783
10812
  stream.getTracks().forEach(function (track) {
10784
10813
  track.enabled = false;
@@ -10856,9 +10885,10 @@ var useHighestResCaptureDevice = function useHighestResCaptureDevice(_a) {
10856
10885
  if (cameraAccessDenied) return;
10857
10886
  listAvailableCameras().then(function (availableCameras) {
10858
10887
  var selectedCamera;
10859
- if (!iphoneContinuityCameraDenied) {
10888
+ var platform = getPlatform();
10889
+ if (!iphoneContinuityCameraDenied && (!platform || platform.os.family === 'OS X')) {
10860
10890
  var iphoneContinuityCamera = availableCameras.find(function (deviceInfo) {
10861
- return getDeviceLabel(deviceInfo).includes('iphonecamera');
10891
+ return labelMatches(deviceInfo, 'iphone');
10862
10892
  });
10863
10893
  setIphoneContinuityCameraAvailable(!!iphoneContinuityCamera);
10864
10894
  if (iphoneContinuityCamera && iphoneContinuityCameraAllowed) {
@@ -10867,21 +10897,24 @@ var useHighestResCaptureDevice = function useHighestResCaptureDevice(_a) {
10867
10897
  }
10868
10898
  if (preferFrontFacingCamera) {
10869
10899
  selectedCamera || (selectedCamera = availableCameras.find(function (deviceInfo) {
10870
- return getDeviceLabel(deviceInfo).includes('front');
10900
+ return labelMatches(deviceInfo, frontLabels);
10871
10901
  }));
10872
10902
  }
10873
10903
  if (wideAngleIsBetter()) {
10874
10904
  selectedCamera || (selectedCamera = availableCameras.find(function (deviceInfo) {
10875
- return getDeviceLabel(deviceInfo).includes('backultrawidecamera');
10905
+ return labelMatches(deviceInfo, backUltraWideLabels);
10876
10906
  }));
10877
10907
  } else {
10878
10908
  selectedCamera || (selectedCamera = availableCameras.find(function (deviceInfo) {
10879
- return getDeviceLabel(deviceInfo).includes('back') && !getDeviceLabel(deviceInfo).includes('backultrawidecamera');
10909
+ return labelMatches(deviceInfo, rearLabels) && !labelMatches(deviceInfo, backUltraWideLabels);
10880
10910
  }));
10881
10911
  }
10882
10912
  selectedCamera || (selectedCamera = availableCameras.find(function (deviceInfo) {
10883
- return getDeviceLabel(deviceInfo).includes('back');
10913
+ return labelMatches(deviceInfo, rearLabels);
10884
10914
  }));
10915
+ if (!preferFrontFacingCamera && (platform === null || platform === void 0 ? void 0 : platform.os.family) === 'iOS' && availableCameras.length > 0) {
10916
+ selectedCamera || (selectedCamera = availableCameras[1]);
10917
+ }
10885
10918
  selectedCamera || (selectedCamera = availableCameras[0]);
10886
10919
  setVideoDevice(selectedCamera);
10887
10920
  })["catch"](function (e) {
@@ -10902,7 +10935,7 @@ var useHighestResCaptureDevice = function useHighestResCaptureDevice(_a) {
10902
10935
  if (!((_a = navigator.mediaDevices) === null || _a === void 0 ? void 0 : _a.getUserMedia)) return cleanup;
10903
10936
  (function () {
10904
10937
  return tslib.__awaiter(void 0, void 0, void 0, function () {
10905
- var stream, e_1;
10938
+ var stream, e_2;
10906
10939
  return tslib.__generator(this, function (_a) {
10907
10940
  switch (_a.label) {
10908
10941
  case 0:
@@ -10926,8 +10959,8 @@ var useHighestResCaptureDevice = function useHighestResCaptureDevice(_a) {
10926
10959
  stream = _a.sent();
10927
10960
  return [3, 4];
10928
10961
  case 3:
10929
- e_1 = _a.sent();
10930
- if (e_1.name === 'NotAllowedError') {
10962
+ e_2 = _a.sent();
10963
+ if (e_2.name === 'NotAllowedError') {
10931
10964
  if (iphoneContinuityCameraAllowed) {
10932
10965
  setIphoneContinuityCameraAvailable(false);
10933
10966
  setIphoneContinuityCameraDenied(true);