idmission-web-sdk 0.0.41 → 0.0.43

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.
package/README.md CHANGED
@@ -180,6 +180,10 @@ Render a fullscreen capture component that analyzes frames from the user's front
180
180
  <table>
181
181
  <tr><td><code>guidesUnsatisfiedColor</code></td><td>Default: white</td></tr>
182
182
  <tr><td><code>guidesSatisfiedColor</code></td><td>Default: green</td></tr>
183
+ <tr><td><code>guidanceMessagesSatisfiedBackgroundColor</code></td><td>Default: green</td></tr>
184
+ <tr><td><code>guidanceMessagesUnsatisfiedBackgroundColor</code></td><td>Default: red</td></tr>
185
+ <tr><td><code>guidanceMessagesSatisfiedTextColor</code></td><td>Default: black</td></tr>
186
+ <tr><td><code>guidanceMessagesUnsatisfiedTextColor</code></td><td>Default: black</td></tr>
183
187
  </table>
184
188
 
185
189
  **Face Liveness Verbiage**
@@ -452,6 +456,10 @@ Render a fullscreen capture component that analyzes frames from the user's front
452
456
  <table>
453
457
  <tr><td><code>guidesUnsatisfiedColor</code></td><td>Default: white</td></tr>
454
458
  <tr><td><code>guidesSatisfiedColor</code></td><td>Default: green</td></tr>
459
+ <tr><td><code>guidanceMessagesSatisfiedBackgroundColor</code></td><td>Default: green</td></tr>
460
+ <tr><td><code>guidanceMessagesUnsatisfiedBackgroundColor</code></td><td>Default: red</td></tr>
461
+ <tr><td><code>guidanceMessagesSatisfiedTextColor</code></td><td>Default: black</td></tr>
462
+ <tr><td><code>guidanceMessagesUnsatisfiedTextColor</code></td><td>Default: black</td></tr>
455
463
  </table>
456
464
 
457
465
  **Customer Identification Verbiage**
@@ -1,6 +1,7 @@
1
1
  import { ReactElement } from 'react';
2
2
  import { LangOption } from '../../lib/locales';
3
3
  import { SubmissionEnvironment, SubmissionRequest, SubmissionResponse } from '../../contexts/SubmissionContext';
