idmission-web-sdk 1.0.13 → 1.0.14
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/dist/components/fallback_flows/SelfieCapture.d.ts +21 -0
- package/dist/components/id_capture/IdCaptureWizard.d.ts +3 -0
- package/dist/components/selfie_capture/HighPerformanceSelfieGuidanceModelsProvider.d.ts +1 -0
- package/dist/sdk2.cjs.development.js +168 -46
- package/dist/sdk2.cjs.development.js.map +1 -1
- package/dist/sdk2.cjs.production.js +1 -1
- package/dist/sdk2.cjs.production.js.map +1 -1
- package/dist/sdk2.esm.js +168 -46
- package/dist/sdk2.esm.js.map +1 -1
- package/dist/sdk2.umd.development.js +168 -46
- package/dist/sdk2.umd.development.js.map +1 -1
- package/dist/sdk2.umd.production.js +1 -1
- package/dist/sdk2.umd.production.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/package.json +1 -1
- package/dist/components/common/ModelLoadingErrorOverlay.d.ts +0 -5
package/dist/sdk2.esm.js
CHANGED
|
@@ -14,7 +14,7 @@ import { FaceDetector, FilesetResolver } from '@mediapipe/tasks-vision';
|
|
|
14
14
|
import SignatureCanvas from 'react-signature-canvas';
|
|
15
15
|
import ReactDOM, { createPortal } from 'react-dom';
|
|
16
16
|
|
|
17
|
-
var webSdkVersion = '1.0.
|
|
17
|
+
var webSdkVersion = '1.0.14';
|
|
18
18
|
|
|
19
19
|
function getPlatform() {
|
|
20
20
|
return window.platform;
|
|
@@ -10415,7 +10415,9 @@ var IdCaptureWizard = function IdCaptureWizard(_a) {
|
|
|
10415
10415
|
imageData: imageData
|
|
10416
10416
|
}
|
|
10417
10417
|
});
|
|
10418
|
-
}
|
|
10418
|
+
},
|
|
10419
|
+
colors: colors.fallback,
|
|
10420
|
+
verbiage: verbiage.fallback
|
|
10419
10421
|
});
|
|
10420
10422
|
}
|
|
10421
10423
|
return /*#__PURE__*/React__default.createElement(PageContainer, {
|
|
@@ -10534,23 +10536,6 @@ var FaceCaptureGuideOverlay = function FaceCaptureGuideOverlay(_a) {
|
|
|
10534
10536
|
}));
|
|
10535
10537
|
};
|
|
10536
10538
|
|
|
10537
|
-
var ModelLoadingErrorOverlay = function ModelLoadingErrorOverlay(_a) {
|
|
10538
|
-
var error = _a.error;
|
|
10539
|
-
return /*#__PURE__*/React__default.createElement(OverlayContainer, null, /*#__PURE__*/React__default.createElement(OverlayInner, {
|
|
10540
|
-
style: {
|
|
10541
|
-
justifyContent: 'center'
|
|
10542
|
-
}
|
|
10543
|
-
}, /*#__PURE__*/React__default.createElement("h3", {
|
|
10544
|
-
style: {
|
|
10545
|
-
marginBottom: 8
|
|
10546
|
-
}
|
|
10547
|
-
}, "We're sorry, an unexpected error has occurred."), /*#__PURE__*/React__default.createElement("p", {
|
|
10548
|
-
style: {
|
|
10549
|
-
marginBottom: 0
|
|
10550
|
-
}
|
|
10551
|
-
}, /*#__PURE__*/React__default.createElement("code", null, error.message))));
|
|
10552
|
-
};
|
|
10553
|
-
|
|
10554
10539
|
var NUM_KEYPOINTS = 6;
|
|
10555
10540
|
var GREEN = '#32EEDB';
|
|
10556
10541
|
var RED = '#FF2C35';
|
|
@@ -10627,7 +10612,8 @@ var HighPerformanceSelfieGuidanceModelsContext = /*#__PURE__*/createContext({
|
|
|
10627
10612
|
canvasRef: {
|
|
10628
10613
|
current: null
|
|
10629
10614
|
},
|
|
10630
|
-
ready: false
|
|
10615
|
+
ready: false,
|
|
10616
|
+
error: null
|
|
10631
10617
|
});
|
|
10632
10618
|
var HighPerformanceSelfieGuidanceModelsProvider = function HighPerformanceSelfieGuidanceModelsProvider(_a) {
|
|
10633
10619
|
var _b = _a.autoStart,
|
|
@@ -10650,8 +10636,8 @@ var HighPerformanceSelfieGuidanceModelsProvider = function HighPerformanceSelfie
|
|
|
10650
10636
|
var rafId = useRef(0);
|
|
10651
10637
|
var loopId = useRef(0);
|
|
10652
10638
|
var _f = useState(null),
|
|
10653
|
-
|
|
10654
|
-
|
|
10639
|
+
error = _f[0],
|
|
10640
|
+
setError = _f[1];
|
|
10655
10641
|
useEffect(function () {
|
|
10656
10642
|
(function () {
|
|
10657
10643
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
@@ -10670,7 +10656,7 @@ var HighPerformanceSelfieGuidanceModelsProvider = function HighPerformanceSelfie
|
|
|
10670
10656
|
return [3, 4];
|
|
10671
10657
|
case 3:
|
|
10672
10658
|
e_1 = _b.sent();
|
|
10673
|
-
|
|
10659
|
+
setError(e_1);
|
|
10674
10660
|
return [3, 4];
|
|
10675
10661
|
case 4:
|
|
10676
10662
|
setReady(true);
|
|
@@ -10803,14 +10789,13 @@ var HighPerformanceSelfieGuidanceModelsProvider = function HighPerformanceSelfie
|
|
|
10803
10789
|
stop: stop,
|
|
10804
10790
|
ready: ready,
|
|
10805
10791
|
canvasRef: canvasRef,
|
|
10806
|
-
onPredictionMade: onPredictionMade
|
|
10792
|
+
onPredictionMade: onPredictionMade,
|
|
10793
|
+
error: error
|
|
10807
10794
|
};
|
|
10808
|
-
}, [onPredictionMade, ready, start, stop]);
|
|
10795
|
+
}, [error, onPredictionMade, ready, start, stop]);
|
|
10809
10796
|
return /*#__PURE__*/React.createElement(HighPerformanceSelfieGuidanceModelsContext.Provider, {
|
|
10810
10797
|
value: value
|
|
10811
|
-
},
|
|
10812
|
-
error: loadingError
|
|
10813
|
-
}) : children);
|
|
10798
|
+
}, children);
|
|
10814
10799
|
};
|
|
10815
10800
|
|
|
10816
10801
|
var GuidanceMessageContainer = styled.div(templateObject_1$2 || (templateObject_1$2 = __makeTemplateObject(["\n position: absolute;\n top: calc(", ");\n font-weight: bold;\n width: 100%;\n display: flex;\n"], ["\n position: absolute;\n top: calc(", ");\n font-weight: bold;\n width: 100%;\n display: flex;\n"])), function (_a) {
|
|
@@ -10862,6 +10847,89 @@ var useTimeout = function useTimeout(durationMs, onTimeout, timeoutAverted, shou
|
|
|
10862
10847
|
};
|
|
10863
10848
|
};
|
|
10864
10849
|
|
|
10850
|
+
var SelfieCaptureFallback = function SelfieCaptureFallback(_a) {
|
|
10851
|
+
var onFinished = _a.onFinished,
|
|
10852
|
+
onCapture = _a.onCapture,
|
|
10853
|
+
_b = _a.colors,
|
|
10854
|
+
colors = _b === void 0 ? {} : _b,
|
|
10855
|
+
_c = _a.verbiage,
|
|
10856
|
+
rawVerbiage = _c === void 0 ? {} : _c;
|
|
10857
|
+
var _d = useState(null),
|
|
10858
|
+
image = _d[0],
|
|
10859
|
+
setImage = _d[1];
|
|
10860
|
+
var fileInput = useRef(null);
|
|
10861
|
+
var _e = useState(false),
|
|
10862
|
+
loading = _e[0],
|
|
10863
|
+
setLoading = _e[1];
|
|
10864
|
+
var verbiage = useTranslations(rawVerbiage, {
|
|
10865
|
+
headingText: "We're having some trouble.",
|
|
10866
|
+
descriptionText: 'On-device capture guidance failed, please capture a selfie manually.',
|
|
10867
|
+
captureBtnText: 'Capture',
|
|
10868
|
+
doneBtnText: 'Done',
|
|
10869
|
+
doneBtnLoadingText: 'Verifying...'
|
|
10870
|
+
});
|
|
10871
|
+
return /*#__PURE__*/React__default.createElement(OverlayContainer, null, /*#__PURE__*/React__default.createElement(OverlayInner, {
|
|
10872
|
+
style: {
|
|
10873
|
+
justifyContent: 'center'
|
|
10874
|
+
}
|
|
10875
|
+
}, /*#__PURE__*/React__default.createElement("h3", {
|
|
10876
|
+
style: {
|
|
10877
|
+
marginBottom: 8
|
|
10878
|
+
}
|
|
10879
|
+
}, verbiage.headingText), /*#__PURE__*/React__default.createElement("p", {
|
|
10880
|
+
style: {
|
|
10881
|
+
marginBottom: 8
|
|
10882
|
+
}
|
|
10883
|
+
}, verbiage.descriptionText), image && /*#__PURE__*/React__default.createElement(OverlayImageWrapper, {
|
|
10884
|
+
style: {
|
|
10885
|
+
marginTop: 32
|
|
10886
|
+
}
|
|
10887
|
+
}, /*#__PURE__*/React__default.createElement("img", {
|
|
10888
|
+
src: image,
|
|
10889
|
+
alt: ""
|
|
10890
|
+
})), /*#__PURE__*/React__default.createElement("input", {
|
|
10891
|
+
ref: fileInput,
|
|
10892
|
+
type: "file",
|
|
10893
|
+
accept: "image/*",
|
|
10894
|
+
hidden: true,
|
|
10895
|
+
onChange: function onChange(e) {
|
|
10896
|
+
var _a;
|
|
10897
|
+
var file = (_a = e.target.files) === null || _a === void 0 ? void 0 : _a[0];
|
|
10898
|
+
if (!file) return;
|
|
10899
|
+
var reader = new FileReader();
|
|
10900
|
+
reader.addEventListener('load', function (e) {
|
|
10901
|
+
var _a;
|
|
10902
|
+
var imageData = (_a = e.target) === null || _a === void 0 ? void 0 : _a.result;
|
|
10903
|
+
setImage(imageData);
|
|
10904
|
+
onCapture === null || onCapture === void 0 ? void 0 : onCapture(imageData);
|
|
10905
|
+
});
|
|
10906
|
+
reader.readAsDataURL(file);
|
|
10907
|
+
}
|
|
10908
|
+
}), /*#__PURE__*/React__default.createElement("div", {
|
|
10909
|
+
style: {
|
|
10910
|
+
marginTop: 32
|
|
10911
|
+
}
|
|
10912
|
+
}, !image && /*#__PURE__*/React__default.createElement(LoaderButton, {
|
|
10913
|
+
colors: colors.captureBtn,
|
|
10914
|
+
finished: true,
|
|
10915
|
+
onClick: function onClick() {
|
|
10916
|
+
var _a;
|
|
10917
|
+
(_a = fileInput.current) === null || _a === void 0 ? void 0 : _a.click();
|
|
10918
|
+
}
|
|
10919
|
+
}, verbiage.captureBtnText), image && /*#__PURE__*/React__default.createElement(LoaderButton, {
|
|
10920
|
+
key: loading ? 'loading-btn' : 'ready-btn',
|
|
10921
|
+
colors: colors.doneBtn,
|
|
10922
|
+
finished: !loading,
|
|
10923
|
+
onClick: function onClick() {
|
|
10924
|
+
setLoading(true);
|
|
10925
|
+
onFinished === null || onFinished === void 0 ? void 0 : onFinished(image);
|
|
10926
|
+
},
|
|
10927
|
+
style: {
|
|
10928
|
+
marginLeft: 12
|
|
10929
|
+
}
|
|
10930
|
+
}, loading ? verbiage.doneBtnLoadingText : verbiage.doneBtnText))));
|
|
10931
|
+
};
|
|
10932
|
+
|
|
10865
10933
|
var initialState$3 = {
|
|
10866
10934
|
videoWidth: 0,
|
|
10867
10935
|
videoHeight: 0,
|
|
@@ -10986,7 +11054,9 @@ var SelfieCapture = function SelfieCapture(_a) {
|
|
|
10986
11054
|
cameraRef = _l.cameraRef,
|
|
10987
11055
|
cameraReady = _l.cameraReady,
|
|
10988
11056
|
videoRef = _l.videoRef;
|
|
10989
|
-
var
|
|
11057
|
+
var _m = useContext(HighPerformanceSelfieGuidanceModelsContext),
|
|
11058
|
+
onPredictionMade = _m.onPredictionMade,
|
|
11059
|
+
guidanceError = _m.error;
|
|
10990
11060
|
useEffect(function () {
|
|
10991
11061
|
if (cameraReady && videoRef.current && videoRef.current.videoWidth !== 0) {
|
|
10992
11062
|
dispatch({
|
|
@@ -11008,9 +11078,9 @@ var SelfieCapture = function SelfieCapture(_a) {
|
|
|
11008
11078
|
});
|
|
11009
11079
|
});
|
|
11010
11080
|
}, [onPredictionMade]);
|
|
11011
|
-
var
|
|
11012
|
-
captureReady =
|
|
11013
|
-
setCaptureReady =
|
|
11081
|
+
var _o = useState(false),
|
|
11082
|
+
captureReady = _o[0],
|
|
11083
|
+
setCaptureReady = _o[1];
|
|
11014
11084
|
useEffect(function () {
|
|
11015
11085
|
var timer;
|
|
11016
11086
|
if (state.faceReady) {
|
|
@@ -11043,9 +11113,9 @@ var SelfieCapture = function SelfieCapture(_a) {
|
|
|
11043
11113
|
});
|
|
11044
11114
|
})();
|
|
11045
11115
|
}, [captureReady, onSelfieCaptured, state.faces, videoRef]);
|
|
11046
|
-
var
|
|
11047
|
-
timedOut =
|
|
11048
|
-
timeoutStartedAt =
|
|
11116
|
+
var _p = useTimeout(timeoutDurationMs, onTimeout),
|
|
11117
|
+
timedOut = _p.timedOut,
|
|
11118
|
+
timeoutStartedAt = _p.timeoutStartedAt;
|
|
11049
11119
|
var debugScalingDetails = useDebugScalingDetails({
|
|
11050
11120
|
enabled: debugMode,
|
|
11051
11121
|
pageWidth: width,
|
|
@@ -11069,6 +11139,9 @@ var SelfieCapture = function SelfieCapture(_a) {
|
|
|
11069
11139
|
guidanceMessage || (guidanceMessage = state.faceReady ? verbiage.guidanceHoldStillText : state.faceLookingAway ? verbiage.guidanceLookStraightText : state.faceTooClose ? verbiage.guidanceMoveBackText : state.faceTooFar ? verbiage.guidanceMoveForwardText : state.faceNotCentered ? verbiage.guidanceMoveToCenterText : '');
|
|
11070
11140
|
var satisfied = state.faceReady;
|
|
11071
11141
|
if (typeof guidanceSatisfied === 'boolean') satisfied = guidanceSatisfied;
|
|
11142
|
+
if (guidanceError) {
|
|
11143
|
+
return /*#__PURE__*/React__default.createElement(SelfieCaptureFallback, null);
|
|
11144
|
+
}
|
|
11072
11145
|
return /*#__PURE__*/React__default.createElement(PageContainer, {
|
|
11073
11146
|
ref: ref,
|
|
11074
11147
|
className: "flex"
|
|
@@ -11109,6 +11182,7 @@ var initialState$2 = {
|
|
|
11109
11182
|
timesLivenessCheckFailed: 0
|
|
11110
11183
|
};
|
|
11111
11184
|
var reducer$2 = function reducer(state, action) {
|
|
11185
|
+
var _a, _b;
|
|
11112
11186
|
switch (action.type) {
|
|
11113
11187
|
case 'livenessReady':
|
|
11114
11188
|
{
|
|
@@ -11129,12 +11203,12 @@ var reducer$2 = function reducer(state, action) {
|
|
|
11129
11203
|
});
|
|
11130
11204
|
case 'livenessChecked':
|
|
11131
11205
|
{
|
|
11132
|
-
var
|
|
11133
|
-
|
|
11134
|
-
statusCode =
|
|
11135
|
-
statusMessage =
|
|
11136
|
-
errorData =
|
|
11137
|
-
resultData =
|
|
11206
|
+
var _c = action.payload.response,
|
|
11207
|
+
_d = _c.status,
|
|
11208
|
+
statusCode = _d.statusCode,
|
|
11209
|
+
statusMessage = _d.statusMessage,
|
|
11210
|
+
errorData = _d.errorData,
|
|
11211
|
+
resultData = _c.resultData;
|
|
11138
11212
|
if (statusCode !== '000') {
|
|
11139
11213
|
return __assign(__assign({}, state), {
|
|
11140
11214
|
requestState: 'ERROR',
|
|
@@ -11155,8 +11229,8 @@ var reducer$2 = function reducer(state, action) {
|
|
|
11155
11229
|
timesLivenessCheckFailed += 1;
|
|
11156
11230
|
}
|
|
11157
11231
|
return __assign(__assign({}, state), {
|
|
11158
|
-
frame: action.payload.frame,
|
|
11159
|
-
face: action.payload.face,
|
|
11232
|
+
frame: (_a = action.payload.frame) !== null && _a !== void 0 ? _a : null,
|
|
11233
|
+
face: (_b = action.payload.face) !== null && _b !== void 0 ? _b : null,
|
|
11160
11234
|
imageUrl: action.payload.imageUrl,
|
|
11161
11235
|
requestState: requestState,
|
|
11162
11236
|
faceLive: faceLive,
|
|
@@ -11191,6 +11265,7 @@ var FaceLivenessCapture = function FaceLivenessCapture(_a) {
|
|
|
11191
11265
|
var _e = useContext(SubmissionContext),
|
|
11192
11266
|
checkLiveness = _e.checkLiveness,
|
|
11193
11267
|
submissionError = _e.submissionError;
|
|
11268
|
+
var modelsError = useContext(HighPerformanceSelfieGuidanceModelsContext).error;
|
|
11194
11269
|
var _f = useReducer(reducer$2, initialState$2),
|
|
11195
11270
|
state = _f[0],
|
|
11196
11271
|
dispatch = _f[1];
|
|
@@ -11259,21 +11334,68 @@ var FaceLivenessCapture = function FaceLivenessCapture(_a) {
|
|
|
11259
11334
|
});
|
|
11260
11335
|
})();
|
|
11261
11336
|
}, [checkLiveness, face, frame, isReady, submissionError]);
|
|
11337
|
+
var onFallbackImageCaptured = useCallback(function (imageUrl) {
|
|
11338
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
11339
|
+
var response, _a, e_2;
|
|
11340
|
+
return __generator(this, function (_b) {
|
|
11341
|
+
switch (_b.label) {
|
|
11342
|
+
case 0:
|
|
11343
|
+
dispatch({
|
|
11344
|
+
type: 'livenessChecking'
|
|
11345
|
+
});
|
|
11346
|
+
_b.label = 1;
|
|
11347
|
+
case 1:
|
|
11348
|
+
_b.trys.push([1, 4,, 5]);
|
|
11349
|
+
_a = checkLiveness;
|
|
11350
|
+
return [4, dataUrlToBase64(imageUrl)];
|
|
11351
|
+
case 2:
|
|
11352
|
+
return [4, _a.apply(void 0, [_b.sent()])];
|
|
11353
|
+
case 3:
|
|
11354
|
+
response = _b.sent();
|
|
11355
|
+
dispatch({
|
|
11356
|
+
type: 'livenessChecked',
|
|
11357
|
+
payload: {
|
|
11358
|
+
imageUrl: imageUrl,
|
|
11359
|
+
response: response
|
|
11360
|
+
}
|
|
11361
|
+
});
|
|
11362
|
+
return [3, 5];
|
|
11363
|
+
case 4:
|
|
11364
|
+
e_2 = _b.sent();
|
|
11365
|
+
dispatch({
|
|
11366
|
+
type: 'livenessCheckFailed',
|
|
11367
|
+
payload: {
|
|
11368
|
+
error: e_2
|
|
11369
|
+
}
|
|
11370
|
+
});
|
|
11371
|
+
return [3, 5];
|
|
11372
|
+
case 5:
|
|
11373
|
+
return [2];
|
|
11374
|
+
}
|
|
11375
|
+
});
|
|
11376
|
+
});
|
|
11377
|
+
}, [checkLiveness]);
|
|
11262
11378
|
useEffect(function () {
|
|
11263
11379
|
if (isPassed && state.imageUrl) onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(state.imageUrl);
|
|
11264
11380
|
}, [onSuccess, state.imageUrl, isPassed]);
|
|
11265
11381
|
useEffect(function () {
|
|
11266
|
-
|
|
11382
|
+
var allowedFailures = modelsError ? 1 : 2;
|
|
11383
|
+
if (state.timesLivenessCheckFailed >= allowedFailures) {
|
|
11267
11384
|
onTimeout === null || onTimeout === void 0 ? void 0 : onTimeout();
|
|
11268
11385
|
}
|
|
11269
|
-
}, [onTimeout, state.timesLivenessCheckFailed]);
|
|
11270
|
-
useTimeout(timeoutDurationMs, onTimeout, state.requestState === 'PASSED', state.requestState === 'IN_PROGRESS');
|
|
11386
|
+
}, [modelsError, onTimeout, state.timesLivenessCheckFailed]);
|
|
11387
|
+
useTimeout(timeoutDurationMs, onTimeout, state.requestState === 'PASSED' || !!modelsError, state.requestState === 'IN_PROGRESS');
|
|
11271
11388
|
var verbiage = useTranslations(rawVerbiage, {
|
|
11272
11389
|
guidanceRemoveEyeCoveringsText: 'Please remove your eye coverings (sunglasses, eye patch, etc.)...',
|
|
11273
11390
|
guidanceRemoveHeadCoveringsText: 'Please remove your head coverings (hat, scarf, etc.)...',
|
|
11274
11391
|
guidanceRemoveMaskText: 'Please remove your mask...'
|
|
11275
11392
|
});
|
|
11276
11393
|
var guidanceMessage = state.eyeCoveringDetected ? verbiage.guidanceRemoveEyeCoveringsText : state.headCoveringDetected ? verbiage.guidanceRemoveHeadCoveringsText : state.maskDetected ? verbiage.guidanceRemoveMaskText : undefined;
|
|
11394
|
+
if (modelsError) {
|
|
11395
|
+
return /*#__PURE__*/React__default.createElement(SelfieCaptureFallback, {
|
|
11396
|
+
onFinished: onFallbackImageCaptured
|
|
11397
|
+
});
|
|
11398
|
+
}
|
|
11277
11399
|
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(InvisibleCanvas, {
|
|
11278
11400
|
ref: rawCanvas
|
|
11279
11401
|
}), /*#__PURE__*/React__default.createElement(InvisibleCanvas, {
|