@ekyc_qoobiss/qbs-ect-cmp 3.6.26 → 3.6.27
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/i18n/en.json +100 -0
- package/dist/i18n/ro.json +100 -0
- package/dist/i18n/ru.json +100 -0
- package/dist/{collection/helpers/Cameras.js → qbs-ect-cmp/Cameras-dfbebc29.js} +9 -6
- package/dist/{collection/models/CaptureFlow.js → qbs-ect-cmp/CaptureFlow-db5d90a4.js} +6 -4
- package/dist/{collection/libs/IDML5Detector/IDPose.js → qbs-ect-cmp/IDPose-181bcb25.js} +4 -2
- package/dist/{collection/models/IDevice.js → qbs-ect-cmp/IDevice-15ecfdeb.js} +6 -4
- package/dist/qbs-ect-cmp/ML5-657ef934.js +1370 -0
- package/dist/qbs-ect-cmp/Stream-b867a2be.js +3104 -0
- package/dist/qbs-ect-cmp/_commonjsHelpers-321aa363.js +44 -0
- package/dist/qbs-ect-cmp/agreement-check.entry.js +41 -0
- package/dist/qbs-ect-cmp/agreement-info.entry.js +66 -0
- package/dist/qbs-ect-cmp/app-globals-0f993ce5.js +3 -0
- package/dist/qbs-ect-cmp/base-component-2e490fd9.js +502 -0
- package/dist/qbs-ect-cmp/camera-comp.entry.js +103 -0
- package/dist/qbs-ect-cmp/camera-error.entry.js +59 -0
- package/dist/qbs-ect-cmp/capture-error.entry.js +53 -0
- package/dist/qbs-ect-cmp/css-shim-b7d3d95f.js +4 -0
- package/dist/qbs-ect-cmp/dom-64053c71.js +73 -0
- package/dist/qbs-ect-cmp/end-redirect.entry.js +25 -0
- package/dist/qbs-ect-cmp/error-end.entry.js +19 -0
- package/dist/qbs-ect-cmp/how-to-info.entry.js +52 -0
- package/dist/{collection/components/common/id-back-capture/id-back-capture.js → qbs-ect-cmp/id-back-capture.entry.js} +30 -100
- package/dist/{collection/components/common/id-capture/id-capture.js → qbs-ect-cmp/id-capture.entry.js} +28 -98
- package/dist/{collection/components/common/id-tilt/id-tilt.js → qbs-ect-cmp/id-tilt.entry.js} +28 -98
- package/dist/qbs-ect-cmp/identification-component.entry.js +909 -0
- package/dist/qbs-ect-cmp/index-78a05b9e.js +3371 -0
- package/dist/qbs-ect-cmp/index.esm.js +1 -0
- package/dist/qbs-ect-cmp/landing-validation.entry.js +90 -0
- package/dist/{esm → qbs-ect-cmp}/loader-dots.entry.js +1 -1
- package/dist/qbs-ect-cmp/mobile-redirect.entry.js +2984 -0
- package/dist/{collection/components/flow/process-id/process-id.js → qbs-ect-cmp/process-id.entry.js} +32 -100
- package/dist/qbs-ect-cmp/qbs-ect-cmp.css +320 -1
- package/dist/qbs-ect-cmp/qbs-ect-cmp.esm.js +148 -1
- package/dist/{esm → qbs-ect-cmp}/random-actions.entry.js +6 -3
- package/dist/{collection/components/common/selfie-capture/selfie-capture.js → qbs-ect-cmp/selfie-capture.entry.js} +28 -99
- package/dist/{collection/components/common/selfie-tilt/selfie-tilt.js → qbs-ect-cmp/selfie-tilt.entry.js} +29 -99
- package/dist/qbs-ect-cmp/shadow-css-98135883.js +387 -0
- package/dist/qbs-ect-cmp/sms-code-validation.entry.js +106 -0
- package/dist/{esm/store-fdeed827.js → qbs-ect-cmp/textValues-6bcc85dd.js} +51 -147
- package/dist/{collection/components/flow/user-liveness/user-liveness.js → qbs-ect-cmp/user-liveness.entry.js} +25 -91
- package/dist/{collection/utils/utils.js → qbs-ect-cmp/utils-8225f0b7.js} +10 -8
- package/dist/types/components/base-component.d.ts +2 -0
- package/dist/types/components/common/agreement-check/agreement-check.d.ts +1 -0
- package/dist/types/components/common/random-actions/random-actions.d.ts +2 -0
- package/dist/types/components/flow/end-redirect/end-redirect.d.ts +1 -0
- package/dist/types/components/identification-component/identification-component.d.ts +1 -0
- package/dist/types/components.d.ts +2 -0
- package/dist/types/helpers/TranslationUtils.d.ts +9 -0
- package/dist/types/helpers/textValues.d.ts +8 -95
- package/dist/types/models/IEctStore.d.ts +1 -0
- package/dist/types/models/ITranslationValues.d.ts +101 -0
- package/package.json +1 -1
- package/dist/cjs/agreement-check_19.cjs.entry.js +0 -9970
- package/dist/cjs/index-41696e0e.js +0 -1573
- package/dist/cjs/index.cjs.js +0 -2
- package/dist/cjs/loader-dots.cjs.entry.js +0 -19
- package/dist/cjs/loader.cjs.js +0 -22
- package/dist/cjs/qbs-ect-cmp.cjs.js +0 -23
- package/dist/cjs/random-actions.cjs.entry.js +0 -22
- package/dist/cjs/store-f1a0f55c.js +0 -413
- package/dist/collection/assets/canvas-masks/face_green.svg +0 -8
- package/dist/collection/assets/canvas-masks/face_white.svg +0 -8
- package/dist/collection/assets/canvas-masks/id_green.svg +0 -6
- package/dist/collection/assets/canvas-masks/id_white.svg +0 -6
- package/dist/collection/assets/complete.svg +0 -4
- package/dist/collection/assets/landing/device.svg +0 -14
- package/dist/collection/assets/landing/id.svg +0 -3
- package/dist/collection/assets/landing/info.svg +0 -3
- package/dist/collection/assets/landing/validation.svg +0 -16
- package/dist/collection/assets/loader.svg +0 -29
- package/dist/collection/collection-manifest.json +0 -32
- package/dist/collection/components/base-component.js +0 -59
- package/dist/collection/components/common/agreement-check/agreement-check.css +0 -0
- package/dist/collection/components/common/agreement-check/agreement-check.js +0 -101
- package/dist/collection/components/common/camera-error/camera-error.css +0 -0
- package/dist/collection/components/common/camera-error/camera-error.js +0 -91
- package/dist/collection/components/common/capture-error/capture-error.css +0 -0
- package/dist/collection/components/common/capture-error/capture-error.js +0 -101
- package/dist/collection/components/common/how-to-info/how-to-info.css +0 -0
- package/dist/collection/components/common/how-to-info/how-to-info.js +0 -122
- package/dist/collection/components/common/id-back-capture/id-back-capture.css +0 -35
- package/dist/collection/components/common/id-capture/id-capture.css +0 -35
- package/dist/collection/components/common/id-tilt/id-tilt.css +0 -35
- package/dist/collection/components/common/random-actions/random-actions.css +0 -0
- package/dist/collection/components/common/random-actions/random-actions.js +0 -20
- package/dist/collection/components/common/selfie-capture/selfie-capture.css +0 -7
- package/dist/collection/components/common/selfie-tilt/selfie-tilt.css +0 -7
- package/dist/collection/components/controls/camera/camera.css +0 -47
- package/dist/collection/components/controls/camera/camera.js +0 -289
- package/dist/collection/components/controls/loader-dots/loader-dots.css +0 -61
- package/dist/collection/components/controls/loader-dots/loader-dots.js +0 -18
- package/dist/collection/components/flow/agreement-info/agreement-info.css +0 -0
- package/dist/collection/components/flow/agreement-info/agreement-info.js +0 -106
- package/dist/collection/components/flow/end-redirect/end-redirect.css +0 -128
- package/dist/collection/components/flow/end-redirect/end-redirect.js +0 -44
- package/dist/collection/components/flow/error-end/error-end.css +0 -0
- package/dist/collection/components/flow/error-end/error-end.js +0 -61
- package/dist/collection/components/flow/landing-validation/landing-validation.css +0 -0
- package/dist/collection/components/flow/landing-validation/landing-validation.js +0 -122
- package/dist/collection/components/flow/mobile-redirect/mobile-redirect.css +0 -10
- package/dist/collection/components/flow/mobile-redirect/mobile-redirect.js +0 -144
- package/dist/collection/components/flow/process-id/process-id.css +0 -0
- package/dist/collection/components/flow/sms-code-validation/sms-code-validation.css +0 -0
- package/dist/collection/components/flow/sms-code-validation/sms-code-validation.js +0 -140
- package/dist/collection/components/flow/user-liveness/user-liveness.css +0 -0
- package/dist/collection/components/identification-component/identification-component.css +0 -991
- package/dist/collection/components/identification-component/identification-component.js +0 -387
- package/dist/collection/global.js +0 -0
- package/dist/collection/helpers/ApiCall.js +0 -223
- package/dist/collection/helpers/DeviceDetection.js +0 -85
- package/dist/collection/helpers/Events.js +0 -58
- package/dist/collection/helpers/ML5.js +0 -38
- package/dist/collection/helpers/Stream.js +0 -229
- package/dist/collection/helpers/canvas.js +0 -10
- package/dist/collection/helpers/index.js +0 -21
- package/dist/collection/helpers/security.js +0 -25
- package/dist/collection/helpers/store.js +0 -47
- package/dist/collection/helpers/textValues.js +0 -145
- package/dist/collection/index.js +0 -1
- package/dist/collection/libs/FaceML5Detector/FaceML5Detector.js +0 -182
- package/dist/collection/libs/FaceML5Detector/FacePose.js +0 -85
- package/dist/collection/libs/IDML5Detector/IDML5Detector.js +0 -99
- package/dist/collection/models/FlowStatus.js +0 -14
- package/dist/collection/models/FlowSteps.js +0 -30
- package/dist/collection/models/IAbortResult.js +0 -1
- package/dist/collection/models/IAddRequest.js +0 -1
- package/dist/collection/models/IAgreement.js +0 -1
- package/dist/collection/models/ICamera.js +0 -1
- package/dist/collection/models/IEctStore.js +0 -1
- package/dist/collection/models/IGeneration.js +0 -1
- package/dist/collection/models/ILinkSend.js +0 -1
- package/dist/collection/models/ILogResult.js +0 -1
- package/dist/collection/models/IOrderStatus.js +0 -1
- package/dist/collection/models/IOtpCheck.js +0 -1
- package/dist/collection/models/IOtpSend.js +0 -1
- package/dist/collection/models/IUploadFile.js +0 -1
- package/dist/collection/models/IVerificationMode.js +0 -5
- package/dist/collection/models/OrderStatuses.js +0 -8
- package/dist/esm/agreement-check_19.entry.js +0 -9948
- package/dist/esm/index-cf54a432.js +0 -1543
- package/dist/esm/index.js +0 -1
- package/dist/esm/loader.js +0 -18
- package/dist/esm/polyfills/core-js.js +0 -11
- package/dist/esm/polyfills/css-shim.js +0 -1
- package/dist/esm/polyfills/dom.js +0 -79
- package/dist/esm/polyfills/es5-html-element.js +0 -1
- package/dist/esm/polyfills/index.js +0 -34
- package/dist/esm/polyfills/system.js +0 -6
- package/dist/esm/qbs-ect-cmp.js +0 -18
- package/dist/index.cjs.js +0 -1
- package/dist/index.js +0 -1
- package/dist/loader/cdn.js +0 -3
- package/dist/loader/index.cjs.js +0 -3
- package/dist/loader/index.d.ts +0 -21
- package/dist/loader/index.es2017.js +0 -3
- package/dist/loader/index.js +0 -4
- package/dist/loader/package.json +0 -11
- package/dist/qbs-ect-cmp/p-054dc5b3.entry.js +0 -1
- package/dist/qbs-ect-cmp/p-0b381be5.js +0 -1
- package/dist/qbs-ect-cmp/p-40480abb.entry.js +0 -1373
- package/dist/qbs-ect-cmp/p-6be3b9ca.entry.js +0 -1
- package/dist/qbs-ect-cmp/p-8942656c.js +0 -2
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
export default class Events {
|
|
2
|
-
static init(element) {
|
|
3
|
-
this.callingModule = element;
|
|
4
|
-
}
|
|
5
|
-
static flowEvent(step, moment) {
|
|
6
|
-
const eventName = `ect-${step.toString()}-${moment.toString()}-event`;
|
|
7
|
-
this.callingModule.dispatchEvent(new CustomEvent(eventName, {
|
|
8
|
-
detail: {},
|
|
9
|
-
bubbles: true,
|
|
10
|
-
cancelable: true,
|
|
11
|
-
composed: true,
|
|
12
|
-
}));
|
|
13
|
-
}
|
|
14
|
-
static flowStarted() {
|
|
15
|
-
this.callingModule.dispatchEvent(new CustomEvent('ect-started', {
|
|
16
|
-
detail: {},
|
|
17
|
-
bubbles: true,
|
|
18
|
-
cancelable: true,
|
|
19
|
-
composed: true,
|
|
20
|
-
}));
|
|
21
|
-
}
|
|
22
|
-
static flowAborted() {
|
|
23
|
-
sessionStorage.clear();
|
|
24
|
-
this.callingModule.dispatchEvent(new CustomEvent('ect-aborted', {
|
|
25
|
-
detail: {},
|
|
26
|
-
bubbles: true,
|
|
27
|
-
cancelable: true,
|
|
28
|
-
composed: true,
|
|
29
|
-
}));
|
|
30
|
-
}
|
|
31
|
-
static flowCompleted() {
|
|
32
|
-
sessionStorage.clear();
|
|
33
|
-
this.callingModule.dispatchEvent(new CustomEvent('ect-completed', {
|
|
34
|
-
detail: {},
|
|
35
|
-
bubbles: true,
|
|
36
|
-
cancelable: true,
|
|
37
|
-
composed: true,
|
|
38
|
-
}));
|
|
39
|
-
}
|
|
40
|
-
static flowError(error) {
|
|
41
|
-
sessionStorage.clear();
|
|
42
|
-
this.callingModule.dispatchEvent(new CustomEvent('ect-error', {
|
|
43
|
-
detail: { error },
|
|
44
|
-
bubbles: true,
|
|
45
|
-
cancelable: true,
|
|
46
|
-
composed: true,
|
|
47
|
-
}));
|
|
48
|
-
}
|
|
49
|
-
static tokenExpired() {
|
|
50
|
-
sessionStorage.clear();
|
|
51
|
-
this.callingModule.dispatchEvent(new CustomEvent('ect-session-expired', {
|
|
52
|
-
detail: {},
|
|
53
|
-
bubbles: true,
|
|
54
|
-
cancelable: true,
|
|
55
|
-
composed: true,
|
|
56
|
-
}));
|
|
57
|
-
}
|
|
58
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import ml5 from 'ml5';
|
|
2
|
-
import store from './store';
|
|
3
|
-
// @ts-ignore
|
|
4
|
-
import preload from '../assets/ml5-preload.png';
|
|
5
|
-
export class ML5 {
|
|
6
|
-
static getInstance() {
|
|
7
|
-
if (!ML5.instance) {
|
|
8
|
-
ML5.instance = new ML5();
|
|
9
|
-
}
|
|
10
|
-
return ML5.instance;
|
|
11
|
-
}
|
|
12
|
-
constructor() {
|
|
13
|
-
this.init();
|
|
14
|
-
}
|
|
15
|
-
async init() {
|
|
16
|
-
return new Promise(async (resolve) => {
|
|
17
|
-
const modelPath = store.hasIdBack ? 'https://ekyc.blob.core.windows.net/$web/md/model.json' : 'https://ekyc.blob.core.windows.net/$web/model.json';
|
|
18
|
-
this.classifier = await ml5.imageClassifier(modelPath, this.loaded);
|
|
19
|
-
this.faceapi = await ml5.faceApi({ withLandmarks: true, withDescriptors: false }, this.loaded);
|
|
20
|
-
//warmup
|
|
21
|
-
const img = new Image();
|
|
22
|
-
img.src = preload;
|
|
23
|
-
this.classifier.classify(img, this.gotResults);
|
|
24
|
-
this.faceapi.detect(img, this.gotResults);
|
|
25
|
-
resolve();
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
loaded() {
|
|
29
|
-
if (store.debug)
|
|
30
|
-
console.log('ML5 LOADED!!!');
|
|
31
|
-
}
|
|
32
|
-
gotResults(error, results) {
|
|
33
|
-
if (store.debug)
|
|
34
|
-
console.log(error);
|
|
35
|
-
if (store.debug)
|
|
36
|
-
console.log(results);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
@@ -1,229 +0,0 @@
|
|
|
1
|
-
import { IDML5Detector } from '../libs/IDML5Detector/IDML5Detector';
|
|
2
|
-
import { FaceML5Detector } from '../libs/FaceML5Detector/FaceML5Detector';
|
|
3
|
-
import { FacePose } from '../libs/FaceML5Detector/FacePose';
|
|
4
|
-
import { FacePosePick } from '../libs/FaceML5Detector/FacePose';
|
|
5
|
-
import { addExifInImg } from './security';
|
|
6
|
-
import store from './store';
|
|
7
|
-
import { Browser, MobileOS } from '../models/IDevice';
|
|
8
|
-
var ImageFormat;
|
|
9
|
-
(function (ImageFormat) {
|
|
10
|
-
ImageFormat["JPEG"] = "image/jpeg";
|
|
11
|
-
ImageFormat["PNG"] = "image/png";
|
|
12
|
-
})(ImageFormat || (ImageFormat = {}));
|
|
13
|
-
export class Stream {
|
|
14
|
-
setFaceDetection(val) {
|
|
15
|
-
this.faceDetection = val;
|
|
16
|
-
this.idDetection = !val;
|
|
17
|
-
}
|
|
18
|
-
setIdDetection(val) {
|
|
19
|
-
this.idDetection = val;
|
|
20
|
-
this.faceDetection = !val;
|
|
21
|
-
}
|
|
22
|
-
// public setProbabilityThreshold(val: number): void {
|
|
23
|
-
// Detector.getInstance().setProbabilityThreshold(val);
|
|
24
|
-
// }
|
|
25
|
-
setCallbackChangeTitle(fun) {
|
|
26
|
-
this.callbackChangeTitle = fun;
|
|
27
|
-
}
|
|
28
|
-
setCallbackVideoStarted(fun) {
|
|
29
|
-
this.callbackVideoStarted = fun;
|
|
30
|
-
}
|
|
31
|
-
setCallbackErrors(fun) {
|
|
32
|
-
this.callbackErrors = fun;
|
|
33
|
-
}
|
|
34
|
-
setCallbackAutoCapturing(fun) {
|
|
35
|
-
this.callbackAutoCapturing = fun;
|
|
36
|
-
}
|
|
37
|
-
// public setCallbackFaceDetectionErrors(fun: (e: PipelineResult) => void): void {
|
|
38
|
-
// this.callbackFaceDetectionErrors = fun;
|
|
39
|
-
// }
|
|
40
|
-
setCallbackRecordingReady(fun) {
|
|
41
|
-
this.callbackRecordingReady = fun;
|
|
42
|
-
}
|
|
43
|
-
setCallbackTimeElapsed(fun) {
|
|
44
|
-
this.callbackTimeElapsed = fun;
|
|
45
|
-
}
|
|
46
|
-
setVerificationFinished(fun) {
|
|
47
|
-
this.verificationFinished = fun;
|
|
48
|
-
}
|
|
49
|
-
constructor(mode) {
|
|
50
|
-
this.streamPaused = false;
|
|
51
|
-
this.recordedChunks = [];
|
|
52
|
-
this.videoSize = { width: 0, height: 0 };
|
|
53
|
-
this.pauseStream = () => {
|
|
54
|
-
this.streamPaused = true;
|
|
55
|
-
this.mediaRecorder.pause();
|
|
56
|
-
this.videoElement.pause();
|
|
57
|
-
// this.dropMask();
|
|
58
|
-
// if (this.faceDetection) Detector.getInstance().stopDetector();
|
|
59
|
-
};
|
|
60
|
-
this.initFacePose();
|
|
61
|
-
this.idML5Detector = IDML5Detector.getInstance(this, store.device.isMobile);
|
|
62
|
-
this.faceML5Detector = FaceML5Detector.getInstance(this, store.device.isMobile);
|
|
63
|
-
this.verificationMode = mode;
|
|
64
|
-
}
|
|
65
|
-
static getInstance(mode) {
|
|
66
|
-
if (!Stream.instance) {
|
|
67
|
-
Stream.instance = new Stream(mode);
|
|
68
|
-
}
|
|
69
|
-
return Stream.instance;
|
|
70
|
-
}
|
|
71
|
-
// public returnErrors(errors: PipelineResult) {
|
|
72
|
-
// this.callbackFaceDetectionErrors(errors);
|
|
73
|
-
// }
|
|
74
|
-
autoCapturing() {
|
|
75
|
-
this.callbackAutoCapturing();
|
|
76
|
-
}
|
|
77
|
-
timeElapsed() {
|
|
78
|
-
this.callbackTimeElapsed();
|
|
79
|
-
}
|
|
80
|
-
verificationReady() {
|
|
81
|
-
this.verificationFinished();
|
|
82
|
-
}
|
|
83
|
-
updateHtmlElements(videoElement, canvasElement, component) {
|
|
84
|
-
this.videoElement = videoElement;
|
|
85
|
-
this.canvasElement = canvasElement;
|
|
86
|
-
this.idML5Detector.updateHtmlElements(this.videoElement, this.canvasElement, component);
|
|
87
|
-
this.faceML5Detector.updateHtmlElements(this.videoElement, this.canvasElement, component);
|
|
88
|
-
}
|
|
89
|
-
static orientationChange() { }
|
|
90
|
-
startStream(stream) {
|
|
91
|
-
if (this.stream)
|
|
92
|
-
this.stream.getTracks().forEach((track) => track.stop());
|
|
93
|
-
this.stream = stream;
|
|
94
|
-
if (!this.videoElement || this.videoElement == null) {
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
if ('srcObject' in this.videoElement) {
|
|
98
|
-
this.videoElement.srcObject = stream;
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
// @ts-ignore
|
|
102
|
-
this.videoElement.src = window.URL.createObjectURL(stream);
|
|
103
|
-
}
|
|
104
|
-
this.videoElement.addEventListener('loadedmetadata', async (_e) => {
|
|
105
|
-
this.videoElement.play().then(() => {
|
|
106
|
-
this.streamPaused = false;
|
|
107
|
-
this.updateCanvasSize(this.canvasElement);
|
|
108
|
-
this.updateVideoSize(this.videoElement);
|
|
109
|
-
this.callbackVideoStarted();
|
|
110
|
-
if (this.idDetection)
|
|
111
|
-
this.startIdDetection();
|
|
112
|
-
if (this.faceDetection)
|
|
113
|
-
this.startFaceDetection();
|
|
114
|
-
});
|
|
115
|
-
}, false);
|
|
116
|
-
}
|
|
117
|
-
async initStream(stream) {
|
|
118
|
-
this.startStream(stream);
|
|
119
|
-
this.recordStream();
|
|
120
|
-
}
|
|
121
|
-
async resumeStream() {
|
|
122
|
-
this.streamPaused = false;
|
|
123
|
-
this.mediaRecorder.resume();
|
|
124
|
-
await this.videoElement.play();
|
|
125
|
-
// this.drawMask();
|
|
126
|
-
// if (this.faceDetection) await Detector.getInstance().startDetector();
|
|
127
|
-
}
|
|
128
|
-
recordStream() {
|
|
129
|
-
if (this.mediaRecorder && this.mediaRecorder.state == 'recording')
|
|
130
|
-
return;
|
|
131
|
-
var options = { mimeType: Stream.webmMimeType.mime, videoBitsPerSecond: 1500000 };
|
|
132
|
-
if (!MediaRecorder.isTypeSupported(options.mimeType)) {
|
|
133
|
-
if (store.device.mobileOS == MobileOS.iOS || store.device.browser == Browser.Safari)
|
|
134
|
-
options.mimeType = Stream.mp4MimeType.mime;
|
|
135
|
-
}
|
|
136
|
-
this.recordedChunks = [];
|
|
137
|
-
this.mediaRecorder = new MediaRecorder(this.stream, options);
|
|
138
|
-
this.mediaRecorder.ondataavailable = event => {
|
|
139
|
-
this.recordedChunks.push(event.data);
|
|
140
|
-
};
|
|
141
|
-
this.mediaRecorder.onstop = _e => {
|
|
142
|
-
var rec = new Blob(this.recordedChunks, {
|
|
143
|
-
type: options.mimeType.split(';')[0],
|
|
144
|
-
});
|
|
145
|
-
this.callbackRecordingReady(rec);
|
|
146
|
-
};
|
|
147
|
-
this.mediaRecorder.start(); // Start recording, and dump data every second
|
|
148
|
-
}
|
|
149
|
-
updateCanvasSize(canvas) {
|
|
150
|
-
this.videoSize = { width: this.videoElement.videoWidth, height: this.videoElement.videoHeight };
|
|
151
|
-
canvas.width = this.videoSize.width;
|
|
152
|
-
canvas.height = this.videoSize.height;
|
|
153
|
-
}
|
|
154
|
-
updateVideoSize(video) {
|
|
155
|
-
this.videoSize = { width: this.videoElement.videoWidth, height: this.videoElement.videoHeight };
|
|
156
|
-
video.width = this.videoSize.width;
|
|
157
|
-
video.height = this.videoSize.height;
|
|
158
|
-
}
|
|
159
|
-
dropStream() {
|
|
160
|
-
if (!this.streamStopped()) {
|
|
161
|
-
this.stream.getTracks().forEach((track) => track.stop());
|
|
162
|
-
this.videoElement.srcObject = null;
|
|
163
|
-
}
|
|
164
|
-
if (this.mediaRecorder && this.mediaRecorder.state != 'inactive') {
|
|
165
|
-
this.mediaRecorder.stop();
|
|
166
|
-
}
|
|
167
|
-
// if (this.faceDetection) Detector.getInstance().stopDetector();
|
|
168
|
-
}
|
|
169
|
-
streamStopped() {
|
|
170
|
-
return !(this.stream && this.stream.getTracks && this.stream.getTracks().length > 0);
|
|
171
|
-
}
|
|
172
|
-
async takePhoto() {
|
|
173
|
-
const canvas = document.createElement('canvas');
|
|
174
|
-
canvas.style.visibility = 'hidden';
|
|
175
|
-
canvas.width = this.videoElement.videoWidth;
|
|
176
|
-
canvas.height = this.videoElement.videoHeight;
|
|
177
|
-
return await this.getFrame(canvas);
|
|
178
|
-
}
|
|
179
|
-
getFrame(canvas) {
|
|
180
|
-
return new Promise(resolve => {
|
|
181
|
-
const context = canvas.getContext('2d');
|
|
182
|
-
context.drawImage(this.videoElement, 0, 0, canvas.width, canvas.height);
|
|
183
|
-
canvas.toBlob((frame) => {
|
|
184
|
-
if (frame.type === ImageFormat.JPEG && !store.device.isAppleDevice) {
|
|
185
|
-
try {
|
|
186
|
-
addExifInImg(frame, this.stream.getTracks()[0], this.videoSize).then(updatedFrame => resolve(updatedFrame));
|
|
187
|
-
}
|
|
188
|
-
catch (e) {
|
|
189
|
-
resolve(frame);
|
|
190
|
-
this.callbackErrors(e, false);
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
else {
|
|
194
|
-
resolve(frame);
|
|
195
|
-
}
|
|
196
|
-
}, ImageFormat.PNG, 1);
|
|
197
|
-
//let outCanvContext = this.canvasElement.getContext('2d');
|
|
198
|
-
//outCanvContext.drawImage(this.videoElement, 0, 0, this.canvasElement.width, this.canvasElement.height);
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
async startIdDetection() {
|
|
202
|
-
if (this.streamPaused)
|
|
203
|
-
return;
|
|
204
|
-
this.idML5Detector.initDetector(this.verificationMode);
|
|
205
|
-
}
|
|
206
|
-
async startFaceDetection() {
|
|
207
|
-
if (this.streamPaused)
|
|
208
|
-
return;
|
|
209
|
-
this.faceML5Detector.initDetector(this.verificationMode);
|
|
210
|
-
}
|
|
211
|
-
initFacePose() {
|
|
212
|
-
this.facePose = FacePosePick.randomEnum(FacePose);
|
|
213
|
-
}
|
|
214
|
-
requestFacePose() {
|
|
215
|
-
// var pose = FacePose.TiltLeft;
|
|
216
|
-
this.callbackChangeTitle(this.facePose);
|
|
217
|
-
return this.facePose;
|
|
218
|
-
}
|
|
219
|
-
changeFacePose() {
|
|
220
|
-
this.callbackChangeTitle(null);
|
|
221
|
-
}
|
|
222
|
-
changeIDPose(pose) {
|
|
223
|
-
this.callbackChangeTitle(pose);
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
Stream.mp4MimeType = { type: 'video/mp4', codec: 'codecs:h264', extension: 'mp4', mime: 'video/mp4;codecs:h264' };
|
|
227
|
-
Stream.webmMimeType = { type: 'video/webm', codec: 'codecs=vp8', extension: 'webm', mime: 'video/webm;codecs=vp8' };
|
|
228
|
-
window.addEventListener('resize', Stream.orientationChange, false);
|
|
229
|
-
window.addEventListener('orientationchange', Stream.orientationChange, false);
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export function videoRatio(videoElement) {
|
|
2
|
-
const hRatio = videoElement.clientWidth / videoElement.videoWidth;
|
|
3
|
-
const vRatio = videoElement.clientHeight / videoElement.videoHeight;
|
|
4
|
-
return Math.min(hRatio, vRatio);
|
|
5
|
-
}
|
|
6
|
-
export function getVideoRatio(videoElement) {
|
|
7
|
-
const hRatio = videoElement.clientWidth / videoElement.videoWidth;
|
|
8
|
-
const vRatio = videoElement.clientHeight / videoElement.videoHeight;
|
|
9
|
-
return Math.min(hRatio, vRatio);
|
|
10
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
export const convertToDataUrl = async (file) => {
|
|
2
|
-
return new Promise(async (resolve) => {
|
|
3
|
-
let arr = [];
|
|
4
|
-
for (let i = 0; i < file.length; i++) {
|
|
5
|
-
const fr = new FileReader();
|
|
6
|
-
fr.onload = () => {
|
|
7
|
-
arr.push(fr.result);
|
|
8
|
-
if (arr.length === file.length)
|
|
9
|
-
resolve(arr);
|
|
10
|
-
};
|
|
11
|
-
fr.readAsDataURL(file[i]);
|
|
12
|
-
}
|
|
13
|
-
});
|
|
14
|
-
};
|
|
15
|
-
export const blobToBase64 = (blob) => {
|
|
16
|
-
return new Promise((resolve, _) => {
|
|
17
|
-
const reader = new FileReader();
|
|
18
|
-
reader.onloadend = () => resolve(reader.result);
|
|
19
|
-
reader.readAsDataURL(blob);
|
|
20
|
-
});
|
|
21
|
-
};
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { blobToBase64 } from '../utils/utils';
|
|
2
|
-
import * as piexif from 'piexifjs';
|
|
3
|
-
export const addExifInImg = async (blob, track, videoSize) => {
|
|
4
|
-
const base64 = await blobToBase64(blob);
|
|
5
|
-
const exif = piexif.load(base64);
|
|
6
|
-
const devices = await navigator.mediaDevices.enumerateDevices();
|
|
7
|
-
const cameraNames = devices.filter(device => device.kind === 'videoinput').map(device => device.label);
|
|
8
|
-
const json = {
|
|
9
|
-
width: videoSize.width,
|
|
10
|
-
height: videoSize.height,
|
|
11
|
-
usedCamera: track.label,
|
|
12
|
-
camerasOnDevice: cameraNames,
|
|
13
|
-
};
|
|
14
|
-
const newExif = {
|
|
15
|
-
'0th': Object.assign(Object.assign({}, exif['0th']), { [piexif.ImageIFD.Model]: json.usedCamera, [piexif.ImageIFD.ImageWidth]: json.width, [piexif.ImageIFD.ImageLength]: json.height }),
|
|
16
|
-
'Exif': Object.assign(Object.assign({}, exif['Exif']), { [piexif.ExifIFD.UserComment]: JSON.stringify(json) }),
|
|
17
|
-
'GPS': Object.assign({}, exif['GPS']),
|
|
18
|
-
'Interop': Object.assign({}, exif['Interop']),
|
|
19
|
-
'1st': Object.assign({}, exif['1st']),
|
|
20
|
-
'thumbnail': exif['thumbnail'],
|
|
21
|
-
};
|
|
22
|
-
const newExifBinary = piexif.dump(newExif);
|
|
23
|
-
const newPhotoData = piexif.insert(newExifBinary, base64);
|
|
24
|
-
return await fetch(newPhotoData).then(res => res.blob());
|
|
25
|
-
};
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { createStore } from '@stencil/store';
|
|
2
|
-
import { FlowStatus } from '../models/FlowStatus';
|
|
3
|
-
import { SessionKeys } from './textValues';
|
|
4
|
-
const { state, onChange } = createStore({
|
|
5
|
-
flowStatus: FlowStatus.NONE,
|
|
6
|
-
environment: 'PROD',
|
|
7
|
-
debug: false,
|
|
8
|
-
requestId: '',
|
|
9
|
-
redirectId: '',
|
|
10
|
-
initialised: false,
|
|
11
|
-
token: '',
|
|
12
|
-
cameraIds: [],
|
|
13
|
-
cameraId: '',
|
|
14
|
-
hasIdBack: false,
|
|
15
|
-
hasSelfieGesture: false,
|
|
16
|
-
hasIdTilt: false,
|
|
17
|
-
agreementsValidation: true,
|
|
18
|
-
phoneValidation: true,
|
|
19
|
-
phoneNumber: '',
|
|
20
|
-
apiBaseUrl: 'https://apiro.id-kyc.com',
|
|
21
|
-
device: null,
|
|
22
|
-
});
|
|
23
|
-
onChange('environment', value => {
|
|
24
|
-
state.debug = value == 'QA';
|
|
25
|
-
});
|
|
26
|
-
onChange('flowStatus', value => {
|
|
27
|
-
sessionStorage.setItem(SessionKeys.FlowStatusKey, FlowStatus[value]);
|
|
28
|
-
});
|
|
29
|
-
onChange('token', value => {
|
|
30
|
-
sessionStorage.setItem(SessionKeys.TokenKey, value);
|
|
31
|
-
});
|
|
32
|
-
onChange('requestId', value => {
|
|
33
|
-
sessionStorage.setItem(SessionKeys.RequestIdKey, value);
|
|
34
|
-
});
|
|
35
|
-
onChange('initialised', value => {
|
|
36
|
-
sessionStorage.setItem(SessionKeys.InitialisedKey, String(value));
|
|
37
|
-
});
|
|
38
|
-
onChange('hasIdBack', value => {
|
|
39
|
-
sessionStorage.setItem(SessionKeys.HasIdBackKey, String(value));
|
|
40
|
-
});
|
|
41
|
-
onChange('agreementsValidation', value => {
|
|
42
|
-
sessionStorage.setItem(SessionKeys.AgreementValidationKey, String(value));
|
|
43
|
-
});
|
|
44
|
-
onChange('phoneValidation', value => {
|
|
45
|
-
sessionStorage.setItem(SessionKeys.PhoneValidationKey, String(value));
|
|
46
|
-
});
|
|
47
|
-
export default state;
|
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
import store from './store';
|
|
2
|
-
export class GlobalValues {
|
|
3
|
-
}
|
|
4
|
-
GlobalValues.FooterText = 'Qoobiss eKYC';
|
|
5
|
-
GlobalValues.VideoLenght = 3100;
|
|
6
|
-
export class HowToValues extends GlobalValues {
|
|
7
|
-
}
|
|
8
|
-
HowToValues.IdTitile = 'Prezintă actul tău de identitate';
|
|
9
|
-
HowToValues.IdSubTitileFace = 'Este necesară captarea actului de identitate. Urmează intrucțiunile ce vor fi afișate pe ecran.';
|
|
10
|
-
HowToValues.IdSubTitileBack = 'Este necesară captarea pe verso a actului de identitate. Urmează intrucțiunile ce vor fi afișate pe ecran.';
|
|
11
|
-
HowToValues.IdButton = 'Sunt gata!';
|
|
12
|
-
HowToValues.SelfieTitile = 'Validare video';
|
|
13
|
-
HowToValues.SelfieSubTitile = 'Este necesară realizarea unei înregistrări video. Respectă intrucțiunile ce vor fi afișate pe ecran.';
|
|
14
|
-
HowToValues.SelfieButton = 'Sunt gata!';
|
|
15
|
-
export class LandingValues extends GlobalValues {
|
|
16
|
-
}
|
|
17
|
-
LandingValues.Title = 'Validarea identității la distanță este o procedură simplă și rapidă';
|
|
18
|
-
LandingValues.Description = 'Asigură-te că ai:';
|
|
19
|
-
LandingValues.IdInfo = 'Actul de identitate, în original';
|
|
20
|
-
LandingValues.DeviceInfo = 'Un telefon mobil sau un calculator cu camera web';
|
|
21
|
-
LandingValues.SmsInfo = 'Acces la un telefon mobil ce permite primirea de mesaje SMS';
|
|
22
|
-
LandingValues.Warning = 'ATENȚIE! În cadrul acestui proces se poate utiliza doar cartea de identitate Românească.';
|
|
23
|
-
LandingValues.WarningMd = 'ATENȚIE! In cadrul acestui proces se pot utiliza doar buletinele de identitate din Republica Moldova.';
|
|
24
|
-
LandingValues.Terms = 'Prin continuarea procesului, confirmi că ai citit termenii de utilizare și ești de acord cu aceștia.';
|
|
25
|
-
LandingValues.Button = 'Am înțeles';
|
|
26
|
-
LandingValues.ButtonLeave = 'Nu sunt pregătit';
|
|
27
|
-
export class PhoneValidationValues extends GlobalValues {
|
|
28
|
-
}
|
|
29
|
-
PhoneValidationValues.Title = 'Este necesar să validăm numărul tău de telefon';
|
|
30
|
-
PhoneValidationValues.Description = 'Introdu mai jos numarul tau de telefon:';
|
|
31
|
-
PhoneValidationValues.Button = 'Trimite SMS de verificare';
|
|
32
|
-
PhoneValidationValues.Label = 'Numarul tau de telefon';
|
|
33
|
-
export class CodeValidationValues extends GlobalValues {
|
|
34
|
-
}
|
|
35
|
-
CodeValidationValues.Title = 'Introdu codul de validare primit prin sms:';
|
|
36
|
-
CodeValidationValues.Description = ' ';
|
|
37
|
-
CodeValidationValues.Button = 'Validează';
|
|
38
|
-
CodeValidationValues.Error = 'Codul introdus nu este valid. Asigură-te că îl introduci corect';
|
|
39
|
-
export class CompleteValues extends GlobalValues {
|
|
40
|
-
}
|
|
41
|
-
CompleteValues.Title = 'Procesul a fost finalizat.';
|
|
42
|
-
CompleteValues.Description = 'Vei fi redirecționat în câteva momente.';
|
|
43
|
-
CompleteValues.Message = 'Îți mulțumim!';
|
|
44
|
-
export class SessionKeys {
|
|
45
|
-
}
|
|
46
|
-
SessionKeys.FlowStatusKey = 'qbs-ect-flowstatus';
|
|
47
|
-
SessionKeys.RequestIdKey = 'qbs-ect-requestid';
|
|
48
|
-
SessionKeys.TokenKey = 'qbs-ect-token';
|
|
49
|
-
SessionKeys.InitialisedKey = 'qbs-ect-initialised';
|
|
50
|
-
SessionKeys.HasIdBackKey = 'qbs-ect-has-id-back';
|
|
51
|
-
SessionKeys.AgreementValidationKey = 'qbs-ect-agreement-validation';
|
|
52
|
-
SessionKeys.PhoneValidationKey = 'qbs-ect-phone-validation';
|
|
53
|
-
SessionKeys.RefreshDoneKey = 'qbs-ect-refresh-done';
|
|
54
|
-
export class IdCaptureValues extends GlobalValues {
|
|
55
|
-
}
|
|
56
|
-
IdCaptureValues.Button = 'Încerc din nou';
|
|
57
|
-
IdCaptureValues.Title = 'Încadrează actul de identitate în chenarul de pe ecran.';
|
|
58
|
-
IdCaptureValues.TitleBack = 'Încadrează spatele actului de identitate în chenarul de pe ecran.';
|
|
59
|
-
IdCaptureValues.TtileRotate = 'Întoarce actul de identitate.';
|
|
60
|
-
IdCaptureValues.ErrorTitleR1 = 'Nu am putut colecta informațiile din actul de identitate!';
|
|
61
|
-
IdCaptureValues.ErrorTitleR2 = 'Te rugăm să mai încerci o dată!';
|
|
62
|
-
IdCaptureValues.ErrorR1 = 'Încadrează actul de identitate în așa fel încât chenarul să se potrivească perfect pe colțurile actului de identitate. Trebuie să fie vizibilă întreaga suprafață a actului de identitate. ';
|
|
63
|
-
IdCaptureValues.ErrorR2 = 'Ai grijă să te afli într-o zonă cu suficientă lumină și să nu acoperi părți ale actului de identitate cu degetele. Ai grijă de asemenea să nu se formeze reflexii de lumină pe suprafața acestuia.';
|
|
64
|
-
IdCaptureValues.IDPoseMapping = {
|
|
65
|
-
0: '',
|
|
66
|
-
1: 'Înclină actul de identitate spre spate.',
|
|
67
|
-
2: '',
|
|
68
|
-
3: '',
|
|
69
|
-
4: '',
|
|
70
|
-
};
|
|
71
|
-
IdCaptureValues.IDPoseDemoMapping = {
|
|
72
|
-
0: 'https://ekyc.blob.core.windows.net/$web/animations/id/id_front.mp4',
|
|
73
|
-
1: 'https://ekyc.blob.core.windows.net/$web/animations/id/id_front_tilt.mp4',
|
|
74
|
-
2: 'https://ekyc.blob.core.windows.net/$web/animations/id/id_rotate.mp4',
|
|
75
|
-
3: 'https://ekyc.blob.core.windows.net/$web/animations/id/id_back.mp4',
|
|
76
|
-
4: 'https://ekyc.blob.core.windows.net/$web/animations/id/id_back_tilt.mp4',
|
|
77
|
-
};
|
|
78
|
-
IdCaptureValues.Loading = 'Transferăm datele. Asteptați...';
|
|
79
|
-
export class SelfieCaptureValues extends GlobalValues {
|
|
80
|
-
}
|
|
81
|
-
SelfieCaptureValues.Title = 'Încadrează fața în chenarul de pe ecran.';
|
|
82
|
-
SelfieCaptureValues.FinalTitle = 'Îndreaptă capul și încadrează fața în chenarul de pe ecran.';
|
|
83
|
-
SelfieCaptureValues.ErrorTitleR1 = 'Procesul a eșuat!';
|
|
84
|
-
SelfieCaptureValues.ErrorTitleR2 = 'Te rugăm să mai încerci o dată!';
|
|
85
|
-
SelfieCaptureValues.ErrorR1 = 'Încadrează fața în așa fel încât chenarul să se suprapună peste linia bărbiei și a frunții, exact așa cum vezi în animația de pe ecran. ';
|
|
86
|
-
SelfieCaptureValues.ErrorR2 = 'Rămâi cu fața încadrată în chenar și execută gestul solicitat după ce animația cu explicația a dispărut de pe ecran.';
|
|
87
|
-
SelfieCaptureValues.Loading = 'Transferăm datele. Asteptați...';
|
|
88
|
-
SelfieCaptureValues.FacePoseMapping = {
|
|
89
|
-
0: 'Întoarce capul spre stânga.',
|
|
90
|
-
1: 'Întoarce capul spre dreapta.',
|
|
91
|
-
2: 'Înclină capul spre spate.',
|
|
92
|
-
3: 'Înclină capul în față.',
|
|
93
|
-
// 4: 'Înclină capul spre stânga.',
|
|
94
|
-
// 5: 'Înclină capul spre dreapta.',
|
|
95
|
-
4: '',
|
|
96
|
-
};
|
|
97
|
-
SelfieCaptureValues.FacePoseDemoMapping = {
|
|
98
|
-
0: 'https://ekyc.blob.core.windows.net/$web/animations/selfie/selfie_rotate_left.mp4',
|
|
99
|
-
1: 'https://ekyc.blob.core.windows.net/$web/animations/selfie/selfie_rotate_right.mp4',
|
|
100
|
-
2: 'https://ekyc.blob.core.windows.net/$web/animations/selfie/selfie_tilt_back.mp4',
|
|
101
|
-
3: 'https://ekyc.blob.core.windows.net/$web/animations/selfie/selfie_tilt_front.mp4',
|
|
102
|
-
// 4: 'https://ekyc.blob.core.windows.net/$web/animations/selfie/selfie_tilt_left.mp4',
|
|
103
|
-
// 5: 'https://ekyc.blob.core.windows.net/$web/animations/selfie/selfie_tilt_right.mp4',
|
|
104
|
-
4: 'https://ekyc.blob.core.windows.net/$web/animations/selfie/selfie_main.mp4',
|
|
105
|
-
};
|
|
106
|
-
export class AgreementInfoValues extends GlobalValues {
|
|
107
|
-
}
|
|
108
|
-
AgreementInfoValues.Title = 'Pentru începerea identificării avem nevoie de acordurile tale:';
|
|
109
|
-
AgreementInfoValues.Button = 'Încep identificarea';
|
|
110
|
-
AgreementInfoValues.Terms = 'Am luat la cunoștință și sunt de acord cu Termenii și condițiile generale de utilizare';
|
|
111
|
-
AgreementInfoValues.Agreement = 'Îmi exprim acordul pentru prelucrarea datelor cu caracter personal';
|
|
112
|
-
export class AgreementCheckValues extends GlobalValues {
|
|
113
|
-
}
|
|
114
|
-
AgreementCheckValues.ButtonYes = 'Sunt de acord';
|
|
115
|
-
AgreementCheckValues.ButtonNo = 'Nu sunt de acord';
|
|
116
|
-
export class ApiUrls {
|
|
117
|
-
constructor() {
|
|
118
|
-
this.uriEnv = '/';
|
|
119
|
-
this.uriEnv = store.environment == 'QA' ? '/dev_' : '/';
|
|
120
|
-
this.OtpSend = this.uriEnv + 'validation/otp/send';
|
|
121
|
-
this.OtpCheck = this.uriEnv + 'validation/otp/check';
|
|
122
|
-
this.IdentityInsert = this.uriEnv + 'validation/identity/insert';
|
|
123
|
-
this.UploadCapture = this.uriEnv + 'validation/upload/capture';
|
|
124
|
-
this.GetAgreement = this.uriEnv + 'validation/agreement/content';
|
|
125
|
-
this.GenerateAgreement = this.uriEnv + 'validation/agreement/generate';
|
|
126
|
-
this.SendLink = this.uriEnv + 'validation/otp/sendlink';
|
|
127
|
-
this.GetStatus = this.uriEnv + 'validation/identity/status';
|
|
128
|
-
this.AddLog = this.uriEnv + 'validation/logs/add';
|
|
129
|
-
this.AddStep = this.uriEnv + 'validation/logs/step';
|
|
130
|
-
this.AbortRequest = this.uriEnv + 'validation/identity/abort';
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
export class MobileRedirectValues extends GlobalValues {
|
|
134
|
-
}
|
|
135
|
-
MobileRedirectValues.InfoTop = 'Pentru a continua scanați codul de mai jos cu un smartphone.';
|
|
136
|
-
MobileRedirectValues.InfoBottom = 'Sau introduceți un număr de telefon pentru a primi link-ul pe smartphone.';
|
|
137
|
-
MobileRedirectValues.Validation = 'Număr de telefon invalid!';
|
|
138
|
-
MobileRedirectValues.InfoWaiting = 'Așteptăm finalizarea procesului pe smartphone.';
|
|
139
|
-
MobileRedirectValues.InfoAborted = 'Procesului de pe smartphone a fost amanat.';
|
|
140
|
-
export class CameraErrorValues extends GlobalValues {
|
|
141
|
-
}
|
|
142
|
-
CameraErrorValues.Title = 'Procesul de indetificare nu poate continua.';
|
|
143
|
-
CameraErrorValues.Description = 'Nu am putut detecta nicio camera. Cel mai probabil nu ai acordat drept de acces acestui site, Te rugam sa dai acces si sa apesi butonul de mai jos dupa aceea.';
|
|
144
|
-
CameraErrorValues.Button = 'Reincep procesul';
|
|
145
|
-
CameraErrorValues.HowToLink = 'https://ekyc.blob.core.windows.net/$web/animations/enable_permissions_sm.mp4';
|
package/dist/collection/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|