idmission-web-sdk 2.3.191-refactor-modernize-react-examples-9e9af14 → 2.3.192

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.
Files changed (30) hide show
  1. package/dist/components/customer_flows/SignatureKYC.d.ts +9 -3
  2. package/dist/components/customer_flows/SignatureKYC.d.ts.map +1 -1
  3. package/dist/components/face_liveness/FaceLivenessCapture.d.ts +2 -1
  4. package/dist/components/face_liveness/FaceLivenessCapture.d.ts.map +1 -1
  5. package/dist/components/face_liveness/FaceLivenessWizard.d.ts +2 -1
  6. package/dist/components/face_liveness/FaceLivenessWizard.d.ts.map +1 -1
  7. package/dist/components/selfie_capture/SelfieCapture.d.ts +2 -1
  8. package/dist/components/selfie_capture/SelfieCapture.d.ts.map +1 -1
  9. package/dist/components/selfie_capture/SelfieCaptureWizard.d.ts +2 -1
  10. package/dist/components/selfie_capture/SelfieCaptureWizard.d.ts.map +1 -1
  11. package/dist/components/selfie_capture/SelfieGuidanceModelsProvider.d.ts +5 -1
  12. package/dist/components/selfie_capture/SelfieGuidanceModelsProvider.d.ts.map +1 -1
  13. package/dist/components/video_signature_capture/VideoSignatureWizard.d.ts +1 -0
  14. package/dist/components/video_signature_capture/VideoSignatureWizard.d.ts.map +1 -1
  15. package/dist/lib/models/FaceDetection.d.ts +7 -1
  16. package/dist/lib/models/FaceDetection.d.ts.map +1 -1
  17. package/dist/lib/utils/lighting.d.ts +12 -1
  18. package/dist/lib/utils/lighting.d.ts.map +1 -1
  19. package/dist/sdk2.cjs.development.js +238 -155
  20. package/dist/sdk2.cjs.development.js.map +1 -1
  21. package/dist/sdk2.cjs.production.js +1 -1
  22. package/dist/sdk2.cjs.production.js.map +1 -1
  23. package/dist/sdk2.esm.js +238 -155
  24. package/dist/sdk2.esm.js.map +1 -1
  25. package/dist/sdk2.umd.development.js +238 -155
  26. package/dist/sdk2.umd.development.js.map +1 -1
  27. package/dist/sdk2.umd.production.js +1 -1
  28. package/dist/sdk2.umd.production.js.map +1 -1
  29. package/dist/version.d.ts +1 -1
  30. package/package.json +1 -1
@@ -211,7 +211,7 @@
211
211
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
212
212
  };
213
213
 
214
- var webSdkVersion = '2.3.190';
214
+ var webSdkVersion = '2.3.192';
215
215
 
216
216
  function getPlatform() {
217
217
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
@@ -24950,7 +24950,8 @@
24950
24950
  minCaptureVarianceThreshold = _a.minCaptureVarianceThreshold,
24951
24951
  brightness = _a.brightness,
24952
24952
  range = _a.range,
24953
- variance = _a.variance;
24953
+ variance = _a.variance,
24954
+ samplePoints = _a.samplePoints;
24954
24955
  var face = faces[0];
24955
24956
  var faceNotDetected = faces.length === 0;
24956
24957
  var faceNotCentered = false,
@@ -25026,27 +25027,40 @@
25026
25027
  faceReadyAt: faceReady ? new Date() : null,
25027
25028
  faceIsStable: faceIsStable,
25028
25029
  noseIsStable: noseIsStable,
25029
- faceVisibilityTooLow: faceVisibilityTooLow
25030
+ faceVisibilityTooLow: faceVisibilityTooLow,
25031
+ brightness: brightness,
25032
+ range: range,
25033
+ variance: variance,
25034
+ samplePoints: samplePoints
25030
25035
  };
25031
25036
  }
25032
25037
 
