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.
@@ -49,7 +49,7 @@ var LanguageDetector__default = /*#__PURE__*/_interopDefaultLegacy(LanguageDetec
49
49
  var i18n__default = /*#__PURE__*/_interopDefaultLegacy(i18n);
50
50
  var SignatureCanvas__default = /*#__PURE__*/_interopDefaultLegacy(SignatureCanvas);
51
51
 
52
- var webSdkVersion = '2.0.0';
52
+ var webSdkVersion = '2.0.1';
53
53
 
54
54
  function getPlatform() {
55
55
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
@@ -9187,14 +9187,20 @@ var FaceLivenessWizard = function FaceLivenessWizard(_a) {
9187
9187
  var captureStartedAt = React.useRef();
9188
9188
  var captureEndedAt = React.useRef();
9189
9189
  var operationStartedAt = React.useRef();
9190
+ var _x = React.useContext(SelfieGuidanceModelsContext),
9191
+ start = _x.start,
9192
+ stop = _x.stop;
9190
9193
  React.useEffect(function () {
9191
9194
  operationStartedAt.current = new Date();
9192
9195
  }, []);
9193
9196
  React.useEffect(function () {
9194
- if (captureState === 'CAPTURING') {
9195
- captureStartedAt.current = new Date();
9196
- }
9197
- }, [captureState]);
9197
+ if (captureState !== 'CAPTURING') return;
9198
+ captureStartedAt.current = new Date();
9199
+ start();
9200
+ return function () {
9201
+ stop();
9202
+ };
9203
+ }, [captureState, start, stop]);
9198
9204
  var onCapture = React.useCallback(function () {
9199
9205
  captureEndedAt.current = new Date();
9200
9206
  }, []);
@@ -9231,9 +9237,9 @@ var FaceLivenessWizard = function FaceLivenessWizard(_a) {
9231
9237
  setCaptureState('FAILED');
9232
9238
  onTimeout === null || onTimeout === void 0 ? void 0 : onTimeout(submissionResponse, livenessCheckRequest);
9233
9239
  }, [onTimeout, livenessCheckRequest, submissionResponse]);
