idmission-web-sdk 2.3.11 → 2.3.13

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.
@@ -1 +1 @@
1
- {"version":3,"file":"VideoSignatureContext.d.ts","sourceRoot":"","sources":["../../../src/components/video_signature_capture/VideoSignatureContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAEZ,SAAS,EAOV,MAAM,OAAO,CAAA;AACd,OAAO,EAGL,aAAa,EACd,MAAM,2BAA2B,CAAA;AAClC,OAAO,eAAe,MAAM,wBAAwB,CAAA;AAMpD,MAAM,MAAM,mBAAmB,GAAG;IAChC,cAAc,EAAE,MAAM,IAAI,CAAA;IAC1B,aAAa,EAAE,MAAM,IAAI,CAAA;IACzB,iBAAiB,EAAE,MAAM,IAAI,CAAA;IAC7B,WAAW,EAAE,OAAO,CAAA;IACpB,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,CAAA;IAC/C,aAAa,EAAE,aAAa,GAAG,IAAI,CAAA;IACnC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,kBAAkB,EAAE,IAAI,GAAG,IAAI,CAAA;IAC/B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;IAEhC,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CACrC,CAAA;AAeD,eAAO,MAAM,qBAAqB,oCAEjC,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,6BAA6B,CAAC,EACpD,QAAQ,EACR,YAAoB,GACrB,EAAE;IACD,QAAQ,EAAE,SAAS,CAAA;IACnB,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,qBAoMA;AAED,wBAAgB,wBAAwB,wBAOvC"}
1
+ {"version":3,"file":"VideoSignatureContext.d.ts","sourceRoot":"","sources":["../../../src/components/video_signature_capture/VideoSignatureContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAEZ,SAAS,EAOV,MAAM,OAAO,CAAA;AACd,OAAO,EAGL,aAAa,EACd,MAAM,2BAA2B,CAAA;AAClC,OAAO,eAAe,MAAM,wBAAwB,CAAA;AAgCpD,MAAM,MAAM,mBAAmB,GAAG;IAChC,cAAc,EAAE,MAAM,IAAI,CAAA;IAC1B,aAAa,EAAE,MAAM,IAAI,CAAA;IACzB,iBAAiB,EAAE,MAAM,IAAI,CAAA;IAC7B,WAAW,EAAE,OAAO,CAAA;IACpB,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,CAAA;IAC/C,aAAa,EAAE,aAAa,GAAG,IAAI,CAAA;IACnC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,kBAAkB,EAAE,IAAI,GAAG,IAAI,CAAA;IAC/B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;IAEhC,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CACrC,CAAA;AAeD,eAAO,MAAM,qBAAqB,oCAEjC,CAAA;AAED,MAAM,CAAC,OAAO,UAAU,6BAA6B,CAAC,EACpD,QAAQ,EACR,YAAoB,GACrB,EAAE;IACD,QAAQ,EAAE,SAAS,CAAA;IACnB,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,qBA8LA;AAED,wBAAgB,wBAAwB,wBAOvC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useVideoRecorder.d.ts","sourceRoot":"","sources":["../../../src/lib/camera/useVideoRecorder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAGjC,eAAO,MAAM,gBAAgB,WACnB,MAAM,GAAG,IAAI,gBACP,WAAW,GAAG,IAAI;;;;;;;;;;;;CAqKjC,CAAA"}
1
+ {"version":3,"file":"useVideoRecorder.d.ts","sourceRoot":"","sources":["../../../src/lib/camera/useVideoRecorder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AA6BjC,eAAO,MAAM,gBAAgB,WACnB,MAAM,GAAG,IAAI,gBACP,WAAW,GAAG,IAAI;;;;;;;;;;;;CAqKjC,CAAA"}
@@ -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.11';
238
+ var webSdkVersion = '2.3.13';
239
239
 
240
240
  function getPlatform() {
241
241
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
@@ -13357,14 +13357,29 @@ var Container$4 = styled__default.default.div(templateObject_1$c || (templateObj
13357
13357
  var AcceptBtn$1 = styled__default.default(LoaderButton)(templateObject_2$a || (templateObject_2$a = __makeTemplateObject(["\n margin-left: auto;\n"], ["\n margin-left: auto;\n"])));
13358
13358
  var templateObject_1$c, templateObject_2$a;
13359
13359
 
13360
+ var videoRecorder = null;
13361
+ var audioRecorder = null;
13362
+ var videoChunks = [];
13363
+ var audioChunks = [];
13364
+ function getVideoRecorder() {
13365
+ return videoRecorder;
13366
+ }
13367
+ function setVideoRecorder(recorder) {
13368
+ videoRecorder = recorder;
13369
+ }
13370
+ function setAudioRecorder(recorder) {
13371
+ audioRecorder = recorder;
13372
+ }
13373
+ function clearVideoChunks() {
13374
+ videoChunks = [];
13375
+ }
13376
+ function clearAudioChunks() {
13377
+ audioChunks = [];
13378
+ }
13360
13379
  var useVideoRecorder = function useVideoRecorder(camera, audioStream, mergeAVStreams) {
13361
13380
  if (mergeAVStreams === void 0) {
13362
13381
  mergeAVStreams = false;
13363
13382
  }
13364
- var videoRecorder = React.useRef(null);
13365
- var audioRecorder = React.useRef(null);
13366
- var videoChunks = React.useRef([]);
13367
- var audioChunks = React.useRef([]);
13368
13383
  var _a = React.useState(null),
13369
13384
  videoUrl = _a[0],
13370
13385
  setVideoUrl = _a[1];
@@ -13397,45 +13412,48 @@ var useVideoRecorder = function useVideoRecorder(camera, audioStream, mergeAVStr
13397
13412
  return new MediaStream(__spreadArray(__spreadArray([], videoTracks, true), audioTracks, true));
13398
13413
  }, [audioStream, camera === null || camera === void 0 ? void 0 : camera.stream, mergeAVStreams]);
13399
13414
  var processVideo = React.useCallback(function () {
13400
- var videoBlob = new Blob(videoChunks.current, {
13415
+ var videoBlob = new Blob(videoChunks, {
13401
13416
  type: 'video/mp4'
13402
13417
  });
13403
- videoChunks.current = [];
13404
13418
  setVideoUrl(URL.createObjectURL(videoBlob));
13419
+ clearVideoChunks();
13405
13420
  setIsRecordingVideo(false);
13421
+ setVideoRecorder(null);
13406
13422
  camera === null || camera === void 0 ? void 0 : camera.release();
13407
13423
  }, [camera]);
13408
13424
  var processAudio = React.useCallback(function () {
13409
13425
  var _a;
13410
- var audioBlob = new Blob(audioChunks.current, {
13426
+ var audioBlob = new Blob(audioChunks, {
13411
13427
  type: 'audio/mp4'
13412
13428
  });
13413
- audioChunks.current = [];
13414
13429
  setAudioUrl(URL.createObjectURL(audioBlob));
13430
+ clearAudioChunks();
13415
13431
  setIsRecordingAudio(false);
13432
+ setAudioRecorder(null);
13416
13433
  (_a = audioStream === null || audioStream === void 0 ? void 0 : audioStream.stop) === null || _a === void 0 ? void 0 : _a.call(audioStream);
13417
13434
  }, [audioStream]);
13418
13435
  var startRecordingVideo = React.useCallback(function () {
13419
13436
  var videoStream = getVideoStream();
13420
13437
  if (!videoStream) return;
13421
- videoChunks.current = [];
13438
+ clearVideoChunks();
13422
13439
  setIsRecordingVideo(true);
13423
13440
  setVideoRecordingStopped(false);
13424
13441
  setVideoRecordingIntentionallyStopped(false);
13425
- videoRecorder.current = new MediaRecorder(videoStream, {
13442
+ var videoRecorder = new MediaRecorder(videoStream, {
13426
13443
  videoBitsPerSecond: 270000,
13427
13444
  audioBitsPerSecond: 32000
13428
13445
  });
13429
- videoRecorder.current.ondataavailable = function (e) {
13430
- videoChunks.current.push(e.data);
13446
+ setVideoRecorder(videoRecorder);
13447
+ videoRecorder.ondataavailable = function (e) {
13448
+ videoChunks.push(e.data);
13431
13449
  };
13432
- videoRecorder.current.onstop = function () {
13450
+ videoRecorder.onstop = function () {
13433
13451
  setVideoRecordingStopped(true);
13434
13452
  };
13435
- videoRecorder.current.start(1000);
13453
+ videoRecorder.start(1000);
13436
13454
  setTimeout(function () {
13437
13455
  var _a;
13438
- if (((_a = videoRecorder.current) === null || _a === void 0 ? void 0 : _a.state) === 'inactive') {
13456
+ if (((_a = getVideoRecorder()) === null || _a === void 0 ? void 0 : _a.state) === 'inactive') {
13439
13457
  log('media recorder is inactive!');
13440
13458
  // TODO: figure out what to do here
13441
13459
  }
@@ -13444,33 +13462,32 @@ var useVideoRecorder = function useVideoRecorder(camera, audioStream, mergeAVStr
13444
13462
  var startRecordingAudio = React.useCallback(function () {
13445
13463
  if (mergeAVStreams) return;
13446
13464
  if (!audioStream) return;
13447
- audioChunks.current = [];
13465
+ clearAudioChunks();
13448
13466
  setIsRecordingAudio(true);
13449
13467
  setAudioRecordingStopped(false);
13450
13468
  setAudioRecordingIntentionallyStopped(false);
13451
- audioRecorder.current = new MediaRecorder(audioStream, {
13469
+ var audioRecorder = new MediaRecorder(audioStream, {
13452
13470
  audioBitsPerSecond: 32000
13453
13471
  });
13454
- audioRecorder.current.ondataavailable = function (e) {
13455
- audioChunks.current.push(e.data);
13472
+ setAudioRecorder(audioRecorder);
13473
+ audioRecorder.ondataavailable = function (e) {
13474
+ audioChunks.push(e.data);
13456
13475
  };
13457
- audioRecorder.current.onstop = function () {
13476
+ audioRecorder.onstop = function () {
13458
13477
  setAudioRecordingStopped(true);
13459
13478
  };
13460
- audioRecorder.current.start(1000);
13479
+ audioRecorder.start(1000);
13461
13480
  }, [audioStream, mergeAVStreams]);
13462
13481
  var stopRecordingVideo = React.useCallback(function () {
13463
- var _a, _b;
13464
13482
  setVideoRecordingIntentionallyStopped(true);
13465
- if (((_a = videoRecorder.current) === null || _a === void 0 ? void 0 : _a.state) !== 'inactive') {
13466
- (_b = videoRecorder.current) === null || _b === void 0 ? void 0 : _b.stop(); // if you call this while state === 'inactive', an exception is thrown.
13483
+ if ((videoRecorder === null || videoRecorder === void 0 ? void 0 : videoRecorder.state) !== 'inactive') {
13484
+ videoRecorder === null || videoRecorder === void 0 ? void 0 : videoRecorder.stop(); // if you call this while state === 'inactive', an exception is thrown.
13467
13485
  }
13468
13486
  }, []);
13469
13487
  var stopRecordingAudio = React.useCallback(function () {
13470
- var _a, _b;
13471
13488
  setAudioRecordingIntentionallyStopped(true);
13472
- if (((_a = audioRecorder.current) === null || _a === void 0 ? void 0 : _a.state) !== 'inactive') {
13473
- (_b = audioRecorder.current) === null || _b === void 0 ? void 0 : _b.stop(); // if you call this while state === 'inactive', an exception is thrown.
13489
+ if ((audioRecorder === null || audioRecorder === void 0 ? void 0 : audioRecorder.state) !== 'inactive') {
13490
+ audioRecorder === null || audioRecorder === void 0 ? void 0 : audioRecorder.stop(); // if you call this while state === 'inactive', an exception is thrown.
13474
13491
  }
13475
13492
  }, []);
13476
13493
  React.useEffect(function () {
@@ -13484,8 +13501,8 @@ var useVideoRecorder = function useVideoRecorder(camera, audioStream, mergeAVStr
13484
13501
  }
13485
13502
  }, [audioRecordingIntentionallyStopped, audioRecordingStopped, processAudio]);
13486
13503
  var clearRecordedData = React.useCallback(function () {
13487
- videoChunks.current = [];
13488
- audioChunks.current = [];
13504
+ clearVideoChunks();
13505
+ clearAudioChunks();
13489
13506
  }, []);
13490
13507
  return React.useMemo(function () {
13491
13508
  return {
@@ -13504,6 +13521,36 @@ var useVideoRecorder = function useVideoRecorder(camera, audioStream, mergeAVStr
13504
13521
  }, [audioRecordingIntentionallyStopped, audioRecordingStopped, audioUrl, clearRecordedData, isRecordingAudio, isRecordingVideo, startRecordingAudio, startRecordingVideo, stopRecordingAudio, stopRecordingVideo, videoRecordingIntentionallyStopped, videoRecordingStopped, videoUrl]);
13505
13522
  };
13506
13523
 
13524
+ var signatureRecorder = null;
13525
+ var getSignatureRecorder = function getSignatureRecorder() {
13526
+ return signatureRecorder;
13527
+ };
13528
+ var setSignatureRecorder = function setSignatureRecorder(recorder) {
13529
+ return signatureRecorder = recorder;
13530
+ };
13531
+ var signatureChunks = [];
13532
+ var clearSignatureChunks = function clearSignatureChunks() {
13533
+ return signatureChunks = [];
13534
+ };
13535
+ var recordingLock = false;
13536
+ var setRecordingLock = function setRecordingLock(lock) {
13537
+ return recordingLock = lock;
13538
+ };
13539
+ var recordingLockEngaged = function recordingLockEngaged() {
13540
+ return recordingLock;
13541
+ };
13542
+ function waitForCanvasAvailable(canvasRef) {
13543
+ if (canvasRef.current) return Promise.resolve(null);
13544
+ return new Promise(function (resolve) {
13545
+ var interval = setInterval(function () {
13546
+ debug('VideoSignatureContext: waiting for output canvas');
13547
+ if (canvasRef.current) {
13548
+ clearInterval(interval);
13549
+ resolve(null);
13550
+ }
13551
+ }, 100);
13552
+ });
13553
+ }
13507
13554
  var videoSignatureInitialState = {
13508
13555
  startRecording: function startRecording() {
13509
13556
  return null;
@@ -13522,7 +13569,7 @@ var videoSignatureInitialState = {
13522
13569
  onAcceptClicked: function onAcceptClicked() {
13523
13570
  return __awaiter(void 0, void 0, void 0, function () {
13524
13571
  return __generator(this, function (_a) {
13525
- return [2 /*return*/, void 0];
13572
+ return [2 /*return*/];
13526
13573
  });
13527
13574
  });
13528
13575
  }
@@ -13547,8 +13594,6 @@ function VideoSignatureContextProvider(_a) {
13547
13594
  var _h = React.useState(null),
13548
13595
  signatureVideoUrl = _h[0],
13549
13596
  setSignatureVideoUrl = _h[1];
13550
- var signatureRecorder = React.useRef(null);
13551
- var recordedChunks = React.useRef([]);
13552
13597
  var _j = useCameraStore(),
13553
13598
  camera = _j.camera,
13554
13599
  videoRef = _j.videoRef,
@@ -13561,7 +13606,6 @@ function VideoSignatureContextProvider(_a) {
13561
13606
  stopRecordingAudio = _k.stopRecordingAudio,
13562
13607
  clearRecordedVideoData = _k.clearRecordedData;
13563
13608
  var outputCanvas = React.useRef(null);
13564
- var recordingLock = React.useRef(false);
13565
13609
  var onRecordingStopped = React.useRef(function () {});
13566
13610
  var _l = React.useState(false),
13567
13611
  isRecording = _l[0],
@@ -13580,67 +13624,45 @@ function VideoSignatureContextProvider(_a) {
13580
13624
  setIsRecording(true);
13581
13625
  onRecordingStopped.current = function () {};
13582
13626
  };
13583
- recordingLock.current = false;
13627
+ setRecordingLock(false);
13584
13628
  setIsRecording(false);
13585
- (_a = signatureRecorder.current) === null || _a === void 0 ? void 0 : _a.stop();
13629
+ (_a = getSignatureRecorder()) === null || _a === void 0 ? void 0 : _a.stop();
13630
+ setSignatureRecorder(null);
13586
13631
  }, []);
13587
13632
  React.useEffect(function () {
13588
13633
  if (!isRecording) return;
13589
- if (recordingLock.current) return;
13590
- recordingLock.current = true;
13591
- (function () {
13592
- return __awaiter(_this, void 0, void 0, function () {
13593
- var stream, tracks, audioTrack;
13594
- var _a;
13595
- return __generator(this, function (_b) {
13596
- switch (_b.label) {
13597
- case 0:
13598
- if (!!outputCanvas.current) return [3 /*break*/, 2];
13599
- return [4 /*yield*/, new Promise(function (resolve) {
13600
- var interval = setInterval(function () {
13601
- if (outputCanvas.current) {
13602
- clearInterval(interval);
13603
- resolve(null);
13604
- }
13605
- }, 10);
13606
- })];
13607
- case 1:
13608
- _b.sent();
13609
- _b.label = 2;
13610
- case 2:
13611
- recordedChunks.current = [];
13612
- clearRecordedVideoData();
13613
- startRecordingVideo();
13614
- if (captureAudio) startRecordingAudio();
13615
- stream = outputCanvas.current.captureStream(24 /* fps */);
13616
- tracks = [stream.getVideoTracks()[0]];
13617
- audioTrack = (_a = audioStream === null || audioStream === void 0 ? void 0 : audioStream.getAudioTracks()) === null || _a === void 0 ? void 0 : _a[0];
13618
- if (audioTrack) tracks.push(audioTrack);
13619
- signatureRecorder.current = new MediaRecorder(new MediaStream(tracks), {
13620
- videoBitsPerSecond: 270000,
13621
- audioBitsPerSecond: 32000
13622
- });
13623
- signatureRecorder.current.start();
13624
- signatureRecorder.current.ondataavailable = function (event) {
13625
- var _a;
13626
- recordedChunks.current.push(event.data);
13627
- if (((_a = signatureRecorder.current) === null || _a === void 0 ? void 0 : _a.state) === 'recording') {
13628
- signatureRecorder.current.stop();
13629
- }
13630
- };
13631
- signatureRecorder.current.onstop = function () {
13632
- var blob = new Blob(recordedChunks.current, {
13633
- type: 'video/mp4'
13634
- });
13635
- setSignatureVideoData(blob);
13636
- setSignatureVideoUrl(URL.createObjectURL(blob));
13637
- onRecordingStopped.current();
13638
- };
13639
- return [2 /*return*/];
13640
- }
13641
- });
13634
+ if (recordingLockEngaged()) return;
13635
+ setRecordingLock(true);
13636
+ waitForCanvasAvailable(outputCanvas).then(function () {
13637
+ var _a;
13638
+ clearSignatureChunks();
13639
+ clearRecordedVideoData();
13640
+ startRecordingVideo();
13641
+ if (captureAudio) startRecordingAudio();
13642
+ var stream = outputCanvas.current.captureStream(24 /* fps */);
13643
+ var tracks = [stream.getVideoTracks()[0]];
13644
+ var audioTrack = (_a = audioStream === null || audioStream === void 0 ? void 0 : audioStream.getAudioTracks()) === null || _a === void 0 ? void 0 : _a[0];
13645
+ if (audioTrack) tracks.push(audioTrack);
13646
+ var signatureRecorder = new MediaRecorder(new MediaStream(tracks), {
13647
+ videoBitsPerSecond: 270000,
13648
+ audioBitsPerSecond: 32000
13642
13649
  });
13643
- })();
13650
+ setSignatureRecorder(signatureRecorder);
13651
+ signatureRecorder.ondataavailable = function (event) {
13652
+ signatureChunks.push(event.data);
13653
+ };
13654
+ signatureRecorder.onstop = function () {
13655
+ var blob = new Blob(signatureChunks, {
13656
+ type: 'video/mp4'
13657
+ });
13658
+ setSignatureVideoData(blob);
13659
+ setSignatureVideoUrl(URL.createObjectURL(blob));
13660
+ clearSignatureChunks();
13661
+ setSignatureRecorder(null);
13662
+ onRecordingStopped.current();
13663
+ };
13664
+ signatureRecorder.start(1000);
13665
+ });
13644
13666
  }, [audioStream, captureAudio, clearRecordedVideoData, isRecording, startRecordingAudio, startRecordingVideo]);
13645
13667
  var animationFrame = React.useRef(0);
13646
13668
  React.useEffect(function () {
@@ -13682,17 +13704,23 @@ function VideoSignatureContextProvider(_a) {
13682
13704
  return __generator(this, function (_b) {
13683
13705
  switch (_b.label) {
13684
13706
  case 0:
13707
+ debug('VideoSignatureContext: onAcceptClicked');
13685
13708
  if (!signaturePad.current) return [2 /*return*/];
13709
+ debug('VideoSignatureContext: building signature data...');
13686
13710
  signatureData = buildSignatureData(signaturePad.current);
13711
+ debug('VideoSignatureContext: exporting signature image...');
13687
13712
  return [4 /*yield*/, exportSignatureImage(signaturePad.current)];
13688
13713
  case 1:
13689
13714
  imageUrl = _b.sent();
13690
13715
  if (imageUrl) signatureData.fileContent = dataUrlToBase64Sync(imageUrl);
13716
+ debug('VideoSignatureContext: setting signature data url...');
13691
13717
  setSignatureDataUrl(imageUrl);
13692
13718
  setSignatureData(signatureData);
13719
+ debug('VideoSignatureContext: stopping recording...');
13693
13720
  stopRecordingVideo();
13694
13721
  stopRecordingAudio();
13695
- (_a = signatureRecorder.current) === null || _a === void 0 ? void 0 : _a.stop();
13722
+ debug('VideoSignatureContext: stopping signature recorder...');
13723
+ (_a = getSignatureRecorder()) === null || _a === void 0 ? void 0 : _a.stop();
13696
13724
  return [2 /*return*/];
13697
13725
  }
13698
13726
  });