4
+ import { SignatureKYCColors, SignatureKYCVerbiage } from '../signature_kyc/SignatureKYCWizard';
4
5
  export type SignatureKYCProps = {
5
6
  lang?: LangOption;
6
7
  submissionToken: string;
@@ -8,8 +9,10 @@ export type SignatureKYCProps = {
8
9
  submissionUrl?: string;
9
10
  onBeforeSubmit?: (request: SubmissionRequest) => Promise<SubmissionRequest>;
10
11
  onComplete?: (submissionResponse: SubmissionResponse) => void;
12
+ colors?: SignatureKYCColors;
13
+ verbiage?: SignatureKYCVerbiage;
11
14
  geolocationEnabled?: boolean;
12
15
  geolocationRequired?: boolean;
13
16
  debugMode?: boolean;
14
17
  };
15
- export declare const SignatureKYC: ({ submissionToken, submissionEnvironment, submissionUrl, onBeforeSubmit, onComplete, geolocationEnabled, geolocationRequired, debugMode, }: SignatureKYCProps) => ReactElement;
18
+ export declare const SignatureKYC: ({ submissionToken, submissionEnvironment, submissionUrl, onBeforeSubmit, onComplete, colors, verbiage, geolocationEnabled, geolocationRequired, debugMode, }: SignatureKYCProps) => ReactElement;
@@ -3,6 +3,10 @@ import { Face } from './HighPerformanceSelfieGuidanceModelsProvider';
3
3
  export type SelfieCaptureColors = {
4
4
  guidesUnsatisfiedColor?: string;
5
5
  guidesSatisfiedColor?: string;
6
+ guidanceMessagesSatisfiedBackgroundColor?: string;
7
+ guidanceMessagesUnsatisfiedBackgroundColor?: string;
8
+ guidanceMessagesSatisfiedTextColor?: string;
9
+ guidanceMessagesUnsatisfiedTextColor?: string;
6
10
  };
7
11
  export type SelfieCaptureVerbiage = {
8
12
  guidanceHoldStillText?: string;
@@ -1,11 +1,19 @@
1
1
  import React from 'react';
2
2
  import { SignatureData } from './data';
3
3
  import { SignatureCaptureVerbiage } from './SignatureCapture';
4
+ export type VideoSignatureCaptureColors = {
5
+ guidanceMessageBackgroundColor?: string;
6
+ guidanceMessageTextColor?: string;
7
+ };
8
+ export type VideoSignatureCaptureVerbiage = SignatureCaptureVerbiage & {
9
+ guidanceMessageText?: string;
10
+ };
4
11
  export type VideoSignatureCaptureProps = {
5
12
  onComplete?: (signatureData: SignatureData, imageData: string, videoData: Blob) => void;
6
13
  onFaceNotDetected?: () => void;
7
14
  onExit?: () => void;
8
- verbiage?: SignatureCaptureVerbiage;
15
+ colors?: VideoSignatureCaptureColors;
16
+ verbiage?: VideoSignatureCaptureVerbiage;
9
17
  debugMode?: boolean;
10
18
  };
11
- export declare const VideoSignatureCapture: ({ onComplete, onFaceNotDetected, onExit, verbiage, debugMode, }: VideoSignatureCaptureProps) => React.ReactElement;
19
+ export declare const VideoSignatureCapture: ({ onComplete, onFaceNotDetected, onExit, colors, verbiage, debugMode, }: VideoSignatureCaptureProps) => React.ReactElement;
@@ -1,7 +1,24 @@
1
1
  import { ReactElement } from 'react';
2
+ import { VideoSignatureCaptureColors, VideoSignatureCaptureVerbiage } from '../signature_capture/VideoSignatureCapture';
3
+ import { FaceLivenessColors, FaceLivenessVerbiage } from '../face_liveness/FaceLivenessWizard';
4
+ export type SignatureKYCColors = {
5
+ faceLiveness?: FaceLivenessColors;
6
+ videoSignatureCapture?: VideoSignatureCaptureColors;
7
+ };
8
+ export type SignatureKYCVerbiage = {
9
+ faceLiveness?: FaceLivenessVerbiage;
10
+ videoSignatureCapture?: VideoSignatureCaptureVerbiage;
11
+ success?: {
12
+ headingText?: string;
13
+ retryBtnText?: string;
14
+ doneBtnText?: string;
15
+ };
16
+ };
2
17
  export type SignatureKYCWizardProps = {
3
18
  onComplete?: () => void;
4
19
  onRetryClicked?: () => void;
20
+ colors?: SignatureKYCColors;
21
+ verbiage?: SignatureKYCVerbiage;
5
22
  debugMode?: boolean;
6
23
  };
7
- export declare const SignatureKYCWizard: ({ onComplete, onRetryClicked, debugMode, }: SignatureKYCWizardProps) => ReactElement;
24
+ export declare const SignatureKYCWizard: ({ onComplete, onRetryClicked, colors, verbiage, debugMode, }: SignatureKYCWizardProps) => ReactElement;
@@ -10172,6 +10172,10 @@ var SelfieCapture = function SelfieCapture(_a) {
10172
10172
  });
10173
10173
  colors.guidesUnsatisfiedColor || (colors.guidesUnsatisfiedColor = 'white');
10174
10174
  colors.guidesSatisfiedColor || (colors.guidesSatisfiedColor = 'green');
10175
+ colors.guidanceMessagesUnsatisfiedBackgroundColor || (colors.guidanceMessagesUnsatisfiedBackgroundColor = 'red');
10176
+ colors.guidanceMessagesSatisfiedBackgroundColor || (colors.guidanceMessagesSatisfiedBackgroundColor = 'green');
10177
+ colors.guidanceMessagesUnsatisfiedTextColor || (colors.guidanceMessagesUnsatisfiedTextColor = 'black');
10178
+ colors.guidanceMessagesSatisfiedTextColor || (colors.guidanceMessagesSatisfiedTextColor = 'black');
10175
10179
  if (!guidanceMessage) {
10176
10180
  verbiage.guidanceHoldStillText || (verbiage.guidanceHoldStillText = t('Hold still for a few seconds...'));
10177
10181
  verbiage.guidanceLookStraightText || (verbiage.guidanceLookStraightText = t('Look straight into the camera...'));
@@ -10186,8 +10190,8 @@ var SelfieCapture = function SelfieCapture(_a) {
10186
10190
  }, /*#__PURE__*/React__default['default'].createElement(CameraVideoTag, null), /*#__PURE__*/React__default['default'].createElement(FaceCaptureGuideOverlay, {
10187
10191
  borderColor: state.faceReady ? colors.guidesSatisfiedColor : colors.guidesUnsatisfiedColor
10188
10192
  }), guidanceMessage !== '' && /*#__PURE__*/React__default['default'].createElement(GuidanceMessageContainer, null, /*#__PURE__*/React__default['default'].createElement(GuidanceMessage, {
10189
- "$background": state.faceReady ? 'green' : 'red',
10190
- "$textColor": "white"
10193
+ "$background": state.faceReady ? colors.guidanceMessagesSatisfiedBackgroundColor : colors.guidanceMessagesUnsatisfiedBackgroundColor,
10194
+ "$textColor": state.faceReady ? colors.guidanceMessagesSatisfiedTextColor : colors.guidanceMessagesUnsatisfiedTextColor
10191
10195
  }, guidanceMessage)), debugMode && state.faces.length > 0 && /*#__PURE__*/React__default['default'].createElement(ObjectDetectionDebugOverlay, {
10192
10196
  "$flipX": !((_b = cameraRef.current) === null || _b === void 0 ? void 0 : _b.isRearFacing)
10193
10197
  }, state.faces.map(function (face, i) {
@@ -11426,39 +11430,44 @@ var VideoSignatureCapture = function VideoSignatureCapture(_a) {
11426
11430
  var onComplete = _a.onComplete,
11427
11431
  onFaceNotDetected = _a.onFaceNotDetected,
11428
11432
  onExit = _a.onExit,
11429
- _d = _a.verbiage,
11430
- verbiage = _d === void 0 ? {} : _d,
11431
- _e = _a.debugMode,
11432
- debugMode = _e === void 0 ? false : _e;
11433
+ _d = _a.colors,
11434
+ colors = _d === void 0 ? {} : _d,
11435
+ _e = _a.verbiage,
11436
+ verbiage = _e === void 0 ? {} : _e,
11437
+ _f = _a.debugMode,
11438
+ debugMode = _f === void 0 ? false : _f;
11433
11439
  var t = reactI18next.useTranslation().t;
11434
- var _f = React.useContext(CameraStateContext),
11435
- cameraRef = _f.cameraRef,
11436
- videoRef = _f.videoRef;
11437
- var _g = useResizeObserver__default['default'](),
11438
- ref = _g.ref,
11439
- width = _g.width,
11440
- height = _g.height;
11440
+ var _g = React.useContext(CameraStateContext),
11441
+ cameraRef = _g.cameraRef,
11442
+ videoRef = _g.videoRef;
11443
+ var _h = useResizeObserver__default['default'](),
11444
+ ref = _h.ref,
11445
+ width = _h.width,
11446
+ height = _h.height;
11441
11447
  var signaturePad = React.useRef(null);
11442
11448
  var signatureRecorder = React.useRef(null);
11443
11449
  var recordedChunks = React.useRef([]);
11444
- var _h = React.useState(null),
11445
- signatureVideoUrl = _h[0],
11446
- setSignatureVideoUrl = _h[1];
11450
+ var _j = React.useState(null),
11451
+ signatureVideoUrl = _j[0],
11452
+ setSignatureVideoUrl = _j[1];
11447
11453
  var onPredictionMade = React.useContext(HighPerformanceSelfieGuidanceModelsContext).onPredictionMade;
11448
- var _j = useVideoRecorder(cameraRef.current),
11449
- isRecording = _j.isRecording,
11450
- startRecording = _j.startRecording,
11451
- stopRecording = _j.stopRecording,
11452
- videoUrl = _j.videoUrl;
11453
- var _k = React.useState(null),
11454
- signatureData = _k[0],
11455
- setSignatureData = _k[1];
11454
+ var _k = useVideoRecorder(cameraRef.current),
11455
+ isRecording = _k.isRecording,
11456
+ startRecording = _k.startRecording,
11457
+ stopRecording = _k.stopRecording,
11458
+ videoUrl = _k.videoUrl;
11456
11459
  var _l = React.useState(null),
11457
- signatureDataUrl = _l[0],
11458
- setSignatureDataUrl = _l[1];
11460
+ signatureData = _l[0],
11461
+ setSignatureData = _l[1];
11459
11462
  var _m = React.useState(null),
11460
- signatureVideoData = _m[0],
11461
- setSignatureVideoData = _m[1];
11463
+ signatureDataUrl = _m[0],
11464
+ setSignatureDataUrl = _m[1];
11465
+ var _o = React.useState(null),
11466
+ signatureVideoData = _o[0],
11467
+ setSignatureVideoData = _o[1];
11468
+ colors.guidanceMessageBackgroundColor || (colors.guidanceMessageBackgroundColor = '#ccc');
11469
+ colors.guidanceMessageTextColor || (colors.guidanceMessageTextColor = 'black');
11470
+ verbiage.guidanceMessageText || (verbiage.guidanceMessageText = t('Please sign the box below'));
11462
11471
  verbiage.acceptBtnText || (verbiage.acceptBtnText = t('Accept'));
11463
11472
  verbiage.clearBtnText || (verbiage.clearBtnText = t('Clear'));
11464
11473
  var outputCanvas = React.useRef(null);
@@ -11530,9 +11539,9 @@ var VideoSignatureCapture = function VideoSignatureCapture(_a) {
11530
11539
  cancelAnimationFrame(animationFrame.current);
11531
11540
  };
11532
11541
  }, [cameraRef, isRecording, onFaceNotDetected, videoRef]);
11533
- var _o = React.useState(0),
11534
- numFramesWithoutFaces = _o[0],
11535
- setNumFramesWithoutFaces = _o[1];
11542
+ var _p = React.useState(0),
11543
+ numFramesWithoutFaces = _p[0],
11544
+ setNumFramesWithoutFaces = _p[1];
11536
11545
  React.useEffect(function () {
11537
11546
  onPredictionMade(function (faces) {
11538
11547
  setNumFramesWithoutFaces(function (n) {
@@ -11562,12 +11571,14 @@ var VideoSignatureCapture = function VideoSignatureCapture(_a) {
11562
11571
  value: JSON.stringify(signatureData, null, 2)
11563
11572
  }));
11564
11573
  }
11565
- var guidanceMessage = t('Please sign the box below');
11566
11574
  return /*#__PURE__*/React__default['default'].createElement(PageContainer, {
11567
11575
  className: "flex"
11568
- }, /*#__PURE__*/React__default['default'].createElement(CameraVideoTag, null), guidanceMessage !== '' && /*#__PURE__*/React__default['default'].createElement(GuidanceMessageContainer, {
11576
+ }, /*#__PURE__*/React__default['default'].createElement(CameraVideoTag, null), verbiage.guidanceMessageText && /*#__PURE__*/React__default['default'].createElement(GuidanceMessageContainer, {
11569
11577
  "$top": "5vh"
11570
- }, /*#__PURE__*/React__default['default'].createElement(GuidanceMessage, null, guidanceMessage)), /*#__PURE__*/React__default['default'].createElement(SignatureCanvasContainer, null, /*#__PURE__*/React__default['default'].createElement(SignaturePad, {
11578
+ }, /*#__PURE__*/React__default['default'].createElement(GuidanceMessage, {
11579
+ "$background": colors.guidanceMessageBackgroundColor,
11580
+ "$textColor": colors.guidanceMessageTextColor
11581
+ }, verbiage.guidanceMessageText)), /*#__PURE__*/React__default['default'].createElement(SignatureCanvasContainer, null, /*#__PURE__*/React__default['default'].createElement(SignaturePad, {
11571
11582
  ref: ref
11572
11583
  }, /*#__PURE__*/React__default['default'].createElement(SignatureCanvas__default['default'], {
11573
11584
  ref: signaturePad,
@@ -11669,19 +11680,23 @@ var templateObject_1;
11669
11680
  var SignatureKYCWizard = function SignatureKYCWizard(_a) {
11670
11681
  var onComplete = _a.onComplete,
11671
11682
  onRetryClicked = _a.onRetryClicked,
11672
- _b = _a.debugMode,
11673
- debugMode = _b === void 0 ? false : _b;
11674
- var _c = React.useContext(SubmissionContext),
11675
- submit = _c.submit,
11676
- selfieImage = _c.selfieImage,
11677
- signatureVideo = _c.signatureVideo,
11678
- setSelfieImage = _c.setSelfieImage,
11679
- setSignatureData = _c.setSignatureData,
11680
- setSignatureVideo = _c.setSignatureVideo,
11681
- logSelfieCaptureAttempt = _c.logSelfieCaptureAttempt;
11682
- var _d = React.useState('LOADING'),
11683
- captureState = _d[0],
11684
- setCaptureState = _d[1];
11683
+ _b = _a.colors,
11684
+ colors = _b === void 0 ? {} : _b,
11685
+ _c = _a.verbiage,
11686
+ verbiage = _c === void 0 ? {} : _c,
11687
+ _d = _a.debugMode,
11688
+ debugMode = _d === void 0 ? false : _d;
11689
+ var _e = React.useContext(SubmissionContext),
11690
+ submit = _e.submit,
11691
+ selfieImage = _e.selfieImage,
11692
+ signatureVideo = _e.signatureVideo,
11693
+ setSelfieImage = _e.setSelfieImage,
11694
+ setSignatureData = _e.setSignatureData,
11695
+ setSignatureVideo = _e.setSignatureVideo,
11696
+ logSelfieCaptureAttempt = _e.logSelfieCaptureAttempt;
11697
+ var _f = React.useState('LOADING'),
11698
+ captureState = _f[0],
11699
+ setCaptureState = _f[1];
11685
11700
  var operationStartedAt = React.useRef();
11686
11701
  var captureStartedAt = React.useRef();
11687
11702
  var captureEndedAt = React.useRef();
@@ -11730,13 +11745,13 @@ var SignatureKYCWizard = function SignatureKYCWizard(_a) {
11730
11745
  setSignatureVideo(URL.createObjectURL(videoData));
11731
11746
  setCaptureState('SUCCESS');
11732
11747
  onComplete === null || onComplete === void 0 ? void 0 : onComplete();
11733
- }, [onComplete, setSignatureData]);
11748
+ }, [onComplete, setSignatureData, setSignatureVideo]);
11734
11749
  var onSignatureCaptureFacesNotDetected = React.useCallback(function () {
11735
11750
  setCaptureState('CHECKING_LIVENESS');
11736
11751
  }, []);
11737
- var _e = React.useState(0),
11738
- attempt = _e[0],
11739
- setAttempt = _e[1];
11752
+ var _g = React.useState(0),
11753
+ attempt = _g[0],
11754
+ setAttempt = _g[1];
11740
11755
  var onExit = React.useCallback(function () {
11741
11756
  setAttempt(function (n) {
11742
11757
  return n + 1;
@@ -11746,11 +11761,14 @@ var SignatureKYCWizard = function SignatureKYCWizard(_a) {
11746
11761
  return /*#__PURE__*/React__default['default'].createElement(HighPerformanceSelfieGuidanceModelsProvider, {
11747
11762
  throttleMs: captureState === 'CAPTURING_SIGNATURE' ? 250 : 0
11748
11763
  }, captureState !== 'LOADING' && function () {
11764
+ var _a, _b, _c;
11749
11765
  switch (captureState) {
11750
11766
  case 'CHECKING_LIVENESS':
11751
11767
  return /*#__PURE__*/React__default['default'].createElement(FaceLivenessCapture, {
11752
11768
  onSuccess: onFaceCaptureSuccess,
11753
11769
  onExit: onExit,
11770
+ colors: colors.faceLiveness,
11771
+ verbiage: verbiage.faceLiveness,
11754
11772
  debugMode: debugMode
11755
11773
  });
11756
11774
  case 'CAPTURING_SIGNATURE':
@@ -11758,13 +11776,18 @@ var SignatureKYCWizard = function SignatureKYCWizard(_a) {
11758
11776
  onComplete: onSignatureCaptureCompleted,
11759
11777
  onFaceNotDetected: onSignatureCaptureFacesNotDetected,
11760
11778
  onExit: onExit,
11779
+ colors: colors.videoSignatureCapture,
11780
+ verbiage: verbiage.videoSignatureCapture,
11761
11781
  debugMode: debugMode
11762
11782
  });
11763
11783
  case 'SUCCESS':
11764
11784
  return /*#__PURE__*/React__default['default'].createElement(SignatureKYCSuccess, {
11765
11785
  videoUrl: signatureVideo !== null && signatureVideo !== void 0 ? signatureVideo : '',
11766
11786
  onDoneClick: submit,
11767
- onRetryClick: onRetryClicked
11787
+ onRetryClick: onRetryClicked,
11788
+ headingText: (_a = verbiage.success) === null || _a === void 0 ? void 0 : _a.headingText,
11789
+ retryBtnText: (_b = verbiage.success) === null || _b === void 0 ? void 0 : _b.retryBtnText,
11790
+ doneBtnText: (_c = verbiage.success) === null || _c === void 0 ? void 0 : _c.doneBtnText
11768
11791
  });
11769
11792
  default:
11770
11793
  return null;
@@ -13473,6 +13496,8 @@ var SignatureKYC = function SignatureKYC(_a) {
13473
13496
  submissionUrl = _a.submissionUrl,
13474
13497
  onBeforeSubmit = _a.onBeforeSubmit,
13475
13498
  onComplete = _a.onComplete,
13499
+ colors = _a.colors,
13500
+ verbiage = _a.verbiage,
13476
13501
  geolocationEnabled = _a.geolocationEnabled,
13477
13502
  geolocationRequired = _a.geolocationRequired,
13478
13503
  debugMode = _a.debugMode;
@@ -13494,7 +13519,9 @@ var SignatureKYC = function SignatureKYC(_a) {
13494
13519
  preferFrontFacingCamera: true,
13495
13520
  requestMicrophoneAccess: true
13496
13521
  }, /*#__PURE__*/React__default['default'].createElement(SignatureKYCWizard, {
13522
+ colors: colors,
13497
13523
  debugMode: debugMode,
13524
+ verbiage: verbiage,
13498
13525
  onRetryClicked: function onRetryClicked() {
13499
13526
  setAttempt(function (n) {
13500
13527
  return n + 1;