9234
- var _x = React.useState(0),
9235
- attempt = _x[0],
9236
- setAttempt = _x[1];
9240
+ var _y = React.useState(0),
9241
+ attempt = _y[0],
9242
+ setAttempt = _y[1];
9237
9243
  var onExitCallback = React.useCallback(function () {
9238
9244
  setAttempt(function (n) {
9239
9245
  return n + 1;
@@ -9649,7 +9655,10 @@ var SignatureCapture = function SignatureCapture(_a) {
9649
9655
  var AcceptBtn$1 = styled__default['default'](LoaderButton)(templateObject_1$b || (templateObject_1$b = tslib.__makeTemplateObject(["\n margin-left: auto;\n"], ["\n margin-left: auto;\n"])));
9650
9656
  var templateObject_1$b;
9651
9657
 
9652
- var useVideoRecorder = function useVideoRecorder(camera, audioStream) {
9658
+ var useVideoRecorder = function useVideoRecorder(camera, audioStream, mergeAVStreams) {
9659
+ if (mergeAVStreams === void 0) {
9660
+ mergeAVStreams = false;
9661
+ }
9653
9662
  var videoRecorder = React.useRef(null);
9654
9663
  var audioRecorder = React.useRef(null);
9655
9664
  var videoChunks = React.useRef([]);
@@ -9678,7 +9687,13 @@ var useVideoRecorder = function useVideoRecorder(camera, audioStream) {
9678
9687
  var _h = React.useState(false),
9679
9688
  audioRecordingIntentionallyStopped = _h[0],
9680
9689
  setAudioRecordingIntentionallyStopped = _h[1];
9681
- var videoStream = camera === null || camera === void 0 ? void 0 : camera.stream;
9690
+ var getVideoStream = React.useCallback(function () {
9691
+ var _a, _b, _c;
9692
+ if (!mergeAVStreams) return camera === null || camera === void 0 ? void 0 : camera.stream;
9693
+ 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 : [];
9694
+ var audioTracks = (_c = audioStream === null || audioStream === void 0 ? void 0 : audioStream.getTracks()) !== null && _c !== void 0 ? _c : [];
9695
+ return new MediaStream(tslib.__spreadArray(tslib.__spreadArray([], videoTracks, true), audioTracks, true));
9696
+ }, [audioStream, camera === null || camera === void 0 ? void 0 : camera.stream, mergeAVStreams]);
9682
9697
  var processVideo = React.useCallback(function () {
9683
9698
  var videoBlob = new Blob(videoChunks.current, {
9684
9699
  type: 'video/mp4'
@@ -9699,13 +9714,15 @@ var useVideoRecorder = function useVideoRecorder(camera, audioStream) {
9699
9714
  (_a = audioStream === null || audioStream === void 0 ? void 0 : audioStream.stop) === null || _a === void 0 ? void 0 : _a.call(audioStream);
9700
9715
  }, [audioStream]);
9701
9716
  var startRecordingVideo = React.useCallback(function () {
9717
+ var videoStream = getVideoStream();
9702
9718
  if (!videoStream) return;
9703
9719
  videoChunks.current = [];
9704
9720
  setIsRecordingVideo(true);
9705
9721
  setVideoRecordingStopped(false);
9706
9722
  setVideoRecordingIntentionallyStopped(false);
9707
9723
  videoRecorder.current = new MediaRecorder(videoStream, {
9708
- videoBitsPerSecond: 270000
9724
+ videoBitsPerSecond: 270000,
9725
+ audioBitsPerSecond: 32000
9709
9726
  });
9710
9727
  videoRecorder.current.ondataavailable = function (e) {
9711
9728
  videoChunks.current.push(e.data);
@@ -9721,8 +9738,9 @@ var useVideoRecorder = function useVideoRecorder(camera, audioStream) {
9721
9738
  // TODO: figure out what to do here
9722
9739
  }
9723
9740
  }, 100);
9724
- }, [videoStream]);
9741
+ }, [getVideoStream]);
9725
9742
  var startRecordingAudio = React.useCallback(function () {
9743
+ if (mergeAVStreams) return;
9726
9744
  if (!audioStream) return;
9727
9745
  audioChunks.current = [];
9728
9746
  setIsRecordingAudio(true);
@@ -9738,7 +9756,7 @@ var useVideoRecorder = function useVideoRecorder(camera, audioStream) {
9738
9756
  setAudioRecordingStopped(true);
9739
9757
  };
9740
9758
  audioRecorder.current.start(1000);
9741
- }, [audioStream]);
9759
+ }, [audioStream, mergeAVStreams]);
9742
9760
  var stopRecordingVideo = React.useCallback(function () {
9743
9761
  var _a, _b;
9744
9762
  setVideoRecordingIntentionallyStopped(true);
@@ -10040,45 +10058,52 @@ var VideoSignatureWizard = function VideoSignatureWizard(_a) {
10040
10058
  onRetryClicked = _a.onRetryClicked,
10041
10059
  onExitCapture = _a.onExitCapture,
10042
10060
  onUserCancel = _a.onUserCancel,
10043
- onModelError = _a.onModelError,
10044
10061
  _c = _a.loadingOverlayMode,
10045
10062
  loadingOverlayMode = _c === void 0 ? 'default' : _c,
10046
- _d = _a.modelLoadTimeoutMs,
10047
- modelLoadTimeoutMs = _d === void 0 ? defaultSelfieCaptureModelLoadTimeoutMs : _d,
10048
- _e = _a.skipSuccessScreen,
10049
- skipSuccessScreen = _e === void 0 ? false : _e,
10050
- _f = _a.assets,
10051
- assets = _f === void 0 ? {} : _f,
10052
- _g = _a.classNames,
10053
- classNames = _g === void 0 ? {} : _g,
10054
- _h = _a.colors,
10055
- colors = _h === void 0 ? {} : _h,
10056
- _j = _a.verbiage,
10057
- verbiage = _j === void 0 ? {} : _j,
10058
- _k = _a.debugMode,
10059
- debugMode = _k === void 0 ? false : _k;
10060
- var _l = React.useContext(SubmissionContext),
10061
- selfieImage = _l.selfieImage,
10062
- signatureVideoUrl = _l.signatureVideoUrl,
10063
- setSelfieImage = _l.setSelfieImage,
10064
- setSignatureData = _l.setSignatureData,
10065
- setSignatureVideoUrl = _l.setSignatureVideoUrl,
10066
- logSelfieCaptureAttempt = _l.logSelfieCaptureAttempt;
10063
+ _d = _a.skipSuccessScreen,
10064
+ skipSuccessScreen = _d === void 0 ? false : _d,
10065
+ _e = _a.assets,
10066
+ assets = _e === void 0 ? {} : _e,
10067
+ _f = _a.classNames,
10068
+ classNames = _f === void 0 ? {} : _f,
10069
+ _g = _a.colors,
10070
+ colors = _g === void 0 ? {} : _g,
10071
+ _h = _a.verbiage,
10072
+ verbiage = _h === void 0 ? {} : _h,
10073
+ _j = _a.debugMode,
10074
+ debugMode = _j === void 0 ? false : _j;
10075
+ var _k = React.useContext(SubmissionContext),
10076
+ selfieImage = _k.selfieImage,
10077
+ signatureVideoUrl = _k.signatureVideoUrl,
10078
+ setSelfieImage = _k.setSelfieImage,
10079
+ setSignatureData = _k.setSignatureData,
10080
+ setSignatureVideoUrl = _k.setSignatureVideoUrl,
10081
+ logSelfieCaptureAttempt = _k.logSelfieCaptureAttempt;
10067
10082
  var cameraAccessDenied = React.useContext(CameraStateContext).cameraAccessDenied;
10068
- var _m = React.useState('LOADING'),
10069
- captureState = _m[0],
10070
- setCaptureState = _m[1];
10083
+ var _l = React.useState('LOADING'),
10084
+ captureState = _l[0],
10085
+ setCaptureState = _l[1];
10071
10086
  var operationStartedAt = React.useRef();
10072
10087
  var captureStartedAt = React.useRef();
10073
10088
  var captureEndedAt = React.useRef();
10089
+ var _m = React.useContext(SelfieGuidanceModelsContext),
10090
+ start = _m.start,
10091
+ stop = _m.stop;
10074
10092
  React.useEffect(function () {
10075
10093
  operationStartedAt.current = new Date();
10076
10094
  }, []);
10077
10095
  React.useEffect(function () {
10078
- if (captureState === 'CHECKING_LIVENESS') {
10079
- captureStartedAt.current = new Date();
10080
- }
10096
+ if (captureState !== 'CHECKING_LIVENESS') return;
10097
+ captureStartedAt.current = new Date();
10081
10098
  }, [captureState]);
10099
+ var shouldRun = ['CHECKING_LIVENESS', 'CAPTURING_SIGNATURE'].includes(captureState);
10100
+ React.useEffect(function () {
10101
+ if (!shouldRun) return;
10102
+ start();
10103
+ return function () {
10104
+ stop();
10105
+ };
10106
+ }, [shouldRun, start, stop]);
10082
10107
  var logCaptureMetadata = React.useCallback(function () {
10083
10108
  var _a, _b, _c;
10084
10109
  logSelfieCaptureAttempt({
@@ -10143,11 +10168,7 @@ var VideoSignatureWizard = function VideoSignatureWizard(_a) {
10143
10168
  setCaptureState('LOADING');
10144
10169
  }
10145
10170
  }, [cameraAccessDenied]);
10146
- return /*#__PURE__*/React__default['default'].createElement(SelfieGuidanceModelsProvider, {
10147
- throttleMs: captureState === 'CAPTURING_SIGNATURE' ? 250 : 0,
10148
- onModelError: onModelError,
10149
- modelLoadTimeoutMs: modelLoadTimeoutMs
10150
- }, /*#__PURE__*/React__default['default'].createElement(PageContainer, {
10171
+ return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(PageContainer, {
10151
10172
  className: "flex ".concat((_b = classNames === null || classNames === void 0 ? void 0 : classNames.container) !== null && _b !== void 0 ? _b : '')
10152
10173
  }, /*#__PURE__*/React__default['default'].createElement(CameraVideoTag, {
10153
10174
  className: classNames.cameraFeed
@@ -10512,79 +10533,85 @@ var IdVideoCapture = function IdVideoCapture(_a) {
10512
10533
  disableFaceDetectionWhileAudioCapture = _8 === void 0 ? false : _8,
10513
10534
  _9 = _a.disableFaceDetectionWhileAudioCaptureMsDelay,
10514
10535
  disableFaceDetectionWhileAudioCaptureMsDelay = _9 === void 0 ? 2000 : _9,
10515
- _10 = _a.assets,
10516
- assets = _10 === void 0 ? {} : _10,
10517
- _11 = _a.classNames,
10518
- classNames = _11 === void 0 ? {} : _11,
10519
- _12 = _a.colors,
10520
- colors = _12 === void 0 ? {} : _12,
10521
- _13 = _a.verbiage,
10522
- rawVerbiage = _13 === void 0 ? {} : _13,
10523
- _14 = _a.debugMode,
10524
- debugMode = _14 === void 0 ? false : _14;
10525
- var _15 = useResizeObserver__default['default'](),
10526
- ref = _15.ref,
10527
- _16 = _15.width,
10528
- width = _16 === void 0 ? 1 : _16,
10529
- _17 = _15.height,
10530
- height = _17 === void 0 ? 1 : _17;
10531
- var _18 = React.useContext(CameraStateContext),
10532
- cameraRef = _18.cameraRef,
10533
- videoRef = _18.videoRef,
10534
- videoLoaded = _18.videoLoaded,
10535
- cameraReady = _18.cameraReady,
10536
- microphoneReady = _18.microphoneReady,
10537
- audioStream = _18.audioStream,
10538
- setVideoLoaded = _18.setVideoLoaded,
10539
- takePhoto = _18.takePhoto;
10540
- var _19 = React.useState([]),
10541
- detectedObjects = _19[0],
10542
- setDetectedObjects = _19[1];
10536
+ _10 = _a.mergeAVStreams,
10537
+ mergeAVStreams = _10 === void 0 ? false : _10,
10538
+ _11 = _a.assets,
10539
+ assets = _11 === void 0 ? {} : _11,
10540
+ _12 = _a.classNames,
10541
+ classNames = _12 === void 0 ? {} : _12,
10542
+ _13 = _a.colors,
10543
+ colors = _13 === void 0 ? {} : _13,
10544
+ _14 = _a.verbiage,
10545
+ rawVerbiage = _14 === void 0 ? {} : _14,
10546
+ _15 = _a.debugMode,
10547
+ debugMode = _15 === void 0 ? false : _15;
10548
+ var _16 = useResizeObserver__default['default'](),
10549
+ ref = _16.ref,
10550
+ _17 = _16.width,
10551
+ width = _17 === void 0 ? 1 : _17,
10552
+ _18 = _16.height,
10553
+ height = _18 === void 0 ? 1 : _18;
10554
+ var _19 = React.useContext(CameraStateContext),
10555
+ cameraRef = _19.cameraRef,
10556
+ videoRef = _19.videoRef,
10557
+ videoLoaded = _19.videoLoaded,
10558
+ cameraReady = _19.cameraReady,
10559
+ microphoneReady = _19.microphoneReady,
10560
+ audioStream = _19.audioStream,
10561
+ setVideoLoaded = _19.setVideoLoaded,
10562
+ takePhoto = _19.takePhoto;
10543
10563
  var _20 = React.useState([]),
10544
- faces = _20[0],
10545
- setFaces = _20[1];
10546
- var _21 = React.useContext(IdCaptureModelsContext),
10547
- idModelsReady = _21.ready,
10548
- startIdModels = _21.start,
10549
- stopIdModels = _21.stop,
10550
- onIdPredictionMade = _21.onPredictionMade,
10551
- setThresholds = _21.setThresholds,
10552
- bestFrameDetails = _21.bestFrameDetails,
10553
- resetBestFrame = _21.resetBestFrame,
10554
- idModelError = _21.modelError;
10555
- var _22 = React.useState(null),
10556
- videoStartsAt = _22[0],
10557
- setVideoStartsAt = _22[1];
10558
- var _23 = React.useContext(SubmissionContext),
10559
- setIdCaptureVideoAudioStartsAt = _23.setIdCaptureVideoAudioStartsAt,
10560
- setExpectedAudioText = _23.setExpectedAudioText;
10561
- var _24 = React.useContext(SelfieGuidanceModelsContext),
10562
- onSelfiePredictionMade = _24.onPredictionMade,
10563
- selfieModelError = _24.error;
10564
- var _25 = useVideoRecorder(cameraRef.current, audioStream),
10565
- isRecordingVideo = _25.isRecordingVideo,
10566
- startRecordingVideo = _25.startRecordingVideo,
10567
- startRecordingAudio = _25.startRecordingAudio,
10568
- stopRecordingVideo = _25.stopRecordingVideo,
10569
- stopRecordingAudio = _25.stopRecordingAudio,
10570
- videoRecordingUnintentionallyStopped = _25.videoRecordingUnintentionallyStopped,
10571
- audioRecordingUnintentionallyStopped = _25.audioRecordingUnintentionallyStopped,
10572
- videoUrl = _25.videoUrl,
10573
- audioUrl = _25.audioUrl;
10564
+ detectedObjects = _20[0],
10565
+ setDetectedObjects = _20[1];
10566
+ var _21 = React.useState([]),
10567
+ faces = _21[0],
10568
+ setFaces = _21[1];
10569
+ var _22 = React.useContext(IdCaptureModelsContext),
10570
+ idModelsReady = _22.ready,
10571
+ startIdModels = _22.start,
10572
+ stopIdModels = _22.stop,
10573
+ onIdPredictionMade = _22.onPredictionMade,
10574
+ setThresholds = _22.setThresholds,
10575
+ bestFrameDetails = _22.bestFrameDetails,
10576
+ resetBestFrame = _22.resetBestFrame,
10577
+ idModelError = _22.modelError;
10578
+ var _23 = React.useState(null),
10579
+ videoStartsAt = _23[0],
10580
+ setVideoStartsAt = _23[1];
10581
+ var _24 = React.useContext(SubmissionContext),
10582
+ setIdCaptureVideoAudioStartsAt = _24.setIdCaptureVideoAudioStartsAt,
10583
+ setExpectedAudioText = _24.setExpectedAudioText;
10584
+ var _25 = React.useContext(SelfieGuidanceModelsContext),
10585
+ onSelfiePredictionMade = _25.onPredictionMade,
10586
+ selfieModelError = _25.error;
10587
+ var _26 = useVideoRecorder(cameraRef.current, audioStream, mergeAVStreams),
10588
+ isRecordingVideo = _26.isRecordingVideo,
10589
+ startRecordingVideo = _26.startRecordingVideo,
10590
+ startRecordingAudio = _26.startRecordingAudio,
10591
+ stopRecordingVideo = _26.stopRecordingVideo,
10592
+ stopRecordingAudio = _26.stopRecordingAudio,
10593
+ videoRecordingUnintentionallyStopped = _26.videoRecordingUnintentionallyStopped,
10594
+ audioRecordingUnintentionallyStopped = _26.audioRecordingUnintentionallyStopped,
10595
+ videoUrl = _26.videoUrl,
10596
+ audioUrl = _26.audioUrl;
10574
10597
  var countdownTimeoutRef = React.useRef(undefined);
10575
- var _26 = React.useState(0),
10576
- countdownRemaining = _26[0],
10577
- setCountdownRemaining = _26[1];
10598
+ var _27 = React.useState(0),
10599
+ countdownRemaining = _27[0],
10600
+ setCountdownRemaining = _27[1];
10578
10601
  React.useEffect(function () {
10579
10602
  if (!isRecordingVideo && !videoUrl) {
10580
10603
  startRecordingVideo();
10581
10604
  setVideoStartsAt(new Date());
10582
10605
  }
10583
- if (videoUrl && (!readTextPrompt || audioUrl)) {
10606
+ // if the mergeAVStreams flag is present, the audio stream is on the video
10607
+ // stream, so we won't wait for a separate data url containing audio only.
10608
+ var needsAudio = !!readTextPrompt && !mergeAVStreams;
10609
+ var audioReady = !needsAudio || audioUrl;
10610
+ if (videoUrl && audioReady) {
10584
10611
  setVideoLoaded(false);
10585
10612
  onComplete === null || onComplete === void 0 ? void 0 : onComplete(videoUrl, audioUrl);
10586
10613
  }
10587
- }, [audioUrl, isRecordingVideo, onComplete, readTextPrompt, setVideoLoaded, startRecordingVideo, videoUrl]);
10614
+ }, [audioUrl, isRecordingVideo, mergeAVStreams, onComplete, readTextPrompt, setVideoLoaded, startRecordingVideo, videoUrl]);
10588
10615
  React.useEffect(function () {
10589
10616
  if (videoRecordingUnintentionallyStopped || audioRecordingUnintentionallyStopped) {
10590
10617
  onRecordingFailed === null || onRecordingFailed === void 0 ? void 0 : onRecordingFailed();
@@ -10594,9 +10621,9 @@ var IdVideoCapture = function IdVideoCapture(_a) {
10594
10621
  React.useEffect(function () {
10595
10622
  shouldCaptureFrames.current = videoLoaded && cameraReady && idModelsReady && !idModelError && (!readTextPrompt || microphoneReady);
10596
10623
  }, [cameraReady, idModelError, idModelsReady, microphoneReady, readTextPrompt, videoLoaded]);
10597
- var _27 = React.useState('SHOW_ID_FRONT'),
10598
- requestedAction = _27[0],
10599
- setRequestedAction = _27[1];
10624
+ var _28 = React.useState('SHOW_ID_FRONT'),
10625
+ requestedAction = _28[0],
10626
+ setRequestedAction = _28[1];
10600
10627
  React.useEffect(function startModelsWhenCapturing() {
10601
10628
  if (!shouldCaptureFrames.current && requestedAction !== 'SHOW_ID_FRONT' && requestedAction !== 'SHOW_ID_BACK') return;
10602
10629
  startIdModels();
@@ -10615,15 +10642,15 @@ var IdVideoCapture = function IdVideoCapture(_a) {
10615
10642
  }
10616
10643
  });
10617
10644
  }, [idCardBackDetectionThreshold, idCardBackFocusThreshold, idCardFrontDetectionThreshold, idCardFrontFocusThreshold, requestedAction, setThresholds]);
10618
- var _28 = React.useState(0),
10619
- currentDetectionScore = _28[0],
10620
- setCurrentDetectionScore = _28[1];
10621
10645
  var _29 = React.useState(0),
10622
- currentFocusScore = _29[0],
10623
- setCurrentFocusScore = _29[1];
10646
+ currentDetectionScore = _29[0],
10647
+ setCurrentDetectionScore = _29[1];
10624
10648
  var _30 = React.useState(0),
10625
- goodFramesCount = _30[0],
10626
- setGoodFramesCount = _30[1];
10649
+ currentFocusScore = _30[0],
10650
+ setCurrentFocusScore = _30[1];
10651
+ var _31 = React.useState(0),
10652
+ goodFramesCount = _31[0],
10653
+ setGoodFramesCount = _31[1];
10627
10654
  var goodFramesThreshold = requestedAction === 'SHOW_ID_FRONT' ? goodIdCardFrontFramesThreshold : goodIdCardBackFramesThreshold;
10628
10655
  var goodFramesThresholdMet = goodFramesCount >= goodFramesThreshold;
10629
10656
  React.useEffect(function () {
@@ -10641,9 +10668,9 @@ var IdVideoCapture = function IdVideoCapture(_a) {
10641
10668
  }
10642
10669
  });
10643
10670
  }, [idCaptureModelsEnabled, idCardFrontDetectionThreshold, onIdPredictionMade, idModelError]);
10644
- var _31 = React.useState(null),
10645
- idFrontCaptureStartedAt = _31[0],
10646
- setFirstGoodFrameTime = _31[1];
10671
+ var _32 = React.useState(null),
10672
+ idFrontCaptureStartedAt = _32[0],
10673
+ setFirstGoodFrameTime = _32[1];
10647
10674
  React.useEffect(function () {
10648
10675
  if (goodFramesCount === 1) setFirstGoodFrameTime(new Date().getTime());
10649
10676
  }, [goodFramesCount]);
@@ -10664,9 +10691,9 @@ var IdVideoCapture = function IdVideoCapture(_a) {
10664
10691
  var frameHeight = (_e = (_d = videoRef.current) === null || _d === void 0 ? void 0 : _d.videoHeight) !== null && _e !== void 0 ? _e : 0;
10665
10692
  var faceBox = (_f = faces === null || faces === void 0 ? void 0 : faces[0]) === null || _f === void 0 ? void 0 : _f.box;
10666
10693
  var faceCentered = !faceBox || !frameWidth || faceBox.xMin > frameWidth * edgeBoundary && faceBox.yMin > frameHeight * edgeBoundary && faceBox.xMax < frameWidth * (1 - edgeBoundary) && faceBox.yMax < frameHeight * (1 - edgeBoundary);
10667
- var _32 = React.useState(),
10668
- countdownStartedAt = _32[0],
10669
- setCountdownStartedAt = _32[1];
10694
+ var _33 = React.useState(),
10695
+ countdownStartedAt = _33[0],
10696
+ setCountdownStartedAt = _33[1];
10670
10697
  var frameLock = React.useRef(false);
10671
10698
  var captureFrame = React.useCallback(function () {
10672
10699
  return tslib.__awaiter(void 0, void 0, void 0, function () {
@@ -10787,9 +10814,9 @@ var IdVideoCapture = function IdVideoCapture(_a) {
10787
10814
  };
10788
10815
  }, [captureCountdownSeconds, captureFrame, countdownStartedAt, manualCountdown]);
10789
10816
  var timeoutStartedAt = useTimeout(readTextTimeoutDurationMs, stopRecording, requestedAction !== 'READ_TEXT', false, requestedAction === 'READ_TEXT').timeoutStartedAt;
10790
- var _33 = React.useState(0),
10791
- numFramesWithoutFaces = _33[0],
10792
- setNumFramesWithoutFaces = _33[1];
10817
+ var _34 = React.useState(0),
10818
+ numFramesWithoutFaces = _34[0],
10819
+ setNumFramesWithoutFaces = _34[1];
10793
10820
  React.useEffect(function () {
10794
10821
  if (!selfieModelError) {
10795
10822
  onSelfiePredictionMade(function (faces) {
@@ -10807,14 +10834,14 @@ var IdVideoCapture = function IdVideoCapture(_a) {
10807
10834
  }
10808
10835
  }, [disableFaceDetectionWhileAudioCapture, disableFaceDetectionWhileAudioCaptureMsDelay, numFramesWithoutFaces, onFaceNotDetected, timeoutStartedAt]);
10809
10836
  var theme = styled.useTheme();
10810
- var _34 = useTranslations(rawVerbiage, {
10837
+ var _35 = useTranslations(rawVerbiage, {
10811
10838
  faceNotCenteredText: 'Please move your face to the center...',
10812
10839
  searchingForIdCardText: 'Searching for ID card...',
10813
10840
  captureBtnText: 'Capture'
10814
10841
  }),
10815
- captureBtnText = _34.captureBtnText,
10816
- faceNotCenteredText = _34.faceNotCenteredText,
10817
- searchingForIdCardText = _34.searchingForIdCardText;
10842
+ captureBtnText = _35.captureBtnText,
10843
+ faceNotCenteredText = _35.faceNotCenteredText,
10844
+ searchingForIdCardText = _35.searchingForIdCardText;
10818
10845
  var debugScalingDetails = useDebugScalingDetails({
10819
10846
  enabled: debugMode,
10820
10847
  pageWidth: width,
@@ -11055,29 +11082,31 @@ var VideoIdWizard = function VideoIdWizard(_a) {
11055
11082
  disableFaceDetectionWhileAudioCaptureMsDelay = _v === void 0 ? 2000 : _v,
11056
11083
  _w = _a.silentFallback,
11057
11084
  silentFallback = _w === void 0 ? false : _w,
11058
- _x = _a.assets,
11059
- assets = _x === void 0 ? {} : _x,
11060
- _y = _a.classNames,
11061
- classNames = _y === void 0 ? {} : _y,
11062
- _z = _a.colors,
11063
- colors = _z === void 0 ? {} : _z,
11064
- _0 = _a.verbiage,
11065
- verbiage = _0 === void 0 ? {} : _0,
11066
- _1 = _a.debugMode,
11067
- debugMode = _1 === void 0 ? false : _1;
11068
- var _2 = React.useContext(SubmissionContext),
11069
- submissionStatus = _2.submissionStatus,
11070
- idCaptureVideoUrl = _2.idCaptureVideoUrl,
11071
- idCaptureVideoAudioUrl = _2.idCaptureVideoAudioUrl,
11072
- idCaptureVideoIdFrontImage = _2.idCaptureVideoIdFrontImage,
11073
- idCaptureVideoIdBackImage = _2.idCaptureVideoIdBackImage,
11074
- setIdCaptureVideoUrl = _2.setIdCaptureVideoUrl,
11075
- setIdCaptureVideoIdFrontImage = _2.setIdCaptureVideoIdFrontImage,
11076
- setIdCaptureVideoIdBackImage = _2.setIdCaptureVideoIdBackImage,
11077
- setIdCaptureVideoAudioUrl = _2.setIdCaptureVideoAudioUrl;
11078
- var _3 = React.useState('CAPTURING_ID'),
11079
- captureState = _3[0],
11080
- setCaptureState = _3[1];
11085
+ _x = _a.mergeAVStreams,
11086
+ mergeAVStreams = _x === void 0 ? false : _x,
11087
+ _y = _a.assets,
11088
+ assets = _y === void 0 ? {} : _y,
11089
+ _z = _a.classNames,
11090
+ classNames = _z === void 0 ? {} : _z,
11091
+ _0 = _a.colors,
11092
+ colors = _0 === void 0 ? {} : _0,
11093
+ _1 = _a.verbiage,
11094
+ verbiage = _1 === void 0 ? {} : _1,
11095
+ _2 = _a.debugMode,
11096
+ debugMode = _2 === void 0 ? false : _2;
11097
+ var _3 = React.useContext(SubmissionContext),
11098
+ submissionStatus = _3.submissionStatus,
11099
+ idCaptureVideoUrl = _3.idCaptureVideoUrl,
11100
+ idCaptureVideoAudioUrl = _3.idCaptureVideoAudioUrl,
11101
+ idCaptureVideoIdFrontImage = _3.idCaptureVideoIdFrontImage,
11102
+ idCaptureVideoIdBackImage = _3.idCaptureVideoIdBackImage,
11103
+ setIdCaptureVideoUrl = _3.setIdCaptureVideoUrl,
11104
+ setIdCaptureVideoIdFrontImage = _3.setIdCaptureVideoIdFrontImage,
11105
+ setIdCaptureVideoIdBackImage = _3.setIdCaptureVideoIdBackImage,
11106
+ setIdCaptureVideoAudioUrl = _3.setIdCaptureVideoAudioUrl;
11107
+ var _4 = React.useState('CAPTURING_ID'),
11108
+ captureState = _4[0],
11109
+ setCaptureState = _4[1];
11081
11110
  React.useEffect(function () {
11082
11111
  if (skipIdCapture && captureState === 'CAPTURING_ID') setCaptureState('CHECKING_LIVENESS');
11083
11112
  }, [captureState, skipIdCapture]);
@@ -11108,9 +11137,9 @@ var VideoIdWizard = function VideoIdWizard(_a) {
11108
11137
  var onVideoCaptureFaceNotDetected = React.useCallback(function () {
11109
11138
  setCaptureState('CHECKING_LIVENESS');
11110
11139
  }, []);
11111
- var _4 = React.useState(0),
11112
- attempt = _4[0],
11113
- setAttempt = _4[1];
11140
+ var _5 = React.useState(0),
11141
+ attempt = _5[0],
11142
+ setAttempt = _5[1];
11114
11143
  var userSuppliedExitAfterFailure = onExitAfterFailure !== null && onExitAfterFailure !== void 0 ? onExitAfterFailure : faceLivenessProps.onExitAfterFailure;
11115
11144
  var onFaceCaptureExitAfterFailure = React.useCallback(function (resp, req) {
11116
11145
  userSuppliedExitAfterFailure === null || userSuppliedExitAfterFailure === void 0 ? void 0 : userSuppliedExitAfterFailure(resp, req);
@@ -11151,11 +11180,13 @@ var VideoIdWizard = function VideoIdWizard(_a) {
11151
11180
  onMicrophoneAccessDenied: onMicrophoneAccessDenied,
11152
11181
  debugMode: debugMode
11153
11182
  }, /*#__PURE__*/React__default['default'].createElement(IdCaptureModelsProvider, {
11183
+ autoStart: false,
11154
11184
  documentDetectionModelUrl: (_c = (_b = idCaptureProps.assets) === null || _b === void 0 ? void 0 : _b.documentDetectionModelUrl) !== null && _c !== void 0 ? _c : '',
11155
11185
  focusModelUrl: (_e = (_d = idCaptureProps.assets) === null || _d === void 0 ? void 0 : _d.focusModelUrl) !== null && _e !== void 0 ? _e : '',
11156
11186
  onModelError: onIdCaptureModelError,
11157
11187
  modelLoadTimeoutMs: idCaptureModelLoadTimeoutMs
11158
11188
  }, /*#__PURE__*/React__default['default'].createElement(SelfieGuidanceModelsProvider, {
11189
+ autoStart: false,
11159
11190
  onModelError: faceLivenessProps === null || faceLivenessProps === void 0 ? void 0 : faceLivenessProps.onModelError,
11160
11191
  modelLoadTimeoutMs: faceLivenessProps === null || faceLivenessProps === void 0 ? void 0 : faceLivenessProps.modelLoadTimeoutMs
11161
11192
  }, /*#__PURE__*/React__default['default'].createElement(PageContainer, {
@@ -11224,6 +11255,7 @@ var VideoIdWizard = function VideoIdWizard(_a) {
11224
11255
  readTextPrompt: readTextPrompt,
11225
11256
  readTextTimeoutDurationMs: readTextTimeoutDurationMs,
11226
11257
  readTextMinReadingMs: readTextMinReadingMs,
11258
+ mergeAVStreams: mergeAVStreams,
11227
11259
  assets: assets.idVideoCapture,
11228
11260
  classNames: classNames.idVideoCapture,
11229
11261
  colors: colors.idVideoCapture,
@@ -11422,6 +11454,7 @@ var CompositeWizardComponent = function CompositeWizardComponent(_a) {
11422
11454
  onMicrophoneAccessDenied: onMicrophoneAccessDenied,
11423
11455
  debugMode: debugMode
11424
11456
  }, /*#__PURE__*/React__default['default'].createElement(SelfieGuidanceModelsProvider, {
11457
+ autoStart: false,
11425
11458
  onModelError: faceLivenessProps.onModelError,
11426
11459
  modelLoadTimeoutMs: faceLivenessProps.modelLoadTimeoutMs
11427
11460
  }, /*#__PURE__*/React__default['default'].createElement(FaceLivenessWizard, tslib.__assign({}, faceLivenessProps, {
@@ -11441,10 +11474,15 @@ var CompositeWizardComponent = function CompositeWizardComponent(_a) {
11441
11474
  onCameraAccessDenied: onCameraAccessDenied,
11442
11475
  onMicrophoneAccessDenied: onMicrophoneAccessDenied,
11443
11476
  debugMode: debugMode
11477
+ }, /*#__PURE__*/React__default['default'].createElement(SelfieGuidanceModelsProvider, {
11478
+ autoStart: false,
11479
+ throttleMs: 250,
11480
+ onModelError: videoSignatureCaptureProps.onModelError,
11481
+ modelLoadTimeoutMs: videoSignatureCaptureProps.modelLoadTimeoutMs
11444
11482
  }, /*#__PURE__*/React__default['default'].createElement(VideoSignatureWizard, tslib.__assign({}, videoSignatureCaptureProps, {
11445
11483
  onComplete: onVideoSignatureComplete,
11446
11484
  onRetryClicked: onVideoSignatureRetry
11447
- })));
11485
+ }))));
11448
11486
  case 'AdditionalDocumentCapture':
11449
11487
  return /*#__PURE__*/React__default['default'].createElement(AdditionalDocumentCaptureWizard, tslib.__assign({}, additionalDocumentCaptureProps, {
11450
11488
  documents: documents,
@@ -12771,6 +12809,16 @@ var CustomerVerificationWizard = function CustomerVerificationWizard(_a) {
12771
12809
  var _m = React.useContext(CameraStateContext),
12772
12810
  cameraAccessDenied = _m.cameraAccessDenied,
12773
12811
  releaseCameraAccess = _m.releaseCameraAccess;
12812
+ var _o = React.useContext(SelfieGuidanceModelsContext),
12813
+ start = _o.start,
12814
+ stop = _o.stop;
12815
+ React.useEffect(function () {
12816
+ if (captureState !== 'CAPTURING') return;
12817
+ start();
12818
+ return function () {
12819
+ stop();
12820
+ };
12821
+ }, [captureState, start, stop]);
12774
12822
  var onCustomerMatchedCallback = React.useCallback(function (resp, req) {
12775
12823
  return tslib.__awaiter(void 0, void 0, void 0, function () {
12776
12824
  return tslib.__generator(this, function (_a) {
@@ -12793,9 +12841,9 @@ var CustomerVerificationWizard = function CustomerVerificationWizard(_a) {
12793
12841
  setCaptureState('FAILED');
12794
12842
  onCaptureGuidanceTimeout === null || onCaptureGuidanceTimeout === void 0 ? void 0 : onCaptureGuidanceTimeout();
12795
12843
  }, [onCaptureGuidanceTimeout]);
12796
- var _o = React.useState(0),
12797
- attempt = _o[0],
12798
- setAttempt = _o[1];
12844
+ var _p = React.useState(0),
12845
+ attempt = _p[0],
12846
+ setAttempt = _p[1];
12799
12847
  var onExitCallback = React.useCallback(function () {
12800
12848
  setAttempt(function (n) {
12801
12849
  return n + 1;
@@ -12969,6 +13017,7 @@ var CustomerVerification = function CustomerVerification(_a) {
12969
13017
  onCameraAccessDenied: onCameraAccessDenied,
12970
13018
  debugMode: debugMode
12971
13019
  }, /*#__PURE__*/React__default['default'].createElement(SelfieGuidanceModelsProvider, {
13020
+ autoStart: false,
12972
13021
  onModelError: onModelError,
12973
13022
  modelLoadTimeoutMs: modelLoadTimeoutMs
12974
13023
  }, /*#__PURE__*/React__default['default'].createElement(CustomerVerificationWizard, {
@@ -13315,6 +13364,16 @@ var CustomerIdentificationWizard = function CustomerIdentificationWizard(_a) {
13315
13364
  var _m = React.useContext(CameraStateContext),
13316
13365
  cameraAccessDenied = _m.cameraAccessDenied,
13317
13366
  releaseCameraAccess = _m.releaseCameraAccess;
13367
+ var _o = React.useContext(SelfieGuidanceModelsContext),
13368
+ start = _o.start,
13369
+ stop = _o.stop;
13370
+ React.useEffect(function () {
13371
+ if (captureState !== 'CAPTURING') return;
13372
+ start();
13373
+ return function () {
13374
+ stop();
13375
+ };
13376
+ }, [captureState, start, stop]);
13318
13377
  var onCustomerMatchedCallback = React.useCallback(function (resp, req) {
13319
13378
  return tslib.__awaiter(void 0, void 0, void 0, function () {
13320
13379
  return tslib.__generator(this, function (_a) {
@@ -13337,9 +13396,9 @@ var CustomerIdentificationWizard = function CustomerIdentificationWizard(_a) {
13337
13396
  setCaptureState('FAILED');
13338
13397
  onCaptureGuidanceTimeout === null || onCaptureGuidanceTimeout === void 0 ? void 0 : onCaptureGuidanceTimeout();
13339
13398
  }, [onCaptureGuidanceTimeout]);
13340
- var _o = React.useState(0),
13341
- attempt = _o[0],
13342
- setAttempt = _o[1];
13399
+ var _p = React.useState(0),
13400
+ attempt = _p[0],
13401
+ setAttempt = _p[1];
13343
13402
  var onExitCallback = React.useCallback(function () {
13344
13403
  setAttempt(function (n) {
13345
13404
  return n + 1;
@@ -13511,6 +13570,7 @@ var CustomerIdentification = function CustomerIdentification(_a) {
13511
13570
  onCameraAccessDenied: onCameraAccessDenied,
13512
13571
  debugMode: debugMode
13513
13572
  }, /*#__PURE__*/React__default['default'].createElement(SelfieGuidanceModelsProvider, {
13573
+ autoStart: false,
13514
13574
  modelLoadTimeoutMs: modelLoadTimeoutMs,
13515
13575
  onModelError: onModelError
13516
13576
  }, /*#__PURE__*/React__default['default'].createElement(CustomerIdentificationWizard, {
@@ -13695,28 +13755,30 @@ var VideoIdValidation = function VideoIdValidation(_a) {
13695
13755
  disableFaceDetectionWhileAudioCaptureMsDelay = _w === void 0 ? 2000 : _w,
13696
13756
  _x = _a.silentFallback,
13697
13757
  silentFallback = _x === void 0 ? false : _x,
13698
- _y = _a.theme,
13699
- theme = _y === void 0 ? 'default' : _y,
13700
- _z = _a.assets,
13701
- assets = _z === void 0 ? {} : _z,
13702
- _0 = _a.classNames,
13703
- classNames = _0 === void 0 ? {} : _0,
13704
- _1 = _a.colors,
13705
- colors = _1 === void 0 ? {} : _1,
13706
- _2 = _a.verbiage,
13707
- verbiage = _2 === void 0 ? {} : _2,
13708
- _3 = _a.captureSignature,
13709
- captureSignature = _3 === void 0 ? false : _3,
13710
- _4 = _a.captureSignatureVideo,
13711
- captureSignatureVideo = _4 === void 0 ? false : _4,
13712
- _5 = _a.captureAdditionalDocuments,
13713
- captureAdditionalDocuments = _5 === void 0 ? [] : _5,
13714
- _6 = _a.geolocationEnabled,
13715
- geolocationEnabled = _6 === void 0 ? true : _6,
13716
- _7 = _a.geolocationRequired,
13717
- geolocationRequired = _7 === void 0 ? false : _7,
13718
- _8 = _a.debugMode,
13719
- debugMode = _8 === void 0 ? false : _8;
13758
+ _y = _a.mergeAVStreams,
13759
+ mergeAVStreams = _y === void 0 ? false : _y,
13760
+ _z = _a.theme,
13761
+ theme = _z === void 0 ? 'default' : _z,
13762
+ _0 = _a.assets,
13763
+ assets = _0 === void 0 ? {} : _0,
13764
+ _1 = _a.classNames,
13765
+ classNames = _1 === void 0 ? {} : _1,
13766
+ _2 = _a.colors,
13767
+ colors = _2 === void 0 ? {} : _2,
13768
+ _3 = _a.verbiage,
13769
+ verbiage = _3 === void 0 ? {} : _3,
13770
+ _4 = _a.captureSignature,
13771
+ captureSignature = _4 === void 0 ? false : _4,
13772
+ _5 = _a.captureSignatureVideo,
13773
+ captureSignatureVideo = _5 === void 0 ? false : _5,
13774
+ _6 = _a.captureAdditionalDocuments,
13775
+ captureAdditionalDocuments = _6 === void 0 ? [] : _6,
13776
+ _7 = _a.geolocationEnabled,
13777
+ geolocationEnabled = _7 === void 0 ? true : _7,
13778
+ _8 = _a.geolocationRequired,
13779
+ geolocationRequired = _8 === void 0 ? false : _8,
13780
+ _9 = _a.debugMode,
13781
+ debugMode = _9 === void 0 ? false : _9;
13720
13782
  useLanguage(lang);
13721
13783
  useDebugLogging(debugMode);
13722
13784
  var videoIdCaptureProps = React.useMemo(function () {
@@ -13747,13 +13809,14 @@ var VideoIdValidation = function VideoIdValidation(_a) {
13747
13809
  disableFaceDetectionWhileAudioCapture: disableFaceDetectionWhileAudioCapture,
13748
13810
  disableFaceDetectionWhileAudioCaptureMsDelay: disableFaceDetectionWhileAudioCaptureMsDelay,
13749
13811
  silentFallback: silentFallback,
13812
+ mergeAVStreams: mergeAVStreams,
13750
13813
  assets: assets,
13751
13814
  classNames: classNames,
13752
13815
  colors: colors,
13753
13816
  verbiage: verbiage,
13754
13817
  debugMode: debugMode
13755
13818
  };
13756
- }, [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]);
13819
+ }, [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]);
13757
13820
  var additionalDocumentCaptureProps = React.useMemo(function () {
13758
13821
  return {
13759
13822
  documents: captureAdditionalDocuments,