idmission-web-sdk 2.1.23 → 2.1.24

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,4 +1,5 @@
1
1
  import ReactSignatureCanvas from 'react-signature-canvas';
2
+ import SignatureCanvas from 'react-signature-canvas';
2
3
  export type SignatureData = {
3
4
  clickX_simple: number[][];
4
5
  clickY_simple: number[][];
@@ -6,4 +7,5 @@ export type SignatureData = {
6
7
  pressure: string;
7
8
  fileContent: string;
8
9
  };
9
- export declare function signatureDataToIdmissionFormat(signatureCanvas: ReactSignatureCanvas): SignatureData;
10
+ export declare function signatureDataToIdmissionFormat(signatureCanvas: ReactSignatureCanvas, imageUrl?: string | null): SignatureData;
11
+ export declare function exportSignatureImage(signaturePad: SignatureCanvas, exportWidth?: number): Promise<string | null>;
@@ -22,10 +22,11 @@ export type VideoSignatureSuccessVerbiage = {
22
22
  };
23
23
  export type VideoSignatureSuccessProps = {
24
24
  videoUrl: string;
25
+ imageUrl: string;
25
26
  onDoneClick?: () => void;
26
27
  onRetryClick?: () => void;
27
28
  classNames?: VideoSignatureSuccessClassNames;
28
29
  colors?: VideoSignatureSuccessColors;
29
30
  verbiage?: VideoSignatureSuccessVerbiage;
30
31
  };
31
- export declare const VideoSignatureSuccess: ({ videoUrl, onDoneClick, onRetryClick, classNames, colors, verbiage: rawVerbiage, }: VideoSignatureSuccessProps) => ReactElement;
32
+ export declare const VideoSignatureSuccess: ({ videoUrl, imageUrl, onDoneClick, onRetryClick, classNames, colors, verbiage: rawVerbiage, }: VideoSignatureSuccessProps) => ReactElement;
@@ -234,7 +234,7 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
234
234
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
235
235
  };
236
236
 
237
- var webSdkVersion = '2.1.23';
237
+ var webSdkVersion = '2.1.24';
238
238
 
239
239
  function getPlatform() {
240
240
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
@@ -11772,15 +11772,14 @@ var AdditionalDocumentCaptureWizard = function AdditionalDocumentCaptureWizard(_
11772
11772
  });
11773
11773
  };
11774
11774
 
