idmission-web-sdk 2.3.36 → 2.3.38

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.
@@ -235,7 +235,7 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
235
235
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
236
236
  };
237
237
 
238
- var webSdkVersion = '2.3.36';
238
+ var webSdkVersion = '2.3.38';
239
239
 
240
240
  function getPlatform() {
241
241
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
@@ -289,6 +289,25 @@ function contentDispositionFromDataUrl(url) {
289
289
  var _a, _b;
290
290
  return (_b = (_a = url.match(/^(data:.*;base64),/)) === null || _a === void 0 ? void 0 : _a[1]) !== null && _b !== void 0 ? _b : '';
291
291
  }
292
+ function b64toBlob(b64Data, contentType, sliceSize) {
293
+ if (sliceSize === void 0) {
294
+ sliceSize = 512;
295
+ }
296
+ var byteCharacters = atob(b64Data);
297
+ var byteArrays = [];
298
+ for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {
299
+ var slice = byteCharacters.slice(offset, offset + sliceSize);
300
+ var byteNumbers = new Array(slice.length);
301
+ for (var i = 0; i < slice.length; i++) {
302
+ byteNumbers[i] = slice.charCodeAt(i);
303
+ }
304
+ var byteArray = new Uint8Array(byteNumbers);
305
+ byteArrays.push(byteArray);
306
+ }
307
+ return new Blob(byteArrays, {
308
+ type: contentType
309
+ });
310
+ }
292
311
  function blobToB64(blob) {
293
312
  return new Promise(function (resolve) {
294
313
  var reader = new FileReader();
@@ -2117,6 +2136,13 @@ function performUpload(_a) {
2117
2136
  });
2118
2137
  });
2119
2138
  }
2139
+ function useSubmissionContext() {
2140
+ var context = React.useContext(SubmissionContext);
2141
+ if (!context) {
2142
+ throw new Error('useSubmissionContext must be used within a SubmissionProvider');
2143
+ }
2144
+ return context;
2145
+ }
2120
2146
 
2121
2147
  var visionTasksBasePath = "https://websdk-cdn-dev.idmission.com/assets/vision_wasm_internal_0.10.7";
2122
2148
  var visionRuntimePreloading = false;
@@ -11512,7 +11538,7 @@ function SelfieGuidanceModelsProvider(_a) {
11512
11538
  }), children);
11513
11539
  }
11514
11540
  function useSelfieGuidanceModelsContext() {
11515
- var context = React__namespace.useContext(SelfieGuidanceModelsContext);
11541
+ var context = React.useContext(SelfieGuidanceModelsContext);
11516
11542
  if (!context) {
11517
11543
  throw new Error('useSelfieGuidanceModelsContext must be used within a SelfieGuidanceModelsProvider');
11518
11544
  }
@@ -12730,7 +12756,7 @@ var FaceLivenessWizard = function FaceLivenessWizard(_a) {
12730
12756
  debugMode = _s === void 0 ? false : _s,
12731
12757
  _t = _a.showLoadingOverlay,
12732
12758
  showLoadingOverlay = _t === void 0 ? true : _t;
12733
- var _u = React.useContext(SubmissionContext),
12759
+ var _u = useSubmissionContext(),
12734
12760
  submissionResponse = _u.submissionResponse,
12735
12761
  livenessCheckRequest = _u.livenessCheckRequest,
12736
12762
  setSelfieImage = _u.setSelfieImage,
@@ -12757,9 +12783,10 @@ var FaceLivenessWizard = function FaceLivenessWizard(_a) {
12757
12783
  var captureStartedAt = React.useRef();
12758
12784
  var operationStartedAt = React.useRef();
12759
12785
  var livenessScore = React.useRef();
12760
- var _z = React.useContext(SelfieGuidanceModelsContext),
12786
+ var _z = useSelfieGuidanceModelsContext(),
12761
12787
  start = _z.start,
12762
- stop = _z.stop;
12788
+ stop = _z.stop,
12789
+ selfieGuidanceCanvasRef = _z.canvasRef;
12763
12790
  React.useEffect(function () {
12764
12791
  if (precapturedDocuments === null || precapturedDocuments === void 0 ? void 0 : precapturedDocuments.selfie) {
12765
12792
  setSelfieImage(precapturedDocuments.selfie.imageData);
@@ -12785,7 +12812,7 @@ var FaceLivenessWizard = function FaceLivenessWizard(_a) {
12785
12812
  });
12786
12813
  }, [logSelfieCaptureAttempt]);
12787
12814
  var onFaceDetected = React.useCallback(function (prediction) {
12788
- if (prediction.face && !prediction.faceNotCentered && !prediction.faceLookingAway) {
12815
+ if (prediction.face && prediction.faceReady) {
12789
12816
  captureStartedAt.current || (captureStartedAt.current = new Date());
12790
12817
  }
12791
12818
  }, []);
@@ -12817,7 +12844,6 @@ var FaceLivenessWizard = function FaceLivenessWizard(_a) {
12817
12844
  });
12818
12845
  });
12819
12846
  }, [allowLivenessFailure, livenessCheckRequest, onFailure, onSuccess, submissionResponse]);
