idmission-web-sdk 2.3.120 → 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.120';
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
  }
@@ -14554,9 +14555,15 @@ var useVideoSignatureStore = zustand.create()(middleware.devtools(function (set,
14554
14555
  recordingStopRequestedAt: performance.now(),
14555
14556
  recordingStoppedAt: undefined
14556
14557
  });
14557
- return [4 /*yield*/, waitForOneMoreChunk()];
14558
+ return [4 /*yield*/, waitForOneMoreChunk()
14559
+ // this represents the time that it is safe to release the camera access
14560
+ ];
14558
14561
  case 1:
14559
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
+ });
14560
14567
  if (!signatureRecorder) return [3 /*break*/, 2];
14561
14568
  signatureRecorder.onstop = processVideo;
14562
14569
  signatureRecorder.stop();
@@ -14597,7 +14604,8 @@ var useVideoSignatureStore = zustand.create()(middleware.devtools(function (set,
14597
14604
  supportsRoundRect: undefined,
14598
14605
  nullChunksReceived: 0,
14599
14606
  firstNullChunkReceivedAt: undefined,
14600
- lastNullChunkReceivedAt: undefined
14607
+ lastNullChunkReceivedAt: undefined,
14608
+ finalChunkReceived: false
14601
14609
  });
14602
14610
  }
14603
14611
  });
@@ -14611,7 +14619,7 @@ var useVideoSignatureStore = zustand.create()(middleware.devtools(function (set,
14611
14619
  */
14612
14620
  function waitForOneMoreChunk(delayMs, checkEveryMs, timeoutMs) {
14613
14621
  if (delayMs === void 0) {
14614
- delayMs = 1000;
14622
+ delayMs = 250;
14615
14623
  }
14616
14624
  if (checkEveryMs === void 0) {
14617
14625
  checkEveryMs = 100;
@@ -14649,9 +14657,12 @@ function waitForOneMoreChunk(delayMs, checkEveryMs, timeoutMs) {
14649
14657
  });
14650
14658
  }
14651
14659
  function VideoSignatureContextProvider(_a) {
14652
- var _b, _c;
14653
14660
  var children = _a.children;
14654
- var videoRef = useCameraStore().videoRef;
14661
+ var _b = useCameraStore(),
14662
+ videoRef = _b.videoRef,
14663
+ videoWidth = _b.videoWidth,
14664
+ videoHeight = _b.videoHeight,
14665
+ releaseCameraAccess = _b.releaseCameraAccess;
14655
14666
  var outputCanvas = React.useRef(null);
14656
14667
  React.useEffect(function () {
14657
14668
  return useVideoSignatureStore.setState({
@@ -14659,18 +14670,13 @@ function VideoSignatureContextProvider(_a) {
14659
14670
  });
14660
14671
  }, []);
14661
14672
  var drawOutputFrame = React.useCallback(function () {
14662
- if (!outputCanvas.current || !videoRef.current) return;
14673
+ if (!outputCanvas.current) return;
14663
14674
  var ctx = outputCanvas.current.getContext('2d');
14664
14675
  if (!ctx) return;
14665
- var _a = [videoRef.current.videoWidth, videoRef.current.videoHeight],
14676
+ var _a = [outputCanvas.current.width, outputCanvas.current.height],
14666
14677
  w = _a[0],
14667
14678
  h = _a[1];
14668
14679
  var isPortrait = w < h;
14669
- // Only update canvas dimensions if they changed (setting dimensions clears the canvas!)
14670
- if (outputCanvas.current.width !== w || outputCanvas.current.height !== h) {
14671
- outputCanvas.current.width = w;
14672
- outputCanvas.current.height = h;
14673
- }
14674
14680
  var rect = [w * (isPortrait ? 0.02 : 0.15),
14675
14681
  // x
14676
14682
  h * (isPortrait ? 0.15 : 0.25),
@@ -14679,7 +14685,9 @@ function VideoSignatureContextProvider(_a) {
14679
14685
  // width
14680
14686
  h * (isPortrait ? 0.7 : 0.5) // height
14681
14687
  ];
14682
- ctx.drawImage(videoRef.current, 0, 0, w, h);
14688
+ if (videoRef.current) {
14689
+ ctx.drawImage(videoRef.current, 0, 0, w, h);
14690
+ }
14683
14691
  ctx.beginPath();
14684
14692
  ctx.fillStyle = 'rgba(255,255,255,0.5)';
14685
14693
  var supportsRoundRect = typeof ctx.roundRect === 'function';
@@ -14701,11 +14709,15 @@ function VideoSignatureContextProvider(_a) {
14701
14709
  ctx.drawImage.apply(ctx, __spreadArray([signatureCanvas], rect, false));
14702
14710
  }
14703
14711
  }, [videoRef]);
14704
- useVideoFrameLoop(videoRef, drawOutputFrame);
14712
+ var finalChunkReceived = useVideoSignatureStore().finalChunkReceived;
14713
+ React.useEffect(function () {
14714
+ if (finalChunkReceived) releaseCameraAccess();
14715
+ }, [finalChunkReceived, releaseCameraAccess]);
14716
+ useVideoFrameLoop(videoRef, drawOutputFrame, !finalChunkReceived);
14705
14717
  return /*#__PURE__*/React__namespace.default.createElement(React__namespace.default.Fragment, null, children, /*#__PURE__*/React__namespace.default.createElement(InvisibleCanvas, {
14706
14718
  ref: outputCanvas,
14707
- width: (_b = videoRef.current) === null || _b === void 0 ? void 0 : _b.videoWidth,
14708
- height: (_c = videoRef.current) === null || _c === void 0 ? void 0 : _c.videoHeight
14719
+ width: videoWidth,
14720
+ height: videoHeight
14709
14721
  }));
14710
14722
  }
14711
14723
  function requestVideoFrameCallback(video, onFrame) {
@@ -14725,8 +14737,11 @@ function requestVideoFrameCallback(video, onFrame) {
14725
14737
  };
14726
14738
  }
14727
14739
  }
14728
- function videoFrameLoop(video, onFrame) {
14729
- if (!video) return;
14740
+ function videoFrameLoop(video, onFrame, running) {
14741
+ if (running === void 0) {
14742
+ running = true;
14743
+ }
14744
+ if (!video || !running) return;
14730
14745
  var cancelFn;
14731
14746
  var canceled = false;
14732
14747
  function onFrameRecursive() {
@@ -14747,10 +14762,13 @@ function videoFrameLoop(video, onFrame) {
14747
14762
  if (cancelFn !== undefined) cancelFn();
14748
14763
  };
14749
14764
  }
14750
- function useVideoFrameLoop(ref, onFrame) {
14765
+ function useVideoFrameLoop(ref, onFrame, running) {
14766
+ if (running === void 0) {
14767
+ running = true;
14768
+ }
14751
14769
  React.useEffect(function () {
14752
- return videoFrameLoop(ref.current, onFrame);
14753
- }, [onFrame, ref]);
14770
+ return videoFrameLoop(ref.current, onFrame, running);
14771
+ }, [onFrame, ref, running]);
14754
14772
  }
14755
14773
  function calculateAndStoreOndataavailableRate() {
14756
14774
  if (ondataavailableInvocations.length < 2 || !ondataavailableStartTime) {