idmission-web-sdk 2.0.0 → 2.0.1

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.
@@ -140,7 +140,7 @@
140
140
  return cooked;
141
141
  }
142
142
 
143
- var webSdkVersion = '2.0.0';
143
+ var webSdkVersion = '2.0.1';
144
144
 
145
145
  function getPlatform() {
146
146
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
@@ -12425,14 +12425,20 @@
12425
12425
  var captureStartedAt = React.useRef();
12426
12426
  var captureEndedAt = React.useRef();
12427
12427
  var operationStartedAt = React.useRef();
12428
+ var _x = React.useContext(SelfieGuidanceModelsContext),
12429
+ start = _x.start,
12430
+ stop = _x.stop;
12428
12431
  React.useEffect(function () {
12429
12432
  operationStartedAt.current = new Date();
12430
12433
  }, []);
12431
12434
  React.useEffect(function () {
12432
- if (captureState === 'CAPTURING') {
12433
- captureStartedAt.current = new Date();
12434
- }
12435
- }, [captureState]);
12435
+ if (captureState !== 'CAPTURING') return;
12436
+ captureStartedAt.current = new Date();
12437
+ start();
12438
+ return function () {
12439
+ stop();
12440
+ };
12441
+ }, [captureState, start, stop]);
12436
12442
  var onCapture = React.useCallback(function () {
12437
12443
  captureEndedAt.current = new Date();
12438
12444
  }, []);
@@ -12469,9 +12475,9 @@
12469
12475
  setCaptureState('FAILED');
12470
12476
  onTimeout === null || onTimeout === void 0 ? void 0 : onTimeout(submissionResponse, livenessCheckRequest);
12471
12477
  }, [onTimeout, livenessCheckRequest, submissionResponse]);