12820
- var selfieGuidanceCanvasRef = React.useContext(SelfieGuidanceModelsContext).canvasRef;
12821
12847
  var resizeCanvas = React.useRef(null);
12822
12848
  var onTimeoutCallback = React.useCallback(function () {
12823
12849
  if (allowLivenessFailure) {
@@ -14003,10 +14029,186 @@ var VideoSignatureSuccess = function VideoSignatureSuccess(_a) {
14003
14029
  var StyledVideo$1 = styled__default.default.video(templateObject_1$9 || (templateObject_1$9 = __makeTemplateObject(["\n margin-left: auto;\n margin-right: auto;\n max-width: 100%;\n"], ["\n margin-left: auto;\n margin-right: auto;\n max-width: 100%;\n"])));
14004
14030
  var templateObject_1$9;
14005
14031
 
14032
+ function SelfieCaptureWizard(_a) {
14033
+ var _b;
14034
+ var onLoadingStarted = _a.onLoadingStarted,
14035
+ onLoadingProgress = _a.onLoadingProgress,
14036
+ onLoadingCompleted = _a.onLoadingCompleted,
14037
+ onLoadingOverlayDismissed = _a.onLoadingOverlayDismissed,
14038
+ onCapture = _a.onCapture,
14039
+ onUserCancel = _a.onUserCancel,
14040
+ onExitCapture = _a.onExitCapture,
14041
+ precapturedDocuments = _a.precapturedDocuments,
14042
+ _c = _a.renderCameraFeed,
14043
+ renderCameraFeed = _c === void 0 ? true : _c,
14044
+ _d = _a.showLoadingOverlay,
14045
+ showLoadingOverlay = _d === void 0 ? true : _d,
14046
+ _e = _a.loadingOverlayMode,
14047
+ loadingOverlayMode = _e === void 0 ? 'default' : _e,
14048
+ customOverlayContent = _a.customOverlayContent,
14049
+ _f = _a.waitForIdCaptureModels,
14050
+ waitForIdCaptureModels = _f === void 0 ? false : _f,
14051
+ _g = _a.initialCaptureDelayMs,
14052
+ initialCaptureDelayMs = _g === void 0 ? 1000 : _g,
14053
+ _h = _a.silentFallback,
14054
+ silentFallback = _h === void 0 ? false : _h,
14055
+ guidanceMessage = _a.guidanceMessage,
14056
+ guidesComponent = _a.guidesComponent,
14057
+ _j = _a.assets,
14058
+ assets = _j === void 0 ? {} : _j,
14059
+ _k = _a.classNames,
14060
+ classNames = _k === void 0 ? {} : _k,
14061
+ _l = _a.colors,
14062
+ colors = _l === void 0 ? {} : _l,
14063
+ _m = _a.verbiage,
14064
+ verbiage = _m === void 0 ? {} : _m,
14065
+ _o = _a.debugMode,
14066
+ debugMode = _o === void 0 ? false : _o;
14067
+ var _p = useSubmissionContext(),
14068
+ setSelfieImage = _p.setSelfieImage,
14069
+ logSelfieCaptureAttempt = _p.logSelfieCaptureAttempt;
14070
+ var _q = useCameraStore(shallow.useShallow(function (state) {
14071
+ return {
14072
+ cameraAccessDenied: state.cameraAccessDenied,
14073
+ requestCameraAccess: state.requestCameraAccess,
14074
+ releaseCameraAccess: state.releaseCameraAccess
14075
+ };
14076
+ })),
14077
+ cameraAccessDenied = _q.cameraAccessDenied,
14078
+ requestCameraAccess = _q.requestCameraAccess,
14079
+ releaseCameraAccess = _q.releaseCameraAccess;
14080
+ var _r = React.useState(showLoadingOverlay ? 'LOADING' : 'CAPTURING'),
14081
+ captureState = _r[0],
14082
+ setCaptureState = _r[1];
14083
+ var rawCanvas = React.useRef(null);
14084
+ var cropCanvas = React.useRef(null);
14085
+ var resizeCanvas = React.useRef(null);
14086
+ var captureStartedAt = React.useRef();
14087
+ var operationStartedAt = React.useRef();
14088
+ var _s = useSelfieGuidanceModelsContext(),
14089
+ start = _s.start,
14090
+ stop = _s.stop,
14091
+ modelError = _s.error;
14092
+ React.useEffect(function () {
14093
+ if (precapturedDocuments === null || precapturedDocuments === void 0 ? void 0 : precapturedDocuments.selfie) {
14094
+ setSelfieImage(precapturedDocuments.selfie.imageData);
14095
+ setCaptureState('SUCCESS');
14096
+ return;
14097
+ }
14098
+ if (captureState !== 'CAPTURING') return;
14099
+ operationStartedAt.current = new Date();
14100
+ captureStartedAt.current = undefined;
14101
+ setTimeout(start, 1);
14102
+ return stop;
14103
+ }, [captureState, precapturedDocuments === null || precapturedDocuments === void 0 ? void 0 : precapturedDocuments.selfie, setSelfieImage, start, stop]);
14104
+ var onLoadingOverlayDismissedCallback = React.useCallback(function () {
14105
+ setCaptureState('CAPTURING');
14106
+ onLoadingOverlayDismissed === null || onLoadingOverlayDismissed === void 0 ? void 0 : onLoadingOverlayDismissed();
14107
+ }, [onLoadingOverlayDismissed]);
14108
+ var logCaptureMetadata = React.useCallback(function () {
14109
+ var _a, _b;
14110
+ logSelfieCaptureAttempt({
14111
+ autoCapture: 'Y',
14112
+ captureTime: new Date().getTime() - ((_a = captureStartedAt.current) !== null && _a !== void 0 ? _a : new Date()).getTime(),
14113
+ operationTime: new Date().getTime() - ((_b = operationStartedAt.current) !== null && _b !== void 0 ? _b : new Date()).getTime()
14114
+ });
14115
+ }, [logSelfieCaptureAttempt]);
14116
+ var onFaceDetected = React.useCallback(function (prediction) {
14117
+ if (prediction.face && prediction.faceReady) {
14118
+ captureStartedAt.current || (captureStartedAt.current = new Date());
14119
+ }
14120
+ }, []);
14121
+ var onSelfieCaptured = React.useCallback(function (frame, face) {
14122
+ logCaptureMetadata();
14123
+ var imageUrl = cropToShoulders(rawCanvas.current, cropCanvas.current, resizeCanvas.current, frame, face, 0.92, 600);
14124
+ setCaptureState('SUCCESS');
14125
+ onCapture === null || onCapture === void 0 ? void 0 : onCapture(imageUrl);
14126
+ }, [logCaptureMetadata, onCapture]);
14127
+ var onFallbackImageCaptured = React.useCallback(function (imageUrl) {
14128
+ setSelfieImage(imageUrl);
14129
+ setCaptureState('SUCCESS');
14130
+ onCapture === null || onCapture === void 0 ? void 0 : onCapture(imageUrl);
14131
+ }, [onCapture, setSelfieImage]);
14132
+ var guidesByRequestState = React.useCallback(function (props) {
14133
+ var GuidesComponent = guidesComponent !== null && guidesComponent !== void 0 ? guidesComponent : FaceCaptureGuideOverlay;
14134
+ var status = ['IN_PROGRESS', 'CAPTURE_STARTED', 'GUIDANCE_SATISFIED', 'CAPTURED'].includes(captureState) ? 'processing' : ['FAILED', 'ERROR'].includes(captureState) ? 'failure' : 'ready';
14135
+ return /*#__PURE__*/React__namespace.default.createElement(GuidesComponent, _assign({}, props, {
14136
+ status: status
14137
+ }));
14138
+ }, [captureState, guidesComponent]);
14139
+ var _t = React.useState(0),
14140
+ attempt = _t[0],
14141
+ setAttempt = _t[1];
14142
+ var onExitCallback = React.useCallback(function () {
14143
+ setAttempt(function (n) {
14144
+ return n + 1;
14145
+ });
14146
+ setCaptureState('LOADING');
14147
+ releaseCameraAccess();
14148
+ onExitCapture === null || onExitCapture === void 0 ? void 0 : onExitCapture();
14149
+ void requestCameraAccess();
14150
+ }, [onExitCapture, releaseCameraAccess, requestCameraAccess]);
14151
+ React.useEffect(function () {
14152
+ if (cameraAccessDenied) {
14153
+ setAttempt(function (n) {
14154
+ return n + 1;
14155
+ });
14156
+ setCaptureState('LOADING');
14157
+ }
14158
+ }, [cameraAccessDenied]);
14159
+ var initialDelayOver = useTimeout(initialCaptureDelayMs).timedOut;
14160
+ if (modelError) {
14161
+ return /*#__PURE__*/React__namespace.default.createElement(SelfieCaptureFallback, {
14162
+ onFinished: onFallbackImageCaptured,
14163
+ silentFallback: silentFallback,
14164
+ invalidSelfie: false,
14165
+ guidanceMessage: guidanceMessage
14166
+ });
14167
+ }
14168
+ return /*#__PURE__*/React__namespace.default.createElement(React__namespace.default.Fragment, null, /*#__PURE__*/React__namespace.default.createElement(InvisibleCanvas, {
14169
+ ref: rawCanvas
14170
+ }), /*#__PURE__*/React__namespace.default.createElement(InvisibleCanvas, {
14171
+ ref: cropCanvas
14172
+ }), /*#__PURE__*/React__namespace.default.createElement(InvisibleCanvas, {
14173
+ ref: resizeCanvas
14174
+ }), renderCameraFeed && ( /*#__PURE__*/React__namespace.default.createElement(CameraVideoTag, {
14175
+ className: (_b = classNames.capture) === null || _b === void 0 ? void 0 : _b.cameraFeed
14176
+ })), captureState === 'CAPTURING' && ( /*#__PURE__*/React__namespace.default.createElement(SelfieCapture, {
14177
+ onFaceDetected: onFaceDetected,
14178
+ onSelfieCaptured: onSelfieCaptured,
14179
+ onExit: onExitCallback,
14180
+ shouldCapture: initialDelayOver,
14181
+ guidanceMessage: guidanceMessage,
14182
+ guidanceSatisfied: guidanceMessage ? false : undefined,
14183
+ guidesComponent: guidesByRequestState,
14184
+ classNames: classNames.capture,
14185
+ colors: colors.capture,
14186
+ verbiage: verbiage.capture,
14187
+ debugMode: debugMode
14188
+ })), showLoadingOverlay && ( /*#__PURE__*/React__namespace.default.createElement(SelfieCaptureLoadingOverlay, {
14189
+ key: attempt,
14190
+ mode: loadingOverlayMode,
14191
+ customOverlayContent: customOverlayContent,
14192
+ assets: assets.loadingOverlay,
14193
+ classNames: classNames.loadingOverlay,
14194
+ colors: colors.loadingOverlay,
14195
+ verbiage: verbiage.loadingOverlay,
14196
+ onLoadingStarted: onLoadingStarted,
14197
+ onLoadingProgress: onLoadingProgress,
14198
+ onLoadingCompleted: onLoadingCompleted,
14199
+ onUserCancel: onUserCancel,
14200
+ onDismissed: onLoadingOverlayDismissedCallback,
14201
+ waitForIdCaptureModels: waitForIdCaptureModels
14202
+ })));
14203
+ }
14204
+
14205
+ var selfieCaptureStates = ['CAPTURING_SELFIE', 'CHECKING_LIVENESS'];
14206
+ var activeCaptureStates = __spreadArray(__spreadArray([], selfieCaptureStates, true), ['CAPTURING_SIGNATURE'], false);
14006
14207
  var VideoSignatureWizard = function VideoSignatureWizard(_a) {
14007
14208
  var onLoadingStarted = _a.onLoadingStarted,
14008
14209
  onLoadingProgress = _a.onLoadingProgress,
14009
14210
  onLoadingCompleted = _a.onLoadingCompleted,
14211
+ onSelfieCaptured = _a.onSelfieCaptured,
14010
14212
  onComplete = _a.onComplete,
14011
14213
  onVideoCaptured = _a.onVideoCaptured,
14012
14214
  onRetryClicked = _a.onRetryClicked,
@@ -14028,52 +14230,54 @@ var VideoSignatureWizard = function VideoSignatureWizard(_a) {
14028
14230
  allowSignatureAfterLivenessCheckFailure = _g === void 0 ? false : _g,
14029
14231
  _h = _a.restartVideoOnSignaturePadCleared,
14030
14232
  restartVideoOnSignaturePadCleared = _h === void 0 ? true : _h,
14233
+ _j = _a.skipLivenessValidation,
14234
+ skipLivenessValidation = _j === void 0 ? false : _j,
14031
14235
  faceLivenessProps = _a.faceLivenessProps,
14032
- _j = _a.assets,
14033
- assets = _j === void 0 ? {} : _j,
14034
- _k = _a.classNames,
14035
- classNames = _k === void 0 ? {} : _k,
14036
- _l = _a.colors,
14037
- colors = _l === void 0 ? {} : _l,
14038
- _m = _a.verbiage,
14039
- verbiage = _m === void 0 ? {} : _m,
14040
- _o = _a.debugMode,
14041
- debugMode = _o === void 0 ? false : _o;
14042
- var _p = React.useContext(SubmissionContext),
14043
- selfieImage = _p.selfieImage,
14044
- setSelfieImage = _p.setSelfieImage,
14045
- setSignatureData = _p.setSignatureData,
14046
- setSignatureVideoUrl = _p.setSignatureVideoUrl,
14047
- logSelfieCaptureAttempt = _p.logSelfieCaptureAttempt;
14236
+ _k = _a.assets,
14237
+ assets = _k === void 0 ? {} : _k,
14238
+ _l = _a.classNames,
14239
+ classNames = _l === void 0 ? {} : _l,
14240
+ _m = _a.colors,
14241
+ colors = _m === void 0 ? {} : _m,
14242
+ _o = _a.verbiage,
14243
+ verbiage = _o === void 0 ? {} : _o,
14244
+ _p = _a.debugMode,
14245
+ debugMode = _p === void 0 ? false : _p;
14246
+ var _q = useSubmissionContext(),
14247
+ selfieImage = _q.selfieImage,
14248
+ setSelfieImage = _q.setSelfieImage,
14249
+ setSignatureData = _q.setSignatureData,
14250
+ setSignatureVideoUrl = _q.setSignatureVideoUrl,
14251
+ logSelfieCaptureAttempt = _q.logSelfieCaptureAttempt,
14252
+ uploadDocument = _q.uploadDocument;
14048
14253
  var cameraAccessDenied = useCameraStore(shallow.useShallow(function (state) {
14049
14254
  return {
14050
14255
  cameraAccessDenied: state.cameraAccessDenied
14051
14256
  };
14052
14257
  })).cameraAccessDenied;
14053
- var _q = React.useState('CHECKING_LIVENESS'),
14054
- captureState = _q[0],
14055
- setCaptureState = _q[1];
14258
+ var _r = React.useState(skipLivenessValidation ? 'CAPTURING_SELFIE' : 'CHECKING_LIVENESS'),
14259
+ captureState = _r[0],
14260
+ setCaptureState = _r[1];
14056
14261
  var operationStartedAt = React.useRef();
14057
14262
  var captureStartedAt = React.useRef();
14058
14263
  var captureEndedAt = React.useRef();
14059
- var _r = useSelfieGuidanceModelsContext(),
14060
- start = _r.start,
14061
- stop = _r.stop;
14264
+ var _s = useSelfieGuidanceModelsContext(),
14265
+ start = _s.start,
14266
+ stop = _s.stop;
14062
14267
  React.useEffect(function () {
14063
14268
  operationStartedAt.current = new Date();
14064
14269
  }, []);
14270
+ var isSelfieCaptureState = selfieCaptureStates.includes(captureState);
14271
+ var isActiveCaptureState = activeCaptureStates.includes(captureState);
14065
14272
  React.useEffect(function () {
14066
- if (captureState !== 'CHECKING_LIVENESS') return;
14273
+ if (!isSelfieCaptureState) return;
14067
14274
  captureStartedAt.current = new Date();
14068
- }, [captureState]);
14069
- var shouldRun = ['CHECKING_LIVENESS', 'CAPTURING_SIGNATURE'].includes(captureState);
14275
+ }, [isSelfieCaptureState]);
14070
14276
  React.useEffect(function () {
14071
- if (!shouldRun) return;
14277
+ if (!isActiveCaptureState) return;
14072
14278
  start();
14073
- return function () {
14074
- return stop();
14075
- };
14076
- }, [start, stop, shouldRun]);
14279
+ return stop;
14280
+ }, [start, stop, isActiveCaptureState]);
14077
14281
  var logCaptureMetadata = React.useCallback(function () {
14078
14282
  var _a, _b, _c;
14079
14283
  logSelfieCaptureAttempt({
@@ -14094,9 +14298,17 @@ var VideoSignatureWizard = function VideoSignatureWizard(_a) {
14094
14298
  setSelfieImage(selfieFromRequest);
14095
14299
  }
14096
14300
  }, [logCaptureMetadata, onFaceLivenessSuccessProp, selfieImage, setSelfieImage]);
14097
- var _s = React.useState(null),
14098
- signatureImageUrl = _s[0],
14099
- setSignatureImageUrl = _s[1];
14301
+ var onSelfieCapture = React.useCallback(function (imageUrl) {
14302
+ setSelfieImage(imageUrl);
14303
+ setCaptureState('CAPTURING_SIGNATURE');
14304
+ logCaptureMetadata();
14305
+ uploadDocument(b64toBlob(dataUrlToBase64Sync(imageUrl), 'image/jpeg')).then(function (documentId) {
14306
+ onSelfieCaptured === null || onSelfieCaptured === void 0 ? void 0 : onSelfieCaptured(documentId);
14307
+ });
14308
+ }, [logCaptureMetadata, onSelfieCaptured, setSelfieImage, uploadDocument]);
14309
+ var _t = React.useState(null),
14310
+ signatureImageUrl = _t[0],
14311
+ setSignatureImageUrl = _t[1];
14100
14312
  var onSignatureCaptureCompleted = React.useCallback(function (videoData, signatureData, signatureImageData) {
14101
14313
  setSignatureData(signatureData);
14102
14314
  setSignatureVideoUrl(URL.createObjectURL(videoData));
@@ -14104,41 +14316,41 @@ var VideoSignatureWizard = function VideoSignatureWizard(_a) {
14104
14316
  setCaptureState('SUCCESS');
14105
14317
  onVideoCaptured === null || onVideoCaptured === void 0 ? void 0 : onVideoCaptured(videoData, signatureData, signatureImageData);
14106
14318
  }, [onVideoCaptured, setSignatureData, setSignatureVideoUrl]);
14107
- var _t = React.useState(true),
14108
- showLoadingOverlay = _t[0],
14109
- setShowLoadingOverlay = _t[1];
14319
+ var _u = React.useState(true),
14320
+ showLoadingOverlay = _u[0],
14321
+ setShowLoadingOverlay = _u[1];
14110
14322
  var onSignatureCaptureFacesNotDetected = React.useCallback(function () {
14111
14323
  setShowLoadingOverlay(false);
14112
- setCaptureState('CHECKING_LIVENESS');
14324
+ setCaptureState(skipLivenessValidation ? 'CAPTURING_SELFIE' : 'CHECKING_LIVENESS');
14113
14325
  useVideoSignatureStore.getState().clearRecordedData();
14114
- }, []);
14115
- var _u = React.useState(0),
14116
- attempt = _u[0],
14117
- setAttempt = _u[1];
14326
+ }, [skipLivenessValidation]);
14327
+ var _v = React.useState(0),
14328
+ attempt = _v[0],
14329
+ setAttempt = _v[1];
14118
14330
  var onRetry = React.useCallback(function () {
14119
14331
  onRetryClicked === null || onRetryClicked === void 0 ? void 0 : onRetryClicked();
14120
14332
  setAttempt(function (n) {
14121
14333
  return n + 1;
14122
14334
  });
14123
- setCaptureState('CHECKING_LIVENESS');
14124
- }, [onRetryClicked]);
14335
+ setCaptureState(skipLivenessValidation ? 'CAPTURING_SELFIE' : 'CHECKING_LIVENESS');
14336
+ }, [onRetryClicked, skipLivenessValidation]);
14125
14337
  var onExitSignatureCapture = React.useCallback(function () {
14126
14338
  setAttempt(function (n) {
14127
14339
  return n + 1;
14128
14340
  });
14129
- setCaptureState('CHECKING_LIVENESS');
14341
+ setCaptureState(skipLivenessValidation ? 'CAPTURING_SELFIE' : 'CHECKING_LIVENESS');
14130
14342
  onExitCapture === null || onExitCapture === void 0 ? void 0 : onExitCapture();
14131
14343
  useVideoSignatureStore.getState().clearRecordedData();
14132
- }, [onExitCapture]);
14344
+ }, [onExitCapture, skipLivenessValidation]);
14133
14345
  var showSuccessScreen = useShowSuccessScreen(skipSuccessScreen, captureState === 'SUCCESS', onComplete);
