idmission-web-sdk 2.2.35 → 2.2.36
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/CompositeWizard.d.ts +1 -2
- package/dist/components/CompositeWizard.d.ts.map +1 -1
- package/dist/components/camera/CameraAccessDeniedOverlay.d.ts.map +1 -1
- package/dist/components/camera/CameraVideoTag.d.ts +2 -4
- package/dist/components/camera/CameraVideoTag.d.ts.map +1 -1
- package/dist/components/camera/MicrophoneAccessDeniedOverlay.d.ts.map +1 -1
- package/dist/components/customer_flows/CustomerBiometricsEnrollment.d.ts.map +1 -1
- package/dist/components/customer_flows/CustomerIdAndBiometricsEnrollment.d.ts.map +1 -1
- package/dist/components/customer_flows/CustomerIdentification.d.ts.map +1 -1
- package/dist/components/customer_flows/CustomerVerification.d.ts.map +1 -1
- package/dist/components/customer_flows/DocumentCapture.d.ts.map +1 -1
- package/dist/components/customer_flows/FaceValidation.d.ts.map +1 -1
- package/dist/components/customer_flows/IdAndFaceValidation.d.ts.map +1 -1
- package/dist/components/customer_flows/IdValidation.d.ts.map +1 -1
- package/dist/components/customer_flows/VideoIdValidation.d.ts.map +1 -1
- package/dist/components/customer_identification/CustomerIdentificationWizard.d.ts +1 -1
- package/dist/components/customer_identification/CustomerIdentificationWizard.d.ts.map +1 -1
- package/dist/components/customer_verification/CustomerVerificationWizard.d.ts.map +1 -1
- package/dist/components/document_capture/DocumentCaptureScreen.d.ts.map +1 -1
- package/dist/components/document_capture/DocumentCaptureStateProvider.d.ts.map +1 -1
- package/dist/components/face_liveness/FaceLivenessWizard.d.ts.map +1 -1
- package/dist/components/id_capture/DocumentDetectionModelProvider.d.ts.map +1 -1
- package/dist/components/id_capture/FocusModelProvider.d.ts.map +1 -1
- package/dist/components/id_capture/IdCapture.d.ts.map +1 -1
- package/dist/components/id_capture/IdCaptureGuides.d.ts.map +1 -1
- package/dist/components/id_capture/IdCaptureLoadingOverlayDefault.d.ts.map +1 -1
- package/dist/components/id_capture/IdCaptureLoadingOverlayLegacy.d.ts.map +1 -1
- package/dist/components/id_capture/IdCaptureWizard.d.ts.map +1 -1
- package/dist/components/selfie_capture/SelfieCapture.d.ts.map +1 -1
- package/dist/components/selfie_capture/SelfieCaptureLoadingOverlayDefault.d.ts.map +1 -1
- package/dist/components/selfie_capture/SelfieCaptureLoadingOverlayLegacy.d.ts.map +1 -1
- package/dist/components/selfie_capture/SelfieGuidanceModelsProvider.d.ts.map +1 -1
- package/dist/components/video_id/IdVideoCapture.d.ts.map +1 -1
- package/dist/components/video_id/IdVideoCaptureFlipIdPrompt.d.ts.map +1 -1
- package/dist/components/video_id/IdVideoCaptureGuides.d.ts.map +1 -1
- package/dist/components/video_id/IdVideoCaptureWizard.d.ts.map +1 -1
- package/dist/components/video_signature_capture/VideoSignatureCapture.d.ts.map +1 -1
- package/dist/components/video_signature_capture/VideoSignatureWizard.d.ts.map +1 -1
- package/dist/lib/camera/Camera.d.ts +4 -0
- package/dist/lib/camera/Camera.d.ts.map +1 -1
- package/dist/lib/camera/cameraStore.d.ts +52 -0
- package/dist/lib/camera/cameraStore.d.ts.map +1 -0
- package/dist/lib/camera/videoRefStack.d.ts +6 -0
- package/dist/lib/camera/videoRefStack.d.ts.map +1 -0
- package/dist/lib/models/DocumentDetection.d.ts +3 -1
- package/dist/lib/models/DocumentDetection.d.ts.map +1 -1
- package/dist/lib/models/FaceDetection.d.ts +3 -1
- package/dist/lib/models/FaceDetection.d.ts.map +1 -1
- package/dist/lib/models/Focus.d.ts +3 -1
- package/dist/lib/models/Focus.d.ts.map +1 -1
- package/dist/sdk2.cjs.development.js +1000 -1082
- 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 +1000 -1082
- package/dist/sdk2.esm.js.map +1 -1
- package/dist/sdk2.umd.development.js +1120 -1085
- 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 +3 -2
- package/dist/components/camera/CameraProvider.d.ts +0 -17
- package/dist/components/camera/CameraProvider.d.ts.map +0 -1
|
@@ -211,7 +211,7 @@
|
|
|
211
211
|
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
212
212
|
};
|
|
213
213
|
|
|
214
|
-
var webSdkVersion = '2.2.
|
|
214
|
+
var webSdkVersion = '2.2.36';
|
|
215
215
|
|
|
216
216
|
function getPlatform() {
|
|
217
217
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
@@ -1088,11 +1088,11 @@
|
|
|
1088
1088
|
if (!allowedAuthUrls.includes(url)) throw new Error('invalid auth url');
|
|
1089
1089
|
exports.defaultAuthUrl = url;
|
|
1090
1090
|
}
|
|
1091
|
-
var initialState$
|
|
1091
|
+
var initialState$6 = {
|
|
1092
1092
|
authUrl: exports.defaultAuthUrl,
|
|
1093
1093
|
sessionCheckState: 'READY'
|
|
1094
1094
|
};
|
|
1095
|
-
var AuthStateContext = /*#__PURE__*/React.createContext(initialState$
|
|
1095
|
+
var AuthStateContext = /*#__PURE__*/React.createContext(initialState$6);
|
|
1096
1096
|
var AuthDispatchContext = /*#__PURE__*/React.createContext(function () {});
|
|
1097
1097
|
var reducer$4 = function reducer(state, action) {
|
|
1098
1098
|
switch (action.type) {
|
|
@@ -1124,7 +1124,7 @@
|
|
|
1124
1124
|
if (authUrl === void 0) {
|
|
1125
1125
|
authUrl = exports.defaultAuthUrl;
|
|
1126
1126
|
}
|
|
1127
|
-
var _a = React.useReducer(reducer$4, _assign(_assign({}, initialState$
|
|
1127
|
+
var _a = React.useReducer(reducer$4, _assign(_assign({}, initialState$6), {
|
|
1128
1128
|
authUrl: authUrl
|
|
1129
1129
|
})),
|
|
1130
1130
|
state = _a[0],
|
|
@@ -3020,624 +3020,22 @@
|
|
|
3020
3020
|
};
|
|
3021
3021
|
}
|
|
3022
3022
|
resizeObserverRef.current.instance.observe(element, {
|
|
3023
|
-
box: opts.box
|
|
3024
|
-
});
|
|
3025
|
-
return function () {
|
|
3026
|
-
if (resizeObserverRef.current) {
|
|
3027
|
-
resizeObserverRef.current.instance.unobserve(element);
|
|
3028
|
-
}
|
|
3029
|
-
};
|
|
3030
|
-
}, [opts.box, round]), opts.ref);
|
|
3031
|
-
return React.useMemo(function () {
|
|
3032
|
-
return {
|
|
3033
|
-
ref: refCallback,
|
|
3034
|
-
width: size.width,
|
|
3035
|
-
height: size.height
|
|
3036
|
-
};
|
|
3037
|
-
}, [refCallback, size.width, size.height]);
|
|
3038
|
-
}
|
|
3039
|
-
|
|
3040
|
-
function getFrameDimensions(frame) {
|
|
3041
|
-
var frameWidth = frame.width,
|
|
3042
|
-
frameHeight = frame.height;
|
|
3043
|
-
if (frame instanceof HTMLImageElement) {
|
|
3044
|
-
frameWidth = frame.naturalWidth;
|
|
3045
|
-
frameHeight = frame.naturalHeight;
|
|
3046
|
-
}
|
|
3047
|
-
if (frame instanceof HTMLVideoElement) {
|
|
3048
|
-
frameWidth = frame.videoWidth;
|
|
3049
|
-
frameHeight = frame.videoHeight;
|
|
3050
|
-
}
|
|
3051
|
-
return [frameWidth, frameHeight];
|
|
3052
|
-
}
|
|
3053
|
-
|
|
3054
|
-
var InvisibleCanvas = styled.canvas(templateObject_1$G || (templateObject_1$G = __makeTemplateObject(["\n display: none;\n"], ["\n display: none;\n"])));
|
|
3055
|
-
function drawToCanvas(canvas, frame, width, height) {
|
|
3056
|
-
if (!canvas) return;
|
|
3057
|
-
var ctx = canvas.getContext('2d');
|
|
3058
|
-
if (!ctx) return;
|
|
3059
|
-
if (!width || !height) {
|
|
3060
|
-
var _a = getFrameDimensions(frame),
|
|
3061
|
-
frameWidth = _a[0],
|
|
3062
|
-
frameHeight = _a[1];
|
|
3063
|
-
width || (width = frameWidth);
|
|
3064
|
-
height || (height = frameHeight);
|
|
3065
|
-
}
|
|
3066
|
-
canvas.width = width;
|
|
3067
|
-
canvas.height = height;
|
|
3068
|
-
ctx.drawImage(frame, 0, 0, width, height);
|
|
3069
|
-
}
|
|
3070
|
-
function clearCanvas(canvas) {
|
|
3071
|
-
var _a;
|
|
3072
|
-
(_a = canvas === null || canvas === void 0 ? void 0 : canvas.getContext('2d')) === null || _a === void 0 ? void 0 : _a.clearRect(0, 0, canvas === null || canvas === void 0 ? void 0 : canvas.width, canvas === null || canvas === void 0 ? void 0 : canvas.height);
|
|
3073
|
-
}
|
|
3074
|
-
var templateObject_1$G;
|
|
3075
|
-
|
|
3076
|
-
function listAvailableCameras(facingMode_1) {
|
|
3077
|
-
return __awaiter(this, arguments, void 0, function (facingMode, requestMicAccess) {
|
|
3078
|
-
var cameraEnumerationStream, videoDevices;
|
|
3079
|
-
if (requestMicAccess === void 0) {
|
|
3080
|
-
requestMicAccess = false;
|
|
3081
|
-
}
|
|
3082
|
-
return __generator(this, function (_a) {
|
|
3083
|
-
switch (_a.label) {
|
|
3084
|
-
case 0:
|
|
3085
|
-
return [4 /*yield*/, navigator.mediaDevices.getUserMedia({
|
|
3086
|
-
video: {
|
|
3087
|
-
facingMode: {
|
|
3088
|
-
exact: facingMode
|
|
3089
|
-
}
|
|
3090
|
-
},
|
|
3091
|
-
audio: requestMicAccess
|
|
3092
|
-
})
|
|
3093
|
-
// This lists all available cameras attached to the user's device.
|
|
3094
|
-
];
|
|
3095
|
-
case 1:
|
|
3096
|
-
cameraEnumerationStream = _a.sent();
|
|
3097
|
-
return [4 /*yield*/, navigator.mediaDevices.enumerateDevices()];
|
|
3098
|
-
case 2:
|
|
3099
|
-
videoDevices = _a.sent().filter(function (_a) {
|
|
3100
|
-
var kind = _a.kind;
|
|
3101
|
-
return kind === 'videoinput';
|
|
3102
|
-
});
|
|
3103
|
-
// Release the access to the user's camera that we obtained for enumeration purposes.
|
|
3104
|
-
cameraEnumerationStream.getVideoTracks().forEach(function (track) {
|
|
3105
|
-
track.enabled = false;
|
|
3106
|
-
track.stop();
|
|
3107
|
-
});
|
|
3108
|
-
cameraEnumerationStream = null;
|
|
3109
|
-
return [2 /*return*/, videoDevices];
|
|
3110
|
-
}
|
|
3111
|
-
});
|
|
3112
|
-
});
|
|
3113
|
-
}
|
|
3114
|
-
var frontLabels = ['front', 'avant', 'anteriore', 'cameraaanvoorzijde', 'kamerapåframsidan', 'forsidekamera', 'kamerapåforsiden', 'aparatprzedni', 'etukamera', 'kameradepan', 'ÖnKamera', 'cameramặttrước', 'camerăfață', 'prednákamera', 'prednjakamera', 'előlapikamera', 'přednífotoaparát', 'μπροστινήκάμερα', 'переднякамера', 'передняякамера', 'преднакамера', 'алдыңғыкамера', 'מצלמה קדמית', 'الكاميرا الأمامية', 'फ़्रंटकैमरा', '前置相机', '前置鏡頭', '前面カメラ', '전면카메라', 'กล้องด้านหน้า'].map(function (s) {
|
|
3115
|
-
return s.toLocaleLowerCase().split(' ').join('');
|
|
3116
|
-
});
|
|
3117
|
-
var rearLabels = ['back', 'rear', 'posterior', 'trasera', 'traseira', 'arrière', 'rückkamera', 'fotocamera(posteriore)', 'cameraaanachterzijde', 'kamerapåbaksidan', 'kamerapåbaksiden', 'bagsidekamera', 'aparattylny', 'takakamera', 'arkakamera', 'kamerabelakang', 'cameramặtsau', 'camerăspate', 'stražnjakamera', 'zadnákamera', 'hátoldalikamera', 'zadnífotoaparát', 'πίσωκάμερα', 'заднякамера', 'Задняякамера', 'заднакамера', 'артқыкамера', 'מצלמה אחורית', 'الكاميرا الخلفية', 'बैककैमरा', '后置相机', '後置鏡頭', '背面カメラ', '후면카메라', 'กล้องด้านหลัง'].map(function (s) {
|
|
3118
|
-
return s.toLocaleLowerCase().split(' ').join('');
|
|
3119
|
-
});
|
|
3120
|
-
var backUltraWideLabels = ['backdualwidecamera', 'backultrawidecamera', 'ultraampliaposterior', 'ultra-angulartraseira', 'ultragrandeangulartraseira', 'ultragrandangle', 'ultragranangular', 'ultra-weitwinkelkamera', 'ultra-grandangolo', 'ultrabredecameraaanachterzijde', 'ultravidvinkelkamerapåbaksidan', 'ultravidvinkelkameraetpåbagsiden', 'ultravidvinkelkamerabak', 'ultragenişkameraarkayüzü', 'ultralaajakulmainentakakamera', 'tylnyaparatultraszerokokątny', 'cameracựcrộngmặtsau', 'camerăcuobiectivultra‑superangularspate', 'ultraszéleslátószögűkamera', 'kameraultralebarbelakang', 'stražnjaultraširokakamera', 'zadníultraširokoúhlýfotoaparát', 'ultraširokouhlá', 'πίσωυπερευρείακάμερα', 'заднянадширококутнакамера', 'Задняясверхширокоугольнаякамера', 'Задна свръх широкоъгълна камера', 'артқыультракеңбұрыштыкамера', 'מצלמה אולטרה רחבה אחורית', 'كاميرا خلفية عريضة جدًا', 'बैकअल्ट्रावाइडकैमरा', '后置超广角相机', '後置超廣角鏡頭相機', '背面超広角カメラ', '후면울트라와이드카메라', 'กล้องด้านหลังอัลตร้าไวด์'].map(function (s) {
|
|
3121
|
-
return s.toLocaleLowerCase().split(' ').join('');
|
|
3122
|
-
});
|
|
3123
|
-
var labelMatches = function labelMatches(labelOrDevice, labelSetOrLabel) {
|
|
3124
|
-
var label = labelOrDevice instanceof MediaDeviceInfo ? getDeviceLabel(labelOrDevice) : labelOrDevice;
|
|
3125
|
-
var labelSet = typeof labelSetOrLabel === 'string' ? [labelSetOrLabel] : labelSetOrLabel;
|
|
3126
|
-
return labelSet.some(function (l) {
|
|
3127
|
-
return label.includes(l);
|
|
3128
|
-
});
|
|
3129
|
-
};
|
|
3130
|
-
var getDeviceLabel = function getDeviceLabel(deviceInfo) {
|
|
3131
|
-
return deviceInfo.label.toLocaleLowerCase().split(' ').join('');
|
|
3132
|
-
};
|
|
3133
|
-
var currentCamera;
|
|
3134
|
-
var currentAudioStream;
|
|
3135
|
-
function obtainCameraAccess(stream, deviceLabel, video) {
|
|
3136
|
-
releaseCameraAccess();
|
|
3137
|
-
log('obtaining camera access...');
|
|
3138
|
-
var _a = stream.getVideoTracks()[0].getSettings(),
|
|
3139
|
-
width = _a.width,
|
|
3140
|
-
height = _a.height;
|
|
3141
|
-
var label = deviceLabel.toLocaleLowerCase().split(' ').join('');
|
|
3142
|
-
var isRearFacing = labelMatches(label, __spreadArray(__spreadArray(__spreadArray([], rearLabels, true), backUltraWideLabels, true), ['iphone'], false));
|
|
3143
|
-
var release = function release() {
|
|
3144
|
-
stream.getTracks().forEach(function (track) {
|
|
3145
|
-
track.enabled = false;
|
|
3146
|
-
track.stop();
|
|
3147
|
-
});
|
|
3148
|
-
if (video) {
|
|
3149
|
-
video.pause();
|
|
3150
|
-
video.srcObject = null;
|
|
3151
|
-
video.src = '';
|
|
3152
|
-
}
|
|
3153
|
-
};
|
|
3154
|
-
width || (width = 0);
|
|
3155
|
-
height || (height = 0);
|
|
3156
|
-
currentCamera = {
|
|
3157
|
-
label: deviceLabel,
|
|
3158
|
-
stream: stream,
|
|
3159
|
-
width: width,
|
|
3160
|
-
height: height,
|
|
3161
|
-
isRearFacing: isRearFacing,
|
|
3162
|
-
release: release
|
|
3163
|
-
};
|
|
3164
|
-
if (video) video.srcObject = stream;
|
|
3165
|
-
return currentCamera;
|
|
3166
|
-
}
|
|
3167
|
-
function releaseCameraAccess() {
|
|
3168
|
-
if (!currentCamera) return;
|
|
3169
|
-
log('releasing camera access...');
|
|
3170
|
-
currentCamera.release();
|
|
3171
|
-
currentCamera = undefined;
|
|
3172
|
-
}
|
|
3173
|
-
function releaseMicrophoneAccess() {
|
|
3174
|
-
var _a;
|
|
3175
|
-
if (!currentAudioStream) return;
|
|
3176
|
-
log('releasing microphone access...');
|
|
3177
|
-
(_a = currentAudioStream.stop) === null || _a === void 0 ? void 0 : _a.call(currentAudioStream);
|
|
3178
|
-
currentAudioStream.getAudioTracks().forEach(function (t) {
|
|
3179
|
-
var _a;
|
|
3180
|
-
(_a = t.stop) === null || _a === void 0 ? void 0 : _a.call(t);
|
|
3181
|
-
});
|
|
3182
|
-
currentAudioStream = undefined;
|
|
3183
|
-
}
|
|
3184
|
-
function usePreferredCaptureDevice(_a) {
|
|
3185
|
-
var _b = _a === void 0 ? {} : _a,
|
|
3186
|
-
_c = _b.requestAccessAutomatically,
|
|
3187
|
-
requestAccessAutomatically = _c === void 0 ? true : _c,
|
|
3188
|
-
_d = _b.preferFrontFacingCamera,
|
|
3189
|
-
preferFrontFacingCamera = _d === void 0 ? false : _d,
|
|
3190
|
-
_e = _b.preferContinuityCamera,
|
|
3191
|
-
preferContinuityCamera = _e === void 0 ? true : _e,
|
|
3192
|
-
_f = _b.requireMicrophoneAccess,
|
|
3193
|
-
requireMicrophoneAccess = _f === void 0 ? false : _f,
|
|
3194
|
-
_g = _b.maxVideoWidth,
|
|
3195
|
-
maxVideoWidth = _g === void 0 ? 1920 : _g,
|
|
3196
|
-
maxFps = _b.maxFps,
|
|
3197
|
-
_h = _b.debugMode,
|
|
3198
|
-
debugMode = _h === void 0 ? false : _h;
|
|
3199
|
-
var videoRef = React.useRef(null);
|
|
3200
|
-
var videoRefStack = React.useRef([]);
|
|
3201
|
-
var cameraRef = React.useRef(null);
|
|
3202
|
-
var _j = React.useState(false),
|
|
3203
|
-
cameraReady = _j[0],
|
|
3204
|
-
setCameraReady = _j[1];
|
|
3205
|
-
var _k = React.useState(false),
|
|
3206
|
-
microphoneReady = _k[0],
|
|
3207
|
-
setMicrophoneReady = _k[1];
|
|
3208
|
-
var _l = React.useState(null),
|
|
3209
|
-
videoDevice = _l[0],
|
|
3210
|
-
setVideoDevice = _l[1];
|
|
3211
|
-
var _m = React.useState(null),
|
|
3212
|
-
audioStream = _m[0],
|
|
3213
|
-
setAudioStream = _m[1];
|
|
3214
|
-
var _o = React.useState(false),
|
|
3215
|
-
videoLoaded = _o[0],
|
|
3216
|
-
setVideoLoaded = _o[1];
|
|
3217
|
-
var _p = React.useState(false),
|
|
3218
|
-
iphoneContinuityCameraAvailable = _p[0],
|
|
3219
|
-
setIphoneContinuityCameraAvailable = _p[1];
|
|
3220
|
-
var _q = React.useState(preferContinuityCamera),
|
|
3221
|
-
iphoneContinuityCameraAllowed = _q[0],
|
|
3222
|
-
setIphoneContinuityCameraAllowed = _q[1];
|
|
3223
|
-
var _r = React.useState(false),
|
|
3224
|
-
iphoneContinuityCameraDenied = _r[0],
|
|
3225
|
-
setIphoneContinuityCameraDenied = _r[1];
|
|
3226
|
-
var _s = React.useState(false),
|
|
3227
|
-
cameraAccessDenied = _s[0],
|
|
3228
|
-
setCameraAccessDenied = _s[1];
|
|
3229
|
-
var _t = React.useState(false),
|
|
3230
|
-
microphoneAccessDenied = _t[0],
|
|
3231
|
-
setMicrophoneAccessDenied = _t[1];
|
|
3232
|
-
var videoRefElement = videoRef.current;
|
|
3233
|
-
React.useEffect(function pushVideoRefToStackWhenChanged() {
|
|
3234
|
-
// proceed if the video element being mounted is not already at the top of the videoRefStack.
|
|
3235
|
-
var topOfStack = videoRefStack.current.slice(-1)[0];
|
|
3236
|
-
if (videoRefElement && videoRefElement !== topOfStack) {
|
|
3237
|
-
log('adding video to stack', videoRefElement);
|
|
3238
|
-
videoRefStack.current.push(videoRefElement);
|
|
3239
|
-
}
|
|
3240
|
-
}, [videoRefElement]);
|
|
3241
|
-
var onVideoUnmounted = React.useCallback(function (videoElement) {
|
|
3242
|
-
log('removing video from stack', videoElement);
|
|
3243
|
-
videoRefStack.current = videoRefStack.current.filter(function (v) {
|
|
3244
|
-
return v !== videoElement;
|
|
3245
|
-
});
|
|
3246
|
-
videoRef.current = videoRefStack.current.slice(-1)[0]; // top of stack.
|
|
3247
|
-
log('new videoRef is', videoRef.current);
|
|
3248
|
-
}, []);
|
|
3249
|
-
React.useEffect(function resetCameraOnContinuityPreferenceChanged() {
|
|
3250
|
-
if (debugMode) {
|
|
3251
|
-
log('iphone continuity camera allowed changed', iphoneContinuityCameraAllowed);
|
|
3252
|
-
}
|
|
3253
|
-
releaseCameraAccess();
|
|
3254
|
-
cameraRef.current = null;
|
|
3255
|
-
setVideoLoaded(false);
|
|
3256
|
-
}, [debugMode, iphoneContinuityCameraAllowed]);
|
|
3257
|
-
// NOTE: the bound callback function here is called requestCameraAccess, because
|
|
3258
|
-
// it initiates the useEffect chain that results in camera access being requested
|
|
3259
|
-
// (requestCameraAccessAutomatically -> chooseFromAvailableCameras -> accessChosenCamera).
|
|
3260
|
-
//
|
|
3261
|
-
// We chose to title the inner function "chooseFromAvailableCameras" because
|
|
3262
|
-
// that's all it literally does -- the available cameras are enumerated, and then
|
|
3263
|
-
// the result is parsed to decide which one we like best, which is then passed to
|
|
3264
|
-
// setVideoDevice, which causes accessChosenCamera to trigger.
|
|
3265
|
-
//
|
|
3266
|
-
// I am not a huge fan of getUserMedia's design -- you need to call it twice in order
|
|
3267
|
-
// to select the "best" camera for your application's purposes.
|
|
3268
|
-
var requestCameraAccess = React.useCallback(function chooseFromAvailableCameras() {
|
|
3269
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
3270
|
-
var availableCameras, selectedCamera, platform_1, iphoneContinuityCamera, e_1;
|
|
3271
|
-
var _a, _b;
|
|
3272
|
-
return __generator(this, function (_c) {
|
|
3273
|
-
switch (_c.label) {
|
|
3274
|
-
case 0:
|
|
3275
|
-
setCameraReady(false);
|
|
3276
|
-
setCameraAccessDenied(false);
|
|
3277
|
-
_c.label = 1;
|
|
3278
|
-
case 1:
|
|
3279
|
-
_c.trys.push([1, 3,, 4]);
|
|
3280
|
-
return [4 /*yield*/, listAvailableCameras()];
|
|
3281
|
-
case 2:
|
|
3282
|
-
availableCameras = _c.sent();
|
|
3283
|
-
selectedCamera = void 0;
|
|
3284
|
-
if (debugMode) {
|
|
3285
|
-
log('availableCameras', availableCameras);
|
|
3286
|
-
}
|
|
3287
|
-
platform_1 = getPlatform();
|
|
3288
|
-
if (debugMode) {
|
|
3289
|
-
log('platformDetails', platform_1);
|
|
3290
|
-
}
|
|
3291
|
-
if (!iphoneContinuityCameraDenied && (!(platform_1 === null || platform_1 === void 0 ? void 0 : platform_1.os) || platform_1.os.family === 'OS X')) {
|
|
3292
|
-
iphoneContinuityCamera = availableCameras.find(function (deviceInfo) {
|
|
3293
|
-
return labelMatches(deviceInfo, 'iphone');
|
|
3294
|
-
});
|
|
3295
|
-
setIphoneContinuityCameraAvailable(!!iphoneContinuityCamera);
|
|
3296
|
-
if (iphoneContinuityCamera && iphoneContinuityCameraAllowed) {
|
|
3297
|
-
selectedCamera = iphoneContinuityCamera;
|
|
3298
|
-
}
|
|
3299
|
-
} else if (((_a = platform_1 === null || platform_1 === void 0 ? void 0 : platform_1.os) === null || _a === void 0 ? void 0 : _a.family) === 'Android' || availableCameras.every(function (c) {
|
|
3300
|
-
return c.label.startsWith('camera2 ');
|
|
3301
|
-
})) {
|
|
3302
|
-
availableCameras = availableCameras.sort(function (a, b) {
|
|
3303
|
-
return a.label.toLowerCase().localeCompare(b.label.toLowerCase());
|
|
3304
|
-
});
|
|
3305
|
-
if (debugMode) {
|
|
3306
|
-
log('cameras have been sorted', availableCameras);
|
|
3307
|
-
}
|
|
3308
|
-
}
|
|
3309
|
-
if (preferFrontFacingCamera) {
|
|
3310
|
-
selectedCamera = availableCameras.find(function (deviceInfo) {
|
|
3311
|
-
return labelMatches(deviceInfo, frontLabels);
|
|
3312
|
-
});
|
|
3313
|
-
}
|
|
3314
|
-
selectedCamera || (selectedCamera = availableCameras.find(function (deviceInfo) {
|
|
3315
|
-
return labelMatches(deviceInfo, 'backtriplecamera');
|
|
3316
|
-
}));
|
|
3317
|
-
selectedCamera || (selectedCamera = availableCameras.find(function (deviceInfo) {
|
|
3318
|
-
return labelMatches(deviceInfo, 'backdualcamera');
|
|
3319
|
-
}));
|
|
3320
|
-
selectedCamera || (selectedCamera = availableCameras.find(function (deviceInfo) {
|
|
3321
|
-
return labelMatches(deviceInfo, rearLabels) && !labelMatches(deviceInfo, backUltraWideLabels);
|
|
3322
|
-
}));
|
|
3323
|
-
selectedCamera || (selectedCamera = availableCameras.find(function (deviceInfo) {
|
|
3324
|
-
return labelMatches(deviceInfo, rearLabels);
|
|
3325
|
-
}));
|
|
3326
|
-
// on iOS, the front facing camera always is at the first position in the list, so we skip it if all else fails.
|
|
3327
|
-
if (!preferFrontFacingCamera && ((_b = platform_1 === null || platform_1 === void 0 ? void 0 : platform_1.os) === null || _b === void 0 ? void 0 : _b.family) === 'iOS' && availableCameras.length > 0) {
|
|
3328
|
-
selectedCamera || (selectedCamera = availableCameras[1]);
|
|
3329
|
-
}
|
|
3330
|
-
selectedCamera || (selectedCamera = availableCameras[0]);
|
|
3331
|
-
if (debugMode) log('selectedCamera', selectedCamera);
|
|
3332
|
-
setVideoDevice(selectedCamera);
|
|
3333
|
-
return [3 /*break*/, 4];
|
|
3334
|
-
case 3:
|
|
3335
|
-
e_1 = _c.sent();
|
|
3336
|
-
if (e_1.name === 'NotAllowedError') {
|
|
3337
|
-
error('camera access has been blocked by the user', e_1);
|
|
3338
|
-
setCameraAccessDenied(true);
|
|
3339
|
-
} else {
|
|
3340
|
-
error('camera access encountered some other error', e_1);
|
|
3341
|
-
throw e_1;
|
|
3342
|
-
}
|
|
3343
|
-
return [3 /*break*/, 4];
|
|
3344
|
-
case 4:
|
|
3345
|
-
return [2 /*return*/];
|
|
3346
|
-
}
|
|
3347
|
-
});
|
|
3348
|
-
});
|
|
3349
|
-
}, [debugMode, iphoneContinuityCameraAllowed, iphoneContinuityCameraDenied, preferFrontFacingCamera]);
|
|
3350
|
-
React.useEffect(function requestCameraAccessAutomatically() {
|
|
3351
|
-
if (requestAccessAutomatically && !cameraAccessDenied) {
|
|
3352
|
-
requestCameraAccess()["catch"](error);
|
|
3353
|
-
}
|
|
3354
|
-
}, [cameraAccessDenied, requestAccessAutomatically, requestCameraAccess]);
|
|
3355
|
-
React.useEffect(function accessChosenCamera() {
|
|
3356
|
-
var _this = this;
|
|
3357
|
-
var _a;
|
|
3358
|
-
if (!videoDevice) return;
|
|
3359
|
-
var cleanup = function cleanup() {
|
|
3360
|
-
releaseCameraAccess();
|
|
3361
|
-
cameraRef.current = null;
|
|
3362
|
-
setVideoLoaded(false);
|
|
3363
|
-
};
|
|
3364
|
-
if (!((_a = navigator.mediaDevices) === null || _a === void 0 ? void 0 : _a.getUserMedia)) return cleanup;
|
|
3365
|
-
(function () {
|
|
3366
|
-
return __awaiter(_this, void 0, void 0, function () {
|
|
3367
|
-
var constraints, stream, e_2, handleStreamEnded;
|
|
3368
|
-
var _a;
|
|
3369
|
-
return __generator(this, function (_b) {
|
|
3370
|
-
switch (_b.label) {
|
|
3371
|
-
case 0:
|
|
3372
|
-
constraints = {
|
|
3373
|
-
audio: false,
|
|
3374
|
-
video: {
|
|
3375
|
-
deviceId: {
|
|
3376
|
-
exact: videoDevice.deviceId
|
|
3377
|
-
},
|
|
3378
|
-
width: {
|
|
3379
|
-
ideal: maxVideoWidth
|
|
3380
|
-
},
|
|
3381
|
-
aspectRatio: 1.777777778,
|
|
3382
|
-
frameRate: {}
|
|
3383
|
-
}
|
|
3384
|
-
};
|
|
3385
|
-
if (maxFps) {
|
|
3386
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
3387
|
-
// @ts-ignore
|
|
3388
|
-
constraints.video.frameRate = {
|
|
3389
|
-
max: maxFps
|
|
3390
|
-
};
|
|
3391
|
-
}
|
|
3392
|
-
stream = null;
|
|
3393
|
-
_b.label = 1;
|
|
3394
|
-
case 1:
|
|
3395
|
-
_b.trys.push([1, 3,, 4]);
|
|
3396
|
-
return [4 /*yield*/, navigator.mediaDevices.getUserMedia(constraints)];
|
|
3397
|
-
case 2:
|
|
3398
|
-
stream = _b.sent();
|
|
3399
|
-
return [3 /*break*/, 4];
|
|
3400
|
-
case 3:
|
|
3401
|
-
e_2 = _b.sent();
|
|
3402
|
-
if (e_2.name === 'NotAllowedError') {
|
|
3403
|
-
if (iphoneContinuityCameraAllowed) {
|
|
3404
|
-
setIphoneContinuityCameraAvailable(false);
|
|
3405
|
-
setIphoneContinuityCameraDenied(true);
|
|
3406
|
-
} else {
|
|
3407
|
-
setCameraAccessDenied(true);
|
|
3408
|
-
}
|
|
3409
|
-
return [2 /*return*/];
|
|
3410
|
-
}
|
|
3411
|
-
return [3 /*break*/, 4];
|
|
3412
|
-
case 4:
|
|
3413
|
-
if (!!stream) return [3 /*break*/, 8];
|
|
3414
|
-
_b.label = 5;
|
|
3415
|
-
case 5:
|
|
3416
|
-
_b.trys.push([5, 7,, 8]);
|
|
3417
|
-
return [4 /*yield*/, navigator.mediaDevices.getUserMedia({
|
|
3418
|
-
audio: false,
|
|
3419
|
-
video: true
|
|
3420
|
-
})];
|
|
3421
|
-
case 6:
|
|
3422
|
-
stream = _b.sent();
|
|
3423
|
-
log('opened stream with no width and height constraints');
|
|
3424
|
-
return [3 /*break*/, 8];
|
|
3425
|
-
case 7:
|
|
3426
|
-
_b.sent();
|
|
3427
|
-
log('cannot open stream at all');
|
|
3428
|
-
return [3 /*break*/, 8];
|
|
3429
|
-
case 8:
|
|
3430
|
-
if (!stream) {
|
|
3431
|
-
throw new Error('failed to open camera');
|
|
3432
|
-
}
|
|
3433
|
-
handleStreamEnded = function handleStreamEnded() {
|
|
3434
|
-
if (iphoneContinuityCameraAvailable && iphoneContinuityCameraAllowed) {
|
|
3435
|
-
log('someone unplugged the continuity camera');
|
|
3436
|
-
releaseCameraAccess();
|
|
3437
|
-
cameraRef.current = null;
|
|
3438
|
-
setIphoneContinuityCameraAvailable(false);
|
|
3439
|
-
setIphoneContinuityCameraDenied(true);
|
|
3440
|
-
setVideoDevice(null);
|
|
3441
|
-
} else {
|
|
3442
|
-
log('someone unplugged the webcam');
|
|
3443
|
-
releaseCameraAccess();
|
|
3444
|
-
cameraRef.current = null;
|
|
3445
|
-
setVideoLoaded(false);
|
|
3446
|
-
setCameraAccessDenied(true);
|
|
3447
|
-
}
|
|
3448
|
-
};
|
|
3449
|
-
(_a = videoRef.current) === null || _a === void 0 ? void 0 : _a.addEventListener('ended', handleStreamEnded);
|
|
3450
|
-
stream.getVideoTracks().forEach(function (track) {
|
|
3451
|
-
track.onended = handleStreamEnded;
|
|
3452
|
-
});
|
|
3453
|
-
cameraRef.current = obtainCameraAccess(stream, videoDevice.label, videoRef.current);
|
|
3454
|
-
return [2 /*return*/];
|
|
3455
|
-
}
|
|
3456
|
-
});
|
|
3457
|
-
});
|
|
3458
|
-
})();
|
|
3459
|
-
return cleanup;
|
|
3460
|
-
}, [iphoneContinuityCameraAllowed, iphoneContinuityCameraAvailable, maxFps, maxVideoWidth, videoDevice]);
|
|
3461
|
-
React.useEffect(function triggerCameraReady() {
|
|
3462
|
-
// TODO: in the future let's evaluate whether we can simplify this to just
|
|
3463
|
-
// setCameraReady(!!videoDevice && videoLoaded) -- we are wondering whether
|
|
3464
|
-
// we somehow depend on this being set twice.
|
|
3465
|
-
setCameraReady(false);
|
|
3466
|
-
if (videoDevice && videoLoaded) {
|
|
3467
|
-
setCameraReady(videoDevice && videoLoaded);
|
|
3468
|
-
}
|
|
3469
|
-
}, [videoLoaded, videoDevice]);
|
|
3470
|
-
var requestMicrophoneAccess = React.useCallback(function _requestMicrophoneAccess() {
|
|
3471
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
3472
|
-
var stream;
|
|
3473
|
-
return __generator(this, function (_a) {
|
|
3474
|
-
switch (_a.label) {
|
|
3475
|
-
case 0:
|
|
3476
|
-
setMicrophoneReady(false);
|
|
3477
|
-
setMicrophoneAccessDenied(false);
|
|
3478
|
-
_a.label = 1;
|
|
3479
|
-
case 1:
|
|
3480
|
-
_a.trys.push([1, 3,, 4]);
|
|
3481
|
-
return [4 /*yield*/, navigator.mediaDevices.getUserMedia({
|
|
3482
|
-
audio: true,
|
|
3483
|
-
video: false
|
|
3484
|
-
})];
|
|
3485
|
-
case 2:
|
|
3486
|
-
stream = _a.sent();
|
|
3487
|
-
currentAudioStream = stream;
|
|
3488
|
-
setAudioStream(stream);
|
|
3489
|
-
setMicrophoneReady(true);
|
|
3490
|
-
stream.getAudioTracks().forEach(function (track) {
|
|
3491
|
-
track.onended = function () {
|
|
3492
|
-
setMicrophoneAccessDenied(true);
|
|
3493
|
-
};
|
|
3494
|
-
});
|
|
3495
|
-
return [3 /*break*/, 4];
|
|
3496
|
-
case 3:
|
|
3497
|
-
_a.sent();
|
|
3498
|
-
setMicrophoneAccessDenied(true);
|
|
3499
|
-
return [3 /*break*/, 4];
|
|
3500
|
-
case 4:
|
|
3501
|
-
return [2 /*return*/];
|
|
3502
|
-
}
|
|
3503
|
-
});
|
|
3504
|
-
});
|
|
3505
|
-
}, []);
|
|
3506
|
-
React.useEffect(function requestMicrophoneAccessIfNeeded() {
|
|
3507
|
-
if (!requireMicrophoneAccess || microphoneAccessDenied) return;
|
|
3508
|
-
requestMicrophoneAccess()["catch"](error);
|
|
3509
|
-
return function () {
|
|
3510
|
-
releaseMicrophoneAccess();
|
|
3511
|
-
setAudioStream(null);
|
|
3512
|
-
setMicrophoneReady(false);
|
|
3513
|
-
};
|
|
3514
|
-
}, [microphoneAccessDenied, requestMicrophoneAccess, requireMicrophoneAccess]);
|
|
3515
|
-
var takePhoto = React.useCallback(function _takePhoto() {
|
|
3516
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
3517
|
-
var canvas;
|
|
3518
|
-
return __generator(this, function (_a) {
|
|
3519
|
-
switch (_a.label) {
|
|
3520
|
-
case 0:
|
|
3521
|
-
if (!cameraRef.current) return [2 /*return*/, null];
|
|
3522
|
-
if (!(typeof ImageCapture !== 'undefined')) return [3 /*break*/, 2];
|
|
3523
|
-
return [4 /*yield*/, new ImageCapture(cameraRef.current.stream.getTracks()[0]).takePhoto()];
|
|
3524
|
-
case 1:
|
|
3525
|
-
return [2 /*return*/, _a.sent()];
|
|
3526
|
-
case 2:
|
|
3527
|
-
if (!videoRef.current) return [2 /*return*/, null];
|
|
3528
|
-
canvas = document.createElement('canvas');
|
|
3529
|
-
drawToCanvas(canvas, videoRef.current);
|
|
3530
|
-
return [2 /*return*/, new Promise(function (resolve) {
|
|
3531
|
-
return canvas.toBlob(resolve);
|
|
3532
|
-
})];
|
|
3533
|
-
}
|
|
3534
|
-
});
|
|
3535
|
-
});
|
|
3536
|
-
}, []);
|
|
3537
|
-
return React.useMemo(function () {
|
|
3538
|
-
return {
|
|
3539
|
-
videoRef: videoRef,
|
|
3540
|
-
videoDevice: videoDevice,
|
|
3541
|
-
videoLoaded: videoLoaded,
|
|
3542
|
-
setVideoLoaded: setVideoLoaded,
|
|
3543
|
-
onVideoUnmounted: onVideoUnmounted,
|
|
3544
|
-
cameraRef: cameraRef,
|
|
3545
|
-
cameraReady: cameraReady,
|
|
3546
|
-
cameraAccessDenied: cameraAccessDenied,
|
|
3547
|
-
requestCameraAccess: requestCameraAccess,
|
|
3548
|
-
releaseCameraAccess: releaseCameraAccess,
|
|
3549
|
-
iphoneContinuityCameraAvailable: iphoneContinuityCameraAvailable,
|
|
3550
|
-
iphoneContinuityCameraAllowed: iphoneContinuityCameraAllowed,
|
|
3551
|
-
setIphoneContinuityCameraAllowed: setIphoneContinuityCameraAllowed,
|
|
3552
|
-
takePhoto: takePhoto,
|
|
3553
|
-
audioStream: audioStream,
|
|
3554
|
-
microphoneReady: microphoneReady,
|
|
3555
|
-
microphoneAccessDenied: microphoneAccessDenied,
|
|
3556
|
-
requestMicrophoneAccess: requestMicrophoneAccess
|
|
3557
|
-
};
|
|
3558
|
-
}, [audioStream, cameraAccessDenied, cameraReady, iphoneContinuityCameraAllowed, iphoneContinuityCameraAvailable, microphoneAccessDenied, microphoneReady, onVideoUnmounted, requestCameraAccess, requestMicrophoneAccess, takePhoto, videoDevice, videoLoaded]);
|
|
3559
|
-
}
|
|
3560
|
-
|
|
3561
|
-
var CameraStateContext = /*#__PURE__*/React.createContext({
|
|
3562
|
-
videoRef: {
|
|
3563
|
-
current: null
|
|
3564
|
-
},
|
|
3565
|
-
videoDevice: null,
|
|
3566
|
-
videoLoaded: false,
|
|
3567
|
-
cameraRef: {
|
|
3568
|
-
current: null
|
|
3569
|
-
},
|
|
3570
|
-
cameraReady: false,
|
|
3571
|
-
cameraAccessDenied: false,
|
|
3572
|
-
requestCameraAccess: function requestCameraAccess() {
|
|
3573
|
-
return null;
|
|
3574
|
-
},
|
|
3575
|
-
releaseCameraAccess: function releaseCameraAccess() {
|
|
3576
|
-
return null;
|
|
3577
|
-
},
|
|
3578
|
-
iphoneContinuityCameraAvailable: false,
|
|
3579
|
-
iphoneContinuityCameraAllowed: true,
|
|
3580
|
-
setIphoneContinuityCameraAllowed: function setIphoneContinuityCameraAllowed() {
|
|
3581
|
-
return null;
|
|
3582
|
-
},
|
|
3583
|
-
takePhoto: function takePhoto() {
|
|
3584
|
-
return Promise.resolve(null);
|
|
3585
|
-
},
|
|
3586
|
-
setVideoLoaded: function setVideoLoaded() {
|
|
3587
|
-
return null;
|
|
3588
|
-
},
|
|
3589
|
-
onVideoUnmounted: function onVideoUnmounted() {
|
|
3590
|
-
return null;
|
|
3591
|
-
},
|
|
3592
|
-
audioStream: null,
|
|
3593
|
-
microphoneReady: false,
|
|
3594
|
-
microphoneAccessDenied: false,
|
|
3595
|
-
requestMicrophoneAccess: function requestMicrophoneAccess() {
|
|
3596
|
-
return null;
|
|
3597
|
-
}
|
|
3598
|
-
});
|
|
3599
|
-
var CameraProvider = function CameraProvider(_a) {
|
|
3600
|
-
var children = _a.children,
|
|
3601
|
-
_b = _a.requestAccessAutomatically,
|
|
3602
|
-
requestAccessAutomatically = _b === void 0 ? true : _b,
|
|
3603
|
-
_c = _a.preferFrontFacingCamera,
|
|
3604
|
-
preferFrontFacingCamera = _c === void 0 ? false : _c,
|
|
3605
|
-
_d = _a.preferContinuityCamera,
|
|
3606
|
-
preferContinuityCamera = _d === void 0 ? true : _d,
|
|
3607
|
-
_e = _a.requireMicrophoneAccess,
|
|
3608
|
-
requireMicrophoneAccess = _e === void 0 ? false : _e,
|
|
3609
|
-
_f = _a.maxVideoWidth,
|
|
3610
|
-
maxVideoWidth = _f === void 0 ? 1920 : _f,
|
|
3611
|
-
maxFps = _a.maxFps,
|
|
3612
|
-
onCameraAccessDenied = _a.onCameraAccessDenied,
|
|
3613
|
-
onMicrophoneAccessDenied = _a.onMicrophoneAccessDenied,
|
|
3614
|
-
_g = _a.debugMode,
|
|
3615
|
-
debugMode = _g === void 0 ? false : _g;
|
|
3616
|
-
var captureDevice = usePreferredCaptureDevice({
|
|
3617
|
-
requestAccessAutomatically: requestAccessAutomatically,
|
|
3618
|
-
preferFrontFacingCamera: preferFrontFacingCamera,
|
|
3619
|
-
preferContinuityCamera: preferContinuityCamera,
|
|
3620
|
-
requireMicrophoneAccess: requireMicrophoneAccess,
|
|
3621
|
-
maxVideoWidth: maxVideoWidth,
|
|
3622
|
-
maxFps: maxFps,
|
|
3623
|
-
debugMode: debugMode
|
|
3624
|
-
});
|
|
3625
|
-
React.useEffect(function () {
|
|
3626
|
-
if (captureDevice.cameraAccessDenied) onCameraAccessDenied === null || onCameraAccessDenied === void 0 ? void 0 : onCameraAccessDenied();
|
|
3627
|
-
}, [captureDevice.cameraAccessDenied, onCameraAccessDenied]);
|
|
3628
|
-
React.useEffect(function () {
|
|
3629
|
-
if (captureDevice.microphoneAccessDenied) onMicrophoneAccessDenied === null || onMicrophoneAccessDenied === void 0 ? void 0 : onMicrophoneAccessDenied();
|
|
3630
|
-
}, [captureDevice.microphoneAccessDenied, onMicrophoneAccessDenied]);
|
|
3631
|
-
var releaseCameraAccess = captureDevice.releaseCameraAccess;
|
|
3632
|
-
React.useEffect(function () {
|
|
3023
|
+
box: opts.box
|
|
3024
|
+
});
|
|
3633
3025
|
return function () {
|
|
3634
|
-
|
|
3026
|
+
if (resizeObserverRef.current) {
|
|
3027
|
+
resizeObserverRef.current.instance.unobserve(element);
|
|
3028
|
+
}
|
|
3635
3029
|
};
|
|
3636
|
-
}, [
|
|
3637
|
-
return
|
|
3638
|
-
|
|
3639
|
-
|
|
3640
|
-
|
|
3030
|
+
}, [opts.box, round]), opts.ref);
|
|
3031
|
+
return React.useMemo(function () {
|
|
3032
|
+
return {
|
|
3033
|
+
ref: refCallback,
|
|
3034
|
+
width: size.width,
|
|
3035
|
+
height: size.height
|
|
3036
|
+
};
|
|
3037
|
+
}, [refCallback, size.width, size.height]);
|
|
3038
|
+
}
|
|
3641
3039
|
|
|
3642
3040
|
function _typeof$1(o) {
|
|
3643
3041
|
"@babel/helpers - typeof";
|
|
@@ -4111,9 +3509,9 @@
|
|
|
4111
3509
|
}
|
|
4112
3510
|
var _regeneratorRuntime = /*@__PURE__*/getDefaultExportFromCjs(regenerator);
|
|
4113
3511
|
|
|
4114
|
-
function _createForOfIteratorHelperLoose$
|
|
4115
|
-
function _unsupportedIterableToArray$
|
|
4116
|
-
function _arrayLikeToArray$
|
|
3512
|
+
function _createForOfIteratorHelperLoose$2(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (t) return (t = t.call(r)).next.bind(t); if (Array.isArray(r) || (t = _unsupportedIterableToArray$2(r)) || e) { t && (r = t); var o = 0; return function () { return o >= r.length ? { done: !0 } : { done: !1, value: r[o++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3513
|
+
function _unsupportedIterableToArray$2(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$2(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$2(r, a) : void 0; } }
|
|
3514
|
+
function _arrayLikeToArray$2(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
4117
3515
|
var t = self;
|
|
4118
3516
|
function e() {
|
|
4119
3517
|
throw Error("Invalid UTF8");
|
|
@@ -6340,7 +5738,7 @@
|
|
|
6340
5738
|
height: (_hn4 = hn(e, 4)) != null ? _hn4 : 0,
|
|
6341
5739
|
angle: 0
|
|
6342
5740
|
}), (_en2 = en(t, ws, 4)) != null && _en2.g().length) {
|
|
6343
|
-
for (var _iterator = _createForOfIteratorHelperLoose$
|
|
5741
|
+
for (var _iterator = _createForOfIteratorHelperLoose$2(en(t, ws, 4).g()), _step; !(_step = _iterator()).done;) {
|
|
6344
5742
|
var _We, _We2, _We3, _un3;
|
|
6345
5743
|
var _e16 = _step.value;
|
|
6346
5744
|
i.keypoints.push({
|
|
@@ -6355,7 +5753,7 @@
|
|
|
6355
5753
|
}
|
|
6356
5754
|
function Qi(t) {
|
|
6357
5755
|
var e = [];
|
|
6358
|
-
for (var _iterator2 = _createForOfIteratorHelperLoose$
|
|
5756
|
+
for (var _iterator2 = _createForOfIteratorHelperLoose$2(rn(t, Fs, 1)), _step2; !(_step2 = _iterator2()).done;) {
|
|
6359
5757
|
var _fn2, _fn3, _fn4;
|
|
6360
5758
|
var _n14 = _step2.value;
|
|
6361
5759
|
e.push({
|
|
@@ -6368,7 +5766,7 @@
|
|
|
6368
5766
|
}
|
|
6369
5767
|
function to(t) {
|
|
6370
5768
|
var e = [];
|
|
6371
|
-
for (var _iterator3 = _createForOfIteratorHelperLoose$
|
|
5769
|
+
for (var _iterator3 = _createForOfIteratorHelperLoose$2(rn(t, Ts, 1)), _step3; !(_step3 = _iterator3()).done;) {
|
|
6372
5770
|
var _fn5, _fn6, _fn7;
|
|
6373
5771
|
var _n15 = _step3.value;
|
|
6374
5772
|
e.push({
|
|
@@ -6516,7 +5914,7 @@
|
|
|
6516
5914
|
var r = new Uint32Array(e.length);
|
|
6517
5915
|
for (var _n16 = 0; _n16 < e.length; _n16++) r[_n16] = t.i.stringToNewUTF8(e[_n16]);
|
|
6518
5916
|
e = t.i._malloc(4 * r.length), t.i.HEAPU32.set(r, e >> 2), n(e);
|
|
6519
|
-
for (var _iterator4 = _createForOfIteratorHelperLoose$
|
|
5917
|
+
for (var _iterator4 = _createForOfIteratorHelperLoose$2(r), _step4; !(_step4 = _iterator4()).done;) {
|
|
6520
5918
|
var _e17 = _step4.value;
|
|
6521
5919
|
t.i._free(_e17);
|
|
6522
5920
|
}
|
|
@@ -6882,7 +6280,7 @@
|
|
|
6882
6280
|
}
|
|
6883
6281
|
t.push(n);
|
|
6884
6282
|
};
|
|
6885
|
-
for (var _iterator7 = _createForOfIteratorHelperLoose$
|
|
6283
|
+
for (var _iterator7 = _createForOfIteratorHelperLoose$2(this.g), _step7; !(_step7 = _iterator7()).done;) {
|
|
6886
6284
|
_loop();
|
|
6887
6285
|
}
|
|
6888
6286
|
return new _Yo(t, this.ba(), this.K(), this.canvas, this.l, this.width, this.height);
|
|
@@ -7014,7 +6412,7 @@
|
|
|
7014
6412
|
}
|
|
7015
6413
|
t.push(n);
|
|
7016
6414
|
};
|
|
7017
|
-
for (var _iterator8 = _createForOfIteratorHelperLoose$
|
|
6415
|
+
for (var _iterator8 = _createForOfIteratorHelperLoose$2(this.g), _step8; !(_step8 = _iterator8()).done;) {
|
|
7018
6416
|
_loop2();
|
|
7019
6417
|
}
|
|
7020
6418
|
return new _ia(t, this.K(), this.canvas, this.l, this.width, this.height);
|
|
@@ -7494,7 +6892,7 @@
|
|
|
7494
6892
|
yn(e, si, this.h);
|
|
7495
6893
|
var n = new qr();
|
|
7496
6894
|
Hr(n, "mediapipe.tasks.vision.face_detector.FaceDetectorGraph"), Yr(n, "IMAGE:image_in"), Yr(n, "NORM_RECT:norm_rect_in"), $r(n, "DETECTIONS:detections"), n.o(e), es(t, n), this.g.attachProtoVectorListener("detections", function (t, e) {
|
|
7497
|
-
for (var _iterator9 = _createForOfIteratorHelperLoose$
|
|
6895
|
+
for (var _iterator9 = _createForOfIteratorHelperLoose$2(t), _step9; !(_step9 = _iterator9()).done;) {
|
|
7498
6896
|
var _e23 = _step9.value;
|
|
7499
6897
|
t = Es(_e23), _this43.j.detections.push(Zi(t));
|
|
7500
6898
|
}
|
|
@@ -7588,7 +6986,7 @@
|
|
|
7588
6986
|
yn(e, di, this.h);
|
|
7589
6987
|
var n = new qr();
|
|
7590
6988
|
Hr(n, "mediapipe.tasks.vision.face_landmarker.FaceLandmarkerGraph"), Yr(n, "IMAGE:image_in"), Yr(n, "NORM_RECT:norm_rect"), $r(n, "NORM_LANDMARKS:face_landmarks"), n.o(e), es(t, n), this.g.attachProtoVectorListener("face_landmarks", function (t, e) {
|
|
7591
|
-
for (var _iterator10 = _createForOfIteratorHelperLoose$
|
|
6989
|
+
for (var _iterator10 = _createForOfIteratorHelperLoose$2(t), _step10; !(_step10 = _iterator10()).done;) {
|
|
7592
6990
|
var _e24 = _step10.value;
|
|
7593
6991
|
t = Ms(_e24), _this45.j.faceLandmarks.push(Qi(t));
|
|
7594
6992
|
}
|
|
@@ -7597,7 +6995,7 @@
|
|
|
7597
6995
|
_o(_this45, t);
|
|
7598
6996
|
}), this.outputFaceBlendshapes && (rs(t, "blendshapes"), $r(n, "BLENDSHAPES:blendshapes"), this.g.attachProtoVectorListener("blendshapes", function (t, e) {
|
|
7599
6997
|
if (_this45.outputFaceBlendshapes) {
|
|
7600
|
-
for (var _iterator11 = _createForOfIteratorHelperLoose$
|
|
6998
|
+
for (var _iterator11 = _createForOfIteratorHelperLoose$2(t), _step11; !(_step11 = _iterator11()).done;) {
|
|
7601
6999
|
var _t$g;
|
|
7602
7000
|
var _e25 = _step11.value;
|
|
7603
7001
|
t = fs(_e25), _this45.j.faceBlendshapes.push(Ji((_t$g = t.g()) != null ? _t$g : []));
|
|
@@ -7608,7 +7006,7 @@
|
|
|
7608
7006
|
_o(_this45, t);
|
|
7609
7007
|
})), this.outputFacialTransformationMatrixes && (rs(t, "face_geometry"), $r(n, "FACE_GEOMETRY:face_geometry"), this.g.attachProtoVectorListener("face_geometry", function (t, e) {
|
|
7610
7008
|
if (_this45.outputFacialTransformationMatrixes) {
|
|
7611
|
-
for (var _iterator12 = _createForOfIteratorHelperLoose$
|
|
7009
|
+
for (var _iterator12 = _createForOfIteratorHelperLoose$2(t), _step12; !(_step12 = _iterator12()).done;) {
|
|
7612
7010
|
var _ln2, _ln3, _He;
|
|
7613
7011
|
var _e26 = _step12.value;
|
|
7614
7012
|
(t = en(ai(_e26), Ps, 2)) && _this45.j.facialTransformationMatrixes.push({
|
|
@@ -7739,11 +7137,11 @@
|
|
|
7739
7137
|
e = !0;
|
|
7740
7138
|
}
|
|
7741
7139
|
var n = [];
|
|
7742
|
-
for (var _iterator13 = _createForOfIteratorHelperLoose$
|
|
7140
|
+
for (var _iterator13 = _createForOfIteratorHelperLoose$2(t), _step13; !(_step13 = _iterator13()).done;) {
|
|
7743
7141
|
var _s9 = _step13.value;
|
|
7744
7142
|
var r = fs(_s9);
|
|
7745
7143
|
t = [];
|
|
7746
|
-
for (var _iterator14 = _createForOfIteratorHelperLoose$
|
|
7144
|
+
for (var _iterator14 = _createForOfIteratorHelperLoose$2(r.g()), _step14; !(_step14 = _iterator14()).done;) {
|
|
7747
7145
|
var _fn8, _ref9, _un4, _ref10, _un5;
|
|
7748
7146
|
var _n24 = _step14.value;
|
|
7749
7147
|
r = e && null != hn(_n24, 1) ? ln(hn(_n24, 1)) : -1, t.push({
|
|
@@ -7789,11 +7187,11 @@
|
|
|
7789
7187
|
yn(e, Oi, this.v);
|
|
7790
7188
|
var n = new qr();
|
|
7791
7189
|
Hr(n, "mediapipe.tasks.vision.gesture_recognizer.GestureRecognizerGraph"), Yr(n, "IMAGE:image_in"), Yr(n, "NORM_RECT:norm_rect"), $r(n, "HAND_GESTURES:hand_gestures"), $r(n, "LANDMARKS:hand_landmarks"), $r(n, "WORLD_LANDMARKS:world_hand_landmarks"), $r(n, "HANDEDNESS:handedness"), n.o(e), es(t, n), this.g.attachProtoVectorListener("hand_landmarks", function (t, e) {
|
|
7792
|
-
for (var _iterator15 = _createForOfIteratorHelperLoose$
|
|
7190
|
+
for (var _iterator15 = _createForOfIteratorHelperLoose$2(t), _step15; !(_step15 = _iterator15()).done;) {
|
|
7793
7191
|
var _e28 = _step15.value;
|
|
7794
7192
|
t = Ms(_e28);
|
|
7795
7193
|
var _n25 = [];
|
|
7796
|
-
for (var _iterator16 = _createForOfIteratorHelperLoose$
|
|
7194
|
+
for (var _iterator16 = _createForOfIteratorHelperLoose$2(rn(t, Fs, 1)), _step16; !(_step16 = _iterator16()).done;) {
|
|
7797
7195
|
var _fn9, _fn10, _fn11;
|
|
7798
7196
|
var _e29 = _step16.value;
|
|
7799
7197
|
_n25.push({
|
|
@@ -7808,11 +7206,11 @@
|
|
|
7808
7206
|
}), this.g.attachEmptyPacketListener("hand_landmarks", function (t) {
|
|
7809
7207
|
_o(_this49, t);
|
|
7810
7208
|
}), this.g.attachProtoVectorListener("world_hand_landmarks", function (t, e) {
|
|
7811
|
-
for (var _iterator17 = _createForOfIteratorHelperLoose$
|
|
7209
|
+
for (var _iterator17 = _createForOfIteratorHelperLoose$2(t), _step17; !(_step17 = _iterator17()).done;) {
|
|
7812
7210
|
var _e30 = _step17.value;
|
|
7813
7211
|
t = Ls(_e30);
|
|
7814
7212
|
var _n26 = [];
|
|
7815
|
-
for (var _iterator18 = _createForOfIteratorHelperLoose$
|
|
7213
|
+
for (var _iterator18 = _createForOfIteratorHelperLoose$2(rn(t, Ts, 1)), _step18; !(_step18 = _iterator18()).done;) {
|
|
7816
7214
|
var _fn12, _fn13, _fn14;
|
|
7817
7215
|
var _e31 = _step18.value;
|
|
7818
7216
|
_n26.push({
|
|
@@ -7897,7 +7295,7 @@
|
|
|
7897
7295
|
yn(e, Si, this.j);
|
|
7898
7296
|
var n = new qr();
|
|
7899
7297
|
Hr(n, "mediapipe.tasks.vision.hand_landmarker.HandLandmarkerGraph"), Yr(n, "IMAGE:image_in"), Yr(n, "NORM_RECT:norm_rect"), $r(n, "LANDMARKS:hand_landmarks"), $r(n, "WORLD_LANDMARKS:world_hand_landmarks"), $r(n, "HANDEDNESS:handedness"), n.o(e), es(t, n), this.g.attachProtoVectorListener("hand_landmarks", function (t, e) {
|
|
7900
|
-
for (var _iterator19 = _createForOfIteratorHelperLoose$
|
|
7298
|
+
for (var _iterator19 = _createForOfIteratorHelperLoose$2(t), _step19; !(_step19 = _iterator19()).done;) {
|
|
7901
7299
|
var _e32 = _step19.value;
|
|
7902
7300
|
t = Ms(_e32), _this51.landmarks.push(Qi(t));
|
|
7903
7301
|
}
|
|
@@ -7905,7 +7303,7 @@
|
|
|
7905
7303
|
}), this.g.attachEmptyPacketListener("hand_landmarks", function (t) {
|
|
7906
7304
|
_o(_this51, t);
|
|
7907
7305
|
}), this.g.attachProtoVectorListener("world_hand_landmarks", function (t, e) {
|
|
7908
|
-
for (var _iterator20 = _createForOfIteratorHelperLoose$
|
|
7306
|
+
for (var _iterator20 = _createForOfIteratorHelperLoose$2(t), _step20; !(_step20 = _iterator20()).done;) {
|
|
7909
7307
|
var _e33 = _step20.value;
|
|
7910
7308
|
t = Ls(_e33), _this51.worldLandmarks.push(to(t));
|
|
7911
7309
|
}
|
|
@@ -7916,11 +7314,11 @@
|
|
|
7916
7314
|
var n = _this51.handedness,
|
|
7917
7315
|
r = n.push;
|
|
7918
7316
|
var s = [];
|
|
7919
|
-
for (var _iterator21 = _createForOfIteratorHelperLoose$
|
|
7317
|
+
for (var _iterator21 = _createForOfIteratorHelperLoose$2(t), _step21; !(_step21 = _iterator21()).done;) {
|
|
7920
7318
|
var _e34 = _step21.value;
|
|
7921
7319
|
t = fs(_e34);
|
|
7922
7320
|
var _n27 = [];
|
|
7923
|
-
for (var _iterator22 = _createForOfIteratorHelperLoose$
|
|
7321
|
+
for (var _iterator22 = _createForOfIteratorHelperLoose$2(t.g()), _step22; !(_step22 = _iterator22()).done;) {
|
|
7924
7322
|
var _fn15, _ln4, _ref11, _un6, _ref12, _un7;
|
|
7925
7323
|
var _e35 = _step22.value;
|
|
7926
7324
|
_n27.push({
|
|
@@ -8312,7 +7710,7 @@
|
|
|
8312
7710
|
dn(a, 3, !0), gn(a, 1, e.keypoint.x), gn(a, 2, e.keypoint.y), on(i, 5, oh, a);
|
|
8313
7711
|
} else {
|
|
8314
7712
|
if (!e.scribble) throw Error("Must provide either a keypoint or a scribble.");
|
|
8315
|
-
for (var _iterator23 = _createForOfIteratorHelperLoose$
|
|
7713
|
+
for (var _iterator23 = _createForOfIteratorHelperLoose$2((o = new sh(), e.scribble)), _step23; !(_step23 = _iterator23()).done;) {
|
|
8316
7714
|
a = _step23.value;
|
|
8317
7715
|
dn(e = new nh(), 3, !0), gn(e, 1, a.x), gn(e, 2, a.y), an(o, nh, e);
|
|
8318
7716
|
}
|
|
@@ -8413,7 +7811,7 @@
|
|
|
8413
7811
|
yn(e, Vi, this.h);
|
|
8414
7812
|
var n = new qr();
|
|
8415
7813
|
Hr(n, "mediapipe.tasks.vision.ObjectDetectorGraph"), Yr(n, "IMAGE:input_frame_gpu"), Yr(n, "NORM_RECT:norm_rect"), $r(n, "DETECTIONS:detections"), n.o(e), es(t, n), this.g.attachProtoVectorListener("detections", function (t, e) {
|
|
8416
|
-
for (var _iterator24 = _createForOfIteratorHelperLoose$
|
|
7814
|
+
for (var _iterator24 = _createForOfIteratorHelperLoose$2(t), _step24; !(_step24 = _iterator24()).done;) {
|
|
8417
7815
|
var _e37 = _step24.value;
|
|
8418
7816
|
t = Es(_e37), _this61.j.detections.push(Zi(t));
|
|
8419
7817
|
}
|
|
@@ -8513,7 +7911,7 @@
|
|
|
8513
7911
|
var n = new qr();
|
|
8514
7912
|
Hr(n, "mediapipe.tasks.vision.pose_landmarker.PoseLandmarkerGraph"), Yr(n, "IMAGE:image_in"), Yr(n, "NORM_RECT:norm_rect"), $r(n, "NORM_LANDMARKS:normalized_landmarks"), $r(n, "WORLD_LANDMARKS:world_landmarks"), n.o(e), es(t, n), wo(this, t), this.g.attachProtoVectorListener("normalized_landmarks", function (t, e) {
|
|
8515
7913
|
_this63.landmarks = [];
|
|
8516
|
-
for (var _iterator25 = _createForOfIteratorHelperLoose$
|
|
7914
|
+
for (var _iterator25 = _createForOfIteratorHelperLoose$2(t), _step25; !(_step25 = _iterator25()).done;) {
|
|
8517
7915
|
var _e39 = _step25.value;
|
|
8518
7916
|
t = Ms(_e39), _this63.landmarks.push(Qi(t));
|
|
8519
7917
|
}
|
|
@@ -8522,7 +7920,7 @@
|
|
|
8522
7920
|
_this63.landmarks = [], _o(_this63, t);
|
|
8523
7921
|
}), this.g.attachProtoVectorListener("world_landmarks", function (t, e) {
|
|
8524
7922
|
_this63.worldLandmarks = [];
|
|
8525
|
-
for (var _iterator26 = _createForOfIteratorHelperLoose$
|
|
7923
|
+
for (var _iterator26 = _createForOfIteratorHelperLoose$2(t), _step26; !(_step26 = _iterator26()).done;) {
|
|
8526
7924
|
var _e40 = _step26.value;
|
|
8527
7925
|
t = Ls(_e40), _this63.worldLandmarks.push(to(t));
|
|
8528
7926
|
}
|
|
@@ -8605,6 +8003,42 @@
|
|
|
8605
8003
|
});
|
|
8606
8004
|
}
|
|
8607
8005
|
|
|
8006
|
+
function getFrameDimensions(frame) {
|
|
8007
|
+
var frameWidth = frame.width,
|
|
8008
|
+
frameHeight = frame.height;
|
|
8009
|
+
if (frame instanceof HTMLImageElement) {
|
|
8010
|
+
frameWidth = frame.naturalWidth;
|
|
8011
|
+
frameHeight = frame.naturalHeight;
|
|
8012
|
+
}
|
|
8013
|
+
if (frame instanceof HTMLVideoElement) {
|
|
8014
|
+
frameWidth = frame.videoWidth;
|
|
8015
|
+
frameHeight = frame.videoHeight;
|
|
8016
|
+
}
|
|
8017
|
+
return [frameWidth, frameHeight];
|
|
8018
|
+
}
|
|
8019
|
+
|
|
8020
|
+
var InvisibleCanvas = styled.canvas(templateObject_1$G || (templateObject_1$G = __makeTemplateObject(["\n display: none;\n"], ["\n display: none;\n"])));
|
|
8021
|
+
function drawToCanvas(canvas, frame, width, height) {
|
|
8022
|
+
if (!canvas) return;
|
|
8023
|
+
var ctx = canvas.getContext('2d');
|
|
8024
|
+
if (!ctx) return;
|
|
8025
|
+
if (!width || !height) {
|
|
8026
|
+
var _a = getFrameDimensions(frame),
|
|
8027
|
+
frameWidth = _a[0],
|
|
8028
|
+
frameHeight = _a[1];
|
|
8029
|
+
width || (width = frameWidth);
|
|
8030
|
+
height || (height = frameHeight);
|
|
8031
|
+
}
|
|
8032
|
+
canvas.width = width;
|
|
8033
|
+
canvas.height = height;
|
|
8034
|
+
ctx.drawImage(frame, 0, 0, width, height);
|
|
8035
|
+
}
|
|
8036
|
+
function clearCanvas(canvas) {
|
|
8037
|
+
var _a;
|
|
8038
|
+
(_a = canvas === null || canvas === void 0 ? void 0 : canvas.getContext('2d')) === null || _a === void 0 ? void 0 : _a.clearRect(0, 0, canvas === null || canvas === void 0 ? void 0 : canvas.width, canvas === null || canvas === void 0 ? void 0 : canvas.height);
|
|
8039
|
+
}
|
|
8040
|
+
var templateObject_1$G;
|
|
8041
|
+
|
|
8608
8042
|
function cropToShoulders(rawCanvas, cropCanvas, resizeCanvas, frame, face, quality, maxHeight) {
|
|
8609
8043
|
if (quality === void 0) {
|
|
8610
8044
|
quality = 0.92;
|
|
@@ -8908,7 +8342,8 @@
|
|
|
8908
8342
|
modelPath = _b === void 0 ? defaultFocusModelPath : _b,
|
|
8909
8343
|
_c = _a.modelLoadTimeoutMs,
|
|
8910
8344
|
modelLoadTimeoutMs = _c === void 0 ? defaultFocusModelLoadTimeoutMs : _c,
|
|
8911
|
-
onModelError = _a.onModelError
|
|
8345
|
+
onModelError = _a.onModelError,
|
|
8346
|
+
videoRef = _a.videoRef;
|
|
8912
8347
|
var _d = React.useState(false),
|
|
8913
8348
|
ready = _d[0],
|
|
8914
8349
|
setReady = _d[1];
|
|
@@ -8918,7 +8353,6 @@
|
|
|
8918
8353
|
var _f = React.useState(null),
|
|
8919
8354
|
modelError = _f[0],
|
|
8920
8355
|
setModelError = _f[1];
|
|
8921
|
-
var videoRef = React.useContext(CameraStateContext).videoRef;
|
|
8922
8356
|
React.useEffect(function loadModel() {
|
|
8923
8357
|
var _this = this;
|
|
8924
8358
|
setReady(false);
|
|
@@ -9056,7 +8490,8 @@
|
|
|
9056
8490
|
function useLoadFaceDetector(_a) {
|
|
9057
8491
|
var onModelError = _a.onModelError,
|
|
9058
8492
|
_b = _a.modelLoadTimeoutMs,
|
|
9059
|
-
modelLoadTimeoutMs = _b === void 0 ? defaultSelfieCaptureModelLoadTimeoutMs : _b
|
|
8493
|
+
modelLoadTimeoutMs = _b === void 0 ? defaultSelfieCaptureModelLoadTimeoutMs : _b,
|
|
8494
|
+
videoRef = _a.videoRef;
|
|
9060
8495
|
var _c = React.useState(false),
|
|
9061
8496
|
ready = _c[0],
|
|
9062
8497
|
setReady = _c[1];
|
|
@@ -9066,7 +8501,6 @@
|
|
|
9066
8501
|
var _e = React.useState(null),
|
|
9067
8502
|
modelError = _e[0],
|
|
9068
8503
|
setModelError = _e[1];
|
|
9069
|
-
var videoRef = React.useContext(CameraStateContext).videoRef;
|
|
9070
8504
|
React.useEffect(function loadModel() {
|
|
9071
8505
|
var _this = this;
|
|
9072
8506
|
setReady(false);
|
|
@@ -9547,7 +8981,8 @@
|
|
|
9547
8981
|
modelLoadTimeoutMs = _c === void 0 ? defaultDocumentDetectionModelLoadTimeoutMs : _c,
|
|
9548
8982
|
_d = _a.scoreThreshold,
|
|
9549
8983
|
scoreThreshold = _d === void 0 ? defaultDocumentDetectionScoreThreshold : _d,
|
|
9550
|
-
onModelError = _a.onModelError
|
|
8984
|
+
onModelError = _a.onModelError,
|
|
8985
|
+
videoRef = _a.videoRef;
|
|
9551
8986
|
var _e = React.useState(false),
|
|
9552
8987
|
ready = _e[0],
|
|
9553
8988
|
setReady = _e[1];
|
|
@@ -9557,7 +8992,6 @@
|
|
|
9557
8992
|
var _g = React.useState(null),
|
|
9558
8993
|
modelError = _g[0],
|
|
9559
8994
|
setModelError = _g[1];
|
|
9560
|
-
var videoRef = React.useContext(CameraStateContext).videoRef;
|
|
9561
8995
|
React.useEffect(function loadModel() {
|
|
9562
8996
|
var _this = this;
|
|
9563
8997
|
setReady(false);
|
|
@@ -9838,32 +9272,550 @@
|
|
|
9838
9272
|
});
|
|
9839
9273
|
});
|
|
9840
9274
|
}
|
|
9841
|
-
renderPrediction().then();
|
|
9275
|
+
renderPrediction().then();
|
|
9276
|
+
return function () {
|
|
9277
|
+
loopId.current += 1;
|
|
9278
|
+
frameId.current && cancelAnimationFrame(frameId.current);
|
|
9279
|
+
timer && clearTimeout(timer);
|
|
9280
|
+
};
|
|
9281
|
+
}, [fn, running, throttleMs]);
|
|
9282
|
+
var start = React.useCallback(function () {
|
|
9283
|
+
startedAtRef.current = new Date();
|
|
9284
|
+
setRunning(true);
|
|
9285
|
+
}, []);
|
|
9286
|
+
var stop = React.useCallback(function () {
|
|
9287
|
+
loopId.current += 1; // force the loop to stop immediately.
|
|
9288
|
+
setRunning(false);
|
|
9289
|
+
startedAtRef.current = null;
|
|
9290
|
+
}, []);
|
|
9291
|
+
React.useEffect(function startAutomatically() {
|
|
9292
|
+
if (autoStart) start();
|
|
9293
|
+
return function () {
|
|
9294
|
+
stop();
|
|
9295
|
+
};
|
|
9296
|
+
}, [autoStart, start, stop]);
|
|
9297
|
+
return {
|
|
9298
|
+
start: start,
|
|
9299
|
+
stop: stop
|
|
9300
|
+
};
|
|
9301
|
+
}
|
|
9302
|
+
|
|
9303
|
+
var createStoreImpl = function createStoreImpl(createState) {
|
|
9304
|
+
var state;
|
|
9305
|
+
var listeners = /* @__PURE__ */new Set();
|
|
9306
|
+
var setState = function setState(partial, replace) {
|
|
9307
|
+
var nextState = typeof partial === "function" ? partial(state) : partial;
|
|
9308
|
+
if (!Object.is(nextState, state)) {
|
|
9309
|
+
var previousState = state;
|
|
9310
|
+
state = (replace != null ? replace : typeof nextState !== "object" || nextState === null) ? nextState : Object.assign({}, state, nextState);
|
|
9311
|
+
listeners.forEach(function (listener) {
|
|
9312
|
+
return listener(state, previousState);
|
|
9313
|
+
});
|
|
9314
|
+
}
|
|
9315
|
+
};
|
|
9316
|
+
var getState = function getState() {
|
|
9317
|
+
return state;
|
|
9318
|
+
};
|
|
9319
|
+
var getInitialState = function getInitialState() {
|
|
9320
|
+
return initialState;
|
|
9321
|
+
};
|
|
9322
|
+
var subscribe = function subscribe(listener) {
|
|
9323
|
+
listeners.add(listener);
|
|
9324
|
+
return function () {
|
|
9325
|
+
return listeners["delete"](listener);
|
|
9326
|
+
};
|
|
9327
|
+
};
|
|
9328
|
+
var api = {
|
|
9329
|
+
setState: setState,
|
|
9330
|
+
getState: getState,
|
|
9331
|
+
getInitialState: getInitialState,
|
|
9332
|
+
subscribe: subscribe
|
|
9333
|
+
};
|
|
9334
|
+
var initialState = state = createState(setState, getState, api);
|
|
9335
|
+
return api;
|
|
9336
|
+
};
|
|
9337
|
+
var createStore = function createStore(createState) {
|
|
9338
|
+
return createState ? createStoreImpl(createState) : createStoreImpl;
|
|
9339
|
+
};
|
|
9340
|
+
|
|
9341
|
+
var identity = function identity(arg) {
|
|
9342
|
+
return arg;
|
|
9343
|
+
};
|
|
9344
|
+
function useStore(api, selector) {
|
|
9345
|
+
if (selector === void 0) {
|
|
9346
|
+
selector = identity;
|
|
9347
|
+
}
|
|
9348
|
+
var slice = React.useSyncExternalStore(api.subscribe, function () {
|
|
9349
|
+
return selector(api.getState());
|
|
9350
|
+
}, function () {
|
|
9351
|
+
return selector(api.getInitialState());
|
|
9352
|
+
});
|
|
9353
|
+
React.useDebugValue(slice);
|
|
9354
|
+
return slice;
|
|
9355
|
+
}
|
|
9356
|
+
|
|
9357
|
+
function listAvailableCameras(facingMode_1) {
|
|
9358
|
+
return __awaiter(this, arguments, void 0, function (facingMode, requestMicAccess) {
|
|
9359
|
+
var cameraEnumerationStream, videoDevices;
|
|
9360
|
+
if (requestMicAccess === void 0) {
|
|
9361
|
+
requestMicAccess = false;
|
|
9362
|
+
}
|
|
9363
|
+
return __generator(this, function (_a) {
|
|
9364
|
+
switch (_a.label) {
|
|
9365
|
+
case 0:
|
|
9366
|
+
return [4 /*yield*/, navigator.mediaDevices.getUserMedia({
|
|
9367
|
+
video: {
|
|
9368
|
+
facingMode: {
|
|
9369
|
+
exact: facingMode
|
|
9370
|
+
}
|
|
9371
|
+
},
|
|
9372
|
+
audio: requestMicAccess
|
|
9373
|
+
})
|
|
9374
|
+
// This lists all available cameras attached to the user's device.
|
|
9375
|
+
];
|
|
9376
|
+
case 1:
|
|
9377
|
+
cameraEnumerationStream = _a.sent();
|
|
9378
|
+
return [4 /*yield*/, navigator.mediaDevices.enumerateDevices()];
|
|
9379
|
+
case 2:
|
|
9380
|
+
videoDevices = _a.sent().filter(function (_a) {
|
|
9381
|
+
var kind = _a.kind;
|
|
9382
|
+
return kind === 'videoinput';
|
|
9383
|
+
});
|
|
9384
|
+
// Release the access to the user's camera that we obtained for enumeration purposes.
|
|
9385
|
+
cameraEnumerationStream.getVideoTracks().forEach(function (track) {
|
|
9386
|
+
track.enabled = false;
|
|
9387
|
+
track.stop();
|
|
9388
|
+
});
|
|
9389
|
+
cameraEnumerationStream = null;
|
|
9390
|
+
return [2 /*return*/, videoDevices];
|
|
9391
|
+
}
|
|
9392
|
+
});
|
|
9393
|
+
});
|
|
9394
|
+
}
|
|
9395
|
+
var frontCameraLabels = ['front', 'avant', 'anteriore', 'cameraaanvoorzijde', 'kamerapåframsidan', 'forsidekamera', 'kamerapåforsiden', 'aparatprzedni', 'etukamera', 'kameradepan', 'ÖnKamera', 'cameramặttrước', 'camerăfață', 'prednákamera', 'prednjakamera', 'előlapikamera', 'přednífotoaparát', 'μπροστινήκάμερα', 'переднякамера', 'передняякамера', 'преднакамера', 'алдыңғыкамера', 'מצלמה קדמית', 'الكاميرا الأمامية', 'फ़्रंटकैमरा', '前置相机', '前置鏡頭', '前面カメラ', '전면카메라', 'กล้องด้านหน้า'].map(function (s) {
|
|
9396
|
+
return s.toLocaleLowerCase().split(' ').join('');
|
|
9397
|
+
});
|
|
9398
|
+
var rearCameraLabels = ['back', 'rear', 'posterior', 'trasera', 'traseira', 'arrière', 'rückkamera', 'fotocamera(posteriore)', 'cameraaanachterzijde', 'kamerapåbaksidan', 'kamerapåbaksiden', 'bagsidekamera', 'aparattylny', 'takakamera', 'arkakamera', 'kamerabelakang', 'cameramặtsau', 'camerăspate', 'stražnjakamera', 'zadnákamera', 'hátoldalikamera', 'zadnífotoaparát', 'πίσωκάμερα', 'заднякамера', 'Задняякамера', 'заднакамера', 'артқыкамера', 'מצלמה אחורית', 'الكاميرا الخلفية', 'बैककैमरा', '后置相机', '後置鏡頭', '背面カメラ', '후면카메라', 'กล้องด้านหลัง'].map(function (s) {
|
|
9399
|
+
return s.toLocaleLowerCase().split(' ').join('');
|
|
9400
|
+
});
|
|
9401
|
+
var backUltraWideCameraLabels = ['backdualwidecamera', 'backultrawidecamera', 'ultraampliaposterior', 'ultra-angulartraseira', 'ultragrandeangulartraseira', 'ultragrandangle', 'ultragranangular', 'ultra-weitwinkelkamera', 'ultra-grandangolo', 'ultrabredecameraaanachterzijde', 'ultravidvinkelkamerapåbaksidan', 'ultravidvinkelkameraetpåbagsiden', 'ultravidvinkelkamerabak', 'ultragenişkameraarkayüzü', 'ultralaajakulmainentakakamera', 'tylnyaparatultraszerokokątny', 'cameracựcrộngmặtsau', 'camerăcuobiectivultra‑superangularspate', 'ultraszéleslátószögűkamera', 'kameraultralebarbelakang', 'stražnjaultraširokakamera', 'zadníultraširokoúhlýfotoaparát', 'ultraširokouhlá', 'πίσωυπερευρείακάμερα', 'заднянадширококутнакамера', 'Задняясверхширокоугольнаякамера', 'Задна свръх широкоъгълна камера', 'артқыультракеңбұрыштыкамера', 'מצלמה אולטרה רחבה אחורית', 'كاميرا خلفية عريضة جدًا', 'बैकअल्ट्रावाइडकैमरा', '后置超广角相机', '後置超廣角鏡頭相機', '背面超広角カメラ', '후면울트라와이드카메라', 'กล้องด้านหลังอัลตร้าไวด์'].map(function (s) {
|
|
9402
|
+
return s.toLocaleLowerCase().split(' ').join('');
|
|
9403
|
+
});
|
|
9404
|
+
var cameraLabelMatches = function cameraLabelMatches(labelOrDevice, labelSetOrLabel) {
|
|
9405
|
+
var label = labelOrDevice instanceof MediaDeviceInfo ? getDeviceLabel(labelOrDevice) : labelOrDevice;
|
|
9406
|
+
var labelSet = typeof labelSetOrLabel === 'string' ? [labelSetOrLabel] : labelSetOrLabel;
|
|
9407
|
+
return labelSet.some(function (l) {
|
|
9408
|
+
return label.includes(l);
|
|
9409
|
+
});
|
|
9410
|
+
};
|
|
9411
|
+
var getDeviceLabel = function getDeviceLabel(deviceInfo) {
|
|
9412
|
+
return deviceInfo.label.toLocaleLowerCase().split(' ').join('');
|
|
9413
|
+
};
|
|
9414
|
+
var currentCamera;
|
|
9415
|
+
function obtainCameraAccess(stream, deviceLabel, video) {
|
|
9416
|
+
releaseCameraAccess();
|
|
9417
|
+
log('obtaining camera access...');
|
|
9418
|
+
var _a = stream.getVideoTracks()[0].getSettings(),
|
|
9419
|
+
width = _a.width,
|
|
9420
|
+
height = _a.height;
|
|
9421
|
+
log('camera dimensions', width, height);
|
|
9422
|
+
var label = deviceLabel.toLocaleLowerCase().split(' ').join('');
|
|
9423
|
+
log('camera label', label);
|
|
9424
|
+
var isRearFacing = cameraLabelMatches(label, __spreadArray(__spreadArray(__spreadArray([], rearCameraLabels, true), backUltraWideCameraLabels, true), ['iphone'], false));
|
|
9425
|
+
log('is rear facing?', isRearFacing);
|
|
9426
|
+
var release = function release() {
|
|
9427
|
+
stream.getTracks().forEach(function (track) {
|
|
9428
|
+
track.enabled = false;
|
|
9429
|
+
track.stop();
|
|
9430
|
+
});
|
|
9431
|
+
if (video) {
|
|
9432
|
+
video.pause();
|
|
9433
|
+
video.srcObject = null;
|
|
9434
|
+
video.src = '';
|
|
9435
|
+
}
|
|
9436
|
+
};
|
|
9437
|
+
width || (width = 0);
|
|
9438
|
+
height || (height = 0);
|
|
9439
|
+
currentCamera = {
|
|
9440
|
+
label: deviceLabel,
|
|
9441
|
+
stream: stream,
|
|
9442
|
+
width: width,
|
|
9443
|
+
height: height,
|
|
9444
|
+
isRearFacing: isRearFacing,
|
|
9445
|
+
release: release
|
|
9446
|
+
};
|
|
9447
|
+
log('camera access granted');
|
|
9448
|
+
if (video) video.srcObject = stream;
|
|
9449
|
+
log('video source initialized');
|
|
9450
|
+
return currentCamera;
|
|
9451
|
+
}
|
|
9452
|
+
function releaseCameraAccess() {
|
|
9453
|
+
if (!currentCamera) return;
|
|
9454
|
+
log('releasing camera access...');
|
|
9455
|
+
currentCamera.release();
|
|
9456
|
+
currentCamera = undefined;
|
|
9457
|
+
}
|
|
9458
|
+
|
|
9459
|
+
var initialState$5 = {
|
|
9460
|
+
videoRef: {
|
|
9461
|
+
current: null
|
|
9462
|
+
},
|
|
9463
|
+
videoLoaded: false,
|
|
9464
|
+
videoStream: null,
|
|
9465
|
+
videoDevice: null,
|
|
9466
|
+
isRearFacing: false,
|
|
9467
|
+
camera: null,
|
|
9468
|
+
cameraReady: false,
|
|
9469
|
+
cameraAccessDenied: false,
|
|
9470
|
+
iphoneContinuityCameraAvailable: false,
|
|
9471
|
+
iphoneContinuityCameraDenied: false,
|
|
9472
|
+
preferIphoneContinuityCamera: true,
|
|
9473
|
+
audioStream: null,
|
|
9474
|
+
microphoneReady: false,
|
|
9475
|
+
microphoneAccessDenied: false
|
|
9476
|
+
};
|
|
9477
|
+
var createCameraStore = function createCameraStore(config) {
|
|
9478
|
+
var store = createStore(function (set, get) {
|
|
9479
|
+
return _assign(_assign(_assign({}, initialState$5), config), {
|
|
9480
|
+
reset: function reset() {
|
|
9481
|
+
return set(_assign(_assign({}, initialState$5), config));
|
|
9482
|
+
},
|
|
9483
|
+
setConfig: function setConfig(config) {
|
|
9484
|
+
return set(config);
|
|
9485
|
+
},
|
|
9486
|
+
onVideoMounted: function onVideoMounted() {
|
|
9487
|
+
return set({
|
|
9488
|
+
videoLoaded: true
|
|
9489
|
+
});
|
|
9490
|
+
},
|
|
9491
|
+
setIphoneContinuityCameraAllowed: function setIphoneContinuityCameraAllowed(value) {
|
|
9492
|
+
return set({
|
|
9493
|
+
preferIphoneContinuityCamera: value
|
|
9494
|
+
});
|
|
9495
|
+
},
|
|
9496
|
+
requestCameraAccess: function requestCameraAccess() {
|
|
9497
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
9498
|
+
var _a, releaseCameraAccess, preferIphoneContinuityCamera, iphoneContinuityCameraDenied, availableCameras, selectedCamera, platform_1, iphoneContinuityCamera, constraints, stream, e_1, iphoneContinuityCameraAvailable_1, handleStreamEnded_1, camera, e_3;
|
|
9499
|
+
var _b, _c, _d;
|
|
9500
|
+
return __generator(this, function (_e) {
|
|
9501
|
+
switch (_e.label) {
|
|
9502
|
+
case 0:
|
|
9503
|
+
_a = get(), releaseCameraAccess = _a.releaseCameraAccess, preferIphoneContinuityCamera = _a.preferIphoneContinuityCamera, iphoneContinuityCameraDenied = _a.iphoneContinuityCameraDenied;
|
|
9504
|
+
releaseCameraAccess();
|
|
9505
|
+
_e.label = 1;
|
|
9506
|
+
case 1:
|
|
9507
|
+
_e.trys.push([1, 11,, 12]);
|
|
9508
|
+
return [4 /*yield*/, listAvailableCameras()];
|
|
9509
|
+
case 2:
|
|
9510
|
+
availableCameras = _e.sent();
|
|
9511
|
+
selectedCamera = void 0;
|
|
9512
|
+
debug('availableCameras', availableCameras);
|
|
9513
|
+
platform_1 = getPlatform();
|
|
9514
|
+
debug('platformDetails', platform_1);
|
|
9515
|
+
if (!iphoneContinuityCameraDenied && (!(platform_1 === null || platform_1 === void 0 ? void 0 : platform_1.os) || platform_1.os.family === 'OS X')) {
|
|
9516
|
+
iphoneContinuityCamera = availableCameras.find(function (deviceInfo) {
|
|
9517
|
+
return cameraLabelMatches(deviceInfo, 'iphone');
|
|
9518
|
+
});
|
|
9519
|
+
set({
|
|
9520
|
+
iphoneContinuityCameraAvailable: !!iphoneContinuityCamera
|
|
9521
|
+
});
|
|
9522
|
+
if (iphoneContinuityCamera && preferIphoneContinuityCamera) {
|
|
9523
|
+
selectedCamera = iphoneContinuityCamera;
|
|
9524
|
+
}
|
|
9525
|
+
} else if (((_b = platform_1 === null || platform_1 === void 0 ? void 0 : platform_1.os) === null || _b === void 0 ? void 0 : _b.family) === 'Android' || availableCameras.every(function (c) {
|
|
9526
|
+
return c.label.startsWith('camera2 ');
|
|
9527
|
+
})) {
|
|
9528
|
+
availableCameras = availableCameras.sort(function (a, b) {
|
|
9529
|
+
return a.label.toLowerCase().localeCompare(b.label.toLowerCase());
|
|
9530
|
+
});
|
|
9531
|
+
debug('cameras have been sorted', availableCameras);
|
|
9532
|
+
}
|
|
9533
|
+
if (config.preferFrontFacingCamera) {
|
|
9534
|
+
selectedCamera = availableCameras.find(function (deviceInfo) {
|
|
9535
|
+
return cameraLabelMatches(deviceInfo, frontCameraLabels);
|
|
9536
|
+
});
|
|
9537
|
+
}
|
|
9538
|
+
selectedCamera || (selectedCamera = availableCameras.find(function (deviceInfo) {
|
|
9539
|
+
return cameraLabelMatches(deviceInfo, 'backtriplecamera');
|
|
9540
|
+
}));
|
|
9541
|
+
selectedCamera || (selectedCamera = availableCameras.find(function (deviceInfo) {
|
|
9542
|
+
return cameraLabelMatches(deviceInfo, 'backdualcamera');
|
|
9543
|
+
}));
|
|
9544
|
+
selectedCamera || (selectedCamera = availableCameras.find(function (deviceInfo) {
|
|
9545
|
+
return cameraLabelMatches(deviceInfo, rearCameraLabels) && !cameraLabelMatches(deviceInfo, backUltraWideCameraLabels);
|
|
9546
|
+
}));
|
|
9547
|
+
selectedCamera || (selectedCamera = availableCameras.find(function (deviceInfo) {
|
|
9548
|
+
return cameraLabelMatches(deviceInfo, rearCameraLabels);
|
|
9549
|
+
}));
|
|
9550
|
+
// on iOS, the front facing camera always is at the first position in the list, so we skip it if all else fails.
|
|
9551
|
+
if (!config.preferFrontFacingCamera && ((_c = platform_1 === null || platform_1 === void 0 ? void 0 : platform_1.os) === null || _c === void 0 ? void 0 : _c.family) === 'iOS' && availableCameras.length > 0) {
|
|
9552
|
+
selectedCamera || (selectedCamera = availableCameras[1]);
|
|
9553
|
+
}
|
|
9554
|
+
selectedCamera || (selectedCamera = availableCameras[0]);
|
|
9555
|
+
debug('selectedCamera', selectedCamera);
|
|
9556
|
+
set({
|
|
9557
|
+
videoDevice: selectedCamera
|
|
9558
|
+
});
|
|
9559
|
+
constraints = {
|
|
9560
|
+
audio: false,
|
|
9561
|
+
video: {
|
|
9562
|
+
deviceId: {
|
|
9563
|
+
exact: selectedCamera.deviceId
|
|
9564
|
+
},
|
|
9565
|
+
width: {
|
|
9566
|
+
ideal: config.maxVideoWidth
|
|
9567
|
+
},
|
|
9568
|
+
aspectRatio: 1.777777778,
|
|
9569
|
+
frameRate: {}
|
|
9570
|
+
}
|
|
9571
|
+
};
|
|
9572
|
+
if (config.maxFps) {
|
|
9573
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
9574
|
+
// @ts-ignore
|
|
9575
|
+
constraints.video.frameRate = {
|
|
9576
|
+
max: config.maxFps
|
|
9577
|
+
};
|
|
9578
|
+
}
|
|
9579
|
+
stream = null;
|
|
9580
|
+
_e.label = 3;
|
|
9581
|
+
case 3:
|
|
9582
|
+
_e.trys.push([3, 5,, 6]);
|
|
9583
|
+
debug('obtaining camera access with constraints', constraints);
|
|
9584
|
+
return [4 /*yield*/, navigator.mediaDevices.getUserMedia(constraints)];
|
|
9585
|
+
case 4:
|
|
9586
|
+
stream = _e.sent();
|
|
9587
|
+
return [3 /*break*/, 6];
|
|
9588
|
+
case 5:
|
|
9589
|
+
e_1 = _e.sent();
|
|
9590
|
+
if (e_1.name === 'NotAllowedError') {
|
|
9591
|
+
if (preferIphoneContinuityCamera) {
|
|
9592
|
+
set({
|
|
9593
|
+
iphoneContinuityCameraAvailable: false,
|
|
9594
|
+
iphoneContinuityCameraDenied: true
|
|
9595
|
+
});
|
|
9596
|
+
} else {
|
|
9597
|
+
set({
|
|
9598
|
+
cameraAccessDenied: true
|
|
9599
|
+
});
|
|
9600
|
+
}
|
|
9601
|
+
return [2 /*return*/];
|
|
9602
|
+
}
|
|
9603
|
+
return [3 /*break*/, 6];
|
|
9604
|
+
case 6:
|
|
9605
|
+
if (!!stream) return [3 /*break*/, 10];
|
|
9606
|
+
_e.label = 7;
|
|
9607
|
+
case 7:
|
|
9608
|
+
_e.trys.push([7, 9,, 10]);
|
|
9609
|
+
return [4 /*yield*/, navigator.mediaDevices.getUserMedia({
|
|
9610
|
+
audio: false,
|
|
9611
|
+
video: true
|
|
9612
|
+
})];
|
|
9613
|
+
case 8:
|
|
9614
|
+
stream = _e.sent();
|
|
9615
|
+
debug('opened stream with no width and height constraints');
|
|
9616
|
+
return [3 /*break*/, 10];
|
|
9617
|
+
case 9:
|
|
9618
|
+
_e.sent();
|
|
9619
|
+
debug('cannot open stream at all');
|
|
9620
|
+
return [3 /*break*/, 10];
|
|
9621
|
+
case 10:
|
|
9622
|
+
if (!stream) {
|
|
9623
|
+
error('failed to open camera');
|
|
9624
|
+
throw new Error('failed to open camera');
|
|
9625
|
+
}
|
|
9626
|
+
debug('camera access granted with constraints', constraints);
|
|
9627
|
+
iphoneContinuityCameraAvailable_1 = get().iphoneContinuityCameraAvailable;
|
|
9628
|
+
handleStreamEnded_1 = function handleStreamEnded_1() {
|
|
9629
|
+
if (iphoneContinuityCameraAvailable_1 && preferIphoneContinuityCamera) {
|
|
9630
|
+
debug('someone unplugged the continuity camera');
|
|
9631
|
+
releaseCameraAccess();
|
|
9632
|
+
set({
|
|
9633
|
+
videoStream: null,
|
|
9634
|
+
videoDevice: null,
|
|
9635
|
+
iphoneContinuityCameraAvailable: false,
|
|
9636
|
+
iphoneContinuityCameraDenied: true
|
|
9637
|
+
});
|
|
9638
|
+
} else {
|
|
9639
|
+
debug('someone unplugged the webcam');
|
|
9640
|
+
releaseCameraAccess();
|
|
9641
|
+
set({
|
|
9642
|
+
videoStream: null,
|
|
9643
|
+
videoDevice: null,
|
|
9644
|
+
videoLoaded: false,
|
|
9645
|
+
cameraAccessDenied: true
|
|
9646
|
+
});
|
|
9647
|
+
}
|
|
9648
|
+
};
|
|
9649
|
+
(_d = config.videoRef.current) === null || _d === void 0 ? void 0 : _d.addEventListener('ended', handleStreamEnded_1);
|
|
9650
|
+
stream.getVideoTracks().forEach(function (track) {
|
|
9651
|
+
track.onended = handleStreamEnded_1;
|
|
9652
|
+
});
|
|
9653
|
+
camera = obtainCameraAccess(stream, selectedCamera.label, config.videoRef.current);
|
|
9654
|
+
set({
|
|
9655
|
+
camera: camera,
|
|
9656
|
+
cameraReady: true,
|
|
9657
|
+
isRearFacing: camera.isRearFacing,
|
|
9658
|
+
videoStream: stream
|
|
9659
|
+
});
|
|
9660
|
+
return [3 /*break*/, 12];
|
|
9661
|
+
case 11:
|
|
9662
|
+
e_3 = _e.sent();
|
|
9663
|
+
if (e_3.name === 'NotAllowedError') {
|
|
9664
|
+
error('camera access has been blocked by the user', e_3);
|
|
9665
|
+
set({
|
|
9666
|
+
cameraAccessDenied: true
|
|
9667
|
+
});
|
|
9668
|
+
} else {
|
|
9669
|
+
error('camera access encountered some other error', e_3);
|
|
9670
|
+
throw e_3;
|
|
9671
|
+
}
|
|
9672
|
+
return [3 /*break*/, 12];
|
|
9673
|
+
case 12:
|
|
9674
|
+
return [2 /*return*/];
|
|
9675
|
+
}
|
|
9676
|
+
});
|
|
9677
|
+
});
|
|
9678
|
+
},
|
|
9679
|
+
releaseCameraAccess: function releaseCameraAccess() {
|
|
9680
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
9681
|
+
var camera;
|
|
9682
|
+
return __generator(this, function (_a) {
|
|
9683
|
+
camera = get().camera;
|
|
9684
|
+
if (!camera) return [2 /*return*/];
|
|
9685
|
+
camera.release();
|
|
9686
|
+
set({
|
|
9687
|
+
camera: null,
|
|
9688
|
+
cameraReady: false,
|
|
9689
|
+
cameraAccessDenied: false
|
|
9690
|
+
});
|
|
9691
|
+
return [2 /*return*/];
|
|
9692
|
+
});
|
|
9693
|
+
});
|
|
9694
|
+
},
|
|
9695
|
+
requestMicrophoneAccess: function requestMicrophoneAccess() {
|
|
9696
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
9697
|
+
var stream;
|
|
9698
|
+
return __generator(this, function (_a) {
|
|
9699
|
+
switch (_a.label) {
|
|
9700
|
+
case 0:
|
|
9701
|
+
get().releaseMicrophoneAccess();
|
|
9702
|
+
_a.label = 1;
|
|
9703
|
+
case 1:
|
|
9704
|
+
_a.trys.push([1, 3,, 4]);
|
|
9705
|
+
return [4 /*yield*/, navigator.mediaDevices.getUserMedia({
|
|
9706
|
+
audio: true,
|
|
9707
|
+
video: false
|
|
9708
|
+
})];
|
|
9709
|
+
case 2:
|
|
9710
|
+
stream = _a.sent();
|
|
9711
|
+
set({
|
|
9712
|
+
audioStream: stream,
|
|
9713
|
+
microphoneReady: true
|
|
9714
|
+
});
|
|
9715
|
+
stream.getAudioTracks().forEach(function (track) {
|
|
9716
|
+
track.onended = function () {
|
|
9717
|
+
set({
|
|
9718
|
+
microphoneAccessDenied: true
|
|
9719
|
+
});
|
|
9720
|
+
};
|
|
9721
|
+
});
|
|
9722
|
+
return [3 /*break*/, 4];
|
|
9723
|
+
case 3:
|
|
9724
|
+
_a.sent();
|
|
9725
|
+
set({
|
|
9726
|
+
microphoneAccessDenied: true
|
|
9727
|
+
});
|
|
9728
|
+
return [3 /*break*/, 4];
|
|
9729
|
+
case 4:
|
|
9730
|
+
return [2 /*return*/];
|
|
9731
|
+
}
|
|
9732
|
+
});
|
|
9733
|
+
});
|
|
9734
|
+
},
|
|
9735
|
+
releaseMicrophoneAccess: function releaseMicrophoneAccess() {
|
|
9736
|
+
var _a;
|
|
9737
|
+
var audioStream = get().audioStream;
|
|
9738
|
+
(_a = audioStream === null || audioStream === void 0 ? void 0 : audioStream.stop) === null || _a === void 0 ? void 0 : _a.call(audioStream);
|
|
9739
|
+
audioStream === null || audioStream === void 0 ? void 0 : audioStream.getAudioTracks().forEach(function (track) {
|
|
9740
|
+
var _a;
|
|
9741
|
+
(_a = track.stop) === null || _a === void 0 ? void 0 : _a.call(track);
|
|
9742
|
+
});
|
|
9743
|
+
set({
|
|
9744
|
+
audioStream: null,
|
|
9745
|
+
microphoneReady: false,
|
|
9746
|
+
microphoneAccessDenied: false
|
|
9747
|
+
});
|
|
9748
|
+
}
|
|
9749
|
+
});
|
|
9750
|
+
});
|
|
9751
|
+
if (config.requestAccessAutomatically) {
|
|
9752
|
+
store.getState().requestCameraAccess();
|
|
9753
|
+
}
|
|
9754
|
+
if (config.requireMicrophoneAccess) {
|
|
9755
|
+
store.getState().requestMicrophoneAccess();
|
|
9756
|
+
}
|
|
9757
|
+
return _assign(_assign({}, store), {
|
|
9758
|
+
destroy: function destroy() {
|
|
9759
|
+
store.getState().releaseCameraAccess();
|
|
9760
|
+
store.getState().releaseMicrophoneAccess();
|
|
9761
|
+
}
|
|
9762
|
+
});
|
|
9763
|
+
};
|
|
9764
|
+
var CameraStoreContext = /*#__PURE__*/React.createContext(undefined);
|
|
9765
|
+
function CameraStoreProvider(_a) {
|
|
9766
|
+
var children = _a.children,
|
|
9767
|
+
_b = _a.requestAccessAutomatically,
|
|
9768
|
+
requestAccessAutomatically = _b === void 0 ? true : _b,
|
|
9769
|
+
_c = _a.preferIphoneContinuityCamera,
|
|
9770
|
+
preferIphoneContinuityCamera = _c === void 0 ? true : _c,
|
|
9771
|
+
_d = _a.preferFrontFacingCamera,
|
|
9772
|
+
preferFrontFacingCamera = _d === void 0 ? false : _d,
|
|
9773
|
+
_e = _a.maxVideoWidth,
|
|
9774
|
+
maxVideoWidth = _e === void 0 ? 1920 : _e,
|
|
9775
|
+
maxFps = _a.maxFps,
|
|
9776
|
+
onCameraAccessDenied = _a.onCameraAccessDenied,
|
|
9777
|
+
onMicrophoneAccessDenied = _a.onMicrophoneAccessDenied,
|
|
9778
|
+
_f = _a.requireMicrophoneAccess,
|
|
9779
|
+
requireMicrophoneAccess = _f === void 0 ? false : _f;
|
|
9780
|
+
var videoRef = React.useRef(null);
|
|
9781
|
+
var store = React.useRef();
|
|
9782
|
+
store.current || (store.current = createCameraStore({
|
|
9783
|
+
videoRef: videoRef,
|
|
9784
|
+
requestAccessAutomatically: requestAccessAutomatically,
|
|
9785
|
+
preferIphoneContinuityCamera: preferIphoneContinuityCamera,
|
|
9786
|
+
preferFrontFacingCamera: preferFrontFacingCamera,
|
|
9787
|
+
maxVideoWidth: maxVideoWidth,
|
|
9788
|
+
maxFps: maxFps,
|
|
9789
|
+
onCameraAccessDenied: onCameraAccessDenied,
|
|
9790
|
+
onMicrophoneAccessDenied: onMicrophoneAccessDenied,
|
|
9791
|
+
requireMicrophoneAccess: requireMicrophoneAccess
|
|
9792
|
+
}));
|
|
9793
|
+
React.useEffect(function () {
|
|
9794
|
+
var _a, _b, _c;
|
|
9795
|
+
var state = (_a = store.current) === null || _a === void 0 ? void 0 : _a.getState();
|
|
9796
|
+
if (!state) return;
|
|
9797
|
+
if (preferIphoneContinuityCamera !== (state === null || state === void 0 ? void 0 : state.preferIphoneContinuityCamera) || preferFrontFacingCamera !== (state === null || state === void 0 ? void 0 : state.preferFrontFacingCamera)) {
|
|
9798
|
+
(_b = store.current) === null || _b === void 0 ? void 0 : _b.setState({
|
|
9799
|
+
preferIphoneContinuityCamera: preferIphoneContinuityCamera,
|
|
9800
|
+
preferFrontFacingCamera: preferFrontFacingCamera
|
|
9801
|
+
});
|
|
9802
|
+
(_c = store.current) === null || _c === void 0 ? void 0 : _c.getState().requestCameraAccess();
|
|
9803
|
+
}
|
|
9804
|
+
}, [preferFrontFacingCamera, preferIphoneContinuityCamera]);
|
|
9805
|
+
React.useEffect(function () {
|
|
9842
9806
|
return function () {
|
|
9843
|
-
|
|
9844
|
-
|
|
9845
|
-
timer && clearTimeout(timer);
|
|
9807
|
+
var _a;
|
|
9808
|
+
return (_a = store.current) === null || _a === void 0 ? void 0 : _a.destroy();
|
|
9846
9809
|
};
|
|
9847
|
-
}, [fn, running, throttleMs]);
|
|
9848
|
-
var start = React.useCallback(function () {
|
|
9849
|
-
startedAtRef.current = new Date();
|
|
9850
|
-
setRunning(true);
|
|
9851
|
-
}, []);
|
|
9852
|
-
var stop = React.useCallback(function () {
|
|
9853
|
-
loopId.current += 1; // force the loop to stop immediately.
|
|
9854
|
-
setRunning(false);
|
|
9855
|
-
startedAtRef.current = null;
|
|
9856
9810
|
}, []);
|
|
9857
|
-
React.
|
|
9858
|
-
|
|
9859
|
-
|
|
9860
|
-
|
|
9861
|
-
|
|
9862
|
-
|
|
9863
|
-
|
|
9864
|
-
|
|
9865
|
-
stop: stop
|
|
9866
|
-
};
|
|
9811
|
+
return /*#__PURE__*/React.createElement(CameraStoreContext.Provider, {
|
|
9812
|
+
value: store.current
|
|
9813
|
+
}, children);
|
|
9814
|
+
}
|
|
9815
|
+
function useCameraStore(selector) {
|
|
9816
|
+
var store = React.useContext(CameraStoreContext);
|
|
9817
|
+
if (!store) throw new Error('useCameraStore cannot be used without Provider');
|
|
9818
|
+
return useStore(store, selector);
|
|
9867
9819
|
}
|
|
9868
9820
|
|
|
9869
9821
|
var DocumentDetectionModelContext = /*#__PURE__*/React.createContext({
|
|
@@ -9911,7 +9863,7 @@
|
|
|
9911
9863
|
_g = _a.documentDetectionModelLoadTimeoutMs,
|
|
9912
9864
|
documentDetectionModelLoadTimeoutMs = _g === void 0 ? defaultDocumentDetectionModelLoadTimeoutMs : _g,
|
|
9913
9865
|
onDocumentDetectionModelError = _a.onDocumentDetectionModelError;
|
|
9914
|
-
var _h =
|
|
9866
|
+
var _h = useCameraStore(),
|
|
9915
9867
|
videoRef = _h.videoRef,
|
|
9916
9868
|
videoLoaded = _h.videoLoaded,
|
|
9917
9869
|
cameraReady = _h.cameraReady;
|
|
@@ -9934,7 +9886,8 @@
|
|
|
9934
9886
|
modelPath: documentDetectionModelPath,
|
|
9935
9887
|
modelLoadTimeoutMs: documentDetectionModelLoadTimeoutMs,
|
|
9936
9888
|
scoreThreshold: documentDetectionModelScoreThreshold,
|
|
9937
|
-
onModelError: onDocumentDetectionModelError
|
|
9889
|
+
onModelError: onDocumentDetectionModelError,
|
|
9890
|
+
videoRef: videoRef
|
|
9938
9891
|
}),
|
|
9939
9892
|
ready = _o.ready,
|
|
9940
9893
|
modelDownloadProgress = _o.modelDownloadProgress,
|
|
@@ -10051,10 +10004,12 @@
|
|
|
10051
10004
|
var _e = React.useState({}),
|
|
10052
10005
|
focusThresholds = _e[0],
|
|
10053
10006
|
setFocusThresholds = _e[1];
|
|
10007
|
+
var videoRef = useCameraStore().videoRef;
|
|
10054
10008
|
var _f = useLoadFocusModel({
|
|
10055
10009
|
modelPath: focusModelPath,
|
|
10056
10010
|
modelLoadTimeoutMs: focusModelLoadTimeoutMs,
|
|
10057
|
-
onModelError: onFocusModelError
|
|
10011
|
+
onModelError: onFocusModelError,
|
|
10012
|
+
videoRef: videoRef
|
|
10058
10013
|
}),
|
|
10059
10014
|
ready = _f.ready,
|
|
10060
10015
|
modelDownloadProgress = _f.modelDownloadProgress,
|
|
@@ -11494,9 +11449,9 @@
|
|
|
11494
11449
|
return e;
|
|
11495
11450
|
}
|
|
11496
11451
|
|
|
11497
|
-
function _createForOfIteratorHelperLoose(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (t) return (t = t.call(r)).next.bind(t); if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e) { t && (r = t); var o = 0; return function () { return o >= r.length ? { done: !0 } : { done: !1, value: r[o++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
11498
|
-
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
11499
|
-
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
11452
|
+
function _createForOfIteratorHelperLoose$1(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (t) return (t = t.call(r)).next.bind(t); if (Array.isArray(r) || (t = _unsupportedIterableToArray$1(r)) || e) { t && (r = t); var o = 0; return function () { return o >= r.length ? { done: !0 } : { done: !1, value: r[o++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
11453
|
+
function _unsupportedIterableToArray$1(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$1(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$1(r, a) : void 0; } }
|
|
11454
|
+
function _arrayLikeToArray$1(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
11500
11455
|
var consoleLogger = {
|
|
11501
11456
|
type: 'logger',
|
|
11502
11457
|
log: function log(args) {
|
|
@@ -12343,7 +12298,7 @@
|
|
|
12343
12298
|
}
|
|
12344
12299
|
if (!useOptionsReplaceForData) {
|
|
12345
12300
|
data = _extends({}, data);
|
|
12346
|
-
for (var _iterator = _createForOfIteratorHelperLoose(optionsKeys), _step; !(_step = _iterator()).done;) {
|
|
12301
|
+
for (var _iterator = _createForOfIteratorHelperLoose$1(optionsKeys), _step; !(_step = _iterator()).done;) {
|
|
12347
12302
|
var key = _step.value;
|
|
12348
12303
|
delete data[key];
|
|
12349
12304
|
}
|
|
@@ -14049,31 +14004,33 @@
|
|
|
14049
14004
|
var templateObject_1$D, templateObject_2$w, templateObject_3$o, templateObject_4$i, templateObject_5$b;
|
|
14050
14005
|
|
|
14051
14006
|
var IdCapture = function IdCapture(_a) {
|
|
14052
|
-
var _b, _c, _d, _e, _f, _g, _h
|
|
14007
|
+
var _b, _c, _d, _e, _f, _g, _h;
|
|
14053
14008
|
var requiredDocumentType = _a.requiredDocumentType,
|
|
14054
|
-
|
|
14055
|
-
thresholds =
|
|
14009
|
+
_j = _a.thresholds,
|
|
14010
|
+
thresholds = _j === void 0 ? defaultIdCaptureThresholds : _j,
|
|
14056
14011
|
guidanceMessage = _a.guidanceMessage,
|
|
14057
14012
|
guidanceSatisfied = _a.guidanceSatisfied,
|
|
14058
14013
|
onCapture = _a.onCapture,
|
|
14059
|
-
|
|
14060
|
-
classNames =
|
|
14061
|
-
|
|
14062
|
-
colors =
|
|
14063
|
-
|
|
14064
|
-
rawVerbiage =
|
|
14065
|
-
|
|
14066
|
-
debugMode =
|
|
14067
|
-
var
|
|
14068
|
-
ref =
|
|
14069
|
-
|
|
14070
|
-
width =
|
|
14071
|
-
|
|
14072
|
-
height =
|
|
14073
|
-
var
|
|
14074
|
-
state =
|
|
14075
|
-
dispatch =
|
|
14076
|
-
var
|
|
14014
|
+
_k = _a.classNames,
|
|
14015
|
+
classNames = _k === void 0 ? {} : _k,
|
|
14016
|
+
_l = _a.colors,
|
|
14017
|
+
colors = _l === void 0 ? {} : _l,
|
|
14018
|
+
_m = _a.verbiage,
|
|
14019
|
+
rawVerbiage = _m === void 0 ? {} : _m,
|
|
14020
|
+
_o = _a.debugMode,
|
|
14021
|
+
debugMode = _o === void 0 ? false : _o;
|
|
14022
|
+
var _p = useResizeObserver(),
|
|
14023
|
+
ref = _p.ref,
|
|
14024
|
+
_q = _p.width,
|
|
14025
|
+
width = _q === void 0 ? 1 : _q,
|
|
14026
|
+
_r = _p.height,
|
|
14027
|
+
height = _r === void 0 ? 1 : _r;
|
|
14028
|
+
var _s = useIdCaptureState(),
|
|
14029
|
+
state = _s[0],
|
|
14030
|
+
dispatch = _s[1];
|
|
14031
|
+
var _t = useCameraStore(),
|
|
14032
|
+
camera = _t.camera,
|
|
14033
|
+
isRearFacing = _t.isRearFacing;
|
|
14077
14034
|
var _u = React.useContext(IdCaptureModelsContext),
|
|
14078
14035
|
modelsReady = _u.ready,
|
|
14079
14036
|
setThresholds = _u.setThresholds,
|
|
@@ -14185,17 +14142,16 @@
|
|
|
14185
14142
|
classNames: classNames.overrideWrongDocumentTypeGuidanceDialog,
|
|
14186
14143
|
verbiage: rawVerbiage.overrideWrongDocumentTypeGuidanceDialog
|
|
14187
14144
|
}))), debugMode && ( /*#__PURE__*/React.createElement(DebugBoundingBoxOverlay, {
|
|
14188
|
-
"$flipX": !
|
|
14145
|
+
"$flipX": !isRearFacing,
|
|
14189
14146
|
scaling: debugScalingDetails
|
|
14190
14147
|
}, state.detectedObjects.map(function (obj, i) {
|
|
14191
|
-
var _a;
|
|
14192
14148
|
return /*#__PURE__*/React.createElement(IdCaptureDetectedObjectDebugBox, {
|
|
14193
14149
|
key: i,
|
|
14194
14150
|
obj: obj,
|
|
14195
14151
|
scaling: debugScalingDetails,
|
|
14196
|
-
flipX: !
|
|
14152
|
+
flipX: !isRearFacing
|
|
14197
14153
|
});
|
|
14198
|
-
}))), debugMode && ( /*#__PURE__*/React.createElement(DebugStatsPane, null,
|
|
14154
|
+
}))), debugMode && ( /*#__PURE__*/React.createElement(DebugStatsPane, null, camera ? ( /*#__PURE__*/React.createElement(React.Fragment, null, "\u2705 Camera: ", camera.label, " (", camera.width, "x", camera.height, ")")) : '❌ Camera not ready', /*#__PURE__*/React.createElement("br", null), state.frameCaptureRate > 0.75 ? '✅' : '👎', " Frame Rate:", ' ', Math.round((state.frameCaptureRate + Number.EPSILON) * 1000) / 1000, ' ', "fps (", detectionTime, "ms doc detect, ", focusPredictionTime, "ms focus)", /*#__PURE__*/React.createElement("br", null), modelsReady ? ( /*#__PURE__*/React.createElement(React.Fragment, null, state.detectionThresholdMet ? '✅' : '❌', " Detected Document Type: ", state.detectedDocumentType, /*#__PURE__*/React.createElement("br", null), state.idCardFrontDetectionThresholdMet ? '✅' : '❌', " ID Card Front Score: ", state.idCardFrontDetectionScore.toFixed(3), /*#__PURE__*/React.createElement("br", null), state.idCardBackDetectionThresholdMet ? '✅' : '❌', " ID Card Back Score: ", state.idCardBackDetectionScore.toFixed(3), /*#__PURE__*/React.createElement("br", null), state.passportDetectionThresholdMet ? '✅' : '❌', " Passport Score: ", state.passportDetectionScore.toFixed(3), /*#__PURE__*/React.createElement("br", null), state.focusThresholdMet ? '✅' : '❌', " Focus Score:", ' ', state.focusScore.toFixed(3), /*#__PURE__*/React.createElement("br", null), state.documentInBounds ? '✅' : '❌', " Document In Bounds", /*#__PURE__*/React.createElement("br", null), state.documentIsStable ? '✅' : '❌', " Document Is Stable", /*#__PURE__*/React.createElement("br", null), state.goodFramesThresholdMet ? '✅' : '❌', " Good Frame Count:", ' ', state.goodFramesCount, "/", state.goodFramesThreshold)) : ( /*#__PURE__*/React.createElement(React.Fragment, null, "\u274C Models not ready")))));
|
|
14199
14155
|
};
|
|
14200
14156
|
var timeSince = function timeSince(t) {
|
|
14201
14157
|
if (!t) return 0;
|
|
@@ -14212,7 +14168,9 @@
|
|
|
14212
14168
|
colors = _e === void 0 ? {} : _e,
|
|
14213
14169
|
_f = _a.verbiage,
|
|
14214
14170
|
rawVerbiage = _f === void 0 ? {} : _f;
|
|
14215
|
-
var requestCameraAccess =
|
|
14171
|
+
var requestCameraAccess = useCameraStore(function (state) {
|
|
14172
|
+
return state.requestCameraAccess;
|
|
14173
|
+
});
|
|
14216
14174
|
assets.imageUrl || (assets.imageUrl = DEFAULT_CDN_URL + '/camera-disable-icon.png');
|
|
14217
14175
|
var verbiage = useTranslations(rawVerbiage, {
|
|
14218
14176
|
headingText: 'Your camera permission is disabled',
|
|
@@ -14860,7 +14818,7 @@
|
|
|
14860
14818
|
var _o = React.useContext(IdCaptureModelsContext),
|
|
14861
14819
|
modelsReady = _o.ready,
|
|
14862
14820
|
modelDownloadProgress = _o.modelDownloadProgress;
|
|
14863
|
-
var _p =
|
|
14821
|
+
var _p = useCameraStore(),
|
|
14864
14822
|
cameraReady = _p.cameraReady,
|
|
14865
14823
|
cameraAccessDenied = _p.cameraAccessDenied,
|
|
14866
14824
|
iphoneContinuityCameraAvailable = _p.iphoneContinuityCameraAvailable,
|
|
@@ -15038,6 +14996,71 @@
|
|
|
15038
14996
|
});
|
|
15039
14997
|
var templateObject_1$y, templateObject_2$t, templateObject_3$l, templateObject_4$f, templateObject_5$a, templateObject_6$8, templateObject_7$5, templateObject_8$2, templateObject_9$2, templateObject_10$1, templateObject_11$1, templateObject_12$1, templateObject_13$1, templateObject_14$1, templateObject_15$1, templateObject_16, templateObject_17, templateObject_18;
|
|
15040
14998
|
|
|
14999
|
+
function _createForOfIteratorHelperLoose(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (t) return (t = t.call(r)).next.bind(t); if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e) { t && (r = t); var o = 0; return function () { return o >= r.length ? { done: !0 } : { done: !1, value: r[o++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
15000
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
15001
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
15002
|
+
var isIterable = function isIterable(obj) {
|
|
15003
|
+
return Symbol.iterator in obj;
|
|
15004
|
+
};
|
|
15005
|
+
var compareMapLike = function compareMapLike(iterableA, iterableB) {
|
|
15006
|
+
var mapA = iterableA instanceof Map ? iterableA : new Map(iterableA);
|
|
15007
|
+
var mapB = iterableB instanceof Map ? iterableB : new Map(iterableB);
|
|
15008
|
+
if (mapA.size !== mapB.size) return false;
|
|
15009
|
+
for (var _iterator = _createForOfIteratorHelperLoose(mapA), _step; !(_step = _iterator()).done;) {
|
|
15010
|
+
var _step$value = _step.value,
|
|
15011
|
+
key = _step$value[0],
|
|
15012
|
+
value = _step$value[1];
|
|
15013
|
+
if (!Object.is(value, mapB.get(key))) {
|
|
15014
|
+
return false;
|
|
15015
|
+
}
|
|
15016
|
+
}
|
|
15017
|
+
return true;
|
|
15018
|
+
};
|
|
15019
|
+
function shallow(objA, objB) {
|
|
15020
|
+
if (Object.is(objA, objB)) {
|
|
15021
|
+
return true;
|
|
15022
|
+
}
|
|
15023
|
+
if (typeof objA !== "object" || objA === null || typeof objB !== "object" || objB === null) {
|
|
15024
|
+
return false;
|
|
15025
|
+
}
|
|
15026
|
+
if (isIterable(objA) && isIterable(objB)) {
|
|
15027
|
+
var iteratorA = objA[Symbol.iterator]();
|
|
15028
|
+
var iteratorB = objB[Symbol.iterator]();
|
|
15029
|
+
var nextA = iteratorA.next();
|
|
15030
|
+
var nextB = iteratorB.next();
|
|
15031
|
+
if (Array.isArray(nextA.value) && Array.isArray(nextB.value) && nextA.value.length === 2 && nextB.value.length === 2) {
|
|
15032
|
+
return compareMapLike(objA, objB);
|
|
15033
|
+
}
|
|
15034
|
+
while (!nextA.done && !nextB.done) {
|
|
15035
|
+
if (!Object.is(nextA.value, nextB.value)) {
|
|
15036
|
+
return false;
|
|
15037
|
+
}
|
|
15038
|
+
nextA = iteratorA.next();
|
|
15039
|
+
nextB = iteratorB.next();
|
|
15040
|
+
}
|
|
15041
|
+
return !!nextA.done && !!nextB.done;
|
|
15042
|
+
}
|
|
15043
|
+
var keysA = Object.keys(objA);
|
|
15044
|
+
if (keysA.length !== Object.keys(objB).length) {
|
|
15045
|
+
return false;
|
|
15046
|
+
}
|
|
15047
|
+
for (var _i = 0, _keysA = keysA; _i < _keysA.length; _i++) {
|
|
15048
|
+
var keyA = _keysA[_i];
|
|
15049
|
+
if (!Object.hasOwn(objB, keyA) || !Object.is(objA[keyA], objB[keyA])) {
|
|
15050
|
+
return false;
|
|
15051
|
+
}
|
|
15052
|
+
}
|
|
15053
|
+
return true;
|
|
15054
|
+
}
|
|
15055
|
+
|
|
15056
|
+
function useShallow(selector) {
|
|
15057
|
+
var prev = React.useRef();
|
|
15058
|
+
return function (state) {
|
|
15059
|
+
var next = selector(state);
|
|
15060
|
+
return shallow(prev.current, next) ? prev.current : prev.current = next;
|
|
15061
|
+
};
|
|
15062
|
+
}
|
|
15063
|
+
|
|
15041
15064
|
var ContinuityCameraCheckboxContainer = styled.div(templateObject_1$x || (templateObject_1$x = __makeTemplateObject(["\n margin-top: 15px;\n margin-bottom: 15px;\n"], ["\n margin-top: 15px;\n margin-bottom: 15px;\n"])));
|
|
15042
15065
|
var ContinuityCameraCheckbox = styled.input(templateObject_2$s || (templateObject_2$s = __makeTemplateObject(["\n margin-right: 8px;\n"], ["\n margin-right: 8px;\n"])));
|
|
15043
15066
|
var IdCaptureLoadingOverlayLegacy = function IdCaptureLoadingOverlayLegacy(_a) {
|
|
@@ -15058,7 +15081,14 @@
|
|
|
15058
15081
|
var _l = React.useContext(IdCaptureModelsContext),
|
|
15059
15082
|
modelsReady = _l.ready,
|
|
15060
15083
|
modelDownloadProgress = _l.modelDownloadProgress;
|
|
15061
|
-
var _m =
|
|
15084
|
+
var _m = useCameraStore(useShallow(function (state) {
|
|
15085
|
+
return {
|
|
15086
|
+
cameraReady: state.cameraReady,
|
|
15087
|
+
cameraAccessDenied: state.cameraAccessDenied,
|
|
15088
|
+
iphoneContinuityCameraAvailable: state.iphoneContinuityCameraAvailable,
|
|
15089
|
+
setIphoneContinuityCameraAllowed: state.setIphoneContinuityCameraAllowed
|
|
15090
|
+
};
|
|
15091
|
+
})),
|
|
15062
15092
|
cameraReady = _m.cameraReady,
|
|
15063
15093
|
cameraAccessDenied = _m.cameraAccessDenied,
|
|
15064
15094
|
iphoneContinuityCameraAvailable = _m.iphoneContinuityCameraAvailable,
|
|
@@ -15604,23 +15634,24 @@
|
|
|
15604
15634
|
}
|
|
15605
15635
|
|
|
15606
15636
|
var IdVideoCaptureFlipIdPrompt = function IdVideoCaptureFlipIdPrompt(_a) {
|
|
15607
|
-
var _b
|
|
15608
|
-
|
|
15609
|
-
|
|
15610
|
-
|
|
15611
|
-
classNames = _d === void 0 ? {} : _d,
|
|
15637
|
+
var _b = _a.idCaptureGuideImages,
|
|
15638
|
+
idCaptureGuideImages = _b === void 0 ? defaultIdCaptureGuideImages : _b,
|
|
15639
|
+
_c = _a.classNames,
|
|
15640
|
+
classNames = _c === void 0 ? {} : _c,
|
|
15612
15641
|
borderWidth = _a.borderWidth,
|
|
15613
15642
|
borderColor = _a.borderColor,
|
|
15614
15643
|
borderRadius = _a.borderRadius,
|
|
15615
15644
|
imageStyle = _a.imageStyle;
|
|
15616
|
-
var
|
|
15617
|
-
|
|
15618
|
-
|
|
15619
|
-
|
|
15620
|
-
|
|
15621
|
-
|
|
15622
|
-
|
|
15623
|
-
|
|
15645
|
+
var isRearFacing = useCameraStore(function (state) {
|
|
15646
|
+
return state.isRearFacing;
|
|
15647
|
+
});
|
|
15648
|
+
var isMirrored = !isRearFacing;
|
|
15649
|
+
var _d = React.useState(1),
|
|
15650
|
+
transitionTime = _d[0],
|
|
15651
|
+
setTransitionTime = _d[1];
|
|
15652
|
+
var _e = React.useState(0),
|
|
15653
|
+
rotationAngle = _e[0],
|
|
15654
|
+
setRotationAngle = _e[1];
|
|
15624
15655
|
var frontTransforms = ["rotateY(".concat(rotationAngle, "deg)")];
|
|
15625
15656
|
if (isMirrored) frontTransforms.push('scaleX(-1)');
|
|
15626
15657
|
var backTransforms = ["rotateY(".concat(180 - rotationAngle, "deg)")];
|
|
@@ -16144,29 +16175,30 @@
|
|
|
16144
16175
|
var templateObject_1$r, templateObject_2$n;
|
|
16145
16176
|
|
|
16146
16177
|
function IdCaptureGuides(_a) {
|
|
16147
|
-
var _b,
|
|
16148
|
-
|
|
16149
|
-
|
|
16150
|
-
|
|
16151
|
-
|
|
16152
|
-
|
|
16153
|
-
|
|
16154
|
-
|
|
16155
|
-
|
|
16156
|
-
|
|
16157
|
-
|
|
16158
|
-
|
|
16159
|
-
|
|
16160
|
-
|
|
16161
|
-
|
|
16162
|
-
|
|
16163
|
-
|
|
16164
|
-
|
|
16165
|
-
|
|
16166
|
-
|
|
16167
|
-
rawVerbiage = _o === void 0 ? {} : _o;
|
|
16178
|
+
var _b = _a.guideType,
|
|
16179
|
+
guideType = _b === void 0 ? 'fit' : _b,
|
|
16180
|
+
_c = _a.status,
|
|
16181
|
+
status = _c === void 0 ? 'ready' : _c,
|
|
16182
|
+
_d = _a.progress,
|
|
16183
|
+
progress = _d === void 0 ? 0 : _d,
|
|
16184
|
+
_e = _a.portraitGuidesOnMobile,
|
|
16185
|
+
portraitGuidesOnMobile = _e === void 0 ? true : _e,
|
|
16186
|
+
_f = _a.requestedAction,
|
|
16187
|
+
requestedAction = _f === void 0 ? 'SHOW_ID_FRONT' : _f,
|
|
16188
|
+
_g = _a.isBackToFront,
|
|
16189
|
+
isBackToFront = _g === void 0 ? false : _g,
|
|
16190
|
+
_h = _a.images,
|
|
16191
|
+
images = _h === void 0 ? defaultIdCaptureGuideImages : _h,
|
|
16192
|
+
_j = _a.classNames,
|
|
16193
|
+
classNames = _j === void 0 ? {} : _j,
|
|
16194
|
+
_k = _a.colors,
|
|
16195
|
+
colors = _k === void 0 ? {} : _k,
|
|
16196
|
+
_l = _a.verbiage,
|
|
16197
|
+
rawVerbiage = _l === void 0 ? {} : _l;
|
|
16168
16198
|
var state = useIdCaptureState()[0];
|
|
16169
|
-
var
|
|
16199
|
+
var isRearFacing = useCameraStore(function (state) {
|
|
16200
|
+
return state.isRearFacing;
|
|
16201
|
+
});
|
|
16170
16202
|
var verbiage = useTranslations(rawVerbiage, {
|
|
16171
16203
|
instructionText: 'Scan the front of ID',
|
|
16172
16204
|
capturingText: 'Capturing...',
|
|
@@ -16178,7 +16210,7 @@
|
|
|
16178
16210
|
status: status,
|
|
16179
16211
|
progress: progress,
|
|
16180
16212
|
instruction: state.captureFailed ? verbiage.captureFailedText : state.capturing ? verbiage === null || verbiage === void 0 ? void 0 : verbiage.capturingText : verbiage.instructionText,
|
|
16181
|
-
isMirrored: !
|
|
16213
|
+
isMirrored: !isRearFacing,
|
|
16182
16214
|
borderColor: state.isGoodFrame ? colors.guideBoxSatisfiedColor : colors.guideBoxUnsatisfiedColor,
|
|
16183
16215
|
imageVisible: requestedAction === 'FLIP_ID' || !state.idCardFrontDetectionThresholdMet || !state.documentInBounds || state.documentTooClose
|
|
16184
16216
|
})), guideType === 'fit' && ( /*#__PURE__*/React.createElement(IdCaptureFitGuide, {
|
|
@@ -16188,7 +16220,7 @@
|
|
|
16188
16220
|
status: status,
|
|
16189
16221
|
progress: progress,
|
|
16190
16222
|
instruction: state.captureFailed ? verbiage.captureFailedText : state.capturing ? verbiage === null || verbiage === void 0 ? void 0 : verbiage.capturingText : verbiage.instructionText,
|
|
16191
|
-
isMirrored: !
|
|
16223
|
+
isMirrored: !isRearFacing,
|
|
16192
16224
|
isBackToFront: isBackToFront,
|
|
16193
16225
|
portraitGuidesOnMobile: portraitGuidesOnMobile,
|
|
16194
16226
|
borderColor: state.isGoodFrame ? colors.guideBoxSatisfiedColor : colors.guideBoxUnsatisfiedColor,
|
|
@@ -16287,48 +16319,6 @@
|
|
|
16287
16319
|
var ImagePreviewImageWrapper = styled.div(templateObject_4$b || (templateObject_4$b = __makeTemplateObject(["\n position: relative;\n height: calc(100% - 8px);\n padding: 4px;\n border-radius: 4px;\n background: white;\n\n & > img {\n border-radius: 4px;\n width: auto;\n max-height: 100%;\n }\n"], ["\n position: relative;\n height: calc(100% - 8px);\n padding: 4px;\n border-radius: 4px;\n background: white;\n\n & > img {\n border-radius: 4px;\n width: auto;\n max-height: 100%;\n }\n"])));
|
|
16288
16320
|
var templateObject_1$q, templateObject_2$m, templateObject_3$h, templateObject_4$b;
|
|
16289
16321
|
|
|
16290
|
-
var CameraVideoTag = function CameraVideoTag(_a) {
|
|
16291
|
-
var _b;
|
|
16292
|
-
var className = _a.className;
|
|
16293
|
-
var _c = React.useContext(CameraStateContext),
|
|
16294
|
-
videoRef = _c.videoRef,
|
|
16295
|
-
setVideoLoaded = _c.setVideoLoaded,
|
|
16296
|
-
onVideoUnmounted = _c.onVideoUnmounted,
|
|
16297
|
-
cameraRef = _c.cameraRef;
|
|
16298
|
-
React.useEffect(function notifyCameraProviderOfUnmount() {
|
|
16299
|
-
var videoElement = videoRef.current;
|
|
16300
|
-
if (!videoElement) return;
|
|
16301
|
-
return function () {
|
|
16302
|
-
onVideoUnmounted(videoElement);
|
|
16303
|
-
};
|
|
16304
|
-
}, [onVideoUnmounted, videoRef]);
|
|
16305
|
-
React.useEffect(function setVideoLoadedToFalseOnMount() {
|
|
16306
|
-
setVideoLoaded(false);
|
|
16307
|
-
}, [setVideoLoaded]);
|
|
16308
|
-
React.useEffect(function attachCameraStreamToVideoTagWhenReady() {
|
|
16309
|
-
var _a;
|
|
16310
|
-
if (videoRef.current && ((_a = cameraRef.current) === null || _a === void 0 ? void 0 : _a.stream)) {
|
|
16311
|
-
videoRef.current.srcObject = cameraRef.current.stream;
|
|
16312
|
-
}
|
|
16313
|
-
}, [cameraRef, videoRef]);
|
|
16314
|
-
var onLoadedData = React.useCallback(function () {
|
|
16315
|
-
setVideoLoaded(true);
|
|
16316
|
-
}, [setVideoLoaded]);
|
|
16317
|
-
return /*#__PURE__*/React.createElement(FullscreenVideoTag, {
|
|
16318
|
-
className: className,
|
|
16319
|
-
autoPlay: true,
|
|
16320
|
-
playsInline: true,
|
|
16321
|
-
muted: true,
|
|
16322
|
-
ref: videoRef,
|
|
16323
|
-
onLoadedData: onLoadedData,
|
|
16324
|
-
"$isRearFacing": (_b = cameraRef.current) === null || _b === void 0 ? void 0 : _b.isRearFacing
|
|
16325
|
-
});
|
|
16326
|
-
};
|
|
16327
|
-
var FullscreenVideoTag = styled.video(templateObject_1$p || (templateObject_1$p = __makeTemplateObject(["\n transform: ", ";\n transform-style: preserve-3d;\n min-width: 100%;\n min-height: 100%;\n width: auto;\n height: auto;\n max-width: 100%;\n max-height: 100%;\n object-fit: cover;\n background: black;\n z-index: -2;\n"], ["\n transform: ", ";\n transform-style: preserve-3d;\n min-width: 100%;\n min-height: 100%;\n width: auto;\n height: auto;\n max-width: 100%;\n max-height: 100%;\n object-fit: cover;\n background: black;\n z-index: -2;\n"])), function (props) {
|
|
16328
|
-
return props.$isRearFacing ? '' : 'scaleX(-1)';
|
|
16329
|
-
});
|
|
16330
|
-
var templateObject_1$p;
|
|
16331
|
-
|
|
16332
16322
|
var documentCaptureInitialState = {
|
|
16333
16323
|
documents: [],
|
|
16334
16324
|
currentDocumentIndex: 0,
|
|
@@ -16447,8 +16437,8 @@
|
|
|
16447
16437
|
var _c = React.useReducer(documentCaptureStateReducer, documentCaptureInitialState),
|
|
16448
16438
|
state = _c[0],
|
|
16449
16439
|
dispatch = _c[1];
|
|
16450
|
-
var _d =
|
|
16451
|
-
|
|
16440
|
+
var _d = useCameraStore(),
|
|
16441
|
+
videoStream = _d.videoStream,
|
|
16452
16442
|
videoRef = _d.videoRef;
|
|
16453
16443
|
var uploadDocument = React.useContext(SubmissionContext).uploadDocument;
|
|
16454
16444
|
var uploadCapturedDocument = React.useCallback(function (content, filetype) {
|
|
@@ -16539,8 +16529,7 @@
|
|
|
16539
16529
|
}, [onResize]);
|
|
16540
16530
|
var videoTag = videoRef.current;
|
|
16541
16531
|
React.useEffect(function () {
|
|
16542
|
-
if (!state.capturing) return;
|
|
16543
|
-
if (!cameraRef.current) return;
|
|
16532
|
+
if (!state.capturing || !(videoStream === null || videoStream === void 0 ? void 0 : videoStream.active)) return;
|
|
16544
16533
|
function onComplete(content) {
|
|
16545
16534
|
if (!content) return;
|
|
16546
16535
|
var contentUrl = URL.createObjectURL(content);
|
|
@@ -16553,7 +16542,7 @@
|
|
|
16553
16542
|
});
|
|
16554
16543
|
}
|
|
16555
16544
|
if (typeof ImageCapture !== 'undefined') {
|
|
16556
|
-
var tracks =
|
|
16545
|
+
var tracks = videoStream.getTracks();
|
|
16557
16546
|
var videoCameraTrack = tracks.find(function (track) {
|
|
16558
16547
|
return track.kind === 'video';
|
|
16559
16548
|
});
|
|
@@ -16568,7 +16557,7 @@
|
|
|
16568
16557
|
drawToCanvas(canvas, videoTag);
|
|
16569
16558
|
canvas.toBlob(onComplete);
|
|
16570
16559
|
}
|
|
16571
|
-
}, [
|
|
16560
|
+
}, [state.capturing, videoStream, videoTag]);
|
|
16572
16561
|
var stateWithActions = React.useMemo(function () {
|
|
16573
16562
|
return _assign(_assign({}, state), {
|
|
16574
16563
|
uploadCapturedDocument: uploadCapturedDocument
|
|
@@ -16683,52 +16672,85 @@
|
|
|
16683
16672
|
ref: canvasRef
|
|
16684
16673
|
}));
|
|
16685
16674
|
};
|
|
16686
|
-
var CanvasWrapper = styled.div(templateObject_1$
|
|
16675
|
+
var CanvasWrapper = styled.div(templateObject_1$p || (templateObject_1$p = __makeTemplateObject(["\n flex-grow: 1;\n background-clip: padding-box;\n box-shadow: inset 0 0 0 2px ", ";\n"], ["\n flex-grow: 1;\n background-clip: padding-box;\n box-shadow: inset 0 0 0 2px ", ";\n"])), function (props) {
|
|
16687
16676
|
return props.$maskColor;
|
|
16688
16677
|
});
|
|
16689
16678
|
var Canvas = styled.canvas(templateObject_2$l || (templateObject_2$l = __makeTemplateObject(["\n display: block;\n"], ["\n display: block;\n"])));
|
|
16690
|
-
var templateObject_1$
|
|
16679
|
+
var templateObject_1$p, templateObject_2$l;
|
|
16691
16680
|
|
|
16692
|
-
var CameraFeedWrapper = styled.div(templateObject_1$
|
|
16681
|
+
var CameraFeedWrapper = styled.div(templateObject_1$o || (templateObject_1$o = __makeTemplateObject(["\n ", "\n"], ["\n ", "\n"])), function (props) {
|
|
16693
16682
|
return props.$mode === 'snapToGuides' ? "display: flex;\n position: absolute;\n left: ".concat(props.$x, "px;\n top: ").concat(props.$y, "px;\n width: ").concat(props.$w, "px;\n height: ").concat(props.$h, "px;") : "";
|
|
16694
16683
|
});
|
|
16684
|
+
var templateObject_1$o;
|
|
16685
|
+
|
|
16686
|
+
var CameraVideoTag = function CameraVideoTag(props) {
|
|
16687
|
+
var _a = useCameraStore(useShallow(function (store) {
|
|
16688
|
+
return {
|
|
16689
|
+
videoRef: store.videoRef,
|
|
16690
|
+
videoStream: store.videoStream,
|
|
16691
|
+
onVideoMounted: store.onVideoMounted,
|
|
16692
|
+
isRearFacing: store.isRearFacing
|
|
16693
|
+
};
|
|
16694
|
+
})),
|
|
16695
|
+
videoRef = _a.videoRef,
|
|
16696
|
+
videoStream = _a.videoStream,
|
|
16697
|
+
onVideoMounted = _a.onVideoMounted,
|
|
16698
|
+
isRearFacing = _a.isRearFacing;
|
|
16699
|
+
React.useEffect(function attachCameraStreamToVideoTagWhenReady() {
|
|
16700
|
+
if (videoRef.current && videoStream) {
|
|
16701
|
+
debug('attaching camera stream to video tag');
|
|
16702
|
+
videoRef.current.srcObject = videoStream;
|
|
16703
|
+
}
|
|
16704
|
+
}, [videoStream, videoRef]);
|
|
16705
|
+
return /*#__PURE__*/React.createElement(FullscreenVideoTag, _assign({
|
|
16706
|
+
autoPlay: true,
|
|
16707
|
+
playsInline: true,
|
|
16708
|
+
muted: true,
|
|
16709
|
+
ref: videoRef,
|
|
16710
|
+
onLoadedData: onVideoMounted,
|
|
16711
|
+
"$isRearFacing": isRearFacing
|
|
16712
|
+
}, props));
|
|
16713
|
+
};
|
|
16714
|
+
var FullscreenVideoTag = styled.video(templateObject_1$n || (templateObject_1$n = __makeTemplateObject(["\n transform: ", ";\n transform-style: preserve-3d;\n min-width: 100%;\n min-height: 100%;\n width: auto;\n height: auto;\n max-width: 100%;\n max-height: 100%;\n object-fit: cover;\n background: black;\n z-index: -2;\n"], ["\n transform: ", ";\n transform-style: preserve-3d;\n min-width: 100%;\n min-height: 100%;\n width: auto;\n height: auto;\n max-width: 100%;\n max-height: 100%;\n object-fit: cover;\n background: black;\n z-index: -2;\n"])), function (props) {
|
|
16715
|
+
return props.$isRearFacing ? '' : 'scaleX(-1)';
|
|
16716
|
+
});
|
|
16695
16717
|
var templateObject_1$n;
|
|
16696
16718
|
|
|
16697
16719
|
var DocumentCaptureScreen = function DocumentCaptureScreen(_a) {
|
|
16698
|
-
var _b, _c, _d, _e, _f
|
|
16720
|
+
var _b, _c, _d, _e, _f;
|
|
16699
16721
|
var onCaptureClicked = _a.onCaptureClicked,
|
|
16700
|
-
|
|
16701
|
-
classNames =
|
|
16702
|
-
|
|
16703
|
-
rawVerbiage =
|
|
16704
|
-
var
|
|
16705
|
-
|
|
16706
|
-
documents =
|
|
16707
|
-
currentDocumentIndex =
|
|
16708
|
-
rectX =
|
|
16709
|
-
rectY =
|
|
16710
|
-
rectWidth =
|
|
16711
|
-
rectHeight =
|
|
16712
|
-
rectOffsetTop =
|
|
16713
|
-
capturing =
|
|
16714
|
-
uploadCapturedDocument =
|
|
16715
|
-
dispatch =
|
|
16716
|
-
var
|
|
16717
|
-
title =
|
|
16718
|
-
aspectRatio =
|
|
16719
|
-
cameraFeedMode =
|
|
16720
|
-
instructions =
|
|
16721
|
-
contentUrl =
|
|
16722
|
-
content =
|
|
16723
|
-
uploadState =
|
|
16724
|
-
var
|
|
16725
|
-
|
|
16726
|
-
cameraReady =
|
|
16727
|
-
cameraAccessDenied =
|
|
16728
|
-
requestCameraAccess =
|
|
16729
|
-
var
|
|
16730
|
-
cameraAccessRequested =
|
|
16731
|
-
setCameraAccessRequested =
|
|
16722
|
+
_g = _a.classNames,
|
|
16723
|
+
classNames = _g === void 0 ? {} : _g,
|
|
16724
|
+
_h = _a.verbiage,
|
|
16725
|
+
rawVerbiage = _h === void 0 ? {} : _h;
|
|
16726
|
+
var _j = useDocumentCaptureState(),
|
|
16727
|
+
_k = _j[0],
|
|
16728
|
+
documents = _k.documents,
|
|
16729
|
+
currentDocumentIndex = _k.currentDocumentIndex,
|
|
16730
|
+
rectX = _k.rectX,
|
|
16731
|
+
rectY = _k.rectY,
|
|
16732
|
+
rectWidth = _k.rectWidth,
|
|
16733
|
+
rectHeight = _k.rectHeight,
|
|
16734
|
+
rectOffsetTop = _k.rectOffsetTop,
|
|
16735
|
+
capturing = _k.capturing,
|
|
16736
|
+
uploadCapturedDocument = _k.uploadCapturedDocument,
|
|
16737
|
+
dispatch = _j[1];
|
|
16738
|
+
var _l = (_b = documents[currentDocumentIndex]) !== null && _b !== void 0 ? _b : {},
|
|
16739
|
+
title = _l.title,
|
|
16740
|
+
aspectRatio = _l.aspectRatio,
|
|
16741
|
+
cameraFeedMode = _l.cameraFeedMode,
|
|
16742
|
+
instructions = _l.instructions,
|
|
16743
|
+
contentUrl = _l.contentUrl,
|
|
16744
|
+
content = _l.content,
|
|
16745
|
+
uploadState = _l.uploadState;
|
|
16746
|
+
var _m = useCameraStore(),
|
|
16747
|
+
videoStream = _m.videoStream,
|
|
16748
|
+
cameraReady = _m.cameraReady,
|
|
16749
|
+
cameraAccessDenied = _m.cameraAccessDenied,
|
|
16750
|
+
requestCameraAccess = _m.requestCameraAccess;
|
|
16751
|
+
var _o = React.useState(false),
|
|
16752
|
+
cameraAccessRequested = _o[0],
|
|
16753
|
+
setCameraAccessRequested = _o[1];
|
|
16732
16754
|
var cameraAccessNeeded =
|
|
16733
16755
|
// we should force the browser to ask for camera access if...
|
|
16734
16756
|
uploadState === 'not_started' &&
|
|
@@ -16737,14 +16759,14 @@
|
|
|
16737
16759
|
// and the user hasn't passed a media blob for the current document...
|
|
16738
16760
|
!cameraAccessRequested &&
|
|
16739
16761
|
// and we haven't already tried to force a camera request...
|
|
16740
|
-
!(
|
|
16762
|
+
!(videoStream === null || videoStream === void 0 ? void 0 : videoStream.active); // and we don't already have camera access.
|
|
16741
16763
|
React.useEffect(function requestCameraAccessIfNeeded() {
|
|
16742
16764
|
if (!cameraAccessNeeded) return;
|
|
16743
16765
|
setCameraAccessRequested(true);
|
|
16744
16766
|
requestCameraAccess();
|
|
16745
16767
|
}, [cameraAccessNeeded, requestCameraAccess]);
|
|
16746
16768
|
var theme = styled.useTheme();
|
|
16747
|
-
var maskColor = (
|
|
16769
|
+
var maskColor = (_e = (_d = (_c = theme.documentCapture) === null || _c === void 0 ? void 0 : _c.guideBox) === null || _d === void 0 ? void 0 : _d.maskColor) !== null && _e !== void 0 ? _e : cameraFeedMode === 'snapToGuides' ? '#708090' : "rgba(0, 0, 0, 0.5)";
|
|
16748
16770
|
var verbiage = useTranslations(rawVerbiage, {
|
|
16749
16771
|
headingText: title,
|
|
16750
16772
|
loadingBtnText: 'Camera initializing...',
|
|
@@ -16777,7 +16799,7 @@
|
|
|
16777
16799
|
});
|
|
16778
16800
|
}
|
|
16779
16801
|
return /*#__PURE__*/React.createElement(PageContainer, {
|
|
16780
|
-
className: "flex ".concat((
|
|
16802
|
+
className: "flex ".concat((_f = classNames.container) !== null && _f !== void 0 ? _f : '')
|
|
16781
16803
|
}, /*#__PURE__*/React.createElement(CameraFeedWrapper, {
|
|
16782
16804
|
className: classNames.cameraFeedWrapper,
|
|
16783
16805
|
"$mode": cameraFeedMode !== null && cameraFeedMode !== void 0 ? cameraFeedMode : 'snapToGuides',
|
|
@@ -17202,7 +17224,7 @@
|
|
|
17202
17224
|
var _3 = useIdCaptureState(),
|
|
17203
17225
|
state = _3[0],
|
|
17204
17226
|
dispatch = _3[1];
|
|
17205
|
-
var _4 =
|
|
17227
|
+
var _4 = useCameraStore(),
|
|
17206
17228
|
cameraAccessDenied = _4.cameraAccessDenied,
|
|
17207
17229
|
requestCameraAccess = _4.requestCameraAccess,
|
|
17208
17230
|
releaseCameraAccess = _4.releaseCameraAccess;
|
|
@@ -18150,7 +18172,13 @@
|
|
|
18150
18172
|
modelLoadTimeoutMs = _c === void 0 ? defaultSelfieCaptureModelLoadTimeoutMs : _c,
|
|
18151
18173
|
_d = _a.requireVerticalFaceCentering,
|
|
18152
18174
|
requireVerticalFaceCentering = _d === void 0 ? true : _d;
|
|
18153
|
-
var _e =
|
|
18175
|
+
var _e = useCameraStore(useShallow(function (state) {
|
|
18176
|
+
return {
|
|
18177
|
+
videoRef: state.videoRef,
|
|
18178
|
+
videoLoaded: state.videoLoaded,
|
|
18179
|
+
cameraReady: state.cameraReady
|
|
18180
|
+
};
|
|
18181
|
+
})),
|
|
18154
18182
|
videoRef = _e.videoRef,
|
|
18155
18183
|
videoLoaded = _e.videoLoaded,
|
|
18156
18184
|
cameraReady = _e.cameraReady;
|
|
@@ -18158,7 +18186,8 @@
|
|
|
18158
18186
|
var onPredictionHandler = React.useRef();
|
|
18159
18187
|
var _f = useLoadFaceDetector({
|
|
18160
18188
|
onModelError: onModelError,
|
|
18161
|
-
modelLoadTimeoutMs: modelLoadTimeoutMs
|
|
18189
|
+
modelLoadTimeoutMs: modelLoadTimeoutMs,
|
|
18190
|
+
videoRef: videoRef
|
|
18162
18191
|
}),
|
|
18163
18192
|
ready = _f.ready,
|
|
18164
18193
|
modelDownloadProgress = _f.modelDownloadProgress,
|
|
@@ -18491,8 +18520,14 @@
|
|
|
18491
18520
|
prediction = _t.prediction,
|
|
18492
18521
|
dispatch = _s[1];
|
|
18493
18522
|
var lastPredictionCanvas = React.useRef(null);
|
|
18494
|
-
var _u =
|
|
18495
|
-
|
|
18523
|
+
var _u = useCameraStore(useShallow(function (state) {
|
|
18524
|
+
return {
|
|
18525
|
+
camera: state.camera,
|
|
18526
|
+
cameraReady: state.cameraReady,
|
|
18527
|
+
videoRef: state.videoRef
|
|
18528
|
+
};
|
|
18529
|
+
})),
|
|
18530
|
+
camera = _u.camera,
|
|
18496
18531
|
videoRef = _u.videoRef;
|
|
18497
18532
|
var _v = React.useContext(SelfieGuidanceModelsContext),
|
|
18498
18533
|
onPredictionMade = _v.onPredictionMade,
|
|
@@ -18582,7 +18617,7 @@
|
|
|
18582
18617
|
face: prediction.face,
|
|
18583
18618
|
scaling: debugScalingDetails,
|
|
18584
18619
|
color: satisfied ? 'green' : 'red'
|
|
18585
|
-
}))), debugMode && ( /*#__PURE__*/React.createElement(DebugStatsPane, null,
|
|
18620
|
+
}))), debugMode && ( /*#__PURE__*/React.createElement(DebugStatsPane, null, camera ? ( /*#__PURE__*/React.createElement(React.Fragment, null, "\u2705 Camera: ", camera.label, " (", camera.width, "x", camera.height, ")")) : '❌ Camera not ready', /*#__PURE__*/React.createElement("br", null), !(prediction === null || prediction === void 0 ? void 0 : prediction.faceNotCentered) ? '✅' : '❌', " Face Centered", /*#__PURE__*/React.createElement("br", null), !(prediction === null || prediction === void 0 ? void 0 : prediction.faceTooClose) && !(prediction === null || prediction === void 0 ? void 0 : prediction.faceTooFar) ? '✅' : '❌', ' ', "Face", ' ', (prediction === null || prediction === void 0 ? void 0 : prediction.faceTooClose) ? 'Too Close' : (prediction === null || prediction === void 0 ? void 0 : prediction.faceTooFar) ? 'Too Far' : 'Distance Correct', /*#__PURE__*/React.createElement("br", null), !(prediction === null || prediction === void 0 ? void 0 : prediction.faceLookingAway) ? '✅' : '❌', " Face Looking Forward", /*#__PURE__*/React.createElement("br", null), !(prediction === null || prediction === void 0 ? void 0 : prediction.faceIsStable) ? '✅' : '❌', " Face Is Stable", /*#__PURE__*/React.createElement("br", null), !timedOut ? '✅' : '❌', " Time Remaining:", ' ', Math.max(0, timeoutDurationMs - (new Date().getTime() - (timeoutStartedAt !== null && timeoutStartedAt !== void 0 ? timeoutStartedAt : new Date()).getTime())), "ms")), /*#__PURE__*/React.createElement(ExitCaptureButton, {
|
|
18586
18621
|
onClick: onExit,
|
|
18587
18622
|
className: classNames.exitCaptureBtn
|
|
18588
18623
|
}));
|
|
@@ -19038,7 +19073,9 @@
|
|
|
19038
19073
|
colors = _e === void 0 ? {} : _e,
|
|
19039
19074
|
_f = _a.verbiage,
|
|
19040
19075
|
rawVerbiage = _f === void 0 ? {} : _f;
|
|
19041
|
-
var requestMicrophoneAccess =
|
|
19076
|
+
var requestMicrophoneAccess = useCameraStore(function (state) {
|
|
19077
|
+
return state.requestMicrophoneAccess;
|
|
19078
|
+
});
|
|
19042
19079
|
assets.imageUrl || (assets.imageUrl = DEFAULT_CDN_URL + '/microphone-disable-icon.svg');
|
|
19043
19080
|
var verbiage = useTranslations(rawVerbiage, {
|
|
19044
19081
|
headingText: 'Your microphone permission is disabled',
|
|
@@ -19086,7 +19123,13 @@
|
|
|
19086
19123
|
colors = _e === void 0 ? {} : _e,
|
|
19087
19124
|
_f = _a.verbiage,
|
|
19088
19125
|
rawVerbiage = _f === void 0 ? {} : _f;
|
|
19089
|
-
var _g =
|
|
19126
|
+
var _g = useCameraStore(useShallow(function (state) {
|
|
19127
|
+
return {
|
|
19128
|
+
cameraReady: state.cameraReady,
|
|
19129
|
+
cameraAccessDenied: state.cameraAccessDenied,
|
|
19130
|
+
microphoneAccessDenied: state.microphoneAccessDenied
|
|
19131
|
+
};
|
|
19132
|
+
})),
|
|
19090
19133
|
cameraReady = _g.cameraReady,
|
|
19091
19134
|
cameraAccessDenied = _g.cameraAccessDenied,
|
|
19092
19135
|
microphoneAccessDenied = _g.microphoneAccessDenied;
|
|
@@ -19173,7 +19216,13 @@
|
|
|
19173
19216
|
colors = _e === void 0 ? {} : _e,
|
|
19174
19217
|
_f = _a.verbiage,
|
|
19175
19218
|
rawVerbiage = _f === void 0 ? {} : _f;
|
|
19176
|
-
var _g =
|
|
19219
|
+
var _g = useCameraStore(useShallow(function (state) {
|
|
19220
|
+
return {
|
|
19221
|
+
cameraReady: state.cameraReady,
|
|
19222
|
+
cameraAccessDenied: state.cameraAccessDenied,
|
|
19223
|
+
microphoneAccessDenied: state.microphoneAccessDenied
|
|
19224
|
+
};
|
|
19225
|
+
})),
|
|
19177
19226
|
cameraReady = _g.cameraReady,
|
|
19178
19227
|
cameraAccessDenied = _g.cameraAccessDenied,
|
|
19179
19228
|
microphoneAccessDenied = _g.microphoneAccessDenied;
|
|
@@ -19390,7 +19439,13 @@
|
|
|
19390
19439
|
livenessCheckRequest = _t.livenessCheckRequest,
|
|
19391
19440
|
setSelfieImage = _t.setSelfieImage,
|
|
19392
19441
|
logSelfieCaptureAttempt = _t.logSelfieCaptureAttempt;
|
|
19393
|
-
var _u =
|
|
19442
|
+
var _u = useCameraStore(useShallow(function (state) {
|
|
19443
|
+
return {
|
|
19444
|
+
cameraAccessDenied: state.cameraAccessDenied,
|
|
19445
|
+
requestCameraAccess: state.requestCameraAccess,
|
|
19446
|
+
releaseCameraAccess: state.releaseCameraAccess
|
|
19447
|
+
};
|
|
19448
|
+
})),
|
|
19394
19449
|
cameraAccessDenied = _u.cameraAccessDenied,
|
|
19395
19450
|
requestCameraAccess = _u.requestCameraAccess,
|
|
19396
19451
|
releaseCameraAccess = _u.releaseCameraAccess;
|
|
@@ -20879,10 +20934,10 @@
|
|
|
20879
20934
|
setSignatureVideoUrl = _e[1];
|
|
20880
20935
|
var signatureRecorder = React.useRef(null);
|
|
20881
20936
|
var recordedChunks = React.useRef([]);
|
|
20882
|
-
var _f =
|
|
20883
|
-
|
|
20937
|
+
var _f = useCameraStore(),
|
|
20938
|
+
camera = _f.camera,
|
|
20884
20939
|
videoRef = _f.videoRef;
|
|
20885
|
-
var _g = useVideoRecorder(
|
|
20940
|
+
var _g = useVideoRecorder(camera),
|
|
20886
20941
|
isRecordingVideo = _g.isRecordingVideo,
|
|
20887
20942
|
startRecordingVideo = _g.startRecordingVideo,
|
|
20888
20943
|
stopRecordingVideo = _g.stopRecordingVideo,
|
|
@@ -20950,8 +21005,8 @@
|
|
|
20950
21005
|
var animationFrame = React.useRef(0);
|
|
20951
21006
|
React.useEffect(function () {
|
|
20952
21007
|
var _a;
|
|
20953
|
-
if (!signaturePad.current || !videoRef.current || !outputCanvas.current || !
|
|
20954
|
-
var _b = [
|
|
21008
|
+
if (!signaturePad.current || !videoRef.current || !outputCanvas.current || !camera || !isRecording || !isRecordingVideo) return;
|
|
21009
|
+
var _b = [camera.width, camera.height],
|
|
20955
21010
|
w = _b[0],
|
|
20956
21011
|
h = _b[1];
|
|
20957
21012
|
var isPortrait = typeof window !== 'undefined' && window.innerWidth < window.innerHeight;
|
|
@@ -20984,7 +21039,7 @@
|
|
|
20984
21039
|
return function () {
|
|
20985
21040
|
cancelAnimationFrame(animationFrame.current);
|
|
20986
21041
|
};
|
|
20987
|
-
}, [
|
|
21042
|
+
}, [camera, isRecording, isRecordingVideo, videoRef]);
|
|
20988
21043
|
var onAcceptClicked = React.useCallback(function () {
|
|
20989
21044
|
return __awaiter(_this, void 0, void 0, function () {
|
|
20990
21045
|
var imageUrl;
|
|
@@ -21113,27 +21168,29 @@
|
|
|
21113
21168
|
var templateObject_1$9, templateObject_2$8, templateObject_3$8, templateObject_4$3, templateObject_5$2, templateObject_6$2, templateObject_7$1;
|
|
21114
21169
|
|
|
21115
21170
|
var VideoSignatureCapture = function VideoSignatureCapture(_a) {
|
|
21116
|
-
var _b
|
|
21171
|
+
var _b;
|
|
21117
21172
|
var onVideoCaptured = _a.onVideoCaptured,
|
|
21118
21173
|
onFaceNotDetected = _a.onFaceNotDetected,
|
|
21119
21174
|
onExit = _a.onExit,
|
|
21120
21175
|
guidesComponent = _a.guidesComponent,
|
|
21121
|
-
|
|
21122
|
-
classNames =
|
|
21123
|
-
|
|
21124
|
-
colors =
|
|
21125
|
-
|
|
21126
|
-
rawVerbiage =
|
|
21127
|
-
|
|
21128
|
-
debugMode =
|
|
21129
|
-
var
|
|
21176
|
+
_c = _a.classNames,
|
|
21177
|
+
classNames = _c === void 0 ? {} : _c,
|
|
21178
|
+
_d = _a.colors,
|
|
21179
|
+
colors = _d === void 0 ? {} : _d,
|
|
21180
|
+
_e = _a.verbiage,
|
|
21181
|
+
rawVerbiage = _e === void 0 ? {} : _e,
|
|
21182
|
+
_f = _a.debugMode,
|
|
21183
|
+
debugMode = _f === void 0 ? false : _f;
|
|
21184
|
+
var camera = useCameraStore(function (state) {
|
|
21185
|
+
return state.camera;
|
|
21186
|
+
});
|
|
21130
21187
|
var onPredictionMade = React.useContext(SelfieGuidanceModelsContext).onPredictionMade;
|
|
21131
|
-
var
|
|
21132
|
-
signatureData =
|
|
21133
|
-
signatureDataUrl =
|
|
21134
|
-
signatureVideoData =
|
|
21135
|
-
startRecording =
|
|
21136
|
-
stopRecording =
|
|
21188
|
+
var _g = useVideoSignatureContext(),
|
|
21189
|
+
signatureData = _g.signatureData,
|
|
21190
|
+
signatureDataUrl = _g.signatureDataUrl,
|
|
21191
|
+
signatureVideoData = _g.signatureVideoData,
|
|
21192
|
+
startRecording = _g.startRecording,
|
|
21193
|
+
stopRecording = _g.stopRecording;
|
|
21137
21194
|
React.useEffect(function () {
|
|
21138
21195
|
startRecording();
|
|
21139
21196
|
return function () {
|
|
@@ -21150,9 +21207,9 @@
|
|
|
21150
21207
|
onVideoCaptured === null || onVideoCaptured === void 0 ? void 0 : onVideoCaptured(signatureVideoData, signatureData, signatureDataUrl);
|
|
21151
21208
|
}
|
|
21152
21209
|
}, [onVideoCaptured, signatureData, signatureDataUrl, signatureVideoData]);
|
|
21153
|
-
var
|
|
21154
|
-
numFramesWithoutFaces =
|
|
21155
|
-
setNumFramesWithoutFaces =
|
|
21210
|
+
var _h = React.useState(0),
|
|
21211
|
+
numFramesWithoutFaces = _h[0],
|
|
21212
|
+
setNumFramesWithoutFaces = _h[1];
|
|
21156
21213
|
React.useEffect(function () {
|
|
21157
21214
|
onPredictionMade(function (_a) {
|
|
21158
21215
|
var face = _a.face;
|
|
@@ -21179,7 +21236,7 @@
|
|
|
21179
21236
|
}, verbiage.guidanceMessageText))), /*#__PURE__*/React.createElement(GuidesComponent, {
|
|
21180
21237
|
classNames: classNames.videoSignatureGuidesClassNames,
|
|
21181
21238
|
status: "success"
|
|
21182
|
-
}), debugMode && ( /*#__PURE__*/React.createElement(DebugStatsPane, null, "Video: ",
|
|
21239
|
+
}), debugMode && ( /*#__PURE__*/React.createElement(DebugStatsPane, null, "Video: ", camera === null || camera === void 0 ? void 0 : camera.width, "x", camera === null || camera === void 0 ? void 0 : camera.height)), /*#__PURE__*/React.createElement(ExitCaptureButton, {
|
|
21183
21240
|
onClick: onExit,
|
|
21184
21241
|
className: classNames.exitCaptureBtn
|
|
21185
21242
|
}));
|
|
@@ -21273,7 +21330,13 @@
|
|
|
21273
21330
|
setSignatureData = _l.setSignatureData,
|
|
21274
21331
|
setSignatureVideoUrl = _l.setSignatureVideoUrl,
|
|
21275
21332
|
logSelfieCaptureAttempt = _l.logSelfieCaptureAttempt;
|
|
21276
|
-
var _m =
|
|
21333
|
+
var _m = useCameraStore(useShallow(function (state) {
|
|
21334
|
+
return {
|
|
21335
|
+
cameraAccessDenied: state.cameraAccessDenied,
|
|
21336
|
+
requestCameraAccess: state.requestCameraAccess,
|
|
21337
|
+
releaseCameraAccess: state.releaseCameraAccess
|
|
21338
|
+
};
|
|
21339
|
+
})),
|
|
21277
21340
|
cameraAccessDenied = _m.cameraAccessDenied,
|
|
21278
21341
|
requestCameraAccess = _m.requestCameraAccess,
|
|
21279
21342
|
releaseCameraAccess = _m.releaseCameraAccess;
|
|
@@ -21433,27 +21496,29 @@
|
|
|
21433
21496
|
};
|
|
21434
21497
|
|
|
21435
21498
|
var IdVideoCaptureGuides = function IdVideoCaptureGuides(_a) {
|
|
21436
|
-
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y
|
|
21437
|
-
var
|
|
21438
|
-
requestedAction =
|
|
21439
|
-
|
|
21440
|
-
satisfied =
|
|
21441
|
-
|
|
21442
|
-
faceGuideStatus =
|
|
21499
|
+
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y;
|
|
21500
|
+
var _z = _a.requestedAction,
|
|
21501
|
+
requestedAction = _z === void 0 ? 'SHOW_ID_FRONT' : _z,
|
|
21502
|
+
_0 = _a.satisfied,
|
|
21503
|
+
satisfied = _0 === void 0 ? false : _0,
|
|
21504
|
+
_1 = _a.faceGuideStatus,
|
|
21505
|
+
faceGuideStatus = _1 === void 0 ? 'success' : _1,
|
|
21443
21506
|
faceGuideBorderWidth = _a.faceGuideBorderWidth,
|
|
21444
21507
|
faceGuideBorderColor = _a.faceGuideBorderColor,
|
|
21445
|
-
|
|
21446
|
-
idCardGuideStatus =
|
|
21508
|
+
_2 = _a.idCardGuideStatus,
|
|
21509
|
+
idCardGuideStatus = _2 === void 0 ? 'ready' : _2,
|
|
21447
21510
|
idCardGuideBorderWidth = _a.idCardGuideBorderWidth,
|
|
21448
21511
|
idCardGuideBorderColor = _a.idCardGuideBorderColor,
|
|
21449
21512
|
idCardCaptureProgress = _a.idCardCaptureProgress,
|
|
21450
|
-
|
|
21451
|
-
userSuppliedImages =
|
|
21452
|
-
|
|
21453
|
-
classNames =
|
|
21454
|
-
|
|
21455
|
-
rawVerbiage =
|
|
21456
|
-
var
|
|
21513
|
+
_3 = _a.idCardCaptureGuideImages,
|
|
21514
|
+
userSuppliedImages = _3 === void 0 ? defaultIdCaptureGuideImages : _3,
|
|
21515
|
+
_4 = _a.classNames,
|
|
21516
|
+
classNames = _4 === void 0 ? {} : _4,
|
|
21517
|
+
_5 = _a.verbiage,
|
|
21518
|
+
rawVerbiage = _5 === void 0 ? {} : _5;
|
|
21519
|
+
var isRearFacing = useCameraStore(function (state) {
|
|
21520
|
+
return state.isRearFacing;
|
|
21521
|
+
});
|
|
21457
21522
|
var verbiage = useTranslations(rawVerbiage, {
|
|
21458
21523
|
idFrontInstructionText: 'Display the front of your ID card...',
|
|
21459
21524
|
idBackInstructionText: 'Display the back of your ID card...',
|
|
@@ -21466,17 +21531,17 @@
|
|
|
21466
21531
|
if (faceGuideBorderColor === undefined) faceGuideBorderColor = (_j = satisfied ? (_f = (_e = theme.idVideoCapture) === null || _e === void 0 ? void 0 : _e.faceGuides) === null || _f === void 0 ? void 0 : _f.satisfiedColor : (_h = (_g = theme.idVideoCapture) === null || _g === void 0 ? void 0 : _g.faceGuides) === null || _h === void 0 ? void 0 : _h.unsatisfiedColor) !== null && _j !== void 0 ? _j : '#D6DCE7';
|
|
21467
21532
|
if (idCardGuideBorderWidth === undefined) idCardGuideBorderWidth = (_m = (_l = (_k = theme.idVideoCapture) === null || _k === void 0 ? void 0 : _k.idCardGuides) === null || _l === void 0 ? void 0 : _l.borderWidth) !== null && _m !== void 0 ? _m : 20;
|
|
21468
21533
|
if (idCardGuideBorderColor === undefined) idCardGuideBorderColor = (_s = satisfied ? (_p = (_o = theme.idVideoCapture) === null || _o === void 0 ? void 0 : _o.idCardGuides) === null || _p === void 0 ? void 0 : _p.satisfiedColor : (_r = (_q = theme.idVideoCapture) === null || _q === void 0 ? void 0 : _q.idCardGuides) === null || _r === void 0 ? void 0 : _r.unsatisfiedColor) !== null && _s !== void 0 ? _s : '#D6DCE7';
|
|
21469
|
-
var
|
|
21470
|
-
idCardGuideRef =
|
|
21471
|
-
|
|
21472
|
-
idCardGuideWidth =
|
|
21473
|
-
|
|
21474
|
-
idCardGuideHeight =
|
|
21534
|
+
var _6 = useResizeObserver(),
|
|
21535
|
+
idCardGuideRef = _6.ref,
|
|
21536
|
+
_7 = _6.width,
|
|
21537
|
+
idCardGuideWidth = _7 === void 0 ? 0 : _7,
|
|
21538
|
+
_8 = _6.height,
|
|
21539
|
+
idCardGuideHeight = _8 === void 0 ? 0 : _8;
|
|
21475
21540
|
var idCaptureGuideImages = useGuideImages(userSuppliedImages);
|
|
21476
21541
|
var idCaptureGuideImagesByUrl = useGuideImagesByUrl(idCaptureGuideImages);
|
|
21477
|
-
var
|
|
21478
|
-
aspectRatio =
|
|
21479
|
-
setAspectRatio =
|
|
21542
|
+
var _9 = React.useState(undefined),
|
|
21543
|
+
aspectRatio = _9[0],
|
|
21544
|
+
setAspectRatio = _9[1];
|
|
21480
21545
|
var onImageLoaded = React.useCallback(function (e) {
|
|
21481
21546
|
var _a, _b, _c, _d;
|
|
21482
21547
|
var img = e.currentTarget;
|
|
@@ -21523,7 +21588,7 @@
|
|
|
21523
21588
|
}, /*#__PURE__*/React.createElement(IdCardGuideImage, {
|
|
21524
21589
|
alt: "",
|
|
21525
21590
|
className: classNames.idCardGuideImage,
|
|
21526
|
-
"$isMirrored": !
|
|
21591
|
+
"$isMirrored": !isRearFacing,
|
|
21527
21592
|
style: idCardImageStyle,
|
|
21528
21593
|
src: requestedAction === 'SHOW_ID_BACK' ? idCaptureGuideImages.landscape.SHOW_ID_BACK.url : idCaptureGuideImages.landscape.SHOW_ID_FRONT.url,
|
|
21529
21594
|
onLoad: onImageLoaded
|
|
@@ -21537,8 +21602,8 @@
|
|
|
21537
21602
|
className: classNames.idCardGuideInstructionsContainer
|
|
21538
21603
|
}, /*#__PURE__*/React.createElement(IdCardGuideInstructions, {
|
|
21539
21604
|
className: classNames.idCardGuideInstructions,
|
|
21540
|
-
"$textColor": (
|
|
21541
|
-
"$background": (
|
|
21605
|
+
"$textColor": (_w = (_v = theme.idVideoCapture) === null || _v === void 0 ? void 0 : _v.idCardGuides) === null || _w === void 0 ? void 0 : _w.instructionsTextColor,
|
|
21606
|
+
"$background": (_y = (_x = theme.idVideoCapture) === null || _x === void 0 ? void 0 : _x.idCardGuides) === null || _y === void 0 ? void 0 : _y.instructionsBackgroundColor
|
|
21542
21607
|
}, instructionText))))));
|
|
21543
21608
|
};
|
|
21544
21609
|
var Container = styled.div(templateObject_1$7 || (templateObject_1$7 = __makeTemplateObject(["\n display: flex;\n max-height: 100%;\n position: absolute;\n z-index: 1000;\n width: 100dvw;\n height: 100dvh;\n font-family: ", ";\n box-sizing: border-box;\n overflow: hidden;\n padding: 40px;\n"], ["\n display: flex;\n max-height: 100%;\n position: absolute;\n z-index: 1000;\n width: 100dvw;\n height: 100dvh;\n font-family: ", ";\n box-sizing: border-box;\n overflow: hidden;\n padding: 40px;\n"])), function (props) {
|
|
@@ -21683,99 +21748,100 @@
|
|
|
21683
21748
|
flipShortcutThreshold: 0.7
|
|
21684
21749
|
};
|
|
21685
21750
|
var IdVideoCapture = function IdVideoCapture(_a) {
|
|
21686
|
-
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v
|
|
21751
|
+
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;
|
|
21687
21752
|
var onComplete = _a.onComplete,
|
|
21688
21753
|
onIdFrontImageCaptured = _a.onIdFrontImageCaptured,
|
|
21689
21754
|
onIdBackImageCaptured = _a.onIdBackImageCaptured,
|
|
21690
21755
|
onFaceNotDetected = _a.onFaceNotDetected,
|
|
21691
21756
|
onRecordingFailed = _a.onRecordingFailed,
|
|
21692
21757
|
onExitCapture = _a.onExitCapture,
|
|
21693
|
-
|
|
21694
|
-
idCaptureModelsEnabled =
|
|
21695
|
-
|
|
21696
|
-
idCardCaptureGuideImages =
|
|
21697
|
-
|
|
21698
|
-
idCardFrontDelay =
|
|
21699
|
-
|
|
21700
|
-
videoIdCaptureThresholds =
|
|
21701
|
-
|
|
21702
|
-
skipShowIdCardBack =
|
|
21703
|
-
|
|
21704
|
-
captureCountdownSeconds =
|
|
21758
|
+
_w = _a.idCaptureModelsEnabled,
|
|
21759
|
+
idCaptureModelsEnabled = _w === void 0 ? true : _w,
|
|
21760
|
+
_x = _a.idCardCaptureGuideImages,
|
|
21761
|
+
idCardCaptureGuideImages = _x === void 0 ? defaultIdCaptureGuideImages : _x,
|
|
21762
|
+
_y = _a.idCardFrontDelay,
|
|
21763
|
+
idCardFrontDelay = _y === void 0 ? 1000 : _y,
|
|
21764
|
+
_z = _a.videoIdCaptureThresholds,
|
|
21765
|
+
videoIdCaptureThresholds = _z === void 0 ? defaultVideoIdCaptureThresholds : _z,
|
|
21766
|
+
_0 = _a.skipShowIdCardBack,
|
|
21767
|
+
skipShowIdCardBack = _0 === void 0 ? false : _0,
|
|
21768
|
+
_1 = _a.captureCountdownSeconds,
|
|
21769
|
+
captureCountdownSeconds = _1 === void 0 ? 3 : _1,
|
|
21705
21770
|
readTextPrompt = _a.readTextPrompt,
|
|
21706
|
-
|
|
21707
|
-
readTextTimeoutDurationMs =
|
|
21708
|
-
|
|
21709
|
-
readTextMinReadingMs =
|
|
21710
|
-
|
|
21711
|
-
disableFaceDetectionWhileAudioCapture =
|
|
21712
|
-
|
|
21713
|
-
disableFaceDetectionWhileAudioCaptureMsDelay =
|
|
21714
|
-
|
|
21715
|
-
mergeAVStreams =
|
|
21716
|
-
|
|
21717
|
-
classNames =
|
|
21718
|
-
|
|
21719
|
-
colors =
|
|
21720
|
-
|
|
21721
|
-
rawVerbiage =
|
|
21722
|
-
|
|
21723
|
-
debugMode =
|
|
21724
|
-
var
|
|
21725
|
-
ref =
|
|
21726
|
-
|
|
21727
|
-
width =
|
|
21728
|
-
|
|
21729
|
-
height =
|
|
21730
|
-
var
|
|
21731
|
-
|
|
21732
|
-
videoRef =
|
|
21733
|
-
videoLoaded =
|
|
21734
|
-
cameraReady =
|
|
21735
|
-
microphoneReady =
|
|
21736
|
-
audioStream =
|
|
21737
|
-
|
|
21738
|
-
|
|
21739
|
-
|
|
21740
|
-
|
|
21741
|
-
|
|
21742
|
-
|
|
21743
|
-
|
|
21744
|
-
|
|
21745
|
-
|
|
21746
|
-
|
|
21747
|
-
|
|
21748
|
-
|
|
21749
|
-
|
|
21750
|
-
|
|
21751
|
-
|
|
21752
|
-
|
|
21753
|
-
|
|
21754
|
-
|
|
21755
|
-
|
|
21756
|
-
|
|
21757
|
-
|
|
21758
|
-
|
|
21759
|
-
|
|
21760
|
-
|
|
21761
|
-
|
|
21762
|
-
|
|
21763
|
-
|
|
21764
|
-
|
|
21765
|
-
|
|
21766
|
-
|
|
21767
|
-
|
|
21768
|
-
|
|
21769
|
-
|
|
21770
|
-
|
|
21771
|
-
|
|
21772
|
-
|
|
21773
|
-
|
|
21774
|
-
|
|
21771
|
+
_2 = _a.readTextTimeoutDurationMs,
|
|
21772
|
+
readTextTimeoutDurationMs = _2 === void 0 ? 15000 : _2,
|
|
21773
|
+
_3 = _a.readTextMinReadingMs,
|
|
21774
|
+
readTextMinReadingMs = _3 === void 0 ? 10000 : _3,
|
|
21775
|
+
_4 = _a.disableFaceDetectionWhileAudioCapture,
|
|
21776
|
+
disableFaceDetectionWhileAudioCapture = _4 === void 0 ? false : _4,
|
|
21777
|
+
_5 = _a.disableFaceDetectionWhileAudioCaptureMsDelay,
|
|
21778
|
+
disableFaceDetectionWhileAudioCaptureMsDelay = _5 === void 0 ? 2000 : _5,
|
|
21779
|
+
_6 = _a.mergeAVStreams,
|
|
21780
|
+
mergeAVStreams = _6 === void 0 ? false : _6,
|
|
21781
|
+
_7 = _a.classNames,
|
|
21782
|
+
classNames = _7 === void 0 ? {} : _7,
|
|
21783
|
+
_8 = _a.colors,
|
|
21784
|
+
colors = _8 === void 0 ? {} : _8,
|
|
21785
|
+
_9 = _a.verbiage,
|
|
21786
|
+
rawVerbiage = _9 === void 0 ? {} : _9,
|
|
21787
|
+
_10 = _a.debugMode,
|
|
21788
|
+
debugMode = _10 === void 0 ? false : _10;
|
|
21789
|
+
var _11 = useResizeObserver(),
|
|
21790
|
+
ref = _11.ref,
|
|
21791
|
+
_12 = _11.width,
|
|
21792
|
+
width = _12 === void 0 ? 1 : _12,
|
|
21793
|
+
_13 = _11.height,
|
|
21794
|
+
height = _13 === void 0 ? 1 : _13;
|
|
21795
|
+
var _14 = useCameraStore(),
|
|
21796
|
+
camera = _14.camera,
|
|
21797
|
+
videoRef = _14.videoRef,
|
|
21798
|
+
videoLoaded = _14.videoLoaded,
|
|
21799
|
+
cameraReady = _14.cameraReady,
|
|
21800
|
+
microphoneReady = _14.microphoneReady,
|
|
21801
|
+
audioStream = _14.audioStream,
|
|
21802
|
+
isRearFacing = _14.isRearFacing,
|
|
21803
|
+
releaseCameraAccess = _14.releaseCameraAccess;
|
|
21804
|
+
var _15 = React.useState([]),
|
|
21805
|
+
detectedObjects = _15[0],
|
|
21806
|
+
setDetectedObjects = _15[1];
|
|
21807
|
+
var _16 = React.useState(null),
|
|
21808
|
+
face = _16[0],
|
|
21809
|
+
setFace = _16[1];
|
|
21810
|
+
var _17 = React.useContext(IdCaptureModelsContext),
|
|
21811
|
+
idModelsReady = _17.ready,
|
|
21812
|
+
startIdModels = _17.start,
|
|
21813
|
+
stopIdModels = _17.stop,
|
|
21814
|
+
onIdPredictionMade = _17.onPredictionMade,
|
|
21815
|
+
setThresholds = _17.setThresholds,
|
|
21816
|
+
setDocumentDetectionBoundaries = _17.setDocumentDetectionBoundaries,
|
|
21817
|
+
bestFrameDetails = _17.bestFrameDetails,
|
|
21818
|
+
resetBestFrame = _17.resetBestFrame,
|
|
21819
|
+
idModelError = _17.modelError;
|
|
21820
|
+
var _18 = React.useState(null),
|
|
21821
|
+
videoStartsAt = _18[0],
|
|
21822
|
+
setVideoStartsAt = _18[1];
|
|
21823
|
+
var _19 = React.useContext(SubmissionContext),
|
|
21824
|
+
setIdCaptureVideoAudioStartsAt = _19.setIdCaptureVideoAudioStartsAt,
|
|
21825
|
+
setExpectedAudioText = _19.setExpectedAudioText;
|
|
21826
|
+
var _20 = React.useContext(SelfieGuidanceModelsContext),
|
|
21827
|
+
startSelfieGuidance = _20.start,
|
|
21828
|
+
stopSelfieGuidance = _20.stop,
|
|
21829
|
+
onSelfiePredictionMade = _20.onPredictionMade,
|
|
21830
|
+
selfieModelError = _20.error;
|
|
21831
|
+
var _21 = useVideoRecorder(camera, audioStream, mergeAVStreams),
|
|
21832
|
+
isRecordingVideo = _21.isRecordingVideo,
|
|
21833
|
+
startRecordingVideo = _21.startRecordingVideo,
|
|
21834
|
+
startRecordingAudio = _21.startRecordingAudio,
|
|
21835
|
+
stopRecordingVideo = _21.stopRecordingVideo,
|
|
21836
|
+
stopRecordingAudio = _21.stopRecordingAudio,
|
|
21837
|
+
videoRecordingUnintentionallyStopped = _21.videoRecordingUnintentionallyStopped,
|
|
21838
|
+
audioRecordingUnintentionallyStopped = _21.audioRecordingUnintentionallyStopped,
|
|
21839
|
+
videoUrl = _21.videoUrl,
|
|
21840
|
+
audioUrl = _21.audioUrl;
|
|
21775
21841
|
var countdownTimeoutRef = React.useRef(undefined);
|
|
21776
|
-
var
|
|
21777
|
-
countdownRemaining =
|
|
21778
|
-
setCountdownRemaining =
|
|
21842
|
+
var _22 = React.useState(-1),
|
|
21843
|
+
countdownRemaining = _22[0],
|
|
21844
|
+
setCountdownRemaining = _22[1];
|
|
21779
21845
|
React.useEffect(function () {
|
|
21780
21846
|
if (!isRecordingVideo && !videoUrl) {
|
|
21781
21847
|
startRecordingVideo();
|
|
@@ -21786,18 +21852,18 @@
|
|
|
21786
21852
|
var needsAudio = !!readTextPrompt && !mergeAVStreams;
|
|
21787
21853
|
var audioReady = !needsAudio || audioUrl;
|
|
21788
21854
|
if (videoUrl && audioReady) {
|
|
21789
|
-
|
|
21855
|
+
releaseCameraAccess();
|
|
21790
21856
|
onComplete === null || onComplete === void 0 ? void 0 : onComplete(videoUrl, audioUrl);
|
|
21791
21857
|
}
|
|
21792
|
-
}, [audioUrl, isRecordingVideo, mergeAVStreams, onComplete, readTextPrompt,
|
|
21858
|
+
}, [audioUrl, isRecordingVideo, mergeAVStreams, onComplete, readTextPrompt, releaseCameraAccess, startRecordingVideo, videoUrl]);
|
|
21793
21859
|
React.useEffect(function () {
|
|
21794
21860
|
if (videoRecordingUnintentionallyStopped || audioRecordingUnintentionallyStopped) {
|
|
21795
21861
|
onRecordingFailed === null || onRecordingFailed === void 0 ? void 0 : onRecordingFailed();
|
|
21796
21862
|
}
|
|
21797
21863
|
}, [audioRecordingUnintentionallyStopped, onRecordingFailed, videoRecordingUnintentionallyStopped]);
|
|
21798
|
-
var
|
|
21799
|
-
requestedAction =
|
|
21800
|
-
setRequestedAction =
|
|
21864
|
+
var _23 = React.useState('SHOW_ID_FRONT'),
|
|
21865
|
+
requestedAction = _23[0],
|
|
21866
|
+
setRequestedAction = _23[1];
|
|
21801
21867
|
var shouldRunIdModels = idCaptureModelsEnabled && videoLoaded && cameraReady && idModelsReady && !idModelError && requestedAction !== 'READ_TEXT' && (!readTextPrompt || microphoneReady);
|
|
21802
21868
|
React.useEffect(function startModelsWhenCapturing() {
|
|
21803
21869
|
if (!shouldRunIdModels) return;
|
|
@@ -21817,18 +21883,18 @@
|
|
|
21817
21883
|
bottom: 1
|
|
21818
21884
|
});
|
|
21819
21885
|
}, [setDocumentDetectionBoundaries]);
|
|
21820
|
-
var
|
|
21821
|
-
currentDetectionScore =
|
|
21822
|
-
setCurrentDetectionScore =
|
|
21823
|
-
var
|
|
21824
|
-
currentDetectedDocumentType =
|
|
21825
|
-
setCurrentDetectedDocumentType =
|
|
21886
|
+
var _24 = React.useState(0),
|
|
21887
|
+
currentDetectionScore = _24[0],
|
|
21888
|
+
setCurrentDetectionScore = _24[1];
|
|
21889
|
+
var _25 = React.useState('none'),
|
|
21890
|
+
currentDetectedDocumentType = _25[0],
|
|
21891
|
+
setCurrentDetectedDocumentType = _25[1];
|
|
21892
|
+
var _26 = React.useState(0),
|
|
21893
|
+
currentFocusScore = _26[0],
|
|
21894
|
+
setCurrentFocusScore = _26[1];
|
|
21826
21895
|
var _27 = React.useState(0),
|
|
21827
|
-
|
|
21828
|
-
|
|
21829
|
-
var _28 = React.useState(0),
|
|
21830
|
-
goodFramesCount = _28[0],
|
|
21831
|
-
setGoodFramesCount = _28[1];
|
|
21896
|
+
goodFramesCount = _27[0],
|
|
21897
|
+
setGoodFramesCount = _27[1];
|
|
21832
21898
|
var goodFramesThreshold = requestedAction === 'SHOW_ID_FRONT' ? videoIdCaptureThresholds.goodFrames.idCardFront : videoIdCaptureThresholds.goodFrames.idCardBack;
|
|
21833
21899
|
var goodFramesThresholdMet = goodFramesCount >= goodFramesThreshold;
|
|
21834
21900
|
React.useEffect(function () {
|
|
@@ -21849,9 +21915,9 @@
|
|
|
21849
21915
|
} : 0);
|
|
21850
21916
|
});
|
|
21851
21917
|
}, [idCaptureModelsEnabled, onIdPredictionMade, idModelError, requestedAction, videoIdCaptureThresholds.flipShortcutThreshold]);
|
|
21852
|
-
var
|
|
21853
|
-
idFrontCaptureStartedAt =
|
|
21854
|
-
setFirstGoodFrameTime =
|
|
21918
|
+
var _28 = React.useState(null),
|
|
21919
|
+
idFrontCaptureStartedAt = _28[0],
|
|
21920
|
+
setFirstGoodFrameTime = _28[1];
|
|
21855
21921
|
React.useEffect(function () {
|
|
21856
21922
|
if (goodFramesCount === 1) setFirstGoodFrameTime(new Date().getTime());
|
|
21857
21923
|
}, [goodFramesCount]);
|
|
@@ -21872,9 +21938,9 @@
|
|
|
21872
21938
|
var frameHeight = (_e = (_d = videoRef.current) === null || _d === void 0 ? void 0 : _d.videoHeight) !== null && _e !== void 0 ? _e : 0;
|
|
21873
21939
|
var faceBox = face === null || face === void 0 ? void 0 : face.box;
|
|
21874
21940
|
var faceCentered = !faceBox || !frameWidth || faceBox.xMin > frameWidth * edgeBoundary && faceBox.yMin > frameHeight * edgeBoundary && faceBox.xMax < frameWidth * (1 - edgeBoundary) && faceBox.yMax < frameHeight * (1 - edgeBoundary);
|
|
21875
|
-
var
|
|
21876
|
-
countdownStartedAt =
|
|
21877
|
-
setCountdownStartedAt =
|
|
21941
|
+
var _29 = React.useState(),
|
|
21942
|
+
countdownStartedAt = _29[0],
|
|
21943
|
+
setCountdownStartedAt = _29[1];
|
|
21878
21944
|
var photoCanvas = React.useRef(null);
|
|
21879
21945
|
var frameLock = React.useRef(false);
|
|
21880
21946
|
var captureFrame = React.useCallback(function () {
|
|
@@ -21997,9 +22063,9 @@
|
|
|
21997
22063
|
stopSelfieGuidance();
|
|
21998
22064
|
};
|
|
21999
22065
|
}, [startSelfieGuidance, stopSelfieGuidance]);
|
|
22000
|
-
var
|
|
22001
|
-
numFramesWithoutFaces =
|
|
22002
|
-
setNumFramesWithoutFaces =
|
|
22066
|
+
var _30 = React.useState(0),
|
|
22067
|
+
numFramesWithoutFaces = _30[0],
|
|
22068
|
+
setNumFramesWithoutFaces = _30[1];
|
|
22003
22069
|
onSelfiePredictionMade(f(React.useCallback(function (_a) {
|
|
22004
22070
|
var face = _a.face;
|
|
22005
22071
|
if (selfieModelError) return;
|
|
@@ -22015,12 +22081,12 @@
|
|
|
22015
22081
|
}
|
|
22016
22082
|
}, [disableFaceDetectionWhileAudioCapture, disableFaceDetectionWhileAudioCaptureMsDelay, numFramesWithoutFaces, onFaceNotDetected, timeoutStartedAt]);
|
|
22017
22083
|
var theme = styled.useTheme();
|
|
22018
|
-
var
|
|
22084
|
+
var _31 = useTranslations(rawVerbiage, {
|
|
22019
22085
|
faceNotCenteredText: 'Please move your face to the center...',
|
|
22020
22086
|
captureBtnText: 'Capture'
|
|
22021
22087
|
}),
|
|
22022
|
-
captureBtnText =
|
|
22023
|
-
faceNotCenteredText =
|
|
22088
|
+
captureBtnText = _31.captureBtnText,
|
|
22089
|
+
faceNotCenteredText = _31.faceNotCenteredText;
|
|
22024
22090
|
var debugScalingDetails = useDebugScalingDetails({
|
|
22025
22091
|
enabled: debugMode,
|
|
22026
22092
|
pageWidth: width,
|
|
@@ -22056,15 +22122,14 @@
|
|
|
22056
22122
|
faceGuideBorderColor: satisfied ? colors.guidesSatisfiedColor : colors.guidesUnsatisfiedColor,
|
|
22057
22123
|
idCardGuideBorderColor: satisfied ? colors.guidesSatisfiedColor : colors.guidesUnsatisfiedColor
|
|
22058
22124
|
}), debugMode && capturingId && ( /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ObjectDetectionDebugOverlayDiv, {
|
|
22059
|
-
"$flipX": !
|
|
22125
|
+
"$flipX": !isRearFacing
|
|
22060
22126
|
}, detectedObjects.map(function (obj, i) {
|
|
22061
|
-
var _a;
|
|
22062
22127
|
return /*#__PURE__*/React.createElement(IdCaptureDetectedObjectDebugBox, {
|
|
22063
22128
|
key: i,
|
|
22064
22129
|
obj: obj,
|
|
22065
22130
|
scaling: debugScalingDetails,
|
|
22066
22131
|
color: "blue",
|
|
22067
|
-
flipX: !
|
|
22132
|
+
flipX: !isRearFacing
|
|
22068
22133
|
});
|
|
22069
22134
|
})), /*#__PURE__*/React.createElement(DebugBoundingBoxOverlay, null, face && ( /*#__PURE__*/React.createElement(SelfieCaptureFaceDebugBox, {
|
|
22070
22135
|
face: face,
|
|
@@ -22073,9 +22138,9 @@
|
|
|
22073
22138
|
className: classNames.guidanceMessageContainer
|
|
22074
22139
|
}, /*#__PURE__*/React.createElement(GuidanceMessage, {
|
|
22075
22140
|
className: classNames.guidanceMessage,
|
|
22076
|
-
"$background": (
|
|
22077
|
-
"$textColor": (
|
|
22078
|
-
}, guidanceText))), debugMode && ( /*#__PURE__*/React.createElement(DebugStatsPane, null,
|
|
22141
|
+
"$background": (_o = (_m = (_l = theme.guidanceMessages) === null || _l === void 0 ? void 0 : _l.negative) === null || _m === void 0 ? void 0 : _m.backgroundColor) !== null && _o !== void 0 ? _o : 'red',
|
|
22142
|
+
"$textColor": (_r = (_q = (_p = theme.guidanceMessages) === null || _p === void 0 ? void 0 : _p.negative) === null || _q === void 0 ? void 0 : _q.textColor) !== null && _r !== void 0 ? _r : 'white'
|
|
22143
|
+
}, guidanceText))), debugMode && ( /*#__PURE__*/React.createElement(DebugStatsPane, null, camera ? ( /*#__PURE__*/React.createElement(React.Fragment, null, "\u2705 Camera: ", camera.label, " (", camera.width, "x", camera.height, ")")) : '❌ Camera not ready', /*#__PURE__*/React.createElement("br", null), isRecordingVideo ? '✅ Recording' : '❌ Not recording', /*#__PURE__*/React.createElement("br", null), goodFramesThresholdMet ? '✅' : '❌', " Good Frame Count:", ' ', goodFramesCount, "/", goodFramesThreshold, /*#__PURE__*/React.createElement("br", null), "Document Type: ", currentDetectedDocumentType, /*#__PURE__*/React.createElement("br", null), "Detection Score: ", currentDetectionScore, /*#__PURE__*/React.createElement("br", null), "Focus Score: ", currentFocusScore, /*#__PURE__*/React.createElement("br", null), "Best Frame Detection Score:", ' ', (_t = (_s = bestFrameDetails.current) === null || _s === void 0 ? void 0 : _s.detectionScore) !== null && _t !== void 0 ? _t : 0, /*#__PURE__*/React.createElement("br", null), "Best Frame Focus Score: ", (_v = (_u = bestFrameDetails.current) === null || _u === void 0 ? void 0 : _u.focusScore) !== null && _v !== void 0 ? _v : 0)), countdownRemaining > 0 && capturingId && ( /*#__PURE__*/React.createElement(CountdownContainer, {
|
|
22079
22144
|
className: classNames.countdownContainer
|
|
22080
22145
|
}, /*#__PURE__*/React.createElement(Countdown, {
|
|
22081
22146
|
className: classNames.countdown
|
|
@@ -22372,16 +22437,14 @@
|
|
|
22372
22437
|
className: "flex"
|
|
22373
22438
|
}, /*#__PURE__*/React.createElement(Spinner$1, null));
|
|
22374
22439
|
}
|
|
22375
|
-
return /*#__PURE__*/React.createElement(
|
|
22376
|
-
|
|
22377
|
-
preferContinuityCamera: isCapturingId,
|
|
22440
|
+
return /*#__PURE__*/React.createElement(CameraStoreProvider, {
|
|
22441
|
+
preferIphoneContinuityCamera: isCapturingId,
|
|
22378
22442
|
preferFrontFacingCamera: !isCapturingId,
|
|
22379
22443
|
requireMicrophoneAccess: !isCapturingId && !!readTextPrompt,
|
|
22380
22444
|
maxVideoWidth: isCapturingId ? 1920 : 1280,
|
|
22381
22445
|
maxFps: isCapturingId ? 60 : 30,
|
|
22382
22446
|
onCameraAccessDenied: onCameraAccessDenied,
|
|
22383
|
-
onMicrophoneAccessDenied: onMicrophoneAccessDenied
|
|
22384
|
-
debugMode: debugMode
|
|
22447
|
+
onMicrophoneAccessDenied: onMicrophoneAccessDenied
|
|
22385
22448
|
}, /*#__PURE__*/React.createElement(IdCaptureModelsProvider, {
|
|
22386
22449
|
autoStart: false,
|
|
22387
22450
|
documentDetectionModelUrl: (_g = (_f = idCaptureProps.assets) === null || _f === void 0 ? void 0 : _f.documentDetectionModelUrl) !== null && _g !== void 0 ? _g : '',
|
|
@@ -22507,17 +22570,15 @@
|
|
|
22507
22570
|
_o = _a.captureSignatureVideo,
|
|
22508
22571
|
captureSignatureVideo = _o === void 0 ? false : _o,
|
|
22509
22572
|
onCameraAccessDenied = _a.onCameraAccessDenied,
|
|
22510
|
-
onMicrophoneAccessDenied = _a.onMicrophoneAccessDenied
|
|
22511
|
-
|
|
22512
|
-
|
|
22513
|
-
|
|
22514
|
-
|
|
22515
|
-
|
|
22516
|
-
|
|
22517
|
-
|
|
22518
|
-
|
|
22519
|
-
checkIndex = _r[0],
|
|
22520
|
-
setCheckIndex = _r[1];
|
|
22573
|
+
onMicrophoneAccessDenied = _a.onMicrophoneAccessDenied;
|
|
22574
|
+
var _p = React.useContext(SubmissionContext),
|
|
22575
|
+
submit = _p.submit,
|
|
22576
|
+
submissionStatus = _p.submissionStatus,
|
|
22577
|
+
setSignatureData = _p.setSignatureData,
|
|
22578
|
+
setAdditionalDocuments = _p.setAdditionalDocuments;
|
|
22579
|
+
var _q = React.useState(0),
|
|
22580
|
+
checkIndex = _q[0],
|
|
22581
|
+
setCheckIndex = _q[1];
|
|
22521
22582
|
var checks = React.useMemo(function () {
|
|
22522
22583
|
var _a, _b;
|
|
22523
22584
|
var checks = __spreadArray([], userChecks, true);
|
|
@@ -22595,16 +22656,6 @@
|
|
|
22595
22656
|
return i + 1;
|
|
22596
22657
|
});
|
|
22597
22658
|
}, [onVideoSignatureCompleteProp]);
|
|
22598
|
-
var _s = React.useState(0),
|
|
22599
|
-
videoSignatureAttempts = _s[0],
|
|
22600
|
-
setVideoSignatureAttempts = _s[1];
|
|
22601
|
-
var onVideoSignatureRetryProp = videoSignatureCaptureProps.onRetryClicked;
|
|
22602
|
-
var onVideoSignatureRetry = React.useCallback(function () {
|
|
22603
|
-
onVideoSignatureRetryProp === null || onVideoSignatureRetryProp === void 0 ? void 0 : onVideoSignatureRetryProp();
|
|
22604
|
-
setVideoSignatureAttempts(function (n) {
|
|
22605
|
-
return n + 1;
|
|
22606
|
-
});
|
|
22607
|
-
}, [onVideoSignatureRetryProp]);
|
|
22608
22659
|
var onAdditionalDocumentCaptureCompleteProp = additionalDocumentCaptureProps === null || additionalDocumentCaptureProps === void 0 ? void 0 : additionalDocumentCaptureProps.onComplete;
|
|
22609
22660
|
var onAdditionalDocumentCaptureComplete = React.useCallback(function (uploadedDocuments) {
|
|
22610
22661
|
setAdditionalDocuments(uploadedDocuments);
|
|
@@ -22633,11 +22684,9 @@
|
|
|
22633
22684
|
}
|
|
22634
22685
|
switch (checks[checkIndex]) {
|
|
22635
22686
|
case 'IdCapture':
|
|
22636
|
-
return /*#__PURE__*/React.createElement(
|
|
22637
|
-
key: "IdCaptureCamera",
|
|
22687
|
+
return /*#__PURE__*/React.createElement(CameraStoreProvider, {
|
|
22638
22688
|
onCameraAccessDenied: onCameraAccessDenied,
|
|
22639
|
-
onMicrophoneAccessDenied: onMicrophoneAccessDenied
|
|
22640
|
-
debugMode: debugMode
|
|
22689
|
+
onMicrophoneAccessDenied: onMicrophoneAccessDenied
|
|
22641
22690
|
}, /*#__PURE__*/React.createElement(IdCaptureModelsProvider, {
|
|
22642
22691
|
autoStart: false,
|
|
22643
22692
|
documentDetectionModelUrl: (_d = (_c = idCaptureProps.assets) === null || _c === void 0 ? void 0 : _c.documentDetectionModelUrl) !== null && _d !== void 0 ? _d : '',
|
|
@@ -22654,13 +22703,11 @@
|
|
|
22654
22703
|
onMicrophoneAccessDenied: onMicrophoneAccessDenied
|
|
22655
22704
|
}));
|
|
22656
22705
|
case 'FaceLiveness':
|
|
22657
|
-
return /*#__PURE__*/React.createElement(
|
|
22658
|
-
key: "FaceLivenessCamera",
|
|
22706
|
+
return /*#__PURE__*/React.createElement(CameraStoreProvider, {
|
|
22659
22707
|
preferFrontFacingCamera: true,
|
|
22660
|
-
|
|
22708
|
+
preferIphoneContinuityCamera: false,
|
|
22661
22709
|
onCameraAccessDenied: onCameraAccessDenied,
|
|
22662
|
-
onMicrophoneAccessDenied: onMicrophoneAccessDenied
|
|
22663
|
-
debugMode: debugMode
|
|
22710
|
+
onMicrophoneAccessDenied: onMicrophoneAccessDenied
|
|
22664
22711
|
}, /*#__PURE__*/React.createElement(SelfieGuidanceModelsProvider, {
|
|
22665
22712
|
autoStart: false,
|
|
22666
22713
|
onModelError: faceLivenessProps.onModelError,
|
|
@@ -22673,15 +22720,13 @@
|
|
|
22673
22720
|
onAccept: onSignatureCaptureSuccess
|
|
22674
22721
|
}));
|
|
22675
22722
|
case 'VideoSignatureCapture':
|
|
22676
|
-
return /*#__PURE__*/React.createElement(
|
|
22677
|
-
|
|
22678
|
-
preferContinuityCamera: false,
|
|
22723
|
+
return /*#__PURE__*/React.createElement(CameraStoreProvider, {
|
|
22724
|
+
preferIphoneContinuityCamera: false,
|
|
22679
22725
|
preferFrontFacingCamera: true,
|
|
22680
22726
|
maxVideoWidth: 1280,
|
|
22681
22727
|
maxFps: 30,
|
|
22682
22728
|
onCameraAccessDenied: onCameraAccessDenied,
|
|
22683
|
-
onMicrophoneAccessDenied: onMicrophoneAccessDenied
|
|
22684
|
-
debugMode: debugMode
|
|
22729
|
+
onMicrophoneAccessDenied: onMicrophoneAccessDenied
|
|
22685
22730
|
}, /*#__PURE__*/React.createElement(SelfieGuidanceModelsProvider, {
|
|
22686
22731
|
autoStart: false,
|
|
22687
22732
|
throttleMs: 250,
|
|
@@ -22689,8 +22734,7 @@
|
|
|
22689
22734
|
modelLoadTimeoutMs: videoSignatureCaptureProps.modelLoadTimeoutMs,
|
|
22690
22735
|
requireVerticalFaceCentering: false
|
|
22691
22736
|
}, /*#__PURE__*/React.createElement(VideoSignatureWizard, _assign({}, videoSignatureCaptureProps, {
|
|
22692
|
-
onComplete: onVideoSignatureComplete
|
|
22693
|
-
onRetryClicked: onVideoSignatureRetry
|
|
22737
|
+
onComplete: onVideoSignatureComplete
|
|
22694
22738
|
}))));
|
|
22695
22739
|
case 'AdditionalDocumentCapture':
|
|
22696
22740
|
return /*#__PURE__*/React.createElement(AdditionalDocumentCaptureWizard, _assign({}, additionalDocumentCaptureProps, {
|
|
@@ -23141,8 +23185,7 @@
|
|
|
23141
23185
|
videoSignatureCaptureProps: videoSignatureCaptureProps,
|
|
23142
23186
|
captureSignature: captureSignature,
|
|
23143
23187
|
captureSignatureVideo: captureSignatureVideo,
|
|
23144
|
-
onCameraAccessDenied: onCameraAccessDenied
|
|
23145
|
-
debugMode: debugMode
|
|
23188
|
+
onCameraAccessDenied: onCameraAccessDenied
|
|
23146
23189
|
}))));
|
|
23147
23190
|
};
|
|
23148
23191
|
|
|
@@ -23248,8 +23291,7 @@
|
|
|
23248
23291
|
return ['FaceLiveness'];
|
|
23249
23292
|
}, []),
|
|
23250
23293
|
faceLivenessProps: faceLivenessProps,
|
|
23251
|
-
onCameraAccessDenied: onCameraAccessDenied
|
|
23252
|
-
debugMode: debugMode
|
|
23294
|
+
onCameraAccessDenied: onCameraAccessDenied
|
|
23253
23295
|
}))));
|
|
23254
23296
|
};
|
|
23255
23297
|
|
|
@@ -23482,8 +23524,7 @@
|
|
|
23482
23524
|
additionalDocumentCaptureProps: additionalDocumentCaptureProps,
|
|
23483
23525
|
captureSignature: captureSignature,
|
|
23484
23526
|
captureSignatureVideo: captureSignatureVideo,
|
|
23485
|
-
onCameraAccessDenied: onCameraAccessDenied
|
|
23486
|
-
debugMode: debugMode
|
|
23527
|
+
onCameraAccessDenied: onCameraAccessDenied
|
|
23487
23528
|
}))));
|
|
23488
23529
|
};
|
|
23489
23530
|
|
|
@@ -23738,8 +23779,7 @@
|
|
|
23738
23779
|
videoSignatureCaptureProps: videoSignatureCaptureProps,
|
|
23739
23780
|
captureSignature: captureSignature,
|
|
23740
23781
|
captureSignatureVideo: captureSignatureVideo,
|
|
23741
|
-
onCameraAccessDenied: onCameraAccessDenied
|
|
23742
|
-
debugMode: debugMode
|
|
23782
|
+
onCameraAccessDenied: onCameraAccessDenied
|
|
23743
23783
|
}))));
|
|
23744
23784
|
};
|
|
23745
23785
|
|
|
@@ -24071,7 +24111,7 @@
|
|
|
24071
24111
|
var _l = React.useState('LOADING'),
|
|
24072
24112
|
captureState = _l[0],
|
|
24073
24113
|
setCaptureState = _l[1];
|
|
24074
|
-
var _m =
|
|
24114
|
+
var _m = useCameraStore(),
|
|
24075
24115
|
cameraAccessDenied = _m.cameraAccessDenied,
|
|
24076
24116
|
releaseCameraAccess = _m.releaseCameraAccess;
|
|
24077
24117
|
var _o = React.useContext(SelfieGuidanceModelsContext),
|
|
@@ -24277,10 +24317,9 @@
|
|
|
24277
24317
|
onSubmit: onSubmit,
|
|
24278
24318
|
geolocationEnabled: geolocationEnabled,
|
|
24279
24319
|
geolocationRequired: geolocationRequired
|
|
24280
|
-
}, /*#__PURE__*/React.createElement(
|
|
24320
|
+
}, /*#__PURE__*/React.createElement(CameraStoreProvider, {
|
|
24281
24321
|
preferFrontFacingCamera: true,
|
|
24282
|
-
onCameraAccessDenied: onCameraAccessDenied
|
|
24283
|
-
debugMode: debugMode
|
|
24322
|
+
onCameraAccessDenied: onCameraAccessDenied
|
|
24284
24323
|
}, /*#__PURE__*/React.createElement(SelfieGuidanceModelsProvider, {
|
|
24285
24324
|
autoStart: false,
|
|
24286
24325
|
onModelError: onModelError,
|
|
@@ -24629,7 +24668,7 @@
|
|
|
24629
24668
|
var _l = React.useState('LOADING'),
|
|
24630
24669
|
captureState = _l[0],
|
|
24631
24670
|
setCaptureState = _l[1];
|
|
24632
|
-
var _m =
|
|
24671
|
+
var _m = useCameraStore(),
|
|
24633
24672
|
cameraAccessDenied = _m.cameraAccessDenied,
|
|
24634
24673
|
releaseCameraAccess = _m.releaseCameraAccess;
|
|
24635
24674
|
var _o = React.useContext(SelfieGuidanceModelsContext),
|
|
@@ -24833,10 +24872,9 @@
|
|
|
24833
24872
|
onSubmit: onSubmit,
|
|
24834
24873
|
geolocationEnabled: geolocationEnabled,
|
|
24835
24874
|
geolocationRequired: geolocationRequired
|
|
24836
|
-
}, /*#__PURE__*/React.createElement(
|
|
24875
|
+
}, /*#__PURE__*/React.createElement(CameraStoreProvider, {
|
|
24837
24876
|
preferFrontFacingCamera: true,
|
|
24838
|
-
onCameraAccessDenied: onCameraAccessDenied
|
|
24839
|
-
debugMode: debugMode
|
|
24877
|
+
onCameraAccessDenied: onCameraAccessDenied
|
|
24840
24878
|
}, /*#__PURE__*/React.createElement(SelfieGuidanceModelsProvider, {
|
|
24841
24879
|
autoStart: false,
|
|
24842
24880
|
modelLoadTimeoutMs: modelLoadTimeoutMs,
|
|
@@ -25163,8 +25201,7 @@
|
|
|
25163
25201
|
captureSignature: captureSignature,
|
|
25164
25202
|
captureSignatureVideo: captureSignatureVideo,
|
|
25165
25203
|
onCameraAccessDenied: onCameraAccessDenied,
|
|
25166
|
-
onMicrophoneAccessDenied: onMicrophoneAccessDenied
|
|
25167
|
-
debugMode: debugMode
|
|
25204
|
+
onMicrophoneAccessDenied: onMicrophoneAccessDenied
|
|
25168
25205
|
}))));
|
|
25169
25206
|
};
|
|
25170
25207
|
|
|
@@ -25321,8 +25358,7 @@
|
|
|
25321
25358
|
videoSignatureCaptureProps: videoSignatureCaptureProps,
|
|
25322
25359
|
captureSignature: captureSignature,
|
|
25323
25360
|
captureSignatureVideo: captureSignatureVideo,
|
|
25324
|
-
onCameraAccessDenied: onCameraAccessDenied
|
|
25325
|
-
debugMode: debugMode
|
|
25361
|
+
onCameraAccessDenied: onCameraAccessDenied
|
|
25326
25362
|
}))));
|
|
25327
25363
|
};
|
|
25328
25364
|
|
|
@@ -25380,11 +25416,10 @@
|
|
|
25380
25416
|
onDocumentUploadFailed: onDocumentUploadFailed,
|
|
25381
25417
|
geolocationEnabled: geolocationEnabled,
|
|
25382
25418
|
geolocationRequired: geolocationRequired
|
|
25383
|
-
}, /*#__PURE__*/React.createElement(
|
|
25419
|
+
}, /*#__PURE__*/React.createElement(CameraStoreProvider, {
|
|
25384
25420
|
requestAccessAutomatically: false,
|
|
25385
|
-
|
|
25386
|
-
onCameraAccessDenied: onCameraAccessDenied
|
|
25387
|
-
debugMode: debugMode
|
|
25421
|
+
preferIphoneContinuityCamera: true,
|
|
25422
|
+
onCameraAccessDenied: onCameraAccessDenied
|
|
25388
25423
|
}, /*#__PURE__*/React.createElement(DocumentCaptureWizard, {
|
|
25389
25424
|
onSuccess: onComplete,
|
|
25390
25425
|
onExitCapture: onExitCapture,
|