12472
- var _x = React.useState(0),
12473
- attempt = _x[0],
12474
- setAttempt = _x[1];
12478
+ var _y = React.useState(0),
12479
+ attempt = _y[0],
12480
+ setAttempt = _y[1];
12475
12481
  var onExitCallback = React.useCallback(function () {
12476
12482
  setAttempt(function (n) {
12477
12483
  return n + 1;
@@ -13507,7 +13513,10 @@
13507
13513
  var AcceptBtn$1 = styled__default['default'](LoaderButton)(templateObject_1$b || (templateObject_1$b = __makeTemplateObject(["\n margin-left: auto;\n"], ["\n margin-left: auto;\n"])));
13508
13514
  var templateObject_1$b;
13509
13515
 
13510
- var useVideoRecorder = function useVideoRecorder(camera, audioStream) {
13516
+ var useVideoRecorder = function useVideoRecorder(camera, audioStream, mergeAVStreams) {
13517
+ if (mergeAVStreams === void 0) {
13518
+ mergeAVStreams = false;
13519
+ }
13511
13520
  var videoRecorder = React.useRef(null);
13512
13521
  var audioRecorder = React.useRef(null);
13513
13522
  var videoChunks = React.useRef([]);
@@ -13536,7 +13545,13 @@
13536
13545
  var _h = React.useState(false),
13537
13546
  audioRecordingIntentionallyStopped = _h[0],
13538
13547
  setAudioRecordingIntentionallyStopped = _h[1];
13539
- var videoStream = camera === null || camera === void 0 ? void 0 : camera.stream;
13548
+ var getVideoStream = React.useCallback(function () {
13549
+ var _a, _b, _c;
13550
+ if (!mergeAVStreams) return camera === null || camera === void 0 ? void 0 : camera.stream;
13551
+ var videoTracks = (_b = (_a = camera === null || camera === void 0 ? void 0 : camera.stream) === null || _a === void 0 ? void 0 : _a.getTracks()) !== null && _b !== void 0 ? _b : [];
13552
+ var audioTracks = (_c = audioStream === null || audioStream === void 0 ? void 0 : audioStream.getTracks()) !== null && _c !== void 0 ? _c : [];
13553
+ return new MediaStream(__spreadArray(__spreadArray([], videoTracks, true), audioTracks, true));
13554
+ }, [audioStream, camera === null || camera === void 0 ? void 0 : camera.stream, mergeAVStreams]);
13540
13555
  var processVideo = React.useCallback(function () {
13541
13556
  var videoBlob = new Blob(videoChunks.current, {
13542
13557
  type: 'video/mp4'
@@ -13557,13 +13572,15 @@
13557
13572
  (_a = audioStream === null || audioStream === void 0 ? void 0 : audioStream.stop) === null || _a === void 0 ? void 0 : _a.call(audioStream);
13558
13573
  }, [audioStream]);
13559
13574
  var startRecordingVideo = React.useCallback(function () {
13575
+ var videoStream = getVideoStream();
13560
13576
  if (!videoStream) return;
13561
13577
  videoChunks.current = [];
13562
13578
  setIsRecordingVideo(true);
13563
13579
  setVideoRecordingStopped(false);
13564
13580
  setVideoRecordingIntentionallyStopped(false);
13565
13581
  videoRecorder.current = new MediaRecorder(videoStream, {
13566
- videoBitsPerSecond: 270000
13582
+ videoBitsPerSecond: 270000,
13583
+ audioBitsPerSecond: 32000
13567
13584
  });
13568
13585
  videoRecorder.current.ondataavailable = function (e) {
13569
13586
  videoChunks.current.push(e.data);
@@ -13579,8 +13596,9 @@
13579
13596
  // TODO: figure out what to do here
13580
13597
  }
13581
13598
  }, 100);
13582
- }, [videoStream]);
13599
+ }, [getVideoStream]);
13583
13600
  var startRecordingAudio = React.useCallback(function () {
13601
+ if (mergeAVStreams) return;
13584
13602
  if (!audioStream) return;
13585
13603
  audioChunks.current = [];
13586
13604
  setIsRecordingAudio(true);
@@ -13596,7 +13614,7 @@
13596
13614
  setAudioRecordingStopped(true);
13597
13615
  };
13598
13616
  audioRecorder.current.start(1000);
13599
- }, [audioStream]);
13617
+ }, [audioStream, mergeAVStreams]);
13600
13618
  var stopRecordingVideo = React.useCallback(function () {
13601
13619
  var _a, _b;
13602
13620
  setVideoRecordingIntentionallyStopped(true);
@@ -13898,45 +13916,52 @@
13898
13916
  onRetryClicked = _a.onRetryClicked,
13899
13917
  onExitCapture = _a.onExitCapture,
13900
13918
  onUserCancel = _a.onUserCancel,
13901
- onModelError = _a.onModelError,
13902
13919
  _c = _a.loadingOverlayMode,
13903
13920
  loadingOverlayMode = _c === void 0 ? 'default' : _c,
13904
- _d = _a.modelLoadTimeoutMs,
13905
- modelLoadTimeoutMs = _d === void 0 ? defaultSelfieCaptureModelLoadTimeoutMs : _d,
13906
- _e = _a.skipSuccessScreen,
13907
- skipSuccessScreen = _e === void 0 ? false : _e,
13908
- _f = _a.assets,
13909
- assets = _f === void 0 ? {} : _f,
13910
- _g = _a.classNames,
13911
- classNames = _g === void 0 ? {} : _g,
13912
- _h = _a.colors,
13913
- colors = _h === void 0 ? {} : _h,
13914
- _j = _a.verbiage,
13915
- verbiage = _j === void 0 ? {} : _j,
13916
- _k = _a.debugMode,
13917
- debugMode = _k === void 0 ? false : _k;
13918
- var _l = React.useContext(SubmissionContext),
13919
- selfieImage = _l.selfieImage,
13920
- signatureVideoUrl = _l.signatureVideoUrl,
13921
- setSelfieImage = _l.setSelfieImage,
13922
- setSignatureData = _l.setSignatureData,
13923
- setSignatureVideoUrl = _l.setSignatureVideoUrl,
13924
- logSelfieCaptureAttempt = _l.logSelfieCaptureAttempt;
13921
+ _d = _a.skipSuccessScreen,
13922
+ skipSuccessScreen = _d === void 0 ? false : _d,
13923
+ _e = _a.assets,
13924
+ assets = _e === void 0 ? {} : _e,
13925
+ _f = _a.classNames,
13926
+ classNames = _f === void 0 ? {} : _f,
13927
+ _g = _a.colors,
13928
+ colors = _g === void 0 ? {} : _g,
13929
+ _h = _a.verbiage,
13930
+ verbiage = _h === void 0 ? {} : _h,
13931
+ _j = _a.debugMode,
13932
+ debugMode = _j === void 0 ? false : _j;
13933
+ var _k = React.useContext(SubmissionContext),
13934
+ selfieImage = _k.selfieImage,
13935
+ signatureVideoUrl = _k.signatureVideoUrl,
13936
+ setSelfieImage = _k.setSelfieImage,
13937
+ setSignatureData = _k.setSignatureData,
13938
+ setSignatureVideoUrl = _k.setSignatureVideoUrl,
13939
+ logSelfieCaptureAttempt = _k.logSelfieCaptureAttempt;
13925
13940
  var cameraAccessDenied = React.useContext(CameraStateContext).cameraAccessDenied;
13926
- var _m = React.useState('LOADING'),
13927
- captureState = _m[0],
13928
- setCaptureState = _m[1];
13941
+ var _l = React.useState('LOADING'),
13942
+ captureState = _l[0],
13943
+ setCaptureState = _l[1];
13929
13944
  var operationStartedAt = React.useRef();
13930
13945
  var captureStartedAt = React.useRef();
13931
13946
  var captureEndedAt = React.useRef();
13947
+ var _m = React.useContext(SelfieGuidanceModelsContext),
13948
+ start = _m.start,
13949
+ stop = _m.stop;
13932
13950
  React.useEffect(function () {
13933
13951
  operationStartedAt.current = new Date();
13934
13952
  }, []);
13935
13953
  React.useEffect(function () {
13936
- if (captureState === 'CHECKING_LIVENESS') {
13937
- captureStartedAt.current = new Date();
13938
- }
13954
+ if (captureState !== 'CHECKING_LIVENESS') return;
13955
+ captureStartedAt.current = new Date();
13939
13956
  }, [captureState]);
13957
+ var shouldRun = ['CHECKING_LIVENESS', 'CAPTURING_SIGNATURE'].includes(captureState);
13958
+ React.useEffect(function () {
13959
+ if (!shouldRun) return;
13960
+ start();
13961
+ return function () {
13962
+ stop();
13963
+ };
13964
+ }, [shouldRun, start, stop]);
13940
13965
  var logCaptureMetadata = React.useCallback(function () {
13941
13966
  var _a, _b, _c;
13942
13967
  logSelfieCaptureAttempt({
@@ -14001,11 +14026,7 @@
14001
14026
  setCaptureState('LOADING');
14002
14027
  }
14003
14028
  }, [cameraAccessDenied]);
14004
- return /*#__PURE__*/React__default['default'].createElement(SelfieGuidanceModelsProvider, {
14005
- throttleMs: captureState === 'CAPTURING_SIGNATURE' ? 250 : 0,
14006
- onModelError: onModelError,
14007
- modelLoadTimeoutMs: modelLoadTimeoutMs
14008
- }, /*#__PURE__*/React__default['default'].createElement(PageContainer, {
14029
+ return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(PageContainer, {
14009
14030
  className: "flex ".concat((_b = classNames === null || classNames === void 0 ? void 0 : classNames.container) !== null && _b !== void 0 ? _b : '')
14010
14031
  }, /*#__PURE__*/React__default['default'].createElement(CameraVideoTag, {
14011
14032
  className: classNames.cameraFeed
@@ -14370,79 +14391,85 @@
14370
14391
  disableFaceDetectionWhileAudioCapture = _8 === void 0 ? false : _8,
14371
14392
  _9 = _a.disableFaceDetectionWhileAudioCaptureMsDelay,
14372
14393
  disableFaceDetectionWhileAudioCaptureMsDelay = _9 === void 0 ? 2000 : _9,
14373
- _10 = _a.assets,
14374
- assets = _10 === void 0 ? {} : _10,
14375
- _11 = _a.classNames,
14376
- classNames = _11 === void 0 ? {} : _11,
14377
- _12 = _a.colors,
14378
- colors = _12 === void 0 ? {} : _12,
14379
- _13 = _a.verbiage,
14380
- rawVerbiage = _13 === void 0 ? {} : _13,
14381
- _14 = _a.debugMode,
14382
- debugMode = _14 === void 0 ? false : _14;
14383
- var _15 = useResizeObserver(),
14384
- ref = _15.ref,
14385
- _16 = _15.width,
14386
- width = _16 === void 0 ? 1 : _16,
14387
- _17 = _15.height,
14388
- height = _17 === void 0 ? 1 : _17;
14389
- var _18 = React.useContext(CameraStateContext),
14390
- cameraRef = _18.cameraRef,
14391
- videoRef = _18.videoRef,
14392
- videoLoaded = _18.videoLoaded,
14393
- cameraReady = _18.cameraReady,
14394
- microphoneReady = _18.microphoneReady,
14395
- audioStream = _18.audioStream,
14396
- setVideoLoaded = _18.setVideoLoaded,
14397
- takePhoto = _18.takePhoto;
14398
- var _19 = React.useState([]),
14399
- detectedObjects = _19[0],
14400
- setDetectedObjects = _19[1];
14394
+ _10 = _a.mergeAVStreams,
14395
+ mergeAVStreams = _10 === void 0 ? false : _10,
14396
+ _11 = _a.assets,
14397
+ assets = _11 === void 0 ? {} : _11,
14398
+ _12 = _a.classNames,
14399
+ classNames = _12 === void 0 ? {} : _12,
14400
+ _13 = _a.colors,
14401
+ colors = _13 === void 0 ? {} : _13,
14402
+ _14 = _a.verbiage,
14403
+ rawVerbiage = _14 === void 0 ? {} : _14,
14404
+ _15 = _a.debugMode,
14405
+ debugMode = _15 === void 0 ? false : _15;
14406
+ var _16 = useResizeObserver(),
14407
+ ref = _16.ref,
14408
+ _17 = _16.width,
14409
+ width = _17 === void 0 ? 1 : _17,
14410
+ _18 = _16.height,
14411
+ height = _18 === void 0 ? 1 : _18;
14412
+ var _19 = React.useContext(CameraStateContext),
14413
+ cameraRef = _19.cameraRef,
14414
+ videoRef = _19.videoRef,
14415
+ videoLoaded = _19.videoLoaded,
14416
+ cameraReady = _19.cameraReady,
14417
+ microphoneReady = _19.microphoneReady,
14418
+ audioStream = _19.audioStream,
14419
+ setVideoLoaded = _19.setVideoLoaded,
14420
+ takePhoto = _19.takePhoto;
14401
14421
  var _20 = React.useState([]),
14402
- faces = _20[0],
14403
- setFaces = _20[1];
14404
- var _21 = React.useContext(IdCaptureModelsContext),
14405
- idModelsReady = _21.ready,
14406
- startIdModels = _21.start,
14407
- stopIdModels = _21.stop,
14408
- onIdPredictionMade = _21.onPredictionMade,
14409
- setThresholds = _21.setThresholds,
14410
- bestFrameDetails = _21.bestFrameDetails,
14411
- resetBestFrame = _21.resetBestFrame,
14412
- idModelError = _21.modelError;
14413
- var _22 = React.useState(null),
14414
- videoStartsAt = _22[0],
14415
- setVideoStartsAt = _22[1];
14416
- var _23 = React.useContext(SubmissionContext),
14417
- setIdCaptureVideoAudioStartsAt = _23.setIdCaptureVideoAudioStartsAt,
14418
- setExpectedAudioText = _23.setExpectedAudioText;
14419
- var _24 = React.useContext(SelfieGuidanceModelsContext),
14420
- onSelfiePredictionMade = _24.onPredictionMade,
14421
- selfieModelError = _24.error;
14422
- var _25 = useVideoRecorder(cameraRef.current, audioStream),
14423
- isRecordingVideo = _25.isRecordingVideo,
14424
- startRecordingVideo = _25.startRecordingVideo,
14425
- startRecordingAudio = _25.startRecordingAudio,
14426
- stopRecordingVideo = _25.stopRecordingVideo,
14427
- stopRecordingAudio = _25.stopRecordingAudio,
14428
- videoRecordingUnintentionallyStopped = _25.videoRecordingUnintentionallyStopped,
14429
- audioRecordingUnintentionallyStopped = _25.audioRecordingUnintentionallyStopped,
14430
- videoUrl = _25.videoUrl,
14431
- audioUrl = _25.audioUrl;
14422
+ detectedObjects = _20[0],
14423
+ setDetectedObjects = _20[1];
14424
+ var _21 = React.useState([]),
14425
+ faces = _21[0],
14426
+ setFaces = _21[1];
14427
+ var _22 = React.useContext(IdCaptureModelsContext),
14428
+ idModelsReady = _22.ready,
14429
+ startIdModels = _22.start,
14430
+ stopIdModels = _22.stop,
14431
+ onIdPredictionMade = _22.onPredictionMade,
14432
+ setThresholds = _22.setThresholds,
14433
+ bestFrameDetails = _22.bestFrameDetails,
14434
+ resetBestFrame = _22.resetBestFrame,
14435
+ idModelError = _22.modelError;
14436
+ var _23 = React.useState(null),
14437
+ videoStartsAt = _23[0],
14438
+ setVideoStartsAt = _23[1];
14439
+ var _24 = React.useContext(SubmissionContext),
14440
+ setIdCaptureVideoAudioStartsAt = _24.setIdCaptureVideoAudioStartsAt,
14441
+ setExpectedAudioText = _24.setExpectedAudioText;
14442
+ var _25 = React.useContext(SelfieGuidanceModelsContext),
14443
+ onSelfiePredictionMade = _25.onPredictionMade,
14444
+ selfieModelError = _25.error;
14445
+ var _26 = useVideoRecorder(cameraRef.current, audioStream, mergeAVStreams),
14446
+ isRecordingVideo = _26.isRecordingVideo,
14447
+ startRecordingVideo = _26.startRecordingVideo,
14448
+ startRecordingAudio = _26.startRecordingAudio,
14449
+ stopRecordingVideo = _26.stopRecordingVideo,
14450
+ stopRecordingAudio = _26.stopRecordingAudio,
14451
+ videoRecordingUnintentionallyStopped = _26.videoRecordingUnintentionallyStopped,
14452
+ audioRecordingUnintentionallyStopped = _26.audioRecordingUnintentionallyStopped,
14453
+ videoUrl = _26.videoUrl,
14454
+ audioUrl = _26.audioUrl;
14432
14455
  var countdownTimeoutRef = React.useRef(undefined);
14433
- var _26 = React.useState(0),
14434
- countdownRemaining = _26[0],
14435
- setCountdownRemaining = _26[1];
14456
+ var _27 = React.useState(0),
14457
+ countdownRemaining = _27[0],
14458
+ setCountdownRemaining = _27[1];
14436
14459
  React.useEffect(function () {
14437
14460
  if (!isRecordingVideo && !videoUrl) {
14438
14461
  startRecordingVideo();
14439
14462
  setVideoStartsAt(new Date());
14440
14463
  }
14441
- if (videoUrl && (!readTextPrompt || audioUrl)) {
14464
+ // if the mergeAVStreams flag is present, the audio stream is on the video
14465
+ // stream, so we won't wait for a separate data url containing audio only.
14466
+ var needsAudio = !!readTextPrompt && !mergeAVStreams;
14467
+ var audioReady = !needsAudio || audioUrl;
14468
+ if (videoUrl && audioReady) {
14442
14469
  setVideoLoaded(false);
14443
14470
  onComplete === null || onComplete === void 0 ? void 0 : onComplete(videoUrl, audioUrl);
14444
14471
  }
14445
- }, [audioUrl, isRecordingVideo, onComplete, readTextPrompt, setVideoLoaded, startRecordingVideo, videoUrl]);
14472
+ }, [audioUrl, isRecordingVideo, mergeAVStreams, onComplete, readTextPrompt, setVideoLoaded, startRecordingVideo, videoUrl]);
14446
14473
  React.useEffect(function () {
14447
14474
  if (videoRecordingUnintentionallyStopped || audioRecordingUnintentionallyStopped) {
14448
14475
  onRecordingFailed === null || onRecordingFailed === void 0 ? void 0 : onRecordingFailed();
@@ -14452,9 +14479,9 @@
14452
14479
  React.useEffect(function () {
14453
14480
  shouldCaptureFrames.current = videoLoaded && cameraReady && idModelsReady && !idModelError && (!readTextPrompt || microphoneReady);
14454
14481
  }, [cameraReady, idModelError, idModelsReady, microphoneReady, readTextPrompt, videoLoaded]);
14455
- var _27 = React.useState('SHOW_ID_FRONT'),
14456
- requestedAction = _27[0],
14457
- setRequestedAction = _27[1];
14482
+ var _28 = React.useState('SHOW_ID_FRONT'),
14483
+ requestedAction = _28[0],
14484
+ setRequestedAction = _28[1];
14458
14485
  React.useEffect(function startModelsWhenCapturing() {
14459
14486
  if (!shouldCaptureFrames.current && requestedAction !== 'SHOW_ID_FRONT' && requestedAction !== 'SHOW_ID_BACK') return;
14460
14487
  startIdModels();
@@ -14473,15 +14500,15 @@
14473
14500
  }
14474
14501
  });
14475
14502
  }, [idCardBackDetectionThreshold, idCardBackFocusThreshold, idCardFrontDetectionThreshold, idCardFrontFocusThreshold, requestedAction, setThresholds]);
14476
- var _28 = React.useState(0),
14477
- currentDetectionScore = _28[0],
14478
- setCurrentDetectionScore = _28[1];
14479
14503
  var _29 = React.useState(0),
14480
- currentFocusScore = _29[0],
14481
- setCurrentFocusScore = _29[1];
14504
+ currentDetectionScore = _29[0],
14505
+ setCurrentDetectionScore = _29[1];
14482
14506
  var _30 = React.useState(0),
14483
- goodFramesCount = _30[0],
14484
- setGoodFramesCount = _30[1];
14507
+ currentFocusScore = _30[0],
14508
+ setCurrentFocusScore = _30[1];
14509
+ var _31 = React.useState(0),
14510
+ goodFramesCount = _31[0],
14511
+ setGoodFramesCount = _31[1];
14485
14512
  var goodFramesThreshold = requestedAction === 'SHOW_ID_FRONT' ? goodIdCardFrontFramesThreshold : goodIdCardBackFramesThreshold;
14486
14513
  var goodFramesThresholdMet = goodFramesCount >= goodFramesThreshold;
14487
14514
  React.useEffect(function () {
@@ -14499,9 +14526,9 @@
14499
14526
  }
14500
14527
  });
14501
14528
  }, [idCaptureModelsEnabled, idCardFrontDetectionThreshold, onIdPredictionMade, idModelError]);
14502
- var _31 = React.useState(null),
14503
- idFrontCaptureStartedAt = _31[0],
14504
- setFirstGoodFrameTime = _31[1];
14529
+ var _32 = React.useState(null),
14530
+ idFrontCaptureStartedAt = _32[0],
14531
+ setFirstGoodFrameTime = _32[1];
14505
14532
  React.useEffect(function () {
14506
14533
  if (goodFramesCount === 1) setFirstGoodFrameTime(new Date().getTime());
14507
14534
  }, [goodFramesCount]);
@@ -14522,9 +14549,9 @@
14522
14549
  var frameHeight = (_e = (_d = videoRef.current) === null || _d === void 0 ? void 0 : _d.videoHeight) !== null && _e !== void 0 ? _e : 0;
14523
14550
  var faceBox = (_f = faces === null || faces === void 0 ? void 0 : faces[0]) === null || _f === void 0 ? void 0 : _f.box;
14524
14551
  var faceCentered = !faceBox || !frameWidth || faceBox.xMin > frameWidth * edgeBoundary && faceBox.yMin > frameHeight * edgeBoundary && faceBox.xMax < frameWidth * (1 - edgeBoundary) && faceBox.yMax < frameHeight * (1 - edgeBoundary);
14525
- var _32 = React.useState(),
14526
- countdownStartedAt = _32[0],
14527
- setCountdownStartedAt = _32[1];
14552
+ var _33 = React.useState(),
14553
+ countdownStartedAt = _33[0],
14554
+ setCountdownStartedAt = _33[1];
14528
14555
  var frameLock = React.useRef(false);
14529
14556
  var captureFrame = React.useCallback(function () {
14530
14557
  return __awaiter(void 0, void 0, void 0, function () {
@@ -14645,9 +14672,9 @@
14645
14672
  };
14646
14673
  }, [captureCountdownSeconds, captureFrame, countdownStartedAt, manualCountdown]);
14647
14674
  var timeoutStartedAt = useTimeout(readTextTimeoutDurationMs, stopRecording, requestedAction !== 'READ_TEXT', false, requestedAction === 'READ_TEXT').timeoutStartedAt;
14648
- var _33 = React.useState(0),
14649
- numFramesWithoutFaces = _33[0],
14650
- setNumFramesWithoutFaces = _33[1];
14675
+ var _34 = React.useState(0),
14676
+ numFramesWithoutFaces = _34[0],
14677
+ setNumFramesWithoutFaces = _34[1];
14651
14678
  React.useEffect(function () {
14652
14679
  if (!selfieModelError) {
14653
14680
  onSelfiePredictionMade(function (faces) {
@@ -14665,14 +14692,14 @@
14665
14692
  }
14666
14693
  }, [disableFaceDetectionWhileAudioCapture, disableFaceDetectionWhileAudioCaptureMsDelay, numFramesWithoutFaces, onFaceNotDetected, timeoutStartedAt]);
14667
14694
  var theme = styled.useTheme();
14668
- var _34 = useTranslations(rawVerbiage, {
14695
+ var _35 = useTranslations(rawVerbiage, {
14669
14696
  faceNotCenteredText: 'Please move your face to the center...',
14670
14697
  searchingForIdCardText: 'Searching for ID card...',
14671
14698
  captureBtnText: 'Capture'
14672
14699
  }),
14673
- captureBtnText = _34.captureBtnText,
14674
- faceNotCenteredText = _34.faceNotCenteredText,
14675
- searchingForIdCardText = _34.searchingForIdCardText;
14700
+ captureBtnText = _35.captureBtnText,
14701
+ faceNotCenteredText = _35.faceNotCenteredText,
14702
+ searchingForIdCardText = _35.searchingForIdCardText;
14676
14703
  var debugScalingDetails = useDebugScalingDetails({
14677
14704
  enabled: debugMode,
14678
14705
  pageWidth: width,
@@ -14913,29 +14940,31 @@
14913
14940
  disableFaceDetectionWhileAudioCaptureMsDelay = _v === void 0 ? 2000 : _v,
14914
14941
  _w = _a.silentFallback,
14915
14942
  silentFallback = _w === void 0 ? false : _w,
14916
- _x = _a.assets,
14917
- assets = _x === void 0 ? {} : _x,
14918
- _y = _a.classNames,
14919
- classNames = _y === void 0 ? {} : _y,
14920
- _z = _a.colors,
14921
- colors = _z === void 0 ? {} : _z,
14922
- _0 = _a.verbiage,
14923
- verbiage = _0 === void 0 ? {} : _0,
14924
- _1 = _a.debugMode,
14925
- debugMode = _1 === void 0 ? false : _1;
14926
- var _2 = React.useContext(SubmissionContext),
14927
- submissionStatus = _2.submissionStatus,
14928
- idCaptureVideoUrl = _2.idCaptureVideoUrl,
14929
- idCaptureVideoAudioUrl = _2.idCaptureVideoAudioUrl,
14930
- idCaptureVideoIdFrontImage = _2.idCaptureVideoIdFrontImage,
14931
- idCaptureVideoIdBackImage = _2.idCaptureVideoIdBackImage,
14932
- setIdCaptureVideoUrl = _2.setIdCaptureVideoUrl,
14933
- setIdCaptureVideoIdFrontImage = _2.setIdCaptureVideoIdFrontImage,
14934
- setIdCaptureVideoIdBackImage = _2.setIdCaptureVideoIdBackImage,
14935
- setIdCaptureVideoAudioUrl = _2.setIdCaptureVideoAudioUrl;
14936
- var _3 = React.useState('CAPTURING_ID'),
14937
- captureState = _3[0],
14938
- setCaptureState = _3[1];
14943
+ _x = _a.mergeAVStreams,
14944
+ mergeAVStreams = _x === void 0 ? false : _x,
14945
+ _y = _a.assets,
14946
+ assets = _y === void 0 ? {} : _y,
14947
+ _z = _a.classNames,
14948
+ classNames = _z === void 0 ? {} : _z,
14949
+ _0 = _a.colors,
14950
+ colors = _0 === void 0 ? {} : _0,
14951
+ _1 = _a.verbiage,
14952
+ verbiage = _1 === void 0 ? {} : _1,
14953
+ _2 = _a.debugMode,
14954
+ debugMode = _2 === void 0 ? false : _2;
14955
+ var _3 = React.useContext(SubmissionContext),
14956
+ submissionStatus = _3.submissionStatus,
14957
+ idCaptureVideoUrl = _3.idCaptureVideoUrl,
14958
+ idCaptureVideoAudioUrl = _3.idCaptureVideoAudioUrl,
14959
+ idCaptureVideoIdFrontImage = _3.idCaptureVideoIdFrontImage,
14960
+ idCaptureVideoIdBackImage = _3.idCaptureVideoIdBackImage,
14961
+ setIdCaptureVideoUrl = _3.setIdCaptureVideoUrl,
14962
+ setIdCaptureVideoIdFrontImage = _3.setIdCaptureVideoIdFrontImage,
14963
+ setIdCaptureVideoIdBackImage = _3.setIdCaptureVideoIdBackImage,
14964
+ setIdCaptureVideoAudioUrl = _3.setIdCaptureVideoAudioUrl;
14965
+ var _4 = React.useState('CAPTURING_ID'),
14966
+ captureState = _4[0],
14967
+ setCaptureState = _4[1];
14939
14968
  React.useEffect(function () {
14940
14969
  if (skipIdCapture && captureState === 'CAPTURING_ID') setCaptureState('CHECKING_LIVENESS');
14941
14970
  }, [captureState, skipIdCapture]);
@@ -14966,9 +14995,9 @@
14966
14995
  var onVideoCaptureFaceNotDetected = React.useCallback(function () {
14967
14996
  setCaptureState('CHECKING_LIVENESS');
14968
14997
  }, []);
14969
- var _4 = React.useState(0),
14970
- attempt = _4[0],
14971
- setAttempt = _4[1];
14998
+ var _5 = React.useState(0),
14999
+ attempt = _5[0],
15000
+ setAttempt = _5[1];
14972
15001
  var userSuppliedExitAfterFailure = onExitAfterFailure !== null && onExitAfterFailure !== void 0 ? onExitAfterFailure : faceLivenessProps.onExitAfterFailure;
14973
15002
  var onFaceCaptureExitAfterFailure = React.useCallback(function (resp, req) {
14974
15003
  userSuppliedExitAfterFailure === null || userSuppliedExitAfterFailure === void 0 ? void 0 : userSuppliedExitAfterFailure(resp, req);
@@ -15009,11 +15038,13 @@
15009
15038
  onMicrophoneAccessDenied: onMicrophoneAccessDenied,
15010
15039
  debugMode: debugMode
15011
15040
  }, /*#__PURE__*/React__default['default'].createElement(IdCaptureModelsProvider, {
15041
+ autoStart: false,
15012
15042
  documentDetectionModelUrl: (_c = (_b = idCaptureProps.assets) === null || _b === void 0 ? void 0 : _b.documentDetectionModelUrl) !== null && _c !== void 0 ? _c : '',
15013
15043
  focusModelUrl: (_e = (_d = idCaptureProps.assets) === null || _d === void 0 ? void 0 : _d.focusModelUrl) !== null && _e !== void 0 ? _e : '',
15014
15044
  onModelError: onIdCaptureModelError,
15015
15045
  modelLoadTimeoutMs: idCaptureModelLoadTimeoutMs
15016
15046
  }, /*#__PURE__*/React__default['default'].createElement(SelfieGuidanceModelsProvider, {
15047
+ autoStart: false,
15017
15048
  onModelError: faceLivenessProps === null || faceLivenessProps === void 0 ? void 0 : faceLivenessProps.onModelError,
15018
15049
  modelLoadTimeoutMs: faceLivenessProps === null || faceLivenessProps === void 0 ? void 0 : faceLivenessProps.modelLoadTimeoutMs
15019
15050
  }, /*#__PURE__*/React__default['default'].createElement(PageContainer, {
@@ -15082,6 +15113,7 @@
15082
15113
  readTextPrompt: readTextPrompt,
15083
15114
  readTextTimeoutDurationMs: readTextTimeoutDurationMs,
15084
15115
  readTextMinReadingMs: readTextMinReadingMs,
15116
+ mergeAVStreams: mergeAVStreams,
15085
15117
  assets: assets.idVideoCapture,
15086
15118
  classNames: classNames.idVideoCapture,
15087
15119
  colors: colors.idVideoCapture,
@@ -15280,6 +15312,7 @@
15280
15312
  onMicrophoneAccessDenied: onMicrophoneAccessDenied,
15281
15313
  debugMode: debugMode
15282
15314
  }, /*#__PURE__*/React__default['default'].createElement(SelfieGuidanceModelsProvider, {
15315
+ autoStart: false,
15283
15316
  onModelError: faceLivenessProps.onModelError,
15284
15317
  modelLoadTimeoutMs: faceLivenessProps.modelLoadTimeoutMs
15285
15318
  }, /*#__PURE__*/React__default['default'].createElement(FaceLivenessWizard, __assign$1({}, faceLivenessProps, {
@@ -15299,10 +15332,15 @@
15299
15332
  onCameraAccessDenied: onCameraAccessDenied,
15300
15333
  onMicrophoneAccessDenied: onMicrophoneAccessDenied,
15301
15334
  debugMode: debugMode
15335
+ }, /*#__PURE__*/React__default['default'].createElement(SelfieGuidanceModelsProvider, {
15336
+ autoStart: false,
15337
+ throttleMs: 250,
15338
+ onModelError: videoSignatureCaptureProps.onModelError,
15339
+ modelLoadTimeoutMs: videoSignatureCaptureProps.modelLoadTimeoutMs
15302
15340
  }, /*#__PURE__*/React__default['default'].createElement(VideoSignatureWizard, __assign$1({}, videoSignatureCaptureProps, {
15303
15341
  onComplete: onVideoSignatureComplete,
15304
15342
  onRetryClicked: onVideoSignatureRetry
15305
- })));
15343
+ }))));
15306
15344
  case 'AdditionalDocumentCapture':
15307
15345
  return /*#__PURE__*/React__default['default'].createElement(AdditionalDocumentCaptureWizard, __assign$1({}, additionalDocumentCaptureProps, {
15308
15346
  documents: documents,
@@ -16629,6 +16667,16 @@
16629
16667
  var _m = React.useContext(CameraStateContext),
16630
16668
  cameraAccessDenied = _m.cameraAccessDenied,
16631
16669
  releaseCameraAccess = _m.releaseCameraAccess;
16670
+ var _o = React.useContext(SelfieGuidanceModelsContext),
16671
+ start = _o.start,
16672
+ stop = _o.stop;
16673
+ React.useEffect(function () {
16674
+ if (captureState !== 'CAPTURING') return;
16675
+ start();
16676
+ return function () {
16677
+ stop();
16678
+ };
16679
+ }, [captureState, start, stop]);
16632
16680
  var onCustomerMatchedCallback = React.useCallback(function (resp, req) {
16633
16681
  return __awaiter(void 0, void 0, void 0, function () {
16634
16682
  return __generator(this, function (_a) {
@@ -16651,9 +16699,9 @@
16651
16699
  setCaptureState('FAILED');
16652
16700
  onCaptureGuidanceTimeout === null || onCaptureGuidanceTimeout === void 0 ? void 0 : onCaptureGuidanceTimeout();
16653
16701
  }, [onCaptureGuidanceTimeout]);
16654
- var _o = React.useState(0),
16655
- attempt = _o[0],
16656
- setAttempt = _o[1];
16702
+ var _p = React.useState(0),
16703
+ attempt = _p[0],
16704
+ setAttempt = _p[1];
16657
16705
  var onExitCallback = React.useCallback(function () {
16658
16706
  setAttempt(function (n) {
16659
16707
  return n + 1;
@@ -16827,6 +16875,7 @@
16827
16875
  onCameraAccessDenied: onCameraAccessDenied,
16828
16876
  debugMode: debugMode
16829
16877
  }, /*#__PURE__*/React__default['default'].createElement(SelfieGuidanceModelsProvider, {
16878
+ autoStart: false,
16830
16879
  onModelError: onModelError,
16831
16880
  modelLoadTimeoutMs: modelLoadTimeoutMs
16832
16881
  }, /*#__PURE__*/React__default['default'].createElement(CustomerVerificationWizard, {
@@ -17173,6 +17222,16 @@
17173
17222
  var _m = React.useContext(CameraStateContext),
17174
17223
  cameraAccessDenied = _m.cameraAccessDenied,
17175
17224
  releaseCameraAccess = _m.releaseCameraAccess;
17225
+ var _o = React.useContext(SelfieGuidanceModelsContext),
17226
+ start = _o.start,
17227
+ stop = _o.stop;
17228
+ React.useEffect(function () {
17229
+ if (captureState !== 'CAPTURING') return;
17230
+ start();
17231
+ return function () {
17232
+ stop();
17233
+ };
17234
+ }, [captureState, start, stop]);
17176
17235
  var onCustomerMatchedCallback = React.useCallback(function (resp, req) {
17177
17236
  return __awaiter(void 0, void 0, void 0, function () {
17178
17237
  return __generator(this, function (_a) {
@@ -17195,9 +17254,9 @@
17195
17254
  setCaptureState('FAILED');
17196
17255
  onCaptureGuidanceTimeout === null || onCaptureGuidanceTimeout === void 0 ? void 0 : onCaptureGuidanceTimeout();
17197
17256
  }, [onCaptureGuidanceTimeout]);
17198
- var _o = React.useState(0),
17199
- attempt = _o[0],
17200
- setAttempt = _o[1];
17257
+ var _p = React.useState(0),
17258
+ attempt = _p[0],
17259
+ setAttempt = _p[1];
17201
17260
  var onExitCallback = React.useCallback(function () {
17202
17261
  setAttempt(function (n) {
17203
17262
  return n + 1;
@@ -17369,6 +17428,7 @@
17369
17428
  onCameraAccessDenied: onCameraAccessDenied,
17370
17429
  debugMode: debugMode
17371
17430
  }, /*#__PURE__*/React__default['default'].createElement(SelfieGuidanceModelsProvider, {
17431
+ autoStart: false,
17372
17432
  modelLoadTimeoutMs: modelLoadTimeoutMs,
17373
17433
  onModelError: onModelError
17374
17434
  }, /*#__PURE__*/React__default['default'].createElement(CustomerIdentificationWizard, {
@@ -17553,28 +17613,30 @@
17553
17613
  disableFaceDetectionWhileAudioCaptureMsDelay = _w === void 0 ? 2000 : _w,
17554
17614
  _x = _a.silentFallback,
17555
17615
  silentFallback = _x === void 0 ? false : _x,
17556
- _y = _a.theme,
17557
- theme = _y === void 0 ? 'default' : _y,
17558
- _z = _a.assets,
17559
- assets = _z === void 0 ? {} : _z,
17560
- _0 = _a.classNames,
17561
- classNames = _0 === void 0 ? {} : _0,
17562
- _1 = _a.colors,
17563
- colors = _1 === void 0 ? {} : _1,
17564
- _2 = _a.verbiage,
17565
- verbiage = _2 === void 0 ? {} : _2,
17566
- _3 = _a.captureSignature,
17567
- captureSignature = _3 === void 0 ? false : _3,
17568
- _4 = _a.captureSignatureVideo,
17569
- captureSignatureVideo = _4 === void 0 ? false : _4,
17570
- _5 = _a.captureAdditionalDocuments,
17571
- captureAdditionalDocuments = _5 === void 0 ? [] : _5,
17572
- _6 = _a.geolocationEnabled,
17573
- geolocationEnabled = _6 === void 0 ? true : _6,
17574
- _7 = _a.geolocationRequired,
17575
- geolocationRequired = _7 === void 0 ? false : _7,
17576
- _8 = _a.debugMode,
17577
- debugMode = _8 === void 0 ? false : _8;
17616
+ _y = _a.mergeAVStreams,
17617
+ mergeAVStreams = _y === void 0 ? false : _y,
17618
+ _z = _a.theme,
17619
+ theme = _z === void 0 ? 'default' : _z,
17620
+ _0 = _a.assets,
17621
+ assets = _0 === void 0 ? {} : _0,
17622
+ _1 = _a.classNames,
17623
+ classNames = _1 === void 0 ? {} : _1,
17624
+ _2 = _a.colors,
17625
+ colors = _2 === void 0 ? {} : _2,
17626
+ _3 = _a.verbiage,
17627
+ verbiage = _3 === void 0 ? {} : _3,
17628
+ _4 = _a.captureSignature,
17629
+ captureSignature = _4 === void 0 ? false : _4,
17630
+ _5 = _a.captureSignatureVideo,
17631
+ captureSignatureVideo = _5 === void 0 ? false : _5,
17632
+ _6 = _a.captureAdditionalDocuments,
17633
+ captureAdditionalDocuments = _6 === void 0 ? [] : _6,
17634
+ _7 = _a.geolocationEnabled,
17635
+ geolocationEnabled = _7 === void 0 ? true : _7,
17636
+ _8 = _a.geolocationRequired,
17637
+ geolocationRequired = _8 === void 0 ? false : _8,
17638
+ _9 = _a.debugMode,
17639
+ debugMode = _9 === void 0 ? false : _9;
17578
17640
  useLanguage(lang);
17579
17641
  useDebugLogging(debugMode);
17580
17642
  var videoIdCaptureProps = React.useMemo(function () {
@@ -17605,13 +17667,14 @@
17605
17667
  disableFaceDetectionWhileAudioCapture: disableFaceDetectionWhileAudioCapture,
17606
17668
  disableFaceDetectionWhileAudioCaptureMsDelay: disableFaceDetectionWhileAudioCaptureMsDelay,
17607
17669
  silentFallback: silentFallback,
17670
+ mergeAVStreams: mergeAVStreams,
17608
17671
  assets: assets,
17609
17672
  classNames: classNames,
17610
17673
  colors: colors,
17611
17674
  verbiage: verbiage,
17612
17675
  debugMode: debugMode
17613
17676
  };
17614
- }, [idCaptureProps, faceLivenessProps, idCaptureModelsEnabled, idCardFrontDetectionThreshold, idCardFrontFocusThreshold, goodIdCardFrontFramesThreshold, idCardBackDetectionThreshold, idCardBackFocusThreshold, goodIdCardBackFramesThreshold, readTextPrompt, readTextTimeoutDurationMs, readTextMinReadingMs, onExitCapture, onExitAfterFailure, onUserCancel, skipSuccessScreen, skipIdCapture, skipShowIdCardBack, idCaptureLoadingOverlayMode, idCaptureGuideType, idCapturePortraitGuidesOnMobile, idCaptureRotateLoadingOverlayImageWhenPortrait, faceLivenessLoadingOverlayMode, disableFaceDetectionWhileAudioCapture, disableFaceDetectionWhileAudioCaptureMsDelay, silentFallback, assets, classNames, colors, verbiage, debugMode]);
17677
+ }, [idCaptureProps, faceLivenessProps, idCaptureModelsEnabled, idCardFrontDetectionThreshold, idCardFrontFocusThreshold, goodIdCardFrontFramesThreshold, idCardBackDetectionThreshold, idCardBackFocusThreshold, goodIdCardBackFramesThreshold, readTextPrompt, readTextTimeoutDurationMs, readTextMinReadingMs, onExitCapture, onExitAfterFailure, onUserCancel, skipSuccessScreen, skipIdCapture, skipShowIdCardBack, idCaptureLoadingOverlayMode, idCaptureGuideType, idCapturePortraitGuidesOnMobile, idCaptureRotateLoadingOverlayImageWhenPortrait, faceLivenessLoadingOverlayMode, disableFaceDetectionWhileAudioCapture, disableFaceDetectionWhileAudioCaptureMsDelay, silentFallback, mergeAVStreams, assets, classNames, colors, verbiage, debugMode]);
17615
17678
  var additionalDocumentCaptureProps = React.useMemo(function () {
17616
17679
  return {
17617
17680
  documents: captureAdditionalDocuments,