14134
14346
  React.useEffect(function () {
14135
14347
  if (cameraAccessDenied) {
14136
14348
  setAttempt(function (n) {
14137
14349
  return n + 1;
14138
14350
  });
14139
- setCaptureState('CHECKING_LIVENESS');
14351
+ setCaptureState(skipLivenessValidation ? 'CAPTURING_SELFIE' : 'CHECKING_LIVENESS');
14140
14352
  }
14141
- }, [cameraAccessDenied]);
14353
+ }, [cameraAccessDenied, skipLivenessValidation]);
14142
14354
  var guidesComponent = React.useCallback(function (props) {
14143
14355
  return /*#__PURE__*/React__namespace.default.createElement(VideoSignatureWizardGuides, _assign({}, props, {
14144
14356
  classNames: classNames === null || classNames === void 0 ? void 0 : classNames.guides,
@@ -14178,6 +14390,7 @@ var VideoSignatureWizard = function VideoSignatureWizard(_a) {
14178
14390
  onUserCancel: onUserCancel,
14179
14391
  onExitAfterFailure: onExitAfterFailure,
14180
14392
  onLoadingOverlayDismissed: onLoadingOverlayDismissedCallback,
14393
+ showLoadingOverlay: showLoadingOverlay,
14181
14394
  customOverlayContent: customOverlayContent,
14182
14395
  loadingOverlayMode: loadingOverlayMode,
14183
14396
  guidesComponent: guidesComponent,
@@ -14186,8 +14399,29 @@ var VideoSignatureWizard = function VideoSignatureWizard(_a) {
14186
14399
  colors: colors.faceLiveness,
14187
14400
  verbiage: verbiage.faceLiveness,
14188
14401
  debugMode: debugMode,
14189
- renderCameraFeed: false,
14190
- showLoadingOverlay: showLoadingOverlay
14402
+ renderCameraFeed: false
14403
+ }));
14404
+ case 'CAPTURING_SELFIE':
14405
+ return /*#__PURE__*/React__namespace.default.createElement(SelfieCaptureWizard, _assign({
14406
+ key: "selfie-capture-".concat(attempt)
14407
+ }, faceLivenessProps, {
14408
+ onLoadingStarted: onLoadingStarted,
14409
+ onLoadingProgress: onLoadingProgress,
14410
+ onLoadingCompleted: onLoadingCompleted,
14411
+ onLoadingOverlayDismissed: onLoadingOverlayDismissedCallback,
14412
+ onCapture: onSelfieCapture,
14413
+ onUserCancel: onUserCancel,
14414
+ onExitCapture: onExitCapture,
14415
+ showLoadingOverlay: showLoadingOverlay,
14416
+ customOverlayContent: customOverlayContent,
14417
+ loadingOverlayMode: loadingOverlayMode,
14418
+ guidesComponent: guidesComponent,
14419
+ assets: assets.faceLiveness,
14420
+ classNames: classNames.faceLiveness,
14421
+ colors: colors.faceLiveness,
14422
+ verbiage: verbiage.faceLiveness,
14423
+ debugMode: debugMode,
14424
+ renderCameraFeed: false
14191
14425
  }));
14192
14426
  case 'CAPTURING_SIGNATURE':
14193
14427
  return /*#__PURE__*/React__namespace.default.createElement(VideoSignatureCapture, {
@@ -17978,6 +18212,7 @@ var SignatureKYC = function SignatureKYC(_a) {
17978
18212
  onDocumentUploadProgress = _a.onDocumentUploadProgress,
17979
18213
  onDocumentUploaded = _a.onDocumentUploaded,
17980
18214
  onDocumentUploadFailed = _a.onDocumentUploadFailed,
18215
+ onSelfieCaptured = _a.onSelfieCaptured,
17981
18216
  onBeforeSubmit = _a.onBeforeSubmit,
17982
18217
  onSubmit = _a.onSubmit,
17983
18218
  onComplete = _a.onComplete,
@@ -18006,15 +18241,17 @@ var SignatureKYC = function SignatureKYC(_a) {
18006
18241
  _k = _a.restartVideoOnSignaturePadCleared,
18007
18242
  restartVideoOnSignaturePadCleared = _k === void 0 ? true : _k,
18008
18243
  faceLivenessProps = _a.faceLivenessProps,
18009
- _l = _a.theme,
18010
- theme = _l === void 0 ? 'default' : _l,
18244
+ _l = _a.skipLivenessValidation,
18245
+ skipLivenessValidation = _l === void 0 ? false : _l,
18246
+ _m = _a.theme,
18247
+ theme = _m === void 0 ? 'default' : _m,
18011
18248
  classNames = _a.classNames,
18012
18249
  colors = _a.colors,
18013
18250
  verbiage = _a.verbiage,
18014
18251
  geolocationEnabled = _a.geolocationEnabled,
18015
18252
  geolocationRequired = _a.geolocationRequired,
18016
- _m = _a.debugMode,
18017
- debugMode = _m === void 0 ? false : _m;
18253
+ _o = _a.debugMode,
18254
+ debugMode = _o === void 0 ? false : _o;
18018
18255
  useLanguage(lang);
18019
18256
  useDebugLogging(debugMode);
18020
18257
  return /*#__PURE__*/React__namespace.default.createElement(AuthProvider, {
@@ -18056,6 +18293,7 @@ var SignatureKYC = function SignatureKYC(_a) {
18056
18293
  onLoadingStarted: onLoadingStarted,
18057
18294
  onLoadingProgress: onLoadingProgress,
18058
18295
  onLoadingCompleted: onLoadingCompleted,
18296
+ onSelfieCaptured: onSelfieCaptured,
18059
18297
  customOverlayContent: customOverlayContent,
18060
18298
  onLoadingOverlayDismissed: onLoadingOverlayDismissed,
18061
18299
  loadingOverlayMode: loadingOverlayMode,
@@ -18067,6 +18305,7 @@ var SignatureKYC = function SignatureKYC(_a) {
18067
18305
  faceLivenessProps: faceLivenessProps,
18068
18306
  allowSignatureAfterLivenessCheckFailure: allowSignatureAfterLivenessCheckFailure,
18069
18307
  restartVideoOnSignaturePadCleared: restartVideoOnSignaturePadCleared,
18308
+ skipLivenessValidation: skipLivenessValidation,
18070
18309
  classNames: classNames,
18071
18310
  colors: colors,
18072
18311
  debugMode: debugMode,
@@ -18074,7 +18313,7 @@ var SignatureKYC = function SignatureKYC(_a) {
18074
18313
  onModelError: onModelError,
18075
18314
  onUserCancel: onUserCancel
18076
18315
  };
18077
- }, [onLoadingStarted, onLoadingProgress, onLoadingCompleted, customOverlayContent, onLoadingOverlayDismissed, loadingOverlayMode, skipSuccessScreen, captureAudio, minSignaturePadPoints, headTrackingBoundaryPercentage, modelLoadTimeoutMs, faceLivenessProps, allowSignatureAfterLivenessCheckFailure, restartVideoOnSignaturePadCleared, classNames, colors, debugMode, verbiage, onModelError, onUserCancel])
18316
+ }, [onLoadingStarted, onLoadingProgress, onLoadingCompleted, onSelfieCaptured, customOverlayContent, onLoadingOverlayDismissed, loadingOverlayMode, skipSuccessScreen, captureAudio, minSignaturePadPoints, headTrackingBoundaryPercentage, modelLoadTimeoutMs, faceLivenessProps, allowSignatureAfterLivenessCheckFailure, restartVideoOnSignaturePadCleared, skipLivenessValidation, classNames, colors, debugMode, verbiage, onModelError, onUserCancel])
18078
18317
  })))));
18079
18318
  };
18080
18319