idmission-web-sdk 2.3.119 → 2.3.121

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.
@@ -62,6 +62,7 @@ export type VideoSignatureState = {
62
62
  firstNullChunkReceivedAt?: number;
63
63
  lastNullChunkReceivedAt?: number;
64
64
  timesSignatureCleared: number;
65
+ finalChunkReceived: boolean;
65
66
  onSignatureVideoCaptured: OnSignatureVideoCaptured;
66
67
  };
67
68
  export declare const useVideoSignatureStore: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<VideoSignatureState>, "setState"> & {
@@ -1 +1 @@
1
- {"version":3,"file":"VideoSignatureContext.d.ts","sourceRoot":"","sources":["../../../src/components/video_signature_capture/VideoSignatureContext.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VideoSignatureContext.d.ts","sourceRoot":"","sources":["../../../src/components/video_signature_capture/VideoSignatureContext.tsx"],"names":[],"mappings":"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"}
@@ -236,7 +236,7 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
236
236
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
237
237
  };
238
238
 
239
- var webSdkVersion = '2.3.119';
239
+ var webSdkVersion = '2.3.121';
240
240
 
241
241
  function getPlatform() {
242
242
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
@@ -14428,6 +14428,7 @@ var videoSignatureInitialState = {
14428
14428
  supportsRoundRect: undefined,
14429
14429
  nullChunksReceived: 0,
14430
14430
  timesSignatureCleared: 0,
14431
+ finalChunkReceived: false,
14431
14432
  onSignatureVideoCaptured: function onSignatureVideoCaptured() {
14432
14433
  return null;
14433
14434
  }
@@ -14496,6 +14497,7 @@ var useVideoSignatureStore = zustand.create()(middleware.devtools(function (set,
14496
14497
  return __awaiter(this, void 0, void 0, function () {
14497
14498
  var recordingStoppedAt, mimeType, blob, _a, onSignatureVideoCaptured, recordingStartRequestedAt, recordingStartedAt, firstChunkReceivedAt, signatureStartedAt, signatureEndedAt, acceptClickedAt, clearClickedAt, recordingStopRequestedAt, lastChunkReceivedAt, supportsRequestVideoFrameCallback, supportsRoundRect, nullChunksReceived, firstNullChunkReceivedAt, lastNullChunkReceivedAt, timesSignatureCleared, metadata;
14498
14499
  return __generator(this, function (_b) {
14500
+ if (get().recordingStoppedAt) return [2 /*return*/];
14499
14501
  recordingStoppedAt = performance.now();
14500
14502
  set({
14501
14503
  recordingStoppedAt: recordingStoppedAt
@@ -14550,11 +14552,18 @@ var useVideoSignatureStore = zustand.create()(middleware.devtools(function (set,
14550
14552
  isRecording = !!recordingStartedAt && !recordingStopRequestedAt;
14551
14553
  if (!isRecording) return [2 /*return*/];
14552
14554
  set({
14553
- recordingStopRequestedAt: performance.now()
14555
+ recordingStopRequestedAt: performance.now(),
14556
+ recordingStoppedAt: undefined
14554
14557
  });
14555
- return [4 /*yield*/, waitForOneMoreChunk()];
14558
+ return [4 /*yield*/, waitForOneMoreChunk()
14559
+ // this represents the time that it is safe to release the camera access
14560
+ ];
14556
14561
  case 1:
14557
14562
  _b = _c.sent(), finalChunkReceived = _b.finalChunkReceived, timedOut = _b.timedOut, waitedMs = _b.waitedMs;
14563
+ // this represents the time that it is safe to release the camera access
14564
+ set({
14565
+ finalChunkReceived: true
14566
+ });
14558
14567
  if (!signatureRecorder) return [3 /*break*/, 2];
14559
14568
  signatureRecorder.onstop = processVideo;
14560
14569
  signatureRecorder.stop();
@@ -14595,7 +14604,8 @@ var useVideoSignatureStore = zustand.create()(middleware.devtools(function (set,
14595
14604
  supportsRoundRect: undefined,
14596
14605
  nullChunksReceived: 0,
14597
14606
  firstNullChunkReceivedAt: undefined,
14598
- lastNullChunkReceivedAt: undefined
14607
+ lastNullChunkReceivedAt: undefined,
14608
+ finalChunkReceived: false
14599
14609
  });
14600
14610
  }
14601
14611
  });
@@ -14609,7 +14619,7 @@ var useVideoSignatureStore = zustand.create()(middleware.devtools(function (set,
14609
14619
  */
14610
14620
  function waitForOneMoreChunk(delayMs, checkEveryMs, timeoutMs) {
14611
14621
  if (delayMs === void 0) {
14612
- delayMs = 1000;
14622
+ delayMs = 250;
14613
14623
  }
14614
14624
  if (checkEveryMs === void 0) {
14615
14625
  checkEveryMs = 100;
@@ -14647,9 +14657,12 @@ function waitForOneMoreChunk(delayMs, checkEveryMs, timeoutMs) {
14647
14657
  });
14648
14658
  }
14649
14659
  function VideoSignatureContextProvider(_a) {
14650
- var _b, _c;
14651
14660
  var children = _a.children;
14652
- var videoRef = useCameraStore().videoRef;
14661
+ var _b = useCameraStore(),
14662
+ videoRef = _b.videoRef,
14663
+ videoWidth = _b.videoWidth,
14664
+ videoHeight = _b.videoHeight,
14665
+ releaseCameraAccess = _b.releaseCameraAccess;
14653
14666
  var outputCanvas = React.useRef(null);
14654
14667
  React.useEffect(function () {
14655
14668
  return useVideoSignatureStore.setState({
@@ -14657,18 +14670,13 @@ function VideoSignatureContextProvider(_a) {
14657
14670
  });
14658
14671
  }, []);
14659
14672
  var drawOutputFrame = React.useCallback(function () {
14660
- if (!outputCanvas.current || !videoRef.current) return;
14673
+ if (!outputCanvas.current) return;
14661
14674
  var ctx = outputCanvas.current.getContext('2d');
14662
14675
  if (!ctx) return;
14663
- var _a = [videoRef.current.videoWidth, videoRef.current.videoHeight],
14676
+ var _a = [outputCanvas.current.width, outputCanvas.current.height],
14664
14677
  w = _a[0],
14665
14678
  h = _a[1];
14666
14679
  var isPortrait = w < h;
14667
- // Only update canvas dimensions if they changed (setting dimensions clears the canvas!)
14668
- if (outputCanvas.current.width !== w || outputCanvas.current.height !== h) {
14669
- outputCanvas.current.width = w;
14670
- outputCanvas.current.height = h;
14671
- }
14672
14680
  var rect = [w * (isPortrait ? 0.02 : 0.15),
14673
14681
  // x
14674
14682
  h * (isPortrait ? 0.15 : 0.25),
@@ -14677,7 +14685,9 @@ function VideoSignatureContextProvider(_a) {
14677
14685
  // width
14678
14686
  h * (isPortrait ? 0.7 : 0.5) // height
14679
14687
  ];
14680
- ctx.drawImage(videoRef.current, 0, 0, w, h);
14688
+ if (videoRef.current) {
14689
+ ctx.drawImage(videoRef.current, 0, 0, w, h);
14690
+ }
14681
14691
  ctx.beginPath();
14682
14692
  ctx.fillStyle = 'rgba(255,255,255,0.5)';
14683
14693
  var supportsRoundRect = typeof ctx.roundRect === 'function';
@@ -14699,11 +14709,15 @@ function VideoSignatureContextProvider(_a) {
14699
14709
  ctx.drawImage.apply(ctx, __spreadArray([signatureCanvas], rect, false));
14700
14710
  }
14701
14711
  }, [videoRef]);
14702
- useVideoFrameLoop(videoRef, drawOutputFrame);
14712
+ var finalChunkReceived = useVideoSignatureStore().finalChunkReceived;
14713
+ React.useEffect(function () {
14714
+ if (finalChunkReceived) releaseCameraAccess();
14715
+ }, [finalChunkReceived, releaseCameraAccess]);
14716
+ useVideoFrameLoop(videoRef, drawOutputFrame, !finalChunkReceived);
14703
14717
  return /*#__PURE__*/React__namespace.default.createElement(React__namespace.default.Fragment, null, children, /*#__PURE__*/React__namespace.default.createElement(InvisibleCanvas, {
14704
14718
  ref: outputCanvas,
14705
- width: (_b = videoRef.current) === null || _b === void 0 ? void 0 : _b.videoWidth,
14706
- height: (_c = videoRef.current) === null || _c === void 0 ? void 0 : _c.videoHeight
14719
+ width: videoWidth,
14720
+ height: videoHeight
14707
14721
  }));
14708
14722
  }
14709
14723
  function requestVideoFrameCallback(video, onFrame) {
@@ -14723,8 +14737,11 @@ function requestVideoFrameCallback(video, onFrame) {
14723
14737
  };
14724
14738
  }
14725
14739
  }
14726
- function videoFrameLoop(video, onFrame) {
14727
- if (!video) return;
14740
+ function videoFrameLoop(video, onFrame, running) {
14741
+ if (running === void 0) {
14742
+ running = true;
14743
+ }
14744
+ if (!video || !running) return;
14728
14745
  var cancelFn;
14729
14746
  var canceled = false;
14730
14747
  function onFrameRecursive() {
@@ -14745,10 +14762,13 @@ function videoFrameLoop(video, onFrame) {
14745
14762
  if (cancelFn !== undefined) cancelFn();
14746
14763
  };
14747
14764
  }
14748
- function useVideoFrameLoop(ref, onFrame) {
14765
+ function useVideoFrameLoop(ref, onFrame, running) {
14766
+ if (running === void 0) {
14767
+ running = true;
14768
+ }
14749
14769
  React.useEffect(function () {
14750
- return videoFrameLoop(ref.current, onFrame);
14751
- }, [onFrame, ref]);
14770
+ return videoFrameLoop(ref.current, onFrame, running);
14771
+ }, [onFrame, ref, running]);
14752
14772
  }
14753
14773
  function calculateAndStoreOndataavailableRate() {
14754
14774
  if (ondataavailableInvocations.length < 2 || !ondataavailableStartTime) {