idmission-web-sdk 1.0.26 → 1.0.28

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.
@@ -26,9 +26,10 @@ export type FaceLivenessWizardProps = {
26
26
  timeoutDurationMs?: number;
27
27
  maxRetries?: number;
28
28
  skipSuccessScreen?: boolean | (() => Promise<boolean>);
29
+ releaseCameraAccessOnExit?: boolean;
29
30
  assets?: FaceLivenessAssets;
30
31
  colors?: FaceLivenessColors;
31
32
  verbiage?: FaceLivenessVerbiage;
32
33
  debugMode?: boolean;
33
34
  };
34
- export declare const FaceLivenessWizard: ({ onComplete, onSuccess, onTimeout, onExitAfterFailure, timeoutDurationMs, maxRetries, skipSuccessScreen, assets, colors, verbiage, debugMode, }: FaceLivenessWizardProps) => ReactElement;
35
+ export declare const FaceLivenessWizard: ({ onComplete, onSuccess, onTimeout, onExitAfterFailure, timeoutDurationMs, maxRetries, skipSuccessScreen, releaseCameraAccessOnExit, assets, colors, verbiage, debugMode, }: FaceLivenessWizardProps) => ReactElement;
@@ -44,9 +44,10 @@ export type IdCaptureWizardProps = {
44
44
  idCardFocusScoreThreshold?: number;
45
45
  passportFocusScoreThreshold?: number;
46
46
  skipSuccessScreen?: boolean | (() => Promise<boolean>);
47
+ releaseCameraAccessOnExit?: boolean;
47
48
  assets?: IdCaptureWizardAssets;
48
49
  colors?: IdCaptureWizardColors;
49
50
  verbiage?: IdCaptureWizardVerbiage;
50
51
  debugMode?: boolean;
51
52
  };
52
- export declare const IdCaptureWizard: ({ onSuccess, autoCaptureEnabled, autoCaptureGoodFramesRequired, autoCaptureBarcodeRequired, barcodeScanningEnabled, idCardAutoCaptureScoreThreshold, passportAutoCaptureScoreThreshold, mrzDetectionScoreThreshold, idCardFocusScoreThreshold, passportFocusScoreThreshold, skipSuccessScreen, assets, colors, verbiage, debugMode, }: IdCaptureWizardProps) => ReactElement;
53
+ export declare const IdCaptureWizard: ({ onSuccess, autoCaptureEnabled, autoCaptureGoodFramesRequired, autoCaptureBarcodeRequired, barcodeScanningEnabled, idCardAutoCaptureScoreThreshold, passportAutoCaptureScoreThreshold, mrzDetectionScoreThreshold, idCardFocusScoreThreshold, passportFocusScoreThreshold, skipSuccessScreen, releaseCameraAccessOnExit, assets, colors, verbiage, debugMode, }: IdCaptureWizardProps) => ReactElement;
@@ -1,8 +1,9 @@
1
1
  import { ReactElement } from 'react';
2
2
  import { IdCaptureWizardAssets, IdCaptureWizardColors, IdCaptureWizardProps, IdCaptureWizardVerbiage } from '../id_capture/IdCaptureWizard';
3
- import { FaceLivenessColors, FaceLivenessVerbiage } from '../face_liveness/FaceLivenessWizard';
3
+ import { FaceLivenessAssets, FaceLivenessColors, FaceLivenessVerbiage } from '../face_liveness/FaceLivenessWizard';
4
4
  export type VideoIdWizardAssets = {
5
5
  idCapture?: IdCaptureWizardAssets;
6
+ faceLiveness?: FaceLivenessAssets;
6
7
  };
