idmission-web-sdk 1.0.123 → 1.0.125

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,4 @@
1
- import { FC, PropsWithChildren } from 'react';
1
+ import { FC, PropsWithChildren, ReactNode } from 'react';
2
2
  import { CardData, PersonalData, SubmissionRequest, SubmissionResponse } from '../../contexts/SubmissionContext';
3
3
  import { FaceLivenessAssets, FaceLivenessClassNames, FaceLivenessColors, FaceLivenessVerbiage } from '../face_liveness/FaceLivenessWizard';
4
4
  import { IdCaptureWizardAssets, IdCaptureWizardClassNames, IdCaptureWizardColors, IdCaptureWizardVerbiage } from '../id_capture/IdCaptureWizard';
@@ -95,6 +95,7 @@ export interface CustomerEnrollmentProps extends PropsWithChildren {
95
95
  faceLivenessTimeoutDurationMs?: number;
96
96
  /** Boolean or async function to indicate whether to proceed automatically after capture guidance is satisfied. If an async function is supplied returning a boolean, it will be evaluated at the time of capture guidance satisfaction. Defaults to `false`. */
97
97
  skipSuccessScreen?: boolean | (() => Promise<boolean>);
98
+ idCaptureInstructions?: ReactNode;
98
99
  /** Callback function that fires immediately prior to submission, giving the client application an opportunity to specify custom asynchronous logic that mutates the request before it executes. The submission request is passed in as a parameter and a promise resolving to the updated request should be returned. */
99
100
  onBeforeSubmit?: (req: SubmissionRequest) => Promise<SubmissionRequest>;
100
101
  /** Callback function that fires when the user has completed the flow instead of making a call to IDmission's servers, allowing customers to specify their own submission logic. Arguments: the request payload that would have been dispatched to IDmission's API, which contains the images/documents/video submitted by the user. Note that when this parameter is supplied, `onComplete` will never fire, and the customer will need to implement their own error handling/retry logic. Use at your own risk! */
@@ -1,4 +1,4 @@
1
- import { FC, PropsWithChildren } from 'react';
1
+ import { FC, PropsWithChildren, ReactNode } from 'react';
2
2
  import { CardData, LivenessCheckRequest, PersonalData, SubmissionRequest, SubmissionResponse } from '../../contexts/SubmissionContext';
3
3
  import { FaceLivenessAssets, FaceLivenessClassNames, FaceLivenessColors, FaceLivenessVerbiage } from '../face_liveness/FaceLivenessWizard';
4
4
  import { IdCaptureWizardAssets, IdCaptureWizardClassNames, IdCaptureWizardColors, IdCaptureWizardVerbiage } from '../id_capture/IdCaptureWizard';
@@ -92,6 +92,8 @@ export interface IdAndFaceValidationProps extends PropsWithChildren {
92
92
  faceLivenessTimeoutDurationMs?: number;
93
93
  /** Boolean or async function to indicate whether to proceed automatically after capture guidance is satisfied. If an async function is supplied returning a boolean, it will be evaluated at the time of capture guidance satisfaction. Defaults to `false`. */
94
94
  skipSuccessScreen?: boolean | (() => Promise<boolean>);
95
+ /** React element or string to render on the instructions screen. */
96
+ idCaptureInstructions?: ReactNode;
95
97
  /** Callback function that fires immediately prior to liveness check, giving the client application an opportunity to specify custom asynchronous logic that mutates the request before it executes. The liveness check request is passed in as a parameter and a promise resolving to the updated request should be returned. */
96
98
  onBeforeLivenessCheck?: (req: LivenessCheckRequest) => Promise<LivenessCheckRequest>;
97
99
  /** Callback function that fires immediately prior to submission, giving the client application an opportunity to specify custom asynchronous logic that mutates the request before it executes. The submission request is passed in as a parameter and a promise resolving to the updated request should be returned. */
@@ -1,4 +1,4 @@
1
- import { FC, PropsWithChildren } from 'react';
1
+ import { FC, PropsWithChildren, ReactNode } from 'react';
2
2
  import { CardData, PersonalData, SubmissionRequest, SubmissionResponse } from '../../contexts/SubmissionContext';
3
3
  import { IdCaptureWizardAssets, IdCaptureWizardClassNames, IdCaptureWizardColors, IdCaptureWizardVerbiage } from '../id_capture/IdCaptureWizard';
4
4
  import { AdditionalDocumentCaptureWizardClassNames, AdditionalDocumentCaptureWizardVerbiage } from '../additional_document_capture/AdditionalDocumentCaptureWizard';
@@ -74,6 +74,8 @@ export interface IdValidationProps extends PropsWithChildren {
74
74
  passportFocusScoreThreshold?: number;
75
75
  /** Boolean or async function to indicate whether to proceed automatically after capture guidance is satisfied. If an async function is supplied returning a boolean, it will be evaluated at the time of capture guidance satisfaction. Defaults to `false`. */
76
76
  skipSuccessScreen?: boolean | (() => Promise<boolean>);
77
+ /** React element or string to render on the instructions screen. */
78
+ instructions?: ReactNode;
77
79
  /** Object to allow documents that have been previously captured to be submitted. Valid keys: `idCardFront`, `idCardBack , `passport`.*/
78
80
  precapturedDocuments?: CapturedDocuments;
79
81
  /** Callback function that fires immediately prior to submission, giving the client application an opportunity to specify custom asynchronous logic that mutates the request before it executes. The submission request is passed in as a parameter and a promise resolving to the updated request should be returned. */
@@ -1,4 +1,4 @@
1
- import { ReactElement } from 'react';
1
+ import { ReactElement, ReactNode } from 'react';
2
2
  import { CameraAccessDeniedOverlayAssets, CameraAccessDeniedOverlayClassNames, CameraAccessDeniedOverlayColors, CameraAccessDeniedOverlayVerbiage } from '../camera/CameraAccessDeniedOverlay';
3
3
  import { LoaderButtonColors } from '../common/LoaderButton';
4
4
  import { CustomerSuppliedVerbiage } from '../../lib/locales';
@@ -34,9 +34,10 @@ export type IdCaptureLoadingOverlayVerbiage = {
34
34
  export type IdCaptureLoadingOverlayProps = {
35
35
  onDismissed?: () => void;
36
36
  onUserCancel?: () => void;
37
+ instructions?: ReactNode;
37
38
  assets?: IdCaptureLoadingOverlayAssets;
38
39
  classNames?: IdCaptureLoadingOverlayClassNames;
39
40
  colors?: IdCaptureLoadingOverlayColors;
40
41
  verbiage?: IdCaptureLoadingOverlayVerbiage;
41
42
  };
42
- export declare const IdCaptureLoadingOverlay: ({ onDismissed, onUserCancel, assets, classNames, colors, verbiage: rawVerbiage, }: IdCaptureLoadingOverlayProps) => ReactElement;
43
+ export declare const IdCaptureLoadingOverlay: ({ onDismissed, onUserCancel, instructions, assets, classNames, colors, verbiage: rawVerbiage, }: IdCaptureLoadingOverlayProps) => ReactElement;
@@ -1,4 +1,4 @@
1
- import { ReactElement } from 'react';
1
+ import { ReactElement, ReactNode } from 'react';
2
2
  import { IdCaptureAssets, IdCaptureClassNames, IdCaptureColors, IdCaptureVerbiage } from './IdCapture';
3
3
  import { IdCaptureLoadingOverlayAssets, IdCaptureLoadingOverlayClassNames, IdCaptureLoadingOverlayColors, IdCaptureLoadingOverlayVerbiage } from './IdCaptureLoadingOverlay';
4
4
  import { FlipIdPromptAssets, FlipIdPromptClassNames, FlipIdPromptVerbiage } from './FlipIdPrompt';
@@ -59,6 +59,7 @@ export type IdCaptureWizardProps = {
59
59
  idCardFocusScoreThreshold?: number;
60
60
  passportFocusScoreThreshold?: number;
61
61
  skipSuccessScreen?: boolean | (() => Promise<boolean>);
62
+ instructions?: ReactNode;
62
63
  releaseCameraAccessOnExit?: boolean;
63
64
  assets?: IdCaptureWizardAssets;
64
65
  classNames?: IdCaptureWizardClassNames;
@@ -66,4 +67,4 @@ export type IdCaptureWizardProps = {
66
67
  verbiage?: IdCaptureWizardVerbiage;
67
68
  debugMode?: boolean;
68
69
  };
69
- export declare const IdCaptureWizard: ({ onSuccess, onExitCapture, onUserCancel, precapturedDocuments, captureRequirement, autoCaptureEnabled, autoCaptureGoodFramesRequired, autoCaptureBarcodeRequired, barcodeScanningEnabled, idCardAutoCaptureScoreThreshold, passportAutoCaptureScoreThreshold, mrzDetectionScoreThreshold, idCardFocusScoreThreshold, passportFocusScoreThreshold, skipSuccessScreen, releaseCameraAccessOnExit, assets, classNames, colors, verbiage, debugMode, }: IdCaptureWizardProps) => ReactElement;
70
+ export declare const IdCaptureWizard: ({ onSuccess, onExitCapture, onUserCancel, precapturedDocuments, captureRequirement, autoCaptureEnabled, autoCaptureGoodFramesRequired, autoCaptureBarcodeRequired, barcodeScanningEnabled, idCardAutoCaptureScoreThreshold, passportAutoCaptureScoreThreshold, mrzDetectionScoreThreshold, idCardFocusScoreThreshold, passportFocusScoreThreshold, skipSuccessScreen, instructions, releaseCameraAccessOnExit, assets, classNames, colors, verbiage, debugMode, }: IdCaptureWizardProps) => ReactElement;
@@ -47,7 +47,7 @@ var LanguageDetector__default = /*#__PURE__*/_interopDefaultLegacy(LanguageDetec
47
47
  var i18n__default = /*#__PURE__*/_interopDefaultLegacy(i18n);
48
48
  var SignatureCanvas__default = /*#__PURE__*/_interopDefaultLegacy(SignatureCanvas);
49
49
 
50
- var webSdkVersion = '1.0.123';
50
+ var webSdkVersion = '1.0.125';
51
51
 
52
52
  function getPlatform() {
53
53
  if (typeof window === 'undefined') return;
@@ -8709,6 +8709,10 @@ var DEFAULT_CDN_URL = 'https://websdk-cdn-dev.idmission.com/assets';
8709
8709
  function getFrameDimensions(frame) {
8710
8710
  var frameWidth = frame.width,
8711
8711
  frameHeight = frame.height;
8712
+ if (frame instanceof HTMLImageElement) {
8713
+ frameWidth = frame.naturalWidth;
8714
+ frameHeight = frame.naturalHeight;
8715
+ }
8712
8716
  if (frame instanceof HTMLVideoElement) {
8713
8717
  frameWidth = frame.videoWidth;
8714
8718
  frameHeight = frame.videoHeight;
@@ -10241,6 +10245,7 @@ var ContinuityCameraCheckbox = styled__default['default'].input(templateObject_2
10241
10245
  var IdCaptureLoadingOverlay = function IdCaptureLoadingOverlay(_a) {
10242
10246
  var onDismissed = _a.onDismissed,
10243
10247
  onUserCancel = _a.onUserCancel,
10248
+ instructions = _a.instructions,
10244
10249
  _b = _a.assets,
10245
10250
  assets = _b === void 0 ? {} : _b,
10246
10251
  _c = _a.classNames,
@@ -10304,7 +10309,7 @@ var IdCaptureLoadingOverlay = function IdCaptureLoadingOverlay(_a) {
10304
10309
  alt: verbiage.headingText,
10305
10310
  src: assets.instructionImageUrl,
10306
10311
  className: classNames.image
10307
- })), /*#__PURE__*/React__default['default'].createElement(ContinuityCameraCheckboxContainer, {
10312
+ })), instructions, /*#__PURE__*/React__default['default'].createElement(ContinuityCameraCheckboxContainer, {
10308
10313
  className: classNames.continuityCameraCheckboxContainer
10309
10314
  }, iphoneContinuityCameraAvailable && ( /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(ContinuityCameraCheckbox, {
10310
10315
  className: classNames.continuityCameraCheckbox,
@@ -10566,29 +10571,24 @@ var CapturedImage = function CapturedImage(_a) {
10566
10571
  var alt = _a.alt,
10567
10572
  className = _a.className,
10568
10573
  image = _a.image;
10569
- var canvasRef = React.useRef(null);
10570
10574
  var _b = React.useState(image.imageData),
10571
10575
  url = _b[0],
10572
10576
  setUrl = _b[1];
10573
- React.useEffect(function () {
10574
- if (!image.boundingBox) return;
10575
- var im = new Image();
10576
- im.onload = function () {
10577
- cropToBoundingBox(im, image.boundingBox, canvasRef.current);
10578
- setUrl(canvasRef.current.toDataURL());
10579
- };
10580
- im.onerror = function (e) {
10581
- console.error('failed to load image', e);
10582
- };
10583
- im.src = image.imageData;
10584
- }, [image.boundingBox, image.height, image.imageData, image.width]);
10585
- return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(CropCanvas, {
10586
- ref: canvasRef
10587
- }), /*#__PURE__*/React__default['default'].createElement(StyledImage, {
10577
+ var _c = React.useState(false),
10578
+ cropped = _c[0],
10579
+ setCropped = _c[1];
10580
+ var bbox = image.boundingBox;
10581
+ function onLoaded(e) {
10582
+ if (!bbox || cropped) return;
10583
+ setCropped(true);
10584
+ setUrl(cropToBoundingBox(e.currentTarget, bbox).toDataURL());
10585
+ }
10586
+ return /*#__PURE__*/React__default['default'].createElement(StyledImage, {
10588
10587
  alt: alt,
10589
10588
  className: className,
10590
- src: url
10591
- }));
10589
+ src: url,
10590
+ onLoad: onLoaded
10591
+ });
10592
10592
  };
10593
10593
  var Heading$9 = styled__default['default'].h1(templateObject_2$d || (templateObject_2$d = tslib.__makeTemplateObject(["\n margin-bottom: 12px;\n"], ["\n margin-bottom: 12px;\n"])));
10594
10594
  var ImagesContainer = styled__default['default'](OverlayImageContainer)(templateObject_3$a || (templateObject_3$a = tslib.__makeTemplateObject(["\n overflow-y: auto;\n"], ["\n overflow-y: auto;\n"])));
@@ -10599,9 +10599,8 @@ var CapturedImageWrapper = styled__default['default'].div(templateObject_7$1 ||
10599
10599
  var _a, _b, _c;
10600
10600
  return (_c = (_b = (_a = props.theme.idCapture) === null || _a === void 0 ? void 0 : _a.success) === null || _b === void 0 ? void 0 : _b.imageBorderColor) !== null && _c !== void 0 ? _c : 'var(--idm-color-primary-400)';
10601
10601
  });
10602
- var CropCanvas = styled__default['default'].canvas(templateObject_8 || (templateObject_8 = tslib.__makeTemplateObject(["\n display: none;\n"], ["\n display: none;\n"])));
10603
- var StyledImage = styled__default['default'].img(templateObject_9 || (templateObject_9 = tslib.__makeTemplateObject(["\n width: 100%;\n border-radius: 4px;\n"], ["\n width: 100%;\n border-radius: 4px;\n"])));
10604
- var templateObject_1$k, templateObject_2$d, templateObject_3$a, templateObject_4$6, templateObject_5$4, templateObject_6$3, templateObject_7$1, templateObject_8, templateObject_9;
10602
+ var StyledImage = styled__default['default'].img(templateObject_8 || (templateObject_8 = tslib.__makeTemplateObject(["\n width: 100%;\n border-radius: 4px;\n"], ["\n width: 100%;\n border-radius: 4px;\n"])));
10603
+ var templateObject_1$k, templateObject_2$d, templateObject_3$a, templateObject_4$6, templateObject_5$4, templateObject_6$3, templateObject_7$1, templateObject_8;
10605
10604
 
10606
10605
  var CameraVideoTag = function CameraVideoTag(_a) {
10607
10606
  var _b;
@@ -10918,6 +10917,7 @@ var IdCaptureWizard = function IdCaptureWizard(_a) {
10918
10917
  passportFocusScoreThreshold = _x === void 0 ? 0.3 : _x,
10919
10918
  _y = _a.skipSuccessScreen,
10920
10919
  skipSuccessScreen = _y === void 0 ? false : _y,
10920
+ instructions = _a.instructions,
10921
10921
  _z = _a.releaseCameraAccessOnExit,
10922
10922
  releaseCameraAccessOnExit = _z === void 0 ? true : _z,
10923
10923
  _0 = _a.assets,
@@ -11155,6 +11155,7 @@ var IdCaptureWizard = function IdCaptureWizard(_a) {
11155
11155
  }
11156
11156
  }(), !overlayDismissed && ( /*#__PURE__*/React__default['default'].createElement(IdCaptureLoadingOverlay, {
11157
11157
  key: attempt,
11158
+ instructions: instructions,
11158
11159
  assets: assets.loadingOverlay,
11159
11160
  classNames: classNames.loadingOverlay,
11160
11161
  colors: colors.loadingOverlay,
@@ -14443,6 +14444,7 @@ var IdValidation = function IdValidation(_a) {
14443
14444
  passportFocusScoreThreshold = _h === void 0 ? 0.3 : _h,
14444
14445
  _j = _a.skipSuccessScreen,
14445
14446
  skipSuccessScreen = _j === void 0 ? false : _j,
14447
+ instructions = _a.instructions,
14446
14448
  onBeforeSubmit = _a.onBeforeSubmit,
14447
14449
  onSubmit = _a.onSubmit,
14448
14450
  onComplete = _a.onComplete,
@@ -14487,13 +14489,14 @@ var IdValidation = function IdValidation(_a) {
14487
14489
  passportFocusScoreThreshold: passportFocusScoreThreshold,
14488
14490
  barcodeScanningEnabled: false,
14489
14491
  skipSuccessScreen: skipSuccessScreen,
14492
+ instructions: instructions,
14490
14493
  assets: assets,
14491
14494
  classNames: classNames,
14492
14495
  colors: colors,
14493
14496
  verbiage: verbiage,
14494
14497
  debugMode: debugMode
14495
14498
  };
14496
- }, [onExitCapture, onUserCancel, precapturedDocuments, idCaptureRequirement, idAutoCaptureEnabled, idCardAutoCaptureScoreThreshold, passportAutoCaptureScoreThreshold, idCardFocusScoreThreshold, passportFocusScoreThreshold, skipSuccessScreen, assets, classNames, colors, verbiage, debugMode]);
14499
+ }, [onExitCapture, onUserCancel, precapturedDocuments, idCaptureRequirement, idAutoCaptureEnabled, idCardAutoCaptureScoreThreshold, passportAutoCaptureScoreThreshold, idCardFocusScoreThreshold, passportFocusScoreThreshold, skipSuccessScreen, instructions, assets, classNames, colors, verbiage, debugMode]);
14497
14500
  var additionalDocumentCaptureProps = React.useMemo(function () {
14498
14501
  return {
14499
14502
  documents: captureAdditionalDocuments,
@@ -14687,6 +14690,7 @@ var IdAndFaceValidation = function IdAndFaceValidation(_a) {
14687
14690
  faceLivenessTimeoutDurationMs = _k === void 0 ? 15000 : _k,
14688
14691
  _l = _a.skipSuccessScreen,
14689
14692
  skipSuccessScreen = _l === void 0 ? false : _l,
14693
+ idCaptureInstructions = _a.idCaptureInstructions,
14690
14694
  onBeforeLivenessCheck = _a.onBeforeLivenessCheck,
14691
14695
  onBeforeSubmit = _a.onBeforeSubmit,
14692
14696
  onSubmit = _a.onSubmit,
@@ -14735,10 +14739,11 @@ var IdAndFaceValidation = function IdAndFaceValidation(_a) {
14735
14739
  mrzDetectionScoreThreshold: mrzDetectionScoreThreshold,
14736
14740
  idCardFocusScoreThreshold: idCardFocusScoreThreshold,
14737
14741
  passportFocusScoreThreshold: passportFocusScoreThreshold,
14742
+ instructions: idCaptureInstructions,
14738
14743
  skipSuccessScreen: skipSuccessScreen,
14739
14744
  debugMode: debugMode
14740
14745
  };
14741
- }, [assets.idCapture, classNames.idCapture, colors.idCapture, debugMode, idAutoCaptureEnabled, idCaptureRequirement, idCardAutoCaptureScoreThreshold, idCardFocusScoreThreshold, mrzDetectionScoreThreshold, onExitCapture, onUserCancel, passportAutoCaptureScoreThreshold, passportFocusScoreThreshold, precapturedDocuments, skipSuccessScreen, verbiage.idCapture]);
14746
+ }, [assets.idCapture, classNames.idCapture, colors.idCapture, debugMode, idAutoCaptureEnabled, idCaptureInstructions, idCaptureRequirement, idCardAutoCaptureScoreThreshold, idCardFocusScoreThreshold, mrzDetectionScoreThreshold, onExitCapture, onUserCancel, passportAutoCaptureScoreThreshold, passportFocusScoreThreshold, precapturedDocuments, skipSuccessScreen, verbiage.idCapture]);
14742
14747
  var faceLivenessProps = React.useMemo(function () {
14743
14748
  return {
14744
14749
  timeoutDurationMs: faceLivenessTimeoutDurationMs,
@@ -14875,6 +14880,7 @@ var CustomerIdAndBiometricsEnrollment = function CustomerIdAndBiometricsEnrollme
14875
14880
  faceLivenessTimeoutDurationMs = _k === void 0 ? 15000 : _k,
14876
14881
  _l = _a.skipSuccessScreen,
14877
14882
  skipSuccessScreen = _l === void 0 ? false : _l,
14883
+ idCaptureInstructions = _a.idCaptureInstructions,
14878
14884
  onBeforeSubmit = _a.onBeforeSubmit,
14879
14885
  onSubmit = _a.onSubmit,
14880
14886
  onComplete = _a.onComplete,
@@ -14919,12 +14925,13 @@ var CustomerIdAndBiometricsEnrollment = function CustomerIdAndBiometricsEnrollme
14919
14925
  mrzDetectionScoreThreshold: mrzDetectionScoreThreshold,
14920
14926
  idCardFocusScoreThreshold: idCardFocusScoreThreshold,
14921
14927
  passportFocusScoreThreshold: passportFocusScoreThreshold,
14928
+ instructions: idCaptureInstructions,
14922
14929
  onExitCapture: onExitCapture,
14923
14930
  onUserCancel: onUserCancel,
14924
14931
  skipSuccessScreen: skipSuccessScreen,
14925
14932
  debugMode: debugMode
14926
14933
  };
14927
- }, [assets.idCapture, classNames.idCapture, colors.idCapture, debugMode, idAutoCaptureEnabled, idCaptureRequirement, idCardAutoCaptureScoreThreshold, idCardFocusScoreThreshold, mrzDetectionScoreThreshold, onExitCapture, onUserCancel, passportAutoCaptureScoreThreshold, passportFocusScoreThreshold, skipSuccessScreen, verbiage.idCapture]);
14934
+ }, [assets.idCapture, classNames.idCapture, colors.idCapture, debugMode, idAutoCaptureEnabled, idCaptureInstructions, idCaptureRequirement, idCardAutoCaptureScoreThreshold, idCardFocusScoreThreshold, mrzDetectionScoreThreshold, onExitCapture, onUserCancel, passportAutoCaptureScoreThreshold, passportFocusScoreThreshold, skipSuccessScreen, verbiage.idCapture]);
14928
14935
  var faceLivenessProps = React.useMemo(function () {
14929
14936
  return {
14930
14937
  onExitCapture: onExitCapture,