11775
- function signatureDataToIdmissionFormat(signatureCanvas) {
11776
- var _a;
11777
- var dataURL = (_a = signatureCanvas.toDataURL()) !== null && _a !== void 0 ? _a : null;
11775
+ function signatureDataToIdmissionFormat(signatureCanvas, imageUrl) {
11776
+ imageUrl || (imageUrl = signatureCanvas.toDataURL());
11778
11777
  var signatureData = {
11779
11778
  clickX_simple: [],
11780
11779
  clickY_simple: [],
11781
11780
  time_simple: [],
11782
11781
  pressure: '',
11783
- fileContent: dataURL ? dataUrlToBase64Sync(dataURL) : ''
11782
+ fileContent: imageUrl ? dataUrlToBase64Sync(imageUrl) : ''
11784
11783
  };
11785
11784
  signatureCanvas.toData().forEach(function (stroke) {
11786
11785
  var xs = [];
@@ -11797,6 +11796,68 @@ function signatureDataToIdmissionFormat(signatureCanvas) {
11797
11796
  });
11798
11797
  return signatureData;
11799
11798
  }
11799
+ function exportSignatureImage(signaturePad_1) {
11800
+ return __awaiter(this, arguments, void 0, function (signaturePad, exportWidth) {
11801
+ var signatureCanvas, scaledHeight, svgB64Url, svgContent, scaledSvgContent, scaledSvgUrl;
11802
+ if (exportWidth === void 0) {
11803
+ exportWidth = 600;
11804
+ }
11805
+ return __generator(this, function (_a) {
11806
+ switch (_a.label) {
11807
+ case 0:
11808
+ signatureCanvas = signaturePad.getCanvas();
11809
+ scaledHeight = signatureCanvas.height * exportWidth / signatureCanvas.width;
11810
+ svgB64Url = signaturePad.getSignaturePad()._toSVG();
11811
+ svgContent = atob(svgB64Url.replace('data:image/svg+xml;base64,', ''));
11812
+ scaledSvgContent = svgContent.replace(/width="[0-9.]+"/, "width=\"".concat(exportWidth, "\"")).replace(/height="[0-9.]+"/, "height=\"".concat(scaledHeight, "\"")).replace(/viewBox="0 0 [0-9.]+ [0-9.]+"/, "viewBox=\"0 0 ".concat(signatureCanvas.width, " ").concat(signatureCanvas.height, "\""));
11813
+ scaledSvgUrl = 'data:image/svg+xml;base64,' + btoa(scaledSvgContent);
11814
+ return [4 /*yield*/, convertSVGtoImg(scaledSvgUrl)];
11815
+ case 1:
11816
+ return [2 /*return*/, _a.sent()];
11817
+ }
11818
+ });
11819
+ });
11820
+ }
11821
+ function loadImage(url) {
11822
+ return __awaiter(this, void 0, void 0, function () {
11823
+ var img;
11824
+ return __generator(this, function (_a) {
11825
+ img = document.createElement('img');
11826
+ img.src = url;
11827
+ return [2 /*return*/, new Promise(function (resolve, reject) {
11828
+ img.onload = function () {
11829
+ return resolve(img);
11830
+ };
11831
+ img.onerror = reject;
11832
+ })];
11833
+ });
11834
+ });
11835
+ }
11836
+ function convertSVGtoImg(svgData_1) {
11837
+ return __awaiter(this, arguments, void 0, function (svgData, format) {
11838
+ var img, canvas, ctx;
11839
+ if (format === void 0) {
11840
+ format = 'jpeg';
11841
+ }
11842
+ return __generator(this, function (_a) {
11843
+ switch (_a.label) {
11844
+ case 0:
11845
+ return [4 /*yield*/, loadImage(svgData)];
11846
+ case 1:
11847
+ img = _a.sent();
11848
+ canvas = document.createElement('canvas');
11849
+ canvas.width = img.naturalWidth;
11850
+ canvas.height = img.naturalHeight;
11851
+ ctx = canvas.getContext('2d');
11852
+ if (!ctx) return [2 /*return*/, null];
11853
+ ctx.fillStyle = 'white';
11854
+ ctx.fillRect(0, 0, canvas.width, canvas.height);
11855
+ ctx.drawImage(img, 0, 0, img.naturalWidth, img.naturalHeight);
11856
+ return [2 /*return*/, canvas.toDataURL("image/".concat(format), 1.0)];
11857
+ }
11858
+ });
11859
+ });
11860
+ }
11800
11861
 
11801
11862
  var SignaturePaperBacking = styled__default.default.div(templateObject_1$c || (templateObject_1$c = __makeTemplateObject(["\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n ", "\n ", "\n ", "\n"], ["\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n ", "\n ", "\n ", "\n"])), function (props) {
11802
11863
  var _a, _b;
@@ -11840,9 +11901,21 @@ var SignatureCapture = function SignatureCapture(_a) {
11840
11901
  clearBtnText: 'Clear'
11841
11902
  });
11842
11903
  function onAcceptClicked() {
11843
- if (!signaturePad.current) return;
11844
- var signatureData = signatureDataToIdmissionFormat(signaturePad.current);
11845
- onAccept === null || onAccept === void 0 ? void 0 : onAccept(signatureData, signaturePad.current.toDataURL());
11904
+ return __awaiter(this, void 0, void 0, function () {
11905
+ var imageUrl, signatureData;
11906
+ return __generator(this, function (_a) {
11907
+ switch (_a.label) {
11908
+ case 0:
11909
+ if (!signaturePad.current) return [2 /*return*/];
11910
+ return [4 /*yield*/, exportSignatureImage(signaturePad.current)];
11911
+ case 1:
11912
+ imageUrl = _a.sent();
11913
+ signatureData = signatureDataToIdmissionFormat(signaturePad.current, imageUrl);
11914
+ onAccept === null || onAccept === void 0 ? void 0 : onAccept(signatureData, imageUrl !== null && imageUrl !== void 0 ? imageUrl : '');
11915
+ return [2 /*return*/];
11916
+ }
11917
+ });
11918
+ });
11846
11919
  }
11847
11920
  return /*#__PURE__*/React__namespace.default.createElement(PageContainer, {
11848
11921
  className: classNames.container
@@ -12175,20 +12248,23 @@ var VideoSignatureCapture = function VideoSignatureCapture(_a) {
12175
12248
  }
12176
12249
  }, [numFramesWithoutFaces, onFaceNotDetected]);
12177
12250
  function onAcceptClicked() {
12178
- if (!signaturePad.current) return;
12179
- var signatureData = signatureDataToIdmissionFormat(signaturePad.current);
12180
- setSignatureData(signatureData);
12181
- var signatureCanvas = signaturePad.current.getCanvas();
12182
- var scaledHeight = signatureCanvas.height * 600 / signatureCanvas.width;
12183
- var svgB64Url = signaturePad.current.getSignaturePad()._toSVG();
12184
- var svgContent = atob(svgB64Url.replace('data:image/svg+xml;base64,', ''));
12185
- var scaledSvgContent = svgContent.replace(/width="[0-9.]+"/, "width=\"600\"").replace(/height="[0-9.]+"/, "height=\"".concat(scaledHeight, "\"")).replace(/viewBox="0 0 [0-9.]+ [0-9.]+"/, "viewBox=\"0 0 ".concat(signatureCanvas.width, " ").concat(signatureCanvas.height, "\""));
12186
- var scaledSvgUrl = 'data:image/svg+xml;base64,' + btoa(scaledSvgContent);
12187
- convertSVGtoImg(scaledSvgUrl).then(function (dataUrl) {
12251
+ return __awaiter(this, void 0, void 0, function () {
12252
+ var imageUrl;
12188
12253
  var _a;
12189
- dataUrl && setSignatureDataUrl(dataUrl);
12190
- stopRecordingVideo();
12191
- (_a = signatureRecorder.current) === null || _a === void 0 ? void 0 : _a.stop();
12254
+ return __generator(this, function (_b) {
12255
+ switch (_b.label) {
12256
+ case 0:
12257
+ if (!signaturePad.current) return [2 /*return*/];
12258
+ return [4 /*yield*/, exportSignatureImage(signaturePad.current)];
12259
+ case 1:
12260
+ imageUrl = _b.sent();
12261
+ setSignatureDataUrl(imageUrl);
12262
+ setSignatureData(signatureDataToIdmissionFormat(signaturePad.current, imageUrl));
12263
+ stopRecordingVideo();
12264
+ (_a = signatureRecorder.current) === null || _a === void 0 ? void 0 : _a.stop();
12265
+ return [2 /*return*/];
12266
+ }
12267
+ });
12192
12268
  });
12193
12269
  }
12194
12270
  return /*#__PURE__*/React__namespace.default.createElement(PageContainer, {
@@ -12235,54 +12311,11 @@ var VideoSignatureCapture = function VideoSignatureCapture(_a) {
12235
12311
  }));
12236
12312
  };
12237
12313
  var AcceptBtn = styled__default.default(LoaderButton)(templateObject_1$a || (templateObject_1$a = __makeTemplateObject(["\n margin-left: auto;\n"], ["\n margin-left: auto;\n"])));
12238
- var loadImage = function loadImage(url) {
12239
- return __awaiter(void 0, void 0, void 0, function () {
12240
- var img;
12241
- return __generator(this, function (_a) {
12242
- img = document.createElement('img');
12243
- img.src = url;
12244
- return [2 /*return*/, new Promise(function (resolve, reject) {
12245
- img.onload = function () {
12246
- return resolve(img);
12247
- };
12248
- img.onerror = reject;
12249
- })];
12250
- });
12251
- });
12252
- };
12253
- var convertSVGtoImg = function convertSVGtoImg(svgData_1) {
12254
- var args_1 = [];
12255
- for (var _i = 1; _i < arguments.length; _i++) {
12256
- args_1[_i - 1] = arguments[_i];
12257
- }
12258
- return __awaiter(void 0, __spreadArray([svgData_1], args_1, true), void 0, function (svgData, format) {
12259
- var img, canvas, ctx;
12260
- if (format === void 0) {
12261
- format = 'jpeg';
12262
- }
12263
- return __generator(this, function (_a) {
12264
- switch (_a.label) {
12265
- case 0:
12266
- return [4 /*yield*/, loadImage(svgData)];
12267
- case 1:
12268
- img = _a.sent();
12269
- canvas = document.createElement('canvas');
12270
- canvas.width = img.naturalWidth;
12271
- canvas.height = img.naturalHeight;
12272
- ctx = canvas.getContext('2d');
12273
- if (!ctx) return [2 /*return*/];
12274
- ctx.fillStyle = 'white';
12275
- ctx.fillRect(0, 0, canvas.width, canvas.height);
12276
- ctx.drawImage(img, 0, 0, img.naturalWidth, img.naturalHeight);
12277
- return [2 /*return*/, canvas.toDataURL("image/".concat(format), 1.0)];
12278
- }
12279
- });
12280
- });
12281
- };
12282
12314
  var templateObject_1$a;
12283
12315
 
12284
12316
  var VideoSignatureSuccess = function VideoSignatureSuccess(_a) {
12285
12317
  var videoUrl = _a.videoUrl,
12318
+ imageUrl = _a.imageUrl,
12286
12319
  onDoneClick = _a.onDoneClick,
12287
12320
  onRetryClick = _a.onRetryClick,
12288
12321
  _b = _a.classNames,
@@ -12311,6 +12344,12 @@ var VideoSignatureSuccess = function VideoSignatureSuccess(_a) {
12311
12344
  controls: true,
12312
12345
  preload: "metadata",
12313
12346
  autoPlay: true
12347
+ }), /*#__PURE__*/React__namespace.default.createElement("img", {
12348
+ src: imageUrl,
12349
+ alt: "",
12350
+ style: {
12351
+ display: 'none'
12352
+ }
12314
12353
  })), /*#__PURE__*/React__namespace.default.createElement(ButtonsRow, {
12315
12354
  className: classNames.buttonsRow
12316
12355
  }, /*#__PURE__*/React__namespace.default.createElement(LoaderButton, {
@@ -12419,13 +12458,13 @@ var VideoSignatureWizard = function VideoSignatureWizard(_a) {
12419
12458
  });
12420
12459
  }, [logCaptureMetadata, selfieImage, setSelfieImage]);
12421
12460
  var _p = React.useState(null),
12422
- signatureDataUrl = _p[0],
12423
- setSignatureDataUrl = _p[1];
12461
+ signatureImageUrl = _p[0],
12462
+ setSignatureImageUrl = _p[1];
12424
12463
  var onSignatureCaptureCompleted = React.useCallback(function (videoData, signatureData, signatureImageData) {
12425
12464
  setSignatureData(signatureData);
12426
12465
  setSignatureVideoUrl(URL.createObjectURL(videoData));
12466
+ setSignatureImageUrl(signatureImageData);
12427
12467
  setCaptureState('SUCCESS');
12428
- setSignatureDataUrl(signatureImageData);
12429
12468
  onVideoCaptured === null || onVideoCaptured === void 0 ? void 0 : onVideoCaptured(videoData, signatureData, signatureImageData);
12430
12469
  }, [onVideoCaptured, setSignatureData, setSignatureVideoUrl]);
12431
12470
  var onSignatureCaptureFacesNotDetected = React.useCallback(function () {
@@ -12483,17 +12522,15 @@ var VideoSignatureWizard = function VideoSignatureWizard(_a) {
12483
12522
  });
12484
12523
  case 'SUCCESS':
12485
12524
  if (!showSuccessScreen) return;
12486
- return /*#__PURE__*/React__namespace.default.createElement(React__namespace.default.Fragment, null, /*#__PURE__*/React__namespace.default.createElement(VideoSignatureSuccess, {
12525
+ return /*#__PURE__*/React__namespace.default.createElement(VideoSignatureSuccess, {
12487
12526
  videoUrl: signatureVideoUrl !== null && signatureVideoUrl !== void 0 ? signatureVideoUrl : '',
12527
+ imageUrl: signatureImageUrl !== null && signatureImageUrl !== void 0 ? signatureImageUrl : '',
12488
12528
  onDoneClick: onComplete,
12489
12529
  onRetryClick: onRetry,
12490
12530
  classNames: classNames.success,
12491
12531
  colors: colors.success,
12492
12532
  verbiage: verbiage.success
12493
- }), signatureDataUrl && /*#__PURE__*/React__namespace.default.createElement("img", {
12494
- src: signatureDataUrl,
12495
- alt: ""
12496
- }));
12533
+ });
12497
12534
  default:
12498
12535
  return null;
12499
12536
  }