25033
- function detectBrightnessAndContrast(frame, brightnessAverager) {
25038
+ function detectBrightnessAndContrast(frame, brightnessAverager, bounds, collectSamplePoints) {
25039
+ if (collectSamplePoints === void 0) {
25040
+ collectSamplePoints = false;
25041
+ }
25034
25042
  var ctx = frame.getContext('2d');
25035
25043
  if (!ctx || frame.width === 0 || frame.height === 0) return {};
25036
- var imageData = ctx.getImageData(0, 0, frame.width, frame.height);
25044
+ // Determine sampling region, clamped to canvas dimensions
25045
+ var regionX = bounds ? Math.max(0, Math.floor(bounds.x)) : 0;
25046
+ var regionY = bounds ? Math.max(0, Math.floor(bounds.y)) : 0;
25047
+ var regionW = bounds ? Math.min(Math.ceil(bounds.width), frame.width - regionX) : frame.width;
25048
+ var regionH = bounds ? Math.min(Math.ceil(bounds.height), frame.height - regionY) : frame.height;
25049
+ if (regionW <= 0 || regionH <= 0) return {};
25050
+ var imageData = ctx.getImageData(regionX, regionY, regionW, regionH);
25037
25051
  var pixels = imageData.data; // This is already Uint8ClampedArray
25038
- var width = frame.width;
25039
25052
  var sampleResolution = 10;
25040
- var xStep = Math.max(1, Math.floor(width / sampleResolution));
25041
- var yStep = Math.max(1, Math.floor(frame.height / sampleResolution));
25053
+ var xStep = Math.max(1, Math.floor(regionW / sampleResolution));
25054
+ var yStep = Math.max(1, Math.floor(regionH / sampleResolution));
25042
25055
  var brightness = 0;
25043
25056
  var brightnessForVariance = 0;
25044
25057
  var minBrightness = Infinity;
25045
25058
  var maxBrightness = -Infinity;
25046
25059
  var iterations = 0;
25047
- for (var y = Math.floor(yStep / 2); y < frame.height; y += yStep) {
25048
- for (var x = Math.floor(xStep / 2); x < width; x += xStep) {
25049
- var pixelIndex = (y * width + x) * 4;
25060
+ var samplePoints = collectSamplePoints ? [] : undefined;
25061
+ for (var y = Math.floor(yStep / 2); y < regionH; y += yStep) {
25062
+ for (var x = Math.floor(xStep / 2); x < regionW; x += xStep) {
25063
+ var pixelIndex = (y * regionW + x) * 4;
25050
25064
  var r = pixels[pixelIndex];
25051
25065
  var g = pixels[pixelIndex + 1];
25052
25066
  var b = pixels[pixelIndex + 2];
@@ -25059,6 +25073,11 @@
25059
25073
  minBrightness = Math.min(minBrightness, luminance);
25060
25074
  maxBrightness = Math.max(maxBrightness, luminance);
25061
25075
  iterations++;
25076
+ // Collect sample coordinates in canvas space for debug overlay
25077
+ samplePoints === null || samplePoints === void 0 ? void 0 : samplePoints.push({
25078
+ x: regionX + x,
25079
+ y: regionY + y
25080
+ });
25062
25081
  }
25063
25082
  }
25064
25083
  var _a = brightnessAverager(brightness / iterations),
@@ -25069,7 +25088,8 @@
25069
25088
  return {
25070
25089
  brightness: isFull ? avg : undefined,
25071
25090
  range: isFull ? range : undefined,
25072
- variance: isFull ? variance : undefined
25091
+ variance: isFull ? variance : undefined,
25092
+ samplePoints: samplePoints
25073
25093
  };
25074
25094
  }
25075
25095
  function createRunningAvgFIFO(capacity) {
@@ -25166,30 +25186,32 @@
25166
25186
  requireVerticalFaceCentering = _d === void 0 ? true : _d,
25167
25187
  minCaptureBrightnessThreshold = _a.minCaptureBrightnessThreshold,
25168
25188
  minCaptureRangeThreshold = _a.minCaptureRangeThreshold,
25169
- minCaptureVarianceThreshold = _a.minCaptureVarianceThreshold;
25170
- var _e = useCameraStore(useShallow(function (state) {
25189
+ minCaptureVarianceThreshold = _a.minCaptureVarianceThreshold,
25190
+ _e = _a.debugShowSamplePoints,
25191
+ debugShowSamplePoints = _e === void 0 ? false : _e;
25192
+ var _f = useCameraStore(useShallow(function (state) {
25171
25193
  return {
25172
25194
  videoRef: state.videoRef,
25173
25195
  videoLoaded: state.videoLoaded,
25174
25196
  cameraReady: state.cameraReady
25175
25197
  };
25176
25198
  })),
25177
- videoRef = _e.videoRef,
25178
- videoLoaded = _e.videoLoaded,
25179
- cameraReady = _e.cameraReady;
25199
+ videoRef = _f.videoRef,
25200
+ videoLoaded = _f.videoLoaded,
25201
+ cameraReady = _f.cameraReady;
25180
25202
  var canvasRef = React.useRef(null);
25181
25203
  var onPredictionHandler = React.useRef(undefined);
25182
25204
  var addToAverage = useRunningAvg(5).addToAverage;
25183
- var _f = useLoadDocumentDetector({
25205
+ var _g = useLoadDocumentDetector({
25184
25206
  videoRef: videoRef,
25185
25207
  onModelError: onModelError,
25186
25208
  modelLoadTimeoutMs: modelLoadTimeoutMs
25187
25209
  }),
25188
- ready = _f.ready,
25189
- modelLoadState = _f.modelLoadState,
25190
- modelDownloadProgress = _f.modelDownloadProgress,
25191
- modelWarmingStartedAt = _f.modelWarmingStartedAt,
25192
- modelError = _f.modelError;
25210
+ ready = _g.ready,
25211
+ modelLoadState = _g.modelLoadState,
25212
+ modelDownloadProgress = _g.modelDownloadProgress,
25213
+ modelWarmingStartedAt = _g.modelWarmingStartedAt,
25214
+ modelError = _g.modelError;
25193
25215
  // const {
25194
25216
  // ready,
25195
25217
  // modelLoadState,
@@ -25201,9 +25223,9 @@
25201
25223
  // modelLoadTimeoutMs,
25202
25224
  // videoRef,
25203
25225
  // })
25204
- var _g = useFrameLoop(React.useCallback(function () {
25226
+ var _h = useFrameLoop(React.useCallback(function () {
25205
25227
  return __awaiter(_this, void 0, void 0, function () {
25206
- var vw, vh, ctx, thresholdsProvided, brightnessResults, brightness, range, variance, prediction, processed, e_1;
25228
+ var vw, vh, ctx, prediction, thresholdsProvided, brightnessResults, primaryFaceDetection, primaryFaceBounds, brightness, range, variance, processed, e_1;
25207
25229
  var _a, _b;
25208
25230
  return __generator(this, function (_c) {
25209
25231
  switch (_c.label) {
@@ -25221,14 +25243,28 @@
25221
25243
  _c.label = 1;
25222
25244
  case 1:
25223
25245
  _c.trys.push([1, 4,, 5]);
25246
+ return [4 /*yield*/, makeFacePredictionWithDocumentDetector(canvasRef.current)];
25247
+ case 2:
25248
+ prediction = _c.sent();
25224
25249
  thresholdsProvided = minCaptureBrightnessThreshold !== undefined || minCaptureRangeThreshold !== undefined || minCaptureVarianceThreshold !== undefined;
25225
- brightnessResults = thresholdsProvided ? detectBrightnessAndContrast(canvasRef.current, addToAverage) : undefined;
25250
+ brightnessResults = void 0;
25251
+ if (thresholdsProvided || debugShowSamplePoints) {
25252
+ primaryFaceDetection = prediction === null || prediction === void 0 ? void 0 : prediction.detections.find(function (d) {
25253
+ return d.categories.some(function (c) {
25254
+ return c.categoryName === 'Primary face';
25255
+ });
25256
+ });
25257
+ primaryFaceBounds = (primaryFaceDetection === null || primaryFaceDetection === void 0 ? void 0 : primaryFaceDetection.boundingBox) ? {
25258
+ x: primaryFaceDetection.boundingBox.originX,
25259
+ y: primaryFaceDetection.boundingBox.originY,
25260
+ width: primaryFaceDetection.boundingBox.width,
25261
+ height: primaryFaceDetection.boundingBox.height
25262
+ } : undefined;
25263
+ brightnessResults = detectBrightnessAndContrast(canvasRef.current, addToAverage, primaryFaceBounds, debugShowSamplePoints);
25264
+ }
25226
25265
  brightness = brightnessResults === null || brightnessResults === void 0 ? void 0 : brightnessResults.brightness;
25227
25266
  range = brightnessResults === null || brightnessResults === void 0 ? void 0 : brightnessResults.range;
25228
25267
  variance = brightnessResults === null || brightnessResults === void 0 ? void 0 : brightnessResults.variance;
25229
- return [4 /*yield*/, makeFacePredictionWithDocumentDetector(canvasRef.current)];
25230
- case 2:
25231
- prediction = _c.sent();
25232
25268
  processed = processFaceDetectorPrediction({
25233
25269
  faces: (_a = prediction === null || prediction === void 0 ? void 0 : prediction.faces) !== null && _a !== void 0 ? _a : [],
25234
25270
  videoWidth: vw,
@@ -25239,7 +25275,8 @@
25239
25275
  minCaptureVarianceThreshold: minCaptureVarianceThreshold,
25240
25276
  brightness: brightness,
25241
25277
  range: range,
25242
- variance: variance
25278
+ variance: variance,
25279
+ samplePoints: brightnessResults === null || brightnessResults === void 0 ? void 0 : brightnessResults.samplePoints
25243
25280
  });
25244
25281
  setLastFaceDetectionAt(new Date().getTime());
25245
25282
  // setLastPrediction(processed)
@@ -25257,12 +25294,12 @@
25257
25294
  }
25258
25295
  });
25259
25296
  });
25260
- }, [cameraReady, modelError, ready, requireVerticalFaceCentering, videoLoaded, videoRef, addToAverage, minCaptureBrightnessThreshold, minCaptureRangeThreshold, minCaptureVarianceThreshold]), {
25297
+ }, [cameraReady, modelError, ready, requireVerticalFaceCentering, videoLoaded, videoRef, addToAverage, minCaptureBrightnessThreshold, minCaptureRangeThreshold, minCaptureVarianceThreshold, debugShowSamplePoints]), {
25261
25298
  throttleMs: throttleMs,
25262
25299
  autoStart: autoStart
25263
25300
  }),
25264
- start = _g.start,
25265
- stop = _g.stop;
25301
+ start = _h.start,
25302
+ stop = _h.stop;
25266
25303
  var onPredictionMade = React.useCallback(function (handler) {
25267
25304
  onPredictionHandler.current = handler;
25268
25305
  }, []);
@@ -25276,9 +25313,12 @@
25276
25313
  error: modelError,
25277
25314
  modelDownloadProgress: modelDownloadProgress,
25278
25315
  modelLoadState: modelLoadState,
25279
- modelWarmingStartedAt: modelWarmingStartedAt
25316
+ modelWarmingStartedAt: modelWarmingStartedAt,
25317
+ minCaptureBrightnessThreshold: minCaptureBrightnessThreshold,
25318
+ minCaptureRangeThreshold: minCaptureRangeThreshold,
25319
+ minCaptureVarianceThreshold: minCaptureVarianceThreshold
25280
25320
  };
25281
- }, [start, stop, ready, onPredictionMade, modelError, modelDownloadProgress, modelLoadState, modelWarmingStartedAt]);
25321
+ }, [start, stop, ready, onPredictionMade, modelError, modelDownloadProgress, modelLoadState, modelWarmingStartedAt, minCaptureBrightnessThreshold, minCaptureRangeThreshold, minCaptureVarianceThreshold]);
25282
25322
  return /*#__PURE__*/React__namespace.createElement(SelfieGuidanceModelsContext.Provider, {
25283
25323
  value: value
25284
25324
  }, /*#__PURE__*/React__namespace.createElement(InvisibleCanvas, {
@@ -25521,7 +25561,7 @@
25521
25561
  }
25522
25562
  };
25523
25563
  var SelfieCapture = function SelfieCapture(_a) {
25524
- var _b;
25564
+ var _b, _c, _d, _e, _f, _g, _h, _j;
25525
25565
  var onGuidanceSatisfied = _a.onGuidanceSatisfied,
25526
25566
  onGuidanceNotSatisfied = _a.onGuidanceNotSatisfied,
25527
25567
  onFaceDetected = _a.onFaceDetected,
@@ -25529,44 +25569,49 @@
25529
25569
  onSelfieCaptured = _a.onSelfieCaptured,
25530
25570
  onTimeout = _a.onTimeout,
25531
25571
  onExit = _a.onExit,
25532
- _c = _a.timeoutDurationMs,
25533
- timeoutDurationMs = _c === void 0 ? 15000 : _c,
25572
+ _k = _a.timeoutDurationMs,
25573
+ timeoutDurationMs = _k === void 0 ? 15000 : _k,
25534
25574
  guidanceMessage = _a.guidanceMessage,
25535
25575
  guidanceSatisfied = _a.guidanceSatisfied,
25536
25576
  guidesComponent = _a.guidesComponent,
25537
- _d = _a.allowManualSelfieCaptureOnLoadingError,
25538
- allowManualSelfieCaptureOnLoadingError = _d === void 0 ? false : _d,
25539
- _e = _a.shouldCapture,
25540
- shouldCapture = _e === void 0 ? true : _e,
25541
- _f = _a.classNames,
25542
- classNames = _f === void 0 ? {} : _f,
25543
- _g = _a.colors,
25544
- colors = _g === void 0 ? {} : _g,
25545
- _h = _a.verbiage,
25546
- rawVerbiage = _h === void 0 ? {} : _h,
25547
- _j = _a.debugMode,
25548
- debugMode = _j === void 0 ? false : _j;
25549
- var _k = useResizeObserver(),
25550
- ref = _k.ref,
25551
- _l = _k.width,
25552
- width = _l === void 0 ? 1 : _l,
25553
- _m = _k.height,
25554
- height = _m === void 0 ? 1 : _m;
25555
- var _o = React.useReducer(reducer$3, initialState$4),
25556
- _p = _o[0],
25557
- busy = _p.busy,
25558
- prediction = _p.prediction,
25559
- dispatch = _o[1];
25577
+ _l = _a.allowManualSelfieCaptureOnLoadingError,
25578
+ allowManualSelfieCaptureOnLoadingError = _l === void 0 ? false : _l,
25579
+ _m = _a.shouldCapture,
25580
+ shouldCapture = _m === void 0 ? true : _m,
25581
+ _o = _a.classNames,
25582
+ classNames = _o === void 0 ? {} : _o,
25583
+ _p = _a.colors,
25584
+ colors = _p === void 0 ? {} : _p,
25585
+ _q = _a.verbiage,
25586
+ rawVerbiage = _q === void 0 ? {} : _q,
25587
+ _r = _a.debugMode,
25588
+ debugMode = _r === void 0 ? false : _r,
25589
+ _s = _a.debugShowSamplePoints,
25590
+ debugShowSamplePoints = _s === void 0 ? false : _s;
25591
+ var _t = useResizeObserver(),
25592
+ ref = _t.ref,
25593
+ _u = _t.width,
25594
+ width = _u === void 0 ? 1 : _u,
25595
+ _v = _t.height,
25596
+ height = _v === void 0 ? 1 : _v;
25597
+ var _w = React.useReducer(reducer$3, initialState$4),
25598
+ _x = _w[0],
25599
+ busy = _x.busy,
25600
+ prediction = _x.prediction,
25601
+ dispatch = _w[1];
25560
25602
  var lastPredictionCanvas = React.useRef(null);
25561
25603
  var videoRef = useCameraStore(useShallow(function (state) {
25562
25604
  return {
25563
25605
  videoRef: state.videoRef
25564
25606
  };
25565
25607
  })).videoRef;
25566
- var _q = useSelfieGuidanceModelsContext(),
25567
- onPredictionMade = _q.onPredictionMade,
25568
- canvasRef = _q.canvasRef,
25569
- guidanceError = _q.error;
25608
+ var _y = useSelfieGuidanceModelsContext(),
25609
+ onPredictionMade = _y.onPredictionMade,
25610
+ canvasRef = _y.canvasRef,
25611
+ guidanceError = _y.error,
25612
+ minCaptureBrightnessThreshold = _y.minCaptureBrightnessThreshold,
25613
+ minCaptureRangeThreshold = _y.minCaptureRangeThreshold,
25614
+ minCaptureVarianceThreshold = _y.minCaptureVarianceThreshold;
25570
25615
  onPredictionMade(f(React.useCallback(function (prediction) {
25571
25616
  return __awaiter(void 0, void 0, void 0, function () {
25572
25617
  return __generator(this, function (_a) {
@@ -25613,9 +25658,9 @@
25613
25658
  return timer && clearTimeout(timer);
25614
25659
  };
25615
25660
  }, [doCapture, prediction]);
25616
- var _r = useTimeout(timeoutDurationMs, onTimeout),
25617
- timedOut = _r.timedOut,
25618
- timeoutStartedAt = _r.timeoutStartedAt;
25661
+ var _z = useTimeout(timeoutDurationMs, onTimeout),
25662
+ timedOut = _z.timedOut,
25663
+ timeoutStartedAt = _z.timeoutStartedAt;
25619
25664
  var debugScalingDetails = useDebugScalingDetails({
25620
25665
  enabled: debugMode,
25621
25666
  pageWidth: width,
@@ -25664,7 +25709,27 @@
25664
25709
  face: prediction.face,
25665
25710
  scaling: debugScalingDetails,
25666
25711
  color: satisfied ? 'green' : 'red'
25667
- }))), debugMode && (/*#__PURE__*/React.createElement(DebugStatsPane, null, camera ? (/*#__PURE__*/React.createElement(React.Fragment, null, "\u2705 Camera: ", camera.label, " (", camera.width, "x", camera.height, ")")) : '❌ Camera not ready', /*#__PURE__*/React.createElement("br", null), !(prediction === null || prediction === void 0 ? void 0 : prediction.faceNotDetected) ? '✅' : '❌', " Face Detected", /*#__PURE__*/React.createElement("br", null), !(prediction === null || prediction === void 0 ? void 0 : prediction.faceNotCentered) ? '✅' : '❌', " Face Centered", /*#__PURE__*/React.createElement("br", null), !(prediction === null || prediction === void 0 ? void 0 : prediction.faceTooClose) && !(prediction === null || prediction === void 0 ? void 0 : prediction.faceTooFar) ? '✅' : '❌', ' ', "Face", ' ', (prediction === null || prediction === void 0 ? void 0 : prediction.faceTooClose) ? 'Too Close' : (prediction === null || prediction === void 0 ? void 0 : prediction.faceTooFar) ? 'Too Far' : 'Distance Correct', /*#__PURE__*/React.createElement("br", null), !(prediction === null || prediction === void 0 ? void 0 : prediction.faceLookingAway) ? '✅' : '❌', " Face Looking Forward", /*#__PURE__*/React.createElement("br", null), !(prediction === null || prediction === void 0 ? void 0 : prediction.faceIsStable) ? '✅' : '❌', " Face Is Stable", /*#__PURE__*/React.createElement("br", null), !(prediction === null || prediction === void 0 ? void 0 : prediction.noseIsStable) ? '✅' : '❌', " Nose Is Stable", /*#__PURE__*/React.createElement("br", null), !timedOut ? '✅' : '❌', " Time Remaining:", ' ', Math.max(0, timeoutDurationMs - (new Date().getTime() - (timeoutStartedAt !== null && timeoutStartedAt !== void 0 ? timeoutStartedAt : new Date()).getTime())), "ms")), allowManualCapture && (/*#__PURE__*/React.createElement(CaptureButtonContainer$1, {
25712
+ }), debugShowSamplePoints && ((_c = prediction.samplePoints) === null || _c === void 0 ? void 0 : _c.map(function (pt, i) {
25713
+ var horizontal = debugScalingDetails.horizontal,
25714
+ pageWidth = debugScalingDetails.pageWidth,
25715
+ pageHeight = debugScalingDetails.pageHeight,
25716
+ videoWidth = debugScalingDetails.videoWidth,
25717
+ videoHeight = debugScalingDetails.videoHeight,
25718
+ scaledWidth = debugScalingDetails.scaledWidth,
25719
+ scaledHeight = debugScalingDetails.scaledHeight,
25720
+ xOffset = debugScalingDetails.xOffset,
25721
+ yOffset = debugScalingDetails.yOffset;
25722
+ if (!videoWidth || !videoHeight) return null;
25723
+ var left = horizontal ? pt.x / videoWidth * scaledWidth - xOffset : pt.x / videoWidth * pageWidth;
25724
+ var top = horizontal ? pt.y / videoHeight * pageHeight : pt.y / videoHeight * scaledHeight - yOffset;
25725
+ return /*#__PURE__*/React.createElement(FaceDetectionKeypointMarker, {
25726
+ key: i,
25727
+ style: {
25728
+ left: left - 2,
25729
+ top: top - 2
25730
+ }
25731
+ });
25732
+ })))), debugMode && (/*#__PURE__*/React.createElement(DebugStatsPane, null, camera ? (/*#__PURE__*/React.createElement(React.Fragment, null, "\u2705 Camera: ", camera.label, " (", camera.width, "x", camera.height, ")")) : '❌ Camera not ready', /*#__PURE__*/React.createElement("br", null), !(prediction === null || prediction === void 0 ? void 0 : prediction.faceNotDetected) ? '✅' : '❌', " Face Detected", /*#__PURE__*/React.createElement("br", null), !(prediction === null || prediction === void 0 ? void 0 : prediction.faceNotCentered) ? '✅' : '❌', " Face Centered", /*#__PURE__*/React.createElement("br", null), !(prediction === null || prediction === void 0 ? void 0 : prediction.faceTooClose) && !(prediction === null || prediction === void 0 ? void 0 : prediction.faceTooFar) ? '✅' : '❌', ' ', "Face", ' ', (prediction === null || prediction === void 0 ? void 0 : prediction.faceTooClose) ? 'Too Close' : (prediction === null || prediction === void 0 ? void 0 : prediction.faceTooFar) ? 'Too Far' : 'Distance Correct', /*#__PURE__*/React.createElement("br", null), !(prediction === null || prediction === void 0 ? void 0 : prediction.faceLookingAway) ? '✅' : '❌', " Face Looking Forward", /*#__PURE__*/React.createElement("br", null), !(prediction === null || prediction === void 0 ? void 0 : prediction.faceIsStable) ? '✅' : '❌', " Face Is Stable", /*#__PURE__*/React.createElement("br", null), !(prediction === null || prediction === void 0 ? void 0 : prediction.noseIsStable) ? '✅' : '❌', " Nose Is Stable", /*#__PURE__*/React.createElement("br", null), !timedOut ? '✅' : '❌', " Time Remaining:", ' ', Math.max(0, timeoutDurationMs - (new Date().getTime() - (timeoutStartedAt !== null && timeoutStartedAt !== void 0 ? timeoutStartedAt : new Date()).getTime())), "ms", /*#__PURE__*/React.createElement("br", null), (prediction === null || prediction === void 0 ? void 0 : prediction.faceVisibilityTooLow) ? '❌' : '✅', " Visibility", minCaptureBrightnessThreshold !== undefined && (/*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("br", null), "\xA0\xA0Brightness:", ' ', (_e = (_d = prediction === null || prediction === void 0 ? void 0 : prediction.brightness) === null || _d === void 0 ? void 0 : _d.toFixed(1)) !== null && _e !== void 0 ? _e : '—', " (min:", ' ', minCaptureBrightnessThreshold, ")")), minCaptureRangeThreshold !== undefined && (/*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("br", null), "\xA0\xA0Range: ", (_g = (_f = prediction === null || prediction === void 0 ? void 0 : prediction.range) === null || _f === void 0 ? void 0 : _f.toFixed(1)) !== null && _g !== void 0 ? _g : '—', " (min: ", minCaptureRangeThreshold, ")")), minCaptureVarianceThreshold !== undefined && (/*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("br", null), "\xA0\xA0Variance: ", (_j = (_h = prediction === null || prediction === void 0 ? void 0 : prediction.variance) === null || _h === void 0 ? void 0 : _h.toFixed(1)) !== null && _j !== void 0 ? _j : '—', ' ', "(min: ", minCaptureVarianceThreshold, ")")))), allowManualCapture && (/*#__PURE__*/React.createElement(CaptureButtonContainer$1, {
25668
25733
  className: classNames.manualCaptureBtnContainer
25669
25734
  }, /*#__PURE__*/React.createElement(CaptureButton$1, {
25670
25735
  className: classNames.manualCaptureBtn,
@@ -25807,17 +25872,19 @@
25807
25872
  colors = _l === void 0 ? {} : _l,
25808
25873
  _m = _a.verbiage,
25809
25874
  rawVerbiage = _m === void 0 ? {} : _m,
25810
- debugMode = _a.debugMode;
25811
- var _o = React.useContext(SubmissionContext),
25812
- checkLiveness = _o.checkLiveness,
25813
- submissionError = _o.submissionError;
25875
+ debugMode = _a.debugMode,
25876
+ _o = _a.debugShowSamplePoints,
25877
+ debugShowSamplePoints = _o === void 0 ? false : _o;
25878
+ var _p = React.useContext(SubmissionContext),
25879
+ checkLiveness = _p.checkLiveness,
25880
+ submissionError = _p.submissionError;
25814
25881
  var modelError = useSelfieGuidanceModelsContext().error;
25815
- var _p = React.useReducer(reducer$2, initialState$3),
25816
- state = _p[0],
25817
- dispatch = _p[1];
25818
- var _q = React.useState(null),
25819
- imageUrl = _q[0],
25820
- setImageUrl = _q[1];
25882
+ var _q = React.useReducer(reducer$2, initialState$3),
25883
+ state = _q[0],
25884
+ dispatch = _q[1];
25885
+ var _r = React.useState(null),
25886
+ imageUrl = _r[0],
25887
+ setImageUrl = _r[1];
25821
25888
  var rawCanvas = React.useRef(null);
25822
25889
  var cropCanvas = React.useRef(null);
25823
25890
  var resizeCanvas = React.useRef(null);
@@ -26012,7 +26079,8 @@
26012
26079
  classNames: classNames,
26013
26080
  colors: colors,
26014
26081
  verbiage: rawVerbiage,
26015
- debugMode: debugMode
26082
+ debugMode: debugMode,
26083
+ debugShowSamplePoints: debugShowSamplePoints
26016
26084
  }), debugMode && !disableCapturePreview && imageUrl && (/*#__PURE__*/React.createElement(SelfieProgressPreview, {
26017
26085
  classNames: classNames.imagePreview,
26018
26086
  imageUrl: imageUrl,
@@ -26545,39 +26613,41 @@
26545
26613
  verbiage = _s === void 0 ? {} : _s,
26546
26614
  _t = _a.debugMode,
26547
26615
  debugMode = _t === void 0 ? false : _t,
26548
- _u = _a.showLoadingOverlay,
26549
- showLoadingOverlay = _u === void 0 ? true : _u;
26550
- var _v = useSubmissionContext(),
26551
- submissionResponse = _v.submissionResponse,
26552
- livenessCheckRequest = _v.livenessCheckRequest,
26553
- setSelfieImage = _v.setSelfieImage,
26554
- logSelfieCaptureAttempt = _v.logSelfieCaptureAttempt;
26555
- var _w = useCameraStore(useShallow(function (state) {
26616
+ _u = _a.debugShowSamplePoints,
26617
+ debugShowSamplePoints = _u === void 0 ? false : _u,
26618
+ _v = _a.showLoadingOverlay,
26619
+ showLoadingOverlay = _v === void 0 ? true : _v;
26620
+ var _w = useSubmissionContext(),
26621
+ submissionResponse = _w.submissionResponse,
26622
+ livenessCheckRequest = _w.livenessCheckRequest,
26623
+ setSelfieImage = _w.setSelfieImage,
26624
+ logSelfieCaptureAttempt = _w.logSelfieCaptureAttempt;
26625
+ var _x = useCameraStore(useShallow(function (state) {
26556
26626
  return {
26557
26627
  cameraAccessDenied: state.cameraAccessDenied,
26558
26628
  requestCameraAccess: state.requestCameraAccess,
26559
26629
  releaseCameraAccess: state.releaseCameraAccess
26560
26630
  };
26561
26631
  })),
26562
- cameraAccessDenied = _w.cameraAccessDenied,
26563
- requestCameraAccess = _w.requestCameraAccess,
26564
- releaseCameraAccess = _w.releaseCameraAccess;
26565
- var _x = React.useState(''),
26566
- faceCropImageUrl = _x[0],
26567
- setFaceCropImageUrl = _x[1];
26568
- var _y = React.useState(0),
26569
- retryCount = _y[0],
26570
- setRetryCount = _y[1];
26571
- var _z = React.useState(showLoadingOverlay ? 'LOADING' : 'CAPTURING'),
26572
- captureState = _z[0],
26573
- setCaptureState = _z[1];
26632
+ cameraAccessDenied = _x.cameraAccessDenied,
26633
+ requestCameraAccess = _x.requestCameraAccess,
26634
+ releaseCameraAccess = _x.releaseCameraAccess;
26635
+ var _y = React.useState(''),
26636
+ faceCropImageUrl = _y[0],
26637
+ setFaceCropImageUrl = _y[1];
26638
+ var _z = React.useState(0),
26639
+ retryCount = _z[0],
26640
+ setRetryCount = _z[1];
26641
+ var _0 = React.useState(showLoadingOverlay ? 'LOADING' : 'CAPTURING'),
26642
+ captureState = _0[0],
26643
+ setCaptureState = _0[1];
26574
26644
  var captureStartedAt = React.useRef(undefined);
26575
26645
  var operationStartedAt = React.useRef(undefined);
26576
26646
  var livenessScore = React.useRef(undefined);
26577
- var _0 = useSelfieGuidanceModelsContext(),
26578
- start = _0.start,
26579
- stop = _0.stop,
26580
- selfieGuidanceCanvasRef = _0.canvasRef;
26647
+ var _1 = useSelfieGuidanceModelsContext(),
26648
+ start = _1.start,
26649
+ stop = _1.stop,
26650
+ selfieGuidanceCanvasRef = _1.canvasRef;
26581
26651
  React.useEffect(function () {
26582
26652
  if (precapturedDocuments === null || precapturedDocuments === void 0 ? void 0 : precapturedDocuments.selfie) {
26583
26653
  setSelfieImage(precapturedDocuments.selfie.imageData);
@@ -26662,9 +26732,9 @@
26662
26732
  }
26663
26733
  onDenied === null || onDenied === void 0 ? void 0 : onDenied(submissionResponse, livenessCheckRequest);
26664
26734
  }, [allowLivenessFailure, onDenied, submissionResponse, livenessCheckRequest]);
26665
- var _1 = React.useState(0),
26666
- attempt = _1[0],
26667
- setAttempt = _1[1];
26735
+ var _2 = React.useState(0),
26736
+ attempt = _2[0],
26737
+ setAttempt = _2[1];
26668
26738
  var onExitCallback = React.useCallback(function () {
26669
26739
  setAttempt(function (n) {
26670
26740
  return n + 1;
@@ -26736,7 +26806,8 @@
26736
26806
  classNames: classNames.capture,
26737
26807
  colors: colors,
26738
26808
  verbiage: verbiage,
26739
- debugMode: debugMode
26809
+ debugMode: debugMode,
26810
+ debugShowSamplePoints: debugShowSamplePoints
26740
26811
  });
26741
26812
  case 'SUCCESS':
26742
26813
  if (!showSuccessScreen) return null;
@@ -26801,7 +26872,8 @@
26801
26872
  }, /*#__PURE__*/React.createElement(SelfieGuidanceModelsProvider, {
26802
26873
  autoStart: false,
26803
26874
  onModelError: faceLivenessProps.onModelError,
26804
- modelLoadTimeoutMs: faceLivenessProps.modelLoadTimeoutMs
26875
+ modelLoadTimeoutMs: faceLivenessProps.modelLoadTimeoutMs,
26876
+ debugShowSamplePoints: faceLivenessProps.debugShowSamplePoints
26805
26877
  }, /*#__PURE__*/React.createElement(FaceLivenessWizard, _assign({}, faceLivenessProps))));
26806
26878
  }
26807
26879
 
@@ -29151,32 +29223,34 @@
29151
29223
  _o = _a.verbiage,
29152
29224
  verbiage = _o === void 0 ? {} : _o,
29153
29225
  _p = _a.debugMode,
29154
- debugMode = _p === void 0 ? false : _p;
29155
- var _q = useSubmissionContext(),
29156
- setSelfieImage = _q.setSelfieImage,
29157
- logSelfieCaptureAttempt = _q.logSelfieCaptureAttempt;
29158
- var _r = useCameraStore(useShallow(function (state) {
29226
+ debugMode = _p === void 0 ? false : _p,
29227
+ _q = _a.debugShowSamplePoints,
29228
+ debugShowSamplePoints = _q === void 0 ? false : _q;
29229
+ var _r = useSubmissionContext(),
29230
+ setSelfieImage = _r.setSelfieImage,
29231
+ logSelfieCaptureAttempt = _r.logSelfieCaptureAttempt;
29232
+ var _s = useCameraStore(useShallow(function (state) {
29159
29233
  return {
29160
29234
  cameraAccessDenied: state.cameraAccessDenied,
29161
29235
  requestCameraAccess: state.requestCameraAccess,
29162
29236
  releaseCameraAccess: state.releaseCameraAccess
29163
29237
  };
29164
29238
  })),
29165
- cameraAccessDenied = _r.cameraAccessDenied,
29166
- requestCameraAccess = _r.requestCameraAccess,
29167
- releaseCameraAccess = _r.releaseCameraAccess;
29168
- var _s = React.useState(showLoadingOverlay ? 'LOADING' : 'CAPTURING'),
29169
- captureState = _s[0],
29170
- setCaptureState = _s[1];
29239
+ cameraAccessDenied = _s.cameraAccessDenied,
29240
+ requestCameraAccess = _s.requestCameraAccess,
29241
+ releaseCameraAccess = _s.releaseCameraAccess;
29242
+ var _t = React.useState(showLoadingOverlay ? 'LOADING' : 'CAPTURING'),
29243
+ captureState = _t[0],
29244
+ setCaptureState = _t[1];
29171
29245
  var rawCanvas = React.useRef(null);
29172
29246
  var cropCanvas = React.useRef(null);
29173
29247
  var resizeCanvas = React.useRef(null);
29174
29248
  var captureStartedAt = React.useRef(undefined);
29175
29249
  var operationStartedAt = React.useRef(undefined);
29176
- var _t = useSelfieGuidanceModelsContext(),
29177
- start = _t.start,
29178
- stop = _t.stop,
29179
- modelError = _t.error;
29250
+ var _u = useSelfieGuidanceModelsContext(),
29251
+ start = _u.start,
29252
+ stop = _u.stop,
29253
+ modelError = _u.error;
29180
29254
  React.useEffect(function () {
29181
29255
  if (precapturedDocuments === null || precapturedDocuments === void 0 ? void 0 : precapturedDocuments.selfie) {
29182
29256
  setSelfieImage(precapturedDocuments.selfie.imageData);
@@ -29230,9 +29304,9 @@
29230
29304
  status: status
29231
29305
  }));
29232
29306
  }, [captureState, guidesComponent]);
29233
- var _u = React.useState(0),
29234
- attempt = _u[0],
29235
- setAttempt = _u[1];
29307
+ var _v = React.useState(0),
29308
+ attempt = _v[0],
29309
+ setAttempt = _v[1];
29236
29310
  var onExitCallback = React.useCallback(function () {
29237
29311
  setAttempt(function (n) {
29238
29312
  return n + 1;
@@ -29279,7 +29353,8 @@
29279
29353
  classNames: classNames.capture,
29280
29354
  colors: colors.capture,
29281
29355
  verbiage: verbiage.capture,
29282
- debugMode: debugMode
29356
+ debugMode: debugMode,
29357
+ debugShowSamplePoints: debugShowSamplePoints
29283
29358
  })), showLoadingOverlay && (/*#__PURE__*/React.createElement(SelfieCaptureLoadingOverlay, {
29284
29359
  key: attempt,
29285
29360
  mode: loadingOverlayMode,
@@ -29349,32 +29424,34 @@
29349
29424
  _s = _a.verbiage,
29350
29425
  verbiage = _s === void 0 ? {} : _s,
29351
29426
  _t = _a.debugMode,
29352
- debugMode = _t === void 0 ? false : _t;
29353
- var _u = useSubmissionContext(),
29354
- selfieImage = _u.selfieImage,
29355
- setSelfieImage = _u.setSelfieImage,
29356
- setSignatureData = _u.setSignatureData,
29357
- setSignatureVideoUrl = _u.setSignatureVideoUrl,
29358
- setSignatureVideoMetadata = _u.setSignatureVideoMetadata,
29359
- logSelfieCaptureAttempt = _u.logSelfieCaptureAttempt,
29360
- uploadDocument = _u.uploadDocument;
29427
+ debugMode = _t === void 0 ? false : _t,
29428
+ _u = _a.debugShowSamplePoints,
29429
+ debugShowSamplePoints = _u === void 0 ? false : _u;
29430
+ var _v = useSubmissionContext(),
29431
+ selfieImage = _v.selfieImage,
29432
+ setSelfieImage = _v.setSelfieImage,
29433
+ setSignatureData = _v.setSignatureData,
29434
+ setSignatureVideoUrl = _v.setSignatureVideoUrl,
29435
+ setSignatureVideoMetadata = _v.setSignatureVideoMetadata,
29436
+ logSelfieCaptureAttempt = _v.logSelfieCaptureAttempt,
29437
+ uploadDocument = _v.uploadDocument;
29361
29438
  var cameraAccessDenied = useCameraStore(useShallow(function (state) {
29362
29439
  return {
29363
29440
  cameraAccessDenied: state.cameraAccessDenied
29364
29441
  };
29365
29442
  })).cameraAccessDenied;
29366
- var _v = React.useState(skipLivenessValidation ? 'CAPTURING_SELFIE' : 'CHECKING_LIVENESS'),
29367
- captureState = _v[0],
29368
- setCaptureState = _v[1];
29369
- var _w = React.useState(null),
29370
- signatureVideoMetadata = _w[0],
29371
- setSignatureVideoMetadataLocal = _w[1];
29443
+ var _w = React.useState(skipLivenessValidation ? 'CAPTURING_SELFIE' : 'CHECKING_LIVENESS'),
29444
+ captureState = _w[0],
29445
+ setCaptureState = _w[1];
29446
+ var _x = React.useState(null),
29447
+ signatureVideoMetadata = _x[0],
29448
+ setSignatureVideoMetadataLocal = _x[1];
29372
29449
  var operationStartedAt = React.useRef(undefined);
29373
29450
  var captureStartedAt = React.useRef(undefined);
29374
29451
  var captureEndedAt = React.useRef(undefined);
29375
- var _x = useSelfieGuidanceModelsContext(),
29376
- start = _x.start,
29377
- stop = _x.stop;
29452
+ var _y = useSelfieGuidanceModelsContext(),
29453
+ start = _y.start,
29454
+ stop = _y.stop;
29378
29455
  React.useEffect(function () {
29379
29456
  operationStartedAt.current = new Date();
29380
29457
  }, []);
@@ -29426,17 +29503,17 @@
29426
29503
  setCaptureState('SUCCESS');
29427
29504
  onVideoCaptured === null || onVideoCaptured === void 0 ? void 0 : onVideoCaptured(videoData, signatureData, signatureImageData, metadata);
29428
29505
  }, [onVideoCaptured, setSignatureData, setSignatureVideoMetadata, setSignatureVideoUrl]);
29429
- var _y = React.useState(true),
29430
- showLoadingOverlay = _y[0],
29431
- setShowLoadingOverlay = _y[1];
29506
+ var _z = React.useState(true),
29507
+ showLoadingOverlay = _z[0],
29508
+ setShowLoadingOverlay = _z[1];
29432
29509
  var onSignatureCaptureFacesNotDetected = React.useCallback(function () {
29433
29510
  setShowLoadingOverlay(false);
29434
29511
  setCaptureState(skipLivenessValidation ? 'CAPTURING_SELFIE' : 'CHECKING_LIVENESS');
29435
29512
  useVideoSignatureStore.getState().clearRecordedData();
29436
29513
  }, [skipLivenessValidation]);
29437
- var _z = React.useState(0),
29438
- attempt = _z[0],
29439
- setAttempt = _z[1];
29514
+ var _0 = React.useState(0),
29515
+ attempt = _0[0],
29516
+ setAttempt = _0[1];
29440
29517
  var onRetry = React.useCallback(function () {
29441
29518
  onRetryClicked === null || onRetryClicked === void 0 ? void 0 : onRetryClicked();
29442
29519
  setAttempt(function (n) {
@@ -29513,6 +29590,7 @@
29513
29590
  colors: colors.faceLiveness,
29514
29591
  verbiage: verbiage.faceLiveness,
29515
29592
  debugMode: debugMode,
29593
+ debugShowSamplePoints: debugShowSamplePoints,
29516
29594
  renderCameraFeed: false
29517
29595
  }));
29518
29596
  case 'CAPTURING_SELFIE':
@@ -29537,6 +29615,7 @@
29537
29615
  colors: colors.faceLiveness,
29538
29616
  verbiage: verbiage.faceLiveness,
29539
29617
  debugMode: debugMode,
29618
+ debugShowSamplePoints: debugShowSamplePoints,
29540
29619
  renderCameraFeed: false
29541
29620
  }));
29542
29621
  case 'CAPTURING_SIGNATURE':
@@ -29663,7 +29742,8 @@
29663
29742
  requireVerticalFaceCentering: false,
29664
29743
  minCaptureBrightnessThreshold: props.minCaptureBrightnessThreshold,
29665
29744
  minCaptureRangeThreshold: props.minCaptureRangeThreshold,
29666
- minCaptureVarianceThreshold: props.minCaptureVarianceThreshold
29745
+ minCaptureVarianceThreshold: props.minCaptureVarianceThreshold,
29746
+ debugShowSamplePoints: props.debugShowSamplePoints
29667
29747
  }, /*#__PURE__*/React.createElement(VideoSignatureWizard, _assign({
29668
29748
  ref: ref
29669
29749
  }, props, {
@@ -33753,7 +33833,9 @@
33753
33833
  geolocationEnabled = _a.geolocationEnabled,
33754
33834
  geolocationRequired = _a.geolocationRequired,
33755
33835
  _s = _a.debugMode,
33756
- debugMode = _s === void 0 ? false : _s;
33836
+ debugMode = _s === void 0 ? false : _s,
33837
+ _t = _a.debugShowSamplePoints,
33838
+ debugShowSamplePoints = _t === void 0 ? false : _t;
33757
33839
  useLanguage(lang);
33758
33840
  useDebugLogging(debugMode);
33759
33841
  return /*#__PURE__*/React.createElement(AuthProvider, {
@@ -33823,11 +33905,12 @@
33823
33905
  classNames: classNames,
33824
33906
  colors: colors,
33825
33907
  debugMode: debugMode,
33908
+ debugShowSamplePoints: debugShowSamplePoints,
33826
33909
  verbiage: verbiage,
33827
33910
  onModelError: onModelError,
33828
33911
  onUserCancel: onUserCancel
33829
33912
  };
33830
- }, [onLoadingStarted, onLoadingProgress, onLoadingCompleted, onLoadingFailed, onSelfieCaptured, customOverlayContent, onLoadingOverlayDismissed, loadingOverlayMode, skipSuccessScreen, captureAudio, minSignaturePadPoints, headTrackingDisabled, headTrackingBoundaryPercentage, headTrackingBoundaryType, modelLoadTimeoutMs, faceLivenessProps, allowSignatureAfterLivenessCheckFailure, restartVideoOnSignaturePadCleared, skipLivenessValidation, allowManualSelfieCaptureOnLoadingError, guidesComponent, showFaceGuideThenSignaturePad, minCaptureBrightnessThreshold, minCaptureRangeThreshold, minCaptureVarianceThreshold, classNames, colors, debugMode, verbiage, onModelError, onUserCancel])
33913
+ }, [onLoadingStarted, onLoadingProgress, onLoadingCompleted, onLoadingFailed, onSelfieCaptured, customOverlayContent, onLoadingOverlayDismissed, loadingOverlayMode, skipSuccessScreen, captureAudio, minSignaturePadPoints, headTrackingDisabled, headTrackingBoundaryPercentage, headTrackingBoundaryType, modelLoadTimeoutMs, faceLivenessProps, allowSignatureAfterLivenessCheckFailure, restartVideoOnSignaturePadCleared, skipLivenessValidation, allowManualSelfieCaptureOnLoadingError, guidesComponent, showFaceGuideThenSignaturePad, minCaptureBrightnessThreshold, minCaptureRangeThreshold, minCaptureVarianceThreshold, classNames, colors, debugMode, debugShowSamplePoints, verbiage, onModelError, onUserCancel])
33831
33914
  })))));
33832
33915
  }
33833
33916
  /** Render a fullscreen capture component that captures a video of the user signing the screen. */