7
8
  export type VideoIdWizardColors = {
8
9
  idCapture?: IdCaptureWizardColors;
@@ -50,7 +50,7 @@ var tf__namespace = /*#__PURE__*/_interopNamespace(tf);
50
50
  var useResizeObserver__default = /*#__PURE__*/_interopDefaultLegacy(useResizeObserver);
51
51
  var SignatureCanvas__default = /*#__PURE__*/_interopDefaultLegacy(SignatureCanvas);
52
52
 
53
- var webSdkVersion = '1.0.26';
53
+ var webSdkVersion = '1.0.28';
54
54
 
55
55
  function getPlatform() {
56
56
  return window.platform;
@@ -10347,29 +10347,31 @@ var IdCaptureWizard = function IdCaptureWizard(_a) {
10347
10347
  passportFocusScoreThreshold = _v === void 0 ? 0.3 : _v,
10348
10348
  _w = _a.skipSuccessScreen,
10349
10349
  skipSuccessScreen = _w === void 0 ? false : _w,
10350
- _x = _a.assets,
10351
- assets = _x === void 0 ? {} : _x,
10352
- _y = _a.colors,
10353
- colors = _y === void 0 ? {} : _y,
10354
- _z = _a.verbiage,
10355
- verbiage = _z === void 0 ? {} : _z,
10356
- _0 = _a.debugMode,
10357
- debugMode = _0 === void 0 ? false : _0;
10358
- var _1 = React.useReducer(reducer$4, initialState$4),
10359
- state = _1[0],
10360
- dispatch = _1[1];
10350
+ _x = _a.releaseCameraAccessOnExit,
10351
+ releaseCameraAccessOnExit = _x === void 0 ? true : _x,
10352
+ _y = _a.assets,
10353
+ assets = _y === void 0 ? {} : _y,
10354
+ _z = _a.colors,
10355
+ colors = _z === void 0 ? {} : _z,
10356
+ _0 = _a.verbiage,
10357
+ verbiage = _0 === void 0 ? {} : _0,
10358
+ _1 = _a.debugMode,
10359
+ debugMode = _1 === void 0 ? false : _1;
10360
+ var _2 = React.useReducer(reducer$4, initialState$4),
10361
+ state = _2[0],
10362
+ dispatch = _2[1];
10361
10363
  var releaseCameraAccess = React.useContext(CameraStateContext).releaseCameraAccess;
10362
- var _2 = React.useState(false),
10363
- overlayDismissed = _2[0],
10364
- setOverlayDismissed = _2[1];
10365
- var _3 = React.useContext(SubmissionContext),
10366
- submissionStatus = _3.submissionStatus,
10367
- submissionResponse = _3.submissionResponse,
10368
- setIdFrontImage = _3.setIdFrontImage,
10369
- setIdBackImage = _3.setIdBackImage,
10370
- setPassportImage = _3.setPassportImage,
10371
- logIdFrontCaptureAttempt = _3.logIdFrontCaptureAttempt,
10372
- logIdBackCaptureAttempt = _3.logIdBackCaptureAttempt;
10364
+ var _3 = React.useState(false),
10365
+ overlayDismissed = _3[0],
10366
+ setOverlayDismissed = _3[1];
10367
+ var _4 = React.useContext(SubmissionContext),
10368
+ submissionStatus = _4.submissionStatus,
10369
+ submissionResponse = _4.submissionResponse,
10370
+ setIdFrontImage = _4.setIdFrontImage,
10371
+ setIdBackImage = _4.setIdBackImage,
10372
+ setPassportImage = _4.setPassportImage,
10373
+ logIdFrontCaptureAttempt = _4.logIdFrontCaptureAttempt,
10374
+ logIdBackCaptureAttempt = _4.logIdBackCaptureAttempt;
10373
10375
  var modelsError = React.useContext(IdCaptureModelsContext).error;
10374
10376
  var operationStartedAt = React.useRef();
10375
10377
  React.useEffect(function () {
@@ -10417,7 +10419,7 @@ var IdCaptureWizard = function IdCaptureWizard(_a) {
10417
10419
  setIdFrontImage(idFrontImage);
10418
10420
  setIdBackImage(idBackImage);
10419
10421
  setPassportImage(passportImage);
10420
- releaseCameraAccess();
10422
+ releaseCameraAccessOnExit && releaseCameraAccess();
10421
10423
  setTimeout(function () {
10422
10424
  onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess({
10423
10425
  idFrontImage: idFrontImage,
@@ -10425,16 +10427,16 @@ var IdCaptureWizard = function IdCaptureWizard(_a) {
10425
10427
  passportImage: passportImage
10426
10428
  });
10427
10429
  }, 0);
10428
- }, [onSuccess, releaseCameraAccess, setIdBackImage, setIdFrontImage, setPassportImage, state.capturedDocuments]);
10430
+ }, [onSuccess, releaseCameraAccess, releaseCameraAccessOnExit, setIdBackImage, setIdFrontImage, setPassportImage, state.capturedDocuments]);
10429
10431
  var showSuccessScreen = useShowSuccessScreen(skipSuccessScreen, state.captureState === CaptureState.COMPLETE, onSubmitClick);
10430
10432
  var onRetryClick = React.useCallback(function () {
10431
10433
  dispatch({
10432
10434
  type: 'reset'
10433
10435
  });
10434
10436
  }, []);
10435
- var _4 = React.useState(0),
10436
- attempt = _4[0],
10437
- setAttempt = _4[1];
10437
+ var _5 = React.useState(0),
10438
+ attempt = _5[0],
10439
+ setAttempt = _5[1];
10438
10440
  var onExit = React.useCallback(function () {
10439
10441
  setOverlayDismissed(false);
10440
10442
  setAttempt(function (n) {
@@ -10446,9 +10448,9 @@ var IdCaptureWizard = function IdCaptureWizard(_a) {
10446
10448
  }, []);
10447
10449
  React.useEffect(function () {
10448
10450
  if (submissionStatus !== SubmissionStatus.READY) {
10449
- releaseCameraAccess();
10451
+ releaseCameraAccessOnExit && releaseCameraAccess();
10450
10452
  }
10451
- }, [releaseCameraAccess, submissionStatus]);
10453
+ }, [releaseCameraAccess, releaseCameraAccessOnExit, submissionStatus]);
10452
10454
  assets.idCardFront || (assets.idCardFront = {});
10453
10455
  (_b = assets.idCardFront).portraitGuidesImageUrl || (_b.portraitGuidesImageUrl = "".concat(DEFAULT_CDN_URL, "/Shieldout-IDCard-Front-SVG-Portrait-2.svg"));
10454
10456
  (_c = assets.idCardFront).landscapeGuidesImageUrl || (_c.landscapeGuidesImageUrl = "".concat(DEFAULT_CDN_URL, "/Shieldout-IDCard-Front-SVG-Landscape-2.svg"));
@@ -11644,28 +11646,30 @@ var FaceLivenessWizard = function FaceLivenessWizard(_a) {
11644
11646
  maxRetries = _c === void 0 ? 2 : _c,
11645
11647
  _d = _a.skipSuccessScreen,
11646
11648
  skipSuccessScreen = _d === void 0 ? false : _d,
11647
- _e = _a.assets,
11648
- assets = _e === void 0 ? {} : _e,
11649
- _f = _a.colors,
11650
- colors = _f === void 0 ? {} : _f,
11651
- _g = _a.verbiage,
11652
- verbiage = _g === void 0 ? {} : _g,
11653
- _h = _a.debugMode,
11654
- debugMode = _h === void 0 ? false : _h;
11655
- var _j = React.useContext(SubmissionContext),
11656
- submissionResponse = _j.submissionResponse,
11657
- setSelfieImage = _j.setSelfieImage,
11658
- logSelfieCaptureAttempt = _j.logSelfieCaptureAttempt;
11649
+ _e = _a.releaseCameraAccessOnExit,
11650
+ releaseCameraAccessOnExit = _e === void 0 ? true : _e,
11651
+ _f = _a.assets,
11652
+ assets = _f === void 0 ? {} : _f,
11653
+ _g = _a.colors,
11654
+ colors = _g === void 0 ? {} : _g,
11655
+ _h = _a.verbiage,
11656
+ verbiage = _h === void 0 ? {} : _h,
11657
+ _j = _a.debugMode,
11658
+ debugMode = _j === void 0 ? false : _j;
11659
+ var _k = React.useContext(SubmissionContext),
11660
+ submissionResponse = _k.submissionResponse,
11661
+ setSelfieImage = _k.setSelfieImage,
11662
+ logSelfieCaptureAttempt = _k.logSelfieCaptureAttempt;
11659
11663
  var releaseCameraAccess = React.useContext(CameraStateContext).releaseCameraAccess;
11660
- var _k = React.useState(''),
11661
- faceCropImageUrl = _k[0],
11662
- setFaceCropImageUrl = _k[1];
11663
- var _l = React.useState(0),
11664
- retryCount = _l[0],
11665
- setRetryCount = _l[1];
11666
- var _m = React.useState('LOADING'),
11667
- captureState = _m[0],
11668
- setCaptureState = _m[1];
11664
+ var _l = React.useState(''),
11665
+ faceCropImageUrl = _l[0],
11666
+ setFaceCropImageUrl = _l[1];
11667
+ var _m = React.useState(0),
11668
+ retryCount = _m[0],
11669
+ setRetryCount = _m[1];
11670
+ var _o = React.useState('LOADING'),
11671
+ captureState = _o[0],
11672
+ setCaptureState = _o[1];
11669
11673
  var captureStartedAt = React.useRef();
11670
11674
  var captureEndedAt = React.useRef();
11671
11675
  var operationStartedAt = React.useRef();
@@ -11711,9 +11715,9 @@ var FaceLivenessWizard = function FaceLivenessWizard(_a) {
11711
11715
  setCaptureState('FAILED');
11712
11716
  onTimeout === null || onTimeout === void 0 ? void 0 : onTimeout(submissionResponse);
11713
11717
  }, [onTimeout, submissionResponse]);
11714
- var _o = React.useState(0),
11715
- attempt = _o[0],
11716
- setAttempt = _o[1];
11718
+ var _p = React.useState(0),
11719
+ attempt = _p[0],
11720
+ setAttempt = _p[1];
11717
11721
  var onExitCallback = React.useCallback(function () {
11718
11722
  setAttempt(function (n) {
11719
11723
  return n + 1;
@@ -11722,11 +11726,11 @@ var FaceLivenessWizard = function FaceLivenessWizard(_a) {
11722
11726
  }, []);
11723
11727
  var onDoneCallback = React.useCallback(function () {
11724
11728
  logCaptureMetadata();
11725
- releaseCameraAccess();
11729
+ releaseCameraAccessOnExit && releaseCameraAccess();
11726
11730
  setTimeout(function () {
11727
11731
  onComplete === null || onComplete === void 0 ? void 0 : onComplete(submissionResponse);
11728
11732
  }, 0);
11729
- }, [logCaptureMetadata, onComplete, releaseCameraAccess, submissionResponse]);
11733
+ }, [logCaptureMetadata, onComplete, releaseCameraAccess, releaseCameraAccessOnExit, submissionResponse]);
11730
11734
  var showSuccessScreen = useShowSuccessScreen(skipSuccessScreen, captureState === 'SUCCESS', onDoneCallback);
11731
11735
  return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, captureState !== 'LOADING' && function () {
11732
11736
  switch (captureState) {
@@ -11770,7 +11774,7 @@ var FaceLivenessWizard = function FaceLivenessWizard(_a) {
11770
11774
  setCaptureState('CAPTURING');
11771
11775
  },
11772
11776
  onExitClick: function onExitClick() {
11773
- releaseCameraAccess();
11777
+ releaseCameraAccessOnExit && releaseCameraAccess();
11774
11778
  setTimeout(function () {
11775
11779
  onExitAfterFailure === null || onExitAfterFailure === void 0 ? void 0 : onExitAfterFailure(submissionResponse);
11776
11780
  }, 0);
@@ -14565,61 +14569,25 @@ var VideoIdWizard = function VideoIdWizard(_a) {
14565
14569
  verbiage = _j === void 0 ? {} : _j,
14566
14570
  _k = _a.debugMode,
14567
14571
  debugMode = _k === void 0 ? false : _k;
14568
- var _l = React.useContext(SubmissionContext),
14569
- selfieImage = _l.selfieImage,
14570
- setSelfieImage = _l.setSelfieImage,
14571
- logSelfieCaptureAttempt = _l.logSelfieCaptureAttempt;
14572
- var _m = React.useState('CAPTURING_ID'),
14573
- captureState = _m[0],
14574
- setCaptureState = _m[1];
14575
- var _o = React.useState(null),
14576
- videoUrl = _o[0],
14577
- setVideoUrl = _o[1];
14578
- var operationStartedAt = React.useRef();
14579
- var captureStartedAt = React.useRef();
14580
- var captureEndedAt = React.useRef();
14581
- React.useEffect(function () {
14582
- operationStartedAt.current = new Date();
14583
- }, []);
14584
- React.useEffect(function () {
14585
- if (captureState === 'CHECKING_LIVENESS') {
14586
- captureStartedAt.current = new Date();
14587
- }
14588
- }, [captureState]);
14589
- var logCaptureMetadata = React.useCallback(function () {
14590
- var _a, _b, _c;
14591
- logSelfieCaptureAttempt({
14592
- autoCapture: 'Y',
14593
- captureTime: ((_a = captureEndedAt.current) !== null && _a !== void 0 ? _a : new Date()).getTime() - ((_b = captureStartedAt.current) !== null && _b !== void 0 ? _b : new Date()).getTime(),
14594
- operationTime: new Date().getTime() - ((_c = operationStartedAt.current) !== null && _c !== void 0 ? _c : new Date()).getTime()
14595
- });
14596
- operationStartedAt.current = new Date();
14597
- }, [logSelfieCaptureAttempt]);
14572
+ var _l = React.useState('CAPTURING_ID'),
14573
+ captureState = _l[0],
14574
+ setCaptureState = _l[1];
14575
+ var _m = React.useState(null),
14576
+ videoUrl = _m[0],
14577
+ setVideoUrl = _m[1];
14598
14578
  var onIdCaptureSuccessProp = idCaptureProps.onSuccess;
14599
14579
  var onIdCaptureSuccess = React.useCallback(function (submission) {
14600
14580
  onIdCaptureSuccessProp === null || onIdCaptureSuccessProp === void 0 ? void 0 : onIdCaptureSuccessProp(submission);
14601
14581
  setCaptureState('CHECKING_LIVENESS');
14602
14582
  }, [onIdCaptureSuccessProp]);
14603
- var onFaceCaptureSuccess = React.useCallback(function (faceCropImageUrl) {
14583
+ var onFaceCaptureSuccess = React.useCallback(function () {
14604
14584
  return tslib.__awaiter(void 0, void 0, void 0, function () {
14605
- var _a;
14606
- return tslib.__generator(this, function (_b) {
14607
- switch (_b.label) {
14608
- case 0:
14609
- setCaptureState('CAPTURING_VIDEO');
14610
- logCaptureMetadata();
14611
- if (!!selfieImage) return [3, 2];
14612
- _a = setSelfieImage;
14613
- return [4, dataUrlToBase64(faceCropImageUrl)];
14614
- case 1:
14615
- _a.apply(void 0, [_b.sent()]);
14616
- _b.label = 2;
14617
- case 2:
14618
- return [2];
14619
- }
14585
+ return tslib.__generator(this, function (_a) {
14586
+ setCaptureState('CAPTURING_VIDEO');
14587
+ return [2];
14620
14588
  });
14621
14589
  });
14622
- }, [logCaptureMetadata, selfieImage, setSelfieImage]);
14590
+ }, []);
14623
14591
  var onVideoCaptureComplete = React.useCallback(function (videoUrl) {
14624
14592
  setVideoUrl(videoUrl);
14625
14593
  setCaptureState('SUCCESS');
@@ -14630,13 +14598,16 @@ var VideoIdWizard = function VideoIdWizard(_a) {
14630
14598
  var onExit = React.useCallback(function () {
14631
14599
  setCaptureState('LOADING');
14632
14600
  }, []);
14601
+ var isCapturingId = ['LOADING', 'CAPTURING_ID'].includes(captureState);
14633
14602
  return /*#__PURE__*/React__default['default'].createElement(IdCaptureModelsProvider, {
14634
14603
  documentDetectionModelUrl: (_c = (_b = idCaptureProps.assets) === null || _b === void 0 ? void 0 : _b.documentDetectionModelUrl) !== null && _c !== void 0 ? _c : '',
14635
14604
  focusModelUrl: (_e = (_d = idCaptureProps.assets) === null || _d === void 0 ? void 0 : _d.focusModelUrl) !== null && _e !== void 0 ? _e : '',
14636
14605
  logPredictions: debugMode
14637
14606
  }, /*#__PURE__*/React__default['default'].createElement(CameraProvider, {
14638
- preferContinuityCamera: ['LOADING', 'CAPTURING_ID'].includes(captureState),
14639
- preferFrontFacingCamera: !['LOADING', 'CAPTURING_ID'].includes(captureState)
14607
+ key: isCapturingId ? 'id-camera' : 'selfie-camera',
14608
+ preferContinuityCamera: isCapturingId,
14609
+ preferFrontFacingCamera: !isCapturingId,
14610
+ requestMicrophoneAccess: !isCapturingId
14640
14611
  }, /*#__PURE__*/React__default['default'].createElement(HighPerformanceSelfieGuidanceModelsProvider, null, captureState !== 'LOADING' && function () {
14641
14612
  switch (captureState) {
14642
14613
  case 'CAPTURING_ID':
@@ -14646,12 +14617,16 @@ var VideoIdWizard = function VideoIdWizard(_a) {
14646
14617
  verbiage: verbiage.idCapture,
14647
14618
  onSuccess: onIdCaptureSuccess,
14648
14619
  skipSuccessScreen: true,
14620
+ releaseCameraAccessOnExit: false,
14649
14621
  debugMode: debugMode
14650
14622
  })));
14651
14623
  case 'CHECKING_LIVENESS':
14652
- return /*#__PURE__*/React__default['default'].createElement(FaceLivenessCapture, {
14653
- onSuccess: onFaceCaptureSuccess,
14654
- onExit: onExit,
14624
+ return /*#__PURE__*/React__default['default'].createElement(FaceLivenessWizard, {
14625
+ onComplete: onFaceCaptureSuccess,
14626
+ onExitAfterFailure: onExit,
14627
+ skipSuccessScreen: true,
14628
+ releaseCameraAccessOnExit: false,
14629
+ assets: assets.faceLiveness,
14655
14630
  colors: colors.faceLiveness,
14656
14631
  verbiage: verbiage.faceLiveness,
14657
14632
  debugMode: debugMode