vishwam-react-ent-sdk 1.0.5 → 1.0.6
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/index.js +204 -54
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +204 -54
- package/dist/index.modern.js.map +1 -1
- package/package.json +1 -1
- package/dist/base_image~SZIbuxrl.png +0 -0
- package/dist/capture~bjDiGtnj.svg +0 -27
- package/dist/disabled~WdYTHhIa.svg +0 -13
- package/dist/disabled~tYaAuTCY.svg +0 -75
- package/dist/enabled~yrzkrFnh.svg +0 -30
- package/dist/loading~JYSIUiTE.svg +0 -52
- package/dist/loading~SJupkXdT.svg +0 -6
- package/dist/loading~bhVhgQsq.svg +0 -17
- package/dist/loading~gjlyNxPR.svg +0 -60
- package/dist/loading~oqTYRQga.svg +0 -6
package/dist/index.js
CHANGED
|
@@ -8,23 +8,28 @@ var reactDeviceDetect = require('react-device-detect');
|
|
|
8
8
|
var faceapi = require('face-api.js');
|
|
9
9
|
|
|
10
10
|
function _extends() {
|
|
11
|
-
_extends = Object.assign
|
|
11
|
+
_extends = Object.assign || function (target) {
|
|
12
12
|
for (var i = 1; i < arguments.length; i++) {
|
|
13
13
|
var source = arguments[i];
|
|
14
|
+
|
|
14
15
|
for (var key in source) {
|
|
15
16
|
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
16
17
|
target[key] = source[key];
|
|
17
18
|
}
|
|
18
19
|
}
|
|
19
20
|
}
|
|
21
|
+
|
|
20
22
|
return target;
|
|
21
23
|
};
|
|
24
|
+
|
|
22
25
|
return _extends.apply(this, arguments);
|
|
23
26
|
}
|
|
27
|
+
|
|
24
28
|
function _taggedTemplateLiteralLoose(strings, raw) {
|
|
25
29
|
if (!raw) {
|
|
26
30
|
raw = strings.slice(0);
|
|
27
31
|
}
|
|
32
|
+
|
|
28
33
|
strings.raw = raw;
|
|
29
34
|
return strings;
|
|
30
35
|
}
|
|
@@ -69,20 +74,25 @@ var request = function request(url, payload, method, token) {
|
|
|
69
74
|
};
|
|
70
75
|
|
|
71
76
|
var _path, _path2, _path3;
|
|
77
|
+
|
|
72
78
|
function _extends$1() {
|
|
73
|
-
_extends$1 = Object.assign
|
|
79
|
+
_extends$1 = Object.assign || function (target) {
|
|
74
80
|
for (var i = 1; i < arguments.length; i++) {
|
|
75
81
|
var source = arguments[i];
|
|
82
|
+
|
|
76
83
|
for (var key in source) {
|
|
77
84
|
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
78
85
|
target[key] = source[key];
|
|
79
86
|
}
|
|
80
87
|
}
|
|
81
88
|
}
|
|
89
|
+
|
|
82
90
|
return target;
|
|
83
91
|
};
|
|
92
|
+
|
|
84
93
|
return _extends$1.apply(this, arguments);
|
|
85
94
|
}
|
|
95
|
+
|
|
86
96
|
function SvgEnabled(props) {
|
|
87
97
|
return /*#__PURE__*/React.createElement("svg", _extends$1({
|
|
88
98
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -99,20 +109,25 @@ function SvgEnabled(props) {
|
|
|
99
109
|
}
|
|
100
110
|
|
|
101
111
|
var _image;
|
|
112
|
+
|
|
102
113
|
function _extends$2() {
|
|
103
|
-
_extends$2 = Object.assign
|
|
114
|
+
_extends$2 = Object.assign || function (target) {
|
|
104
115
|
for (var i = 1; i < arguments.length; i++) {
|
|
105
116
|
var source = arguments[i];
|
|
117
|
+
|
|
106
118
|
for (var key in source) {
|
|
107
119
|
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
108
120
|
target[key] = source[key];
|
|
109
121
|
}
|
|
110
122
|
}
|
|
111
123
|
}
|
|
124
|
+
|
|
112
125
|
return target;
|
|
113
126
|
};
|
|
127
|
+
|
|
114
128
|
return _extends$2.apply(this, arguments);
|
|
115
129
|
}
|
|
130
|
+
|
|
116
131
|
function SvgDisabled(props) {
|
|
117
132
|
return /*#__PURE__*/React.createElement("svg", _extends$2({
|
|
118
133
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -127,20 +142,25 @@ function SvgDisabled(props) {
|
|
|
127
142
|
}
|
|
128
143
|
|
|
129
144
|
var _style, _g, _g2;
|
|
145
|
+
|
|
130
146
|
function _extends$3() {
|
|
131
|
-
_extends$3 = Object.assign
|
|
147
|
+
_extends$3 = Object.assign || function (target) {
|
|
132
148
|
for (var i = 1; i < arguments.length; i++) {
|
|
133
149
|
var source = arguments[i];
|
|
150
|
+
|
|
134
151
|
for (var key in source) {
|
|
135
152
|
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
136
153
|
target[key] = source[key];
|
|
137
154
|
}
|
|
138
155
|
}
|
|
139
156
|
}
|
|
157
|
+
|
|
140
158
|
return target;
|
|
141
159
|
};
|
|
160
|
+
|
|
142
161
|
return _extends$3.apply(this, arguments);
|
|
143
162
|
}
|
|
163
|
+
|
|
144
164
|
function SvgLoading(props) {
|
|
145
165
|
return /*#__PURE__*/React.createElement("svg", _extends$3({
|
|
146
166
|
id: "loading_svg__em6wghdkiauc1",
|
|
@@ -350,6 +370,7 @@ function SvgLoading(props) {
|
|
|
350
370
|
}
|
|
351
371
|
|
|
352
372
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
|
|
373
|
+
|
|
353
374
|
var callLiveness = function callLiveness(url, appId, userId, referenceId, captureType, eyesCheck, storeId, whiteBackground, expiryIn, img, img2, imageType) {
|
|
354
375
|
try {
|
|
355
376
|
var formData = new FormData();
|
|
@@ -371,16 +392,19 @@ var callLiveness = function callLiveness(url, appId, userId, referenceId, captur
|
|
|
371
392
|
return Promise.reject(e);
|
|
372
393
|
}
|
|
373
394
|
};
|
|
395
|
+
|
|
374
396
|
var videoConstraints = {
|
|
375
397
|
audio: false,
|
|
376
398
|
video: {
|
|
377
399
|
facingMode: 'user'
|
|
378
400
|
}
|
|
379
401
|
};
|
|
402
|
+
|
|
380
403
|
function frontalFaceCheck(landmarks) {
|
|
381
404
|
if (!landmarks || landmarks.length < 68) {
|
|
382
405
|
return false;
|
|
383
406
|
}
|
|
407
|
+
|
|
384
408
|
var leftEyeCenter = {
|
|
385
409
|
x: (landmarks[36].x + landmarks[39].x) / 2,
|
|
386
410
|
y: (landmarks[36].y + landmarks[39].y) / 2
|
|
@@ -397,30 +421,38 @@ function frontalFaceCheck(landmarks) {
|
|
|
397
421
|
x: (rightEyeCenter.x - landmarks[30].x) / (landmarks[30].x - leftEyeCenter.x),
|
|
398
422
|
y: (landmarks[66].y - landmarks[30].y) / (landmarks[30].y - faceMiddlePoint.y)
|
|
399
423
|
};
|
|
424
|
+
|
|
400
425
|
if (ratio.x > 0.75 && ratio.x < 1.33 && ratio.y > 0.56 && ratio.y < 1.56) {
|
|
401
426
|
return true;
|
|
402
427
|
}
|
|
428
|
+
|
|
403
429
|
return false;
|
|
404
430
|
}
|
|
431
|
+
|
|
405
432
|
(function polyfillGetUserMedia() {
|
|
406
433
|
if (typeof window === 'undefined') {
|
|
407
434
|
return;
|
|
408
435
|
}
|
|
436
|
+
|
|
409
437
|
if (navigator.mediaDevices === undefined) {
|
|
410
438
|
navigator.mediaDevices = {};
|
|
411
439
|
}
|
|
440
|
+
|
|
412
441
|
if (navigator.mediaDevices.getUserMedia === undefined) {
|
|
413
442
|
navigator.mediaDevices.getUserMedia = function (constraints) {
|
|
414
443
|
var getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;
|
|
444
|
+
|
|
415
445
|
if (!getUserMedia) {
|
|
416
446
|
return Promise.reject(new Error('getUserMedia is not implemented in this browser'));
|
|
417
447
|
}
|
|
448
|
+
|
|
418
449
|
return new Promise(function (resolve, reject) {
|
|
419
450
|
getUserMedia.call(navigator, constraints, resolve, reject);
|
|
420
451
|
});
|
|
421
452
|
};
|
|
422
453
|
}
|
|
423
454
|
})();
|
|
455
|
+
|
|
424
456
|
function CheckLiveness(_ref) {
|
|
425
457
|
var resizeImage = function resizeImage(base64, height, width) {
|
|
426
458
|
try {
|
|
@@ -431,6 +463,7 @@ function CheckLiveness(_ref) {
|
|
|
431
463
|
var copyContext = canvasCopy.getContext('2d');
|
|
432
464
|
var img = new Image();
|
|
433
465
|
img.src = base64;
|
|
466
|
+
|
|
434
467
|
img.onload = function () {
|
|
435
468
|
canvasCopy.width = img.width;
|
|
436
469
|
canvasCopy.height = img.height;
|
|
@@ -445,32 +478,39 @@ function CheckLiveness(_ref) {
|
|
|
445
478
|
return Promise.reject(e);
|
|
446
479
|
}
|
|
447
480
|
};
|
|
481
|
+
|
|
448
482
|
var runFaceDetection = function runFaceDetection() {
|
|
449
483
|
try {
|
|
450
|
-
var
|
|
484
|
+
var _temp3 = function _temp3() {
|
|
451
485
|
if (!stopFaceDetection) {
|
|
452
486
|
setTimeout(runFaceDetection, 100);
|
|
453
487
|
}
|
|
454
488
|
};
|
|
455
|
-
|
|
489
|
+
|
|
490
|
+
var _temp4 = function () {
|
|
456
491
|
if (!stopFaceDetection) {
|
|
457
492
|
return Promise.resolve(detectFace()).then(function (detection) {
|
|
458
493
|
if (detection) {
|
|
459
494
|
var isFrontal = frontalFaceCheck(detection.landmarks.positions);
|
|
495
|
+
|
|
460
496
|
if (isFrontal) {
|
|
461
497
|
setFrontal(true);
|
|
462
498
|
} else {
|
|
463
499
|
setFrontal(false);
|
|
464
500
|
}
|
|
501
|
+
} else {
|
|
502
|
+
setFrontal(false);
|
|
465
503
|
}
|
|
466
504
|
});
|
|
467
505
|
}
|
|
468
506
|
}();
|
|
469
|
-
|
|
507
|
+
|
|
508
|
+
return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
|
|
470
509
|
} catch (e) {
|
|
471
510
|
return Promise.reject(e);
|
|
472
511
|
}
|
|
473
512
|
};
|
|
513
|
+
|
|
474
514
|
var init = function init() {
|
|
475
515
|
try {
|
|
476
516
|
var isFaceDetectorLoaded = false;
|
|
@@ -486,11 +526,13 @@ function CheckLiveness(_ref) {
|
|
|
486
526
|
return Promise.reject(e);
|
|
487
527
|
}
|
|
488
528
|
};
|
|
529
|
+
|
|
489
530
|
var startCamera = function startCamera() {
|
|
490
531
|
try {
|
|
491
532
|
if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) {
|
|
492
533
|
console.log('enumerateDevices() not supported.');
|
|
493
534
|
}
|
|
535
|
+
|
|
494
536
|
navigator.mediaDevices.enumerateDevices().then(function (devices) {
|
|
495
537
|
devices.forEach(function (device) {
|
|
496
538
|
console.log(device.kind + ': ' + device.label + ' id = ' + device.deviceId);
|
|
@@ -505,6 +547,7 @@ function CheckLiveness(_ref) {
|
|
|
505
547
|
})["catch"](function (err) {
|
|
506
548
|
console.log(err);
|
|
507
549
|
var errString = err.toString();
|
|
550
|
+
|
|
508
551
|
if (errString.includes('NotReadableError')) {
|
|
509
552
|
setTimeout(function () {
|
|
510
553
|
startCamera();
|
|
@@ -526,6 +569,7 @@ function CheckLiveness(_ref) {
|
|
|
526
569
|
return Promise.reject(e);
|
|
527
570
|
}
|
|
528
571
|
};
|
|
572
|
+
|
|
529
573
|
var detectFace = function detectFace() {
|
|
530
574
|
try {
|
|
531
575
|
var videoEl = document.getElementById('webcam');
|
|
@@ -535,32 +579,39 @@ function CheckLiveness(_ref) {
|
|
|
535
579
|
return Promise.reject(e);
|
|
536
580
|
}
|
|
537
581
|
};
|
|
582
|
+
|
|
538
583
|
var url = _ref.url,
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
584
|
+
appId = _ref.appId,
|
|
585
|
+
userId = _ref.userId,
|
|
586
|
+
referenceId = _ref.referenceId,
|
|
587
|
+
captureType = _ref.captureType,
|
|
588
|
+
eyesCheck = _ref.eyesCheck,
|
|
589
|
+
storeId = _ref.storeId,
|
|
590
|
+
whiteBackground = _ref.whiteBackground,
|
|
591
|
+
expiryIn = _ref.expiryIn,
|
|
592
|
+
getLivenessResponse = _ref.getLivenessResponse;
|
|
548
593
|
var webcamRef = React.useRef();
|
|
594
|
+
|
|
549
595
|
var _useState = React.useState(false),
|
|
550
|
-
|
|
551
|
-
|
|
596
|
+
disabled = _useState[0],
|
|
597
|
+
setDisabled = _useState[1];
|
|
598
|
+
|
|
552
599
|
var _useState2 = React.useState(false),
|
|
553
|
-
|
|
554
|
-
|
|
600
|
+
frontal = _useState2[0],
|
|
601
|
+
setFrontal = _useState2[1];
|
|
602
|
+
|
|
555
603
|
var _useState3 = React.useState(false),
|
|
556
|
-
|
|
557
|
-
|
|
604
|
+
loading = _useState3[0],
|
|
605
|
+
setLoading = _useState3[1];
|
|
606
|
+
|
|
558
607
|
var _React$useState = React__default.useState(false),
|
|
559
|
-
|
|
560
|
-
|
|
608
|
+
cameraAvailable = _React$useState[0],
|
|
609
|
+
setCameraAvailable = _React$useState[1];
|
|
610
|
+
|
|
561
611
|
var _useState4 = React.useState('Please wait, while the face detector is initializing'),
|
|
562
|
-
|
|
563
|
-
|
|
612
|
+
loadingText = _useState4[0],
|
|
613
|
+
setLoadingText = _useState4[1];
|
|
614
|
+
|
|
564
615
|
var interval;
|
|
565
616
|
var videoStream = null;
|
|
566
617
|
var stopFaceDetection = false;
|
|
@@ -596,7 +647,9 @@ function CheckLiveness(_ref) {
|
|
|
596
647
|
return function () {
|
|
597
648
|
clearInterval(interval);
|
|
598
649
|
stopFaceDetection = true;
|
|
650
|
+
|
|
599
651
|
console.log('came here return');
|
|
652
|
+
|
|
600
653
|
if (!videoStream) {
|
|
601
654
|
videoStream.getTracks().forEach(function (track) {
|
|
602
655
|
track.stop();
|
|
@@ -615,6 +668,7 @@ function CheckLiveness(_ref) {
|
|
|
615
668
|
return Promise.reject(e);
|
|
616
669
|
}
|
|
617
670
|
};
|
|
671
|
+
|
|
618
672
|
if (reactDeviceDetect.isMobile) {
|
|
619
673
|
startCamera();
|
|
620
674
|
} else {
|
|
@@ -622,6 +676,7 @@ function CheckLiveness(_ref) {
|
|
|
622
676
|
}
|
|
623
677
|
}, 500);
|
|
624
678
|
}, []);
|
|
679
|
+
|
|
625
680
|
function stopCamera() {
|
|
626
681
|
clearInterval(interval);
|
|
627
682
|
stopFaceDetection = true;
|
|
@@ -631,6 +686,7 @@ function CheckLiveness(_ref) {
|
|
|
631
686
|
track.stop();
|
|
632
687
|
});
|
|
633
688
|
}
|
|
689
|
+
|
|
634
690
|
function handleSuccess(stream) {
|
|
635
691
|
var videoElement = webcamRef.current;
|
|
636
692
|
var elementInterval = setInterval(function () {
|
|
@@ -647,6 +703,7 @@ function CheckLiveness(_ref) {
|
|
|
647
703
|
}
|
|
648
704
|
}, 100);
|
|
649
705
|
}
|
|
706
|
+
|
|
650
707
|
function trimCanvas(c) {
|
|
651
708
|
var ctx = c.getContext('2d');
|
|
652
709
|
var copy = document.createElement('canvas').getContext('2d');
|
|
@@ -661,23 +718,28 @@ function CheckLiveness(_ref) {
|
|
|
661
718
|
};
|
|
662
719
|
var x;
|
|
663
720
|
var y;
|
|
721
|
+
|
|
664
722
|
for (i = 0; i < l; i += 4) {
|
|
665
723
|
if (pixels.data[i + 3] !== 0) {
|
|
666
724
|
x = i / 4 % c.width;
|
|
667
725
|
y = ~~(i / 4 / c.width);
|
|
726
|
+
|
|
668
727
|
if (bound.top === null) {
|
|
669
728
|
bound.top = y;
|
|
670
729
|
}
|
|
730
|
+
|
|
671
731
|
if (bound.left === null) {
|
|
672
732
|
bound.left = x;
|
|
673
733
|
} else if (x < bound.left) {
|
|
674
734
|
bound.left = x;
|
|
675
735
|
}
|
|
736
|
+
|
|
676
737
|
if (bound.right === null) {
|
|
677
738
|
bound.right = x;
|
|
678
739
|
} else if (bound.right < x) {
|
|
679
740
|
bound.right = x;
|
|
680
741
|
}
|
|
742
|
+
|
|
681
743
|
if (bound.bottom === null) {
|
|
682
744
|
bound.bottom = y;
|
|
683
745
|
} else if (bound.bottom < y) {
|
|
@@ -685,6 +747,7 @@ function CheckLiveness(_ref) {
|
|
|
685
747
|
}
|
|
686
748
|
}
|
|
687
749
|
}
|
|
750
|
+
|
|
688
751
|
var trimHeight = bound.bottom - bound.top;
|
|
689
752
|
var trimWidth = bound.right - bound.left;
|
|
690
753
|
var trimmed = ctx.getImageData(bound.left, bound.top, trimWidth, trimHeight);
|
|
@@ -693,8 +756,10 @@ function CheckLiveness(_ref) {
|
|
|
693
756
|
copy.putImageData(trimmed, 0, 0);
|
|
694
757
|
return copy.canvas;
|
|
695
758
|
}
|
|
759
|
+
|
|
696
760
|
function captureSnapshot() {
|
|
697
761
|
var videoElement = webcamRef.current;
|
|
762
|
+
|
|
698
763
|
if (videoElement != null) {
|
|
699
764
|
var hiddenCanvas = document.getElementById('hidden-canvas');
|
|
700
765
|
hiddenCanvas.setAttribute('width', videoElement.offsetWidth);
|
|
@@ -716,6 +781,7 @@ function CheckLiveness(_ref) {
|
|
|
716
781
|
return imageData;
|
|
717
782
|
}
|
|
718
783
|
}
|
|
784
|
+
|
|
719
785
|
return /*#__PURE__*/React__default.createElement(React.Fragment, null, loading ? /*#__PURE__*/React__default.createElement(LoadingContainer, null, /*#__PURE__*/React__default.createElement(SvgLoading, {
|
|
720
786
|
style: {
|
|
721
787
|
width: '50%',
|
|
@@ -835,18 +901,22 @@ function CheckLiveness(_ref) {
|
|
|
835
901
|
}
|
|
836
902
|
}))))));
|
|
837
903
|
}
|
|
904
|
+
|
|
838
905
|
var Container = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n display: grid;\n place-items: center;\n"])));
|
|
839
906
|
var MobileContainer = styled.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n display: grid;\n place-items: center;\n"])));
|
|
840
907
|
var Button = styled.button(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\n padding: 10px;\n margin: 10px;\n background-color: inherit;\n border: none;\n cursor: pointer;\n"])));
|
|
841
908
|
var LoadingContainer = styled.div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteralLoose(["\n display: grid;\n place-items: center;\n height: 100vh;\n"])));
|
|
842
909
|
var Text = styled.h6(_templateObject5 || (_templateObject5 = _taggedTemplateLiteralLoose(["\n line-height: 1.5em;\n // height: 5em;\n overflow: hidden;\n text-align: center;\n"])));
|
|
910
|
+
|
|
843
911
|
function dataURItoBlob(dataURI, imageType) {
|
|
844
912
|
var byteString = atob(dataURI);
|
|
845
913
|
var ab = new ArrayBuffer(byteString.length);
|
|
846
914
|
var ia = new Uint8Array(ab);
|
|
915
|
+
|
|
847
916
|
for (var i = 0; i < byteString.length; i++) {
|
|
848
917
|
ia[i] = byteString.charCodeAt(i);
|
|
849
918
|
}
|
|
919
|
+
|
|
850
920
|
var bb = new Blob([ab], {
|
|
851
921
|
type: imageType
|
|
852
922
|
});
|
|
@@ -873,20 +943,25 @@ function _catch(body, recover) {
|
|
|
873
943
|
}
|
|
874
944
|
|
|
875
945
|
var _path$1, _path2$1;
|
|
946
|
+
|
|
876
947
|
function _extends$4() {
|
|
877
|
-
_extends$4 = Object.assign
|
|
948
|
+
_extends$4 = Object.assign || function (target) {
|
|
878
949
|
for (var i = 1; i < arguments.length; i++) {
|
|
879
950
|
var source = arguments[i];
|
|
951
|
+
|
|
880
952
|
for (var key in source) {
|
|
881
953
|
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
882
954
|
target[key] = source[key];
|
|
883
955
|
}
|
|
884
956
|
}
|
|
885
957
|
}
|
|
958
|
+
|
|
886
959
|
return target;
|
|
887
960
|
};
|
|
961
|
+
|
|
888
962
|
return _extends$4.apply(this, arguments);
|
|
889
963
|
}
|
|
964
|
+
|
|
890
965
|
function SvgCam(props) {
|
|
891
966
|
return /*#__PURE__*/React.createElement("svg", _extends$4({
|
|
892
967
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -901,6 +976,7 @@ function SvgCam(props) {
|
|
|
901
976
|
}
|
|
902
977
|
|
|
903
978
|
var _templateObject$1, _templateObject2$1, _templateObject3$1, _templateObject4$1, _templateObject5$1, _templateObject6;
|
|
979
|
+
|
|
904
980
|
var readDocumentCall = function readDocumentCall(url, appId, referenceId, userId, decision, isBack, expiryIn, docType, documentType, img, img2, type) {
|
|
905
981
|
try {
|
|
906
982
|
console.log('Initiating API calls');
|
|
@@ -924,6 +1000,7 @@ var readDocumentCall = function readDocumentCall(url, appId, referenceId, userId
|
|
|
924
1000
|
return Promise.reject(e);
|
|
925
1001
|
}
|
|
926
1002
|
};
|
|
1003
|
+
|
|
927
1004
|
var aspectRatios = {
|
|
928
1005
|
addhar: 0.625,
|
|
929
1006
|
pan: 0.625,
|
|
@@ -935,25 +1012,31 @@ var aspectRatios = {
|
|
|
935
1012
|
};
|
|
936
1013
|
var FACING_MODE_USER = 'user';
|
|
937
1014
|
var FACING_MODE_ENVIRONMENT = 'environment';
|
|
1015
|
+
|
|
938
1016
|
(function polyfillGetUserMedia() {
|
|
939
1017
|
if (typeof window === 'undefined') {
|
|
940
1018
|
return;
|
|
941
1019
|
}
|
|
1020
|
+
|
|
942
1021
|
if (navigator.mediaDevices === undefined) {
|
|
943
1022
|
navigator.mediaDevices = {};
|
|
944
1023
|
}
|
|
1024
|
+
|
|
945
1025
|
if (navigator.mediaDevices.getUserMedia === undefined) {
|
|
946
1026
|
navigator.mediaDevices.getUserMedia = function (constraints) {
|
|
947
1027
|
var getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia || navigator.mediaDevices.getUserMedia || navigator.mediaDevices.webkitGetUserMedia || navigator.mediaDevices.mozGetUserMedia || navigator.mediaDevices.msGetUserMedia;
|
|
1028
|
+
|
|
948
1029
|
if (!getUserMedia) {
|
|
949
1030
|
return Promise.reject(new Error('getUserMedia is not implemented in this browser'));
|
|
950
1031
|
}
|
|
1032
|
+
|
|
951
1033
|
return new Promise(function (resolve, reject) {
|
|
952
1034
|
getUserMedia.call(navigator, constraints, resolve, reject);
|
|
953
1035
|
});
|
|
954
1036
|
};
|
|
955
1037
|
}
|
|
956
1038
|
})();
|
|
1039
|
+
|
|
957
1040
|
function ReadDocument(_ref) {
|
|
958
1041
|
var resizeImage = function resizeImage(base64, height, width) {
|
|
959
1042
|
try {
|
|
@@ -964,6 +1047,7 @@ function ReadDocument(_ref) {
|
|
|
964
1047
|
var copyContext = canvasCopy.getContext('2d');
|
|
965
1048
|
var img = new Image();
|
|
966
1049
|
img.src = base64;
|
|
1050
|
+
|
|
967
1051
|
img.onload = function () {
|
|
968
1052
|
canvasCopy.width = img.width;
|
|
969
1053
|
canvasCopy.height = img.height;
|
|
@@ -978,16 +1062,18 @@ function ReadDocument(_ref) {
|
|
|
978
1062
|
return Promise.reject(e);
|
|
979
1063
|
}
|
|
980
1064
|
};
|
|
1065
|
+
|
|
981
1066
|
var captureSnapshot = function captureSnapshot() {
|
|
982
1067
|
try {
|
|
983
1068
|
var videoElement = webcamRef.current;
|
|
984
1069
|
return Promise.resolve(function () {
|
|
985
1070
|
if (videoElement != null) {
|
|
986
|
-
var
|
|
1071
|
+
var _temp7 = function _temp7() {
|
|
987
1072
|
console.log('Returing captured image: ' + _imageStr);
|
|
988
1073
|
stopCamera();
|
|
989
1074
|
return _imageStr;
|
|
990
1075
|
};
|
|
1076
|
+
|
|
991
1077
|
console.log('Initiating capture');
|
|
992
1078
|
window.removeEventListener('deviceorientation', handleOrientation, true);
|
|
993
1079
|
var videoHeight = videoElement.offsetWidth * aspectRatios[docType];
|
|
@@ -1002,11 +1088,14 @@ function ReadDocument(_ref) {
|
|
|
1002
1088
|
var ratio = sourceWidth / destWidth;
|
|
1003
1089
|
ctx.canvas.width = destWidth;
|
|
1004
1090
|
ctx.canvas.height = destHeight;
|
|
1091
|
+
|
|
1005
1092
|
if (facingMode === FACING_MODE_USER) {
|
|
1006
1093
|
ctx.translate(ctx.canvas.width, 0);
|
|
1007
1094
|
ctx.scale(-1, 1);
|
|
1008
1095
|
}
|
|
1096
|
+
|
|
1009
1097
|
console.log('Capturing the document with aspect ratio');
|
|
1098
|
+
|
|
1010
1099
|
if (docType === 'pwd' || docType === 'others') {
|
|
1011
1100
|
destWidth = destWidth * 0.5;
|
|
1012
1101
|
destHeight = destWidth * aspectRatios[docType];
|
|
@@ -1016,9 +1105,12 @@ function ReadDocument(_ref) {
|
|
|
1016
1105
|
} else {
|
|
1017
1106
|
ctx.drawImage(videoElement, sourceWidth / 2 - destWidth / 2 * ratio, sourceHeight / 2 - destHeight / 2 * ratio, destWidth * ratio, destHeight * ratio, 0, 0, destWidth, destHeight);
|
|
1018
1107
|
}
|
|
1108
|
+
|
|
1019
1109
|
var imageData = hiddenCanvas.toDataURL('image/png');
|
|
1110
|
+
|
|
1020
1111
|
var _imageStr;
|
|
1021
|
-
|
|
1112
|
+
|
|
1113
|
+
var _temp8 = function () {
|
|
1022
1114
|
if (docType === 'pwd' || docType === 'others') {
|
|
1023
1115
|
return Promise.resolve(resizeImage(imageData, destHeight, destWidth)).then(function (_resizeImage) {
|
|
1024
1116
|
_imageStr = _resizeImage;
|
|
@@ -1027,44 +1119,57 @@ function ReadDocument(_ref) {
|
|
|
1027
1119
|
_imageStr = imageData;
|
|
1028
1120
|
}
|
|
1029
1121
|
}();
|
|
1030
|
-
|
|
1122
|
+
|
|
1123
|
+
return _temp8 && _temp8.then ? _temp8.then(_temp7) : _temp7(_temp8);
|
|
1031
1124
|
}
|
|
1032
1125
|
}());
|
|
1033
1126
|
} catch (e) {
|
|
1034
1127
|
return Promise.reject(e);
|
|
1035
1128
|
}
|
|
1036
1129
|
};
|
|
1130
|
+
|
|
1037
1131
|
var url = _ref.url,
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1132
|
+
appId = _ref.appId,
|
|
1133
|
+
referenceId = _ref.referenceId,
|
|
1134
|
+
userId = _ref.userId,
|
|
1135
|
+
decision = _ref.decision,
|
|
1136
|
+
isBack = _ref.isBack,
|
|
1137
|
+
expiryIn = _ref.expiryIn,
|
|
1138
|
+
docType = _ref.docType,
|
|
1139
|
+
documentType = _ref.documentType,
|
|
1140
|
+
getReadDocumentImage = _ref.getReadDocumentImage;
|
|
1047
1141
|
var webcamRef = React.useRef();
|
|
1142
|
+
|
|
1048
1143
|
var _React$useState = React__default.useState(FACING_MODE_ENVIRONMENT),
|
|
1049
|
-
|
|
1050
|
-
|
|
1144
|
+
facingMode = _React$useState[0],
|
|
1145
|
+
setFacingMode = _React$useState[1];
|
|
1146
|
+
|
|
1051
1147
|
var _React$useState2 = React__default.useState(false),
|
|
1052
|
-
|
|
1053
|
-
|
|
1148
|
+
loading = _React$useState2[0],
|
|
1149
|
+
setLoading = _React$useState2[1];
|
|
1150
|
+
|
|
1054
1151
|
var _React$useState3 = React__default.useState(true),
|
|
1055
|
-
|
|
1056
|
-
|
|
1152
|
+
enableCapture = _React$useState3[0],
|
|
1153
|
+
setEnableCapture = _React$useState3[1];
|
|
1154
|
+
|
|
1057
1155
|
var _React$useState4 = React__default.useState(false),
|
|
1058
|
-
|
|
1059
|
-
|
|
1156
|
+
cameraAvailable = _React$useState4[0],
|
|
1157
|
+
setCameraAvailable = _React$useState4[1];
|
|
1158
|
+
|
|
1060
1159
|
var _React$useState5 = React__default.useState(true),
|
|
1061
|
-
|
|
1062
|
-
|
|
1160
|
+
isOriented = _React$useState5[0],
|
|
1161
|
+
setIsOriented = _React$useState5[1];
|
|
1162
|
+
|
|
1063
1163
|
var videoConstraints = {
|
|
1064
1164
|
audio: false,
|
|
1065
1165
|
video: {
|
|
1066
1166
|
facingMode: facingMode
|
|
1067
|
-
}
|
|
1167
|
+
},
|
|
1168
|
+
advanced: [{
|
|
1169
|
+
width: {
|
|
1170
|
+
exact: 1920
|
|
1171
|
+
}
|
|
1172
|
+
}]
|
|
1068
1173
|
};
|
|
1069
1174
|
var videoStream = null;
|
|
1070
1175
|
var camFacingMode = FACING_MODE_ENVIRONMENT;
|
|
@@ -1072,21 +1177,26 @@ function ReadDocument(_ref) {
|
|
|
1072
1177
|
var handleClick = React__default.useCallback(function () {
|
|
1073
1178
|
try {
|
|
1074
1179
|
var videoElement = webcamRef.current;
|
|
1180
|
+
|
|
1075
1181
|
if (camFacingMode === FACING_MODE_ENVIRONMENT) {
|
|
1076
1182
|
camFacingMode = FACING_MODE_USER;
|
|
1077
1183
|
} else {
|
|
1078
1184
|
camFacingMode = FACING_MODE_ENVIRONMENT;
|
|
1079
1185
|
}
|
|
1186
|
+
|
|
1080
1187
|
setFacingMode(camFacingMode);
|
|
1081
1188
|
console.log(facingMode);
|
|
1082
1189
|
var videoTracks = videoStream.getVideoTracks();
|
|
1190
|
+
|
|
1083
1191
|
if (videoTracks.length === 0) {
|
|
1084
1192
|
return Promise.resolve();
|
|
1085
1193
|
}
|
|
1194
|
+
|
|
1086
1195
|
videoTracks.forEach(function (track) {
|
|
1087
1196
|
track.stop();
|
|
1088
1197
|
});
|
|
1089
|
-
|
|
1198
|
+
|
|
1199
|
+
var _temp2 = _catch(function () {
|
|
1090
1200
|
return Promise.resolve(navigator.mediaDevices.getUserMedia(videoConstraints)).then(function (_navigator$mediaDevic) {
|
|
1091
1201
|
videoStream = _navigator$mediaDevic;
|
|
1092
1202
|
videoElement.srcObject = videoStream;
|
|
@@ -1095,14 +1205,15 @@ function ReadDocument(_ref) {
|
|
|
1095
1205
|
console.log(err);
|
|
1096
1206
|
alert(err.toString());
|
|
1097
1207
|
});
|
|
1098
|
-
|
|
1208
|
+
|
|
1209
|
+
return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
|
|
1099
1210
|
} catch (e) {
|
|
1100
1211
|
return Promise.reject(e);
|
|
1101
1212
|
}
|
|
1102
1213
|
}, []);
|
|
1103
1214
|
var capture = React.useCallback(function () {
|
|
1104
1215
|
try {
|
|
1105
|
-
var
|
|
1216
|
+
var _temp4 = function _temp4(imgStr) {
|
|
1106
1217
|
console.log('Image capture succeeded');
|
|
1107
1218
|
var img = imgStr.split(',')[1];
|
|
1108
1219
|
var mimeString = imgStr.split(',')[0].split(':')[1].split(';')[0];
|
|
@@ -1116,18 +1227,21 @@ function ReadDocument(_ref) {
|
|
|
1116
1227
|
});
|
|
1117
1228
|
});
|
|
1118
1229
|
};
|
|
1230
|
+
|
|
1119
1231
|
console.log('Capture clicked');
|
|
1120
1232
|
setLoading(true);
|
|
1121
|
-
return Promise.resolve(reactDeviceDetect.isMobile ? Promise.resolve(captureSnapshot()).then(
|
|
1233
|
+
return Promise.resolve(reactDeviceDetect.isMobile ? Promise.resolve(captureSnapshot()).then(_temp4) : _temp4(webcamRef.current.getScreenshot()));
|
|
1122
1234
|
} catch (e) {
|
|
1123
1235
|
return Promise.reject(e);
|
|
1124
1236
|
}
|
|
1125
1237
|
}, [webcamRef]);
|
|
1126
1238
|
React.useEffect(function () {
|
|
1127
1239
|
console.log('Vishwam SDK initialized');
|
|
1240
|
+
|
|
1128
1241
|
if (typeof DeviceMotionEvent.requestPermission === 'function') {
|
|
1129
1242
|
DeviceOrientationEvent.requestPermission().then(function (response) {
|
|
1130
1243
|
console.log(response);
|
|
1244
|
+
|
|
1131
1245
|
if (response === 'granted') {
|
|
1132
1246
|
window.addEventListener('deviceorientation', handleOrientation, true);
|
|
1133
1247
|
setIsOriented(true);
|
|
@@ -1140,6 +1254,7 @@ function ReadDocument(_ref) {
|
|
|
1140
1254
|
} else {
|
|
1141
1255
|
setIsOriented(true);
|
|
1142
1256
|
initUIandCamera();
|
|
1257
|
+
|
|
1143
1258
|
if (typeof DeviceOrientationEvent !== 'undefined') {
|
|
1144
1259
|
window.addEventListener('deviceorientation', handleOrientation, true);
|
|
1145
1260
|
} else {
|
|
@@ -1147,10 +1262,12 @@ function ReadDocument(_ref) {
|
|
|
1147
1262
|
}
|
|
1148
1263
|
}
|
|
1149
1264
|
}, [webcamRef]);
|
|
1265
|
+
|
|
1150
1266
|
function startCamera() {
|
|
1151
1267
|
if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) {
|
|
1152
1268
|
console.log('enumerateDevices() not supported.');
|
|
1153
1269
|
}
|
|
1270
|
+
|
|
1154
1271
|
navigator.mediaDevices.enumerateDevices().then(function (devices) {
|
|
1155
1272
|
devices.forEach(function (device) {
|
|
1156
1273
|
console.log(device.kind + ': ' + device.label + ' id = ' + device.deviceId);
|
|
@@ -1177,6 +1294,7 @@ function ReadDocument(_ref) {
|
|
|
1177
1294
|
var errString = err.toString();
|
|
1178
1295
|
setCameraAvailable(false);
|
|
1179
1296
|
isCameraOpened = false;
|
|
1297
|
+
|
|
1180
1298
|
if (errString.includes('NotReadableError')) {
|
|
1181
1299
|
setTimeout(function () {
|
|
1182
1300
|
startCamera();
|
|
@@ -1194,6 +1312,7 @@ function ReadDocument(_ref) {
|
|
|
1194
1312
|
}
|
|
1195
1313
|
});
|
|
1196
1314
|
}
|
|
1315
|
+
|
|
1197
1316
|
function initUIandCamera() {
|
|
1198
1317
|
setTimeout(function () {
|
|
1199
1318
|
if (reactDeviceDetect.isMobile) {
|
|
@@ -1204,12 +1323,15 @@ function ReadDocument(_ref) {
|
|
|
1204
1323
|
}
|
|
1205
1324
|
}, 500);
|
|
1206
1325
|
}
|
|
1326
|
+
|
|
1207
1327
|
function detectPhoneTilt() {
|
|
1208
1328
|
console.log('type of DeviceOrientationEvent', typeof DeviceOrientationEvent);
|
|
1329
|
+
|
|
1209
1330
|
if (typeof DeviceMotionEvent.requestPermission === 'function') {
|
|
1210
1331
|
console.log('Requesting device orientation');
|
|
1211
1332
|
DeviceOrientationEvent.requestPermission().then(function (response) {
|
|
1212
1333
|
console.log('Device orientation request response', response);
|
|
1334
|
+
|
|
1213
1335
|
if (response === 'granted') {
|
|
1214
1336
|
window.addEventListener('deviceorientation', handleOrientation, true);
|
|
1215
1337
|
setIsOriented(true);
|
|
@@ -1229,6 +1351,7 @@ function ReadDocument(_ref) {
|
|
|
1229
1351
|
} else {
|
|
1230
1352
|
setIsOriented(true);
|
|
1231
1353
|
initUIandCamera();
|
|
1354
|
+
|
|
1232
1355
|
if (typeof DeviceOrientationEvent !== 'undefined') {
|
|
1233
1356
|
window.addEventListener('deviceorientation', handleOrientation, true);
|
|
1234
1357
|
} else {
|
|
@@ -1236,11 +1359,13 @@ function ReadDocument(_ref) {
|
|
|
1236
1359
|
}
|
|
1237
1360
|
}
|
|
1238
1361
|
}
|
|
1362
|
+
|
|
1239
1363
|
function handleOrientation(event) {
|
|
1240
1364
|
var beta = event.beta;
|
|
1241
1365
|
var gamma = event.gamma;
|
|
1242
1366
|
var pitch = 10;
|
|
1243
1367
|
var roll = 10;
|
|
1368
|
+
|
|
1244
1369
|
if (camFacingMode === FACING_MODE_ENVIRONMENT) {
|
|
1245
1370
|
if (beta > 0 - pitch && beta < pitch && gamma > 0 - roll && gamma < roll) {
|
|
1246
1371
|
enableDocCapture();
|
|
@@ -1251,31 +1376,39 @@ function ReadDocument(_ref) {
|
|
|
1251
1376
|
enableDocCapture();
|
|
1252
1377
|
}
|
|
1253
1378
|
}
|
|
1379
|
+
|
|
1254
1380
|
function handleOrientationIos(event) {
|
|
1255
1381
|
console.log('Orientation Ios', event);
|
|
1256
1382
|
}
|
|
1383
|
+
|
|
1257
1384
|
function enableDocCapture() {
|
|
1258
1385
|
console.log('is camera available - ', isCameraOpened);
|
|
1386
|
+
|
|
1259
1387
|
if (isCameraOpened) {
|
|
1260
1388
|
setEnableCapture(true);
|
|
1261
1389
|
} else {
|
|
1262
1390
|
setEnableCapture(false);
|
|
1263
1391
|
}
|
|
1264
1392
|
}
|
|
1393
|
+
|
|
1265
1394
|
function disableDocCapture() {
|
|
1266
1395
|
setEnableCapture(false);
|
|
1267
1396
|
}
|
|
1397
|
+
|
|
1268
1398
|
function stopCamera() {
|
|
1269
1399
|
var videoElement = webcamRef.current;
|
|
1400
|
+
|
|
1270
1401
|
if (videoElement) {
|
|
1271
1402
|
videoElement.pause();
|
|
1272
1403
|
}
|
|
1404
|
+
|
|
1273
1405
|
if (videoStream) {
|
|
1274
1406
|
videoStream.getTracks().forEach(function (track) {
|
|
1275
1407
|
track.stop();
|
|
1276
1408
|
});
|
|
1277
1409
|
}
|
|
1278
1410
|
}
|
|
1411
|
+
|
|
1279
1412
|
return /*#__PURE__*/React__default.createElement(React.Fragment, null, loading ? /*#__PURE__*/React__default.createElement(LoadingContainer$1, null, /*#__PURE__*/React__default.createElement(SvgLoading, {
|
|
1280
1413
|
style: {
|
|
1281
1414
|
width: '50%',
|
|
@@ -1419,44 +1552,57 @@ function ReadDocument(_ref) {
|
|
|
1419
1552
|
onClick: detectPhoneTilt
|
|
1420
1553
|
}, "Allow device motion"))))));
|
|
1421
1554
|
}
|
|
1555
|
+
|
|
1422
1556
|
var Container$1 = styled.div(_templateObject$1 || (_templateObject$1 = _taggedTemplateLiteralLoose(["\n display: grid;\n place-items: center;\n"])));
|
|
1423
1557
|
var MobileContainer$1 = styled.div(_templateObject2$1 || (_templateObject2$1 = _taggedTemplateLiteralLoose(["\n display: grid;\n place-items: center;\n"])));
|
|
1424
1558
|
var Text$1 = styled.h6(_templateObject3$1 || (_templateObject3$1 = _taggedTemplateLiteralLoose(["\n line-height: 1.5em;\n height: 5em;\n overflow: hidden;\n text-align: center;\n"])));
|
|
1425
1559
|
var Flex = styled.div(_templateObject4$1 || (_templateObject4$1 = _taggedTemplateLiteralLoose(["\n display: flex;\n width: 20%;\n"])));
|
|
1426
1560
|
var Button$1 = styled.button(_templateObject5$1 || (_templateObject5$1 = _taggedTemplateLiteralLoose(["\n padding: 5px;\n margin: 5px;\n background-color: inherit;\n border: none;\n cursor: pointer;\n"])));
|
|
1427
1561
|
var LoadingContainer$1 = styled.div(_templateObject6 || (_templateObject6 = _taggedTemplateLiteralLoose(["\n display: grid;\n place-items: center;\n height: 100vh;\n"])));
|
|
1562
|
+
|
|
1428
1563
|
function dataURItoBlob$1(dataURI, imageType) {
|
|
1429
1564
|
var byteString = atob(dataURI);
|
|
1430
1565
|
var ab = new ArrayBuffer(byteString.length);
|
|
1431
1566
|
var ia = new Uint8Array(ab);
|
|
1567
|
+
|
|
1432
1568
|
for (var i = 0; i < byteString.length; i++) {
|
|
1433
1569
|
ia[i] = byteString.charCodeAt(i);
|
|
1434
1570
|
}
|
|
1571
|
+
|
|
1435
1572
|
var bb = new Blob([ab], {
|
|
1436
1573
|
type: imageType
|
|
1437
1574
|
});
|
|
1438
1575
|
return bb;
|
|
1439
1576
|
}
|
|
1577
|
+
|
|
1440
1578
|
function getDocType(docType) {
|
|
1441
1579
|
switch (docType) {
|
|
1442
1580
|
case 'addhar':
|
|
1443
1581
|
return '1';
|
|
1582
|
+
|
|
1444
1583
|
case 'pan':
|
|
1445
1584
|
return '2';
|
|
1585
|
+
|
|
1446
1586
|
case 'voter':
|
|
1447
1587
|
return '4';
|
|
1588
|
+
|
|
1448
1589
|
case 'passport':
|
|
1449
1590
|
return '3';
|
|
1591
|
+
|
|
1450
1592
|
case 'pwd':
|
|
1451
1593
|
return 'pwd';
|
|
1594
|
+
|
|
1452
1595
|
case 'dl':
|
|
1453
1596
|
return '5';
|
|
1597
|
+
|
|
1454
1598
|
case 'others':
|
|
1455
1599
|
return 'others';
|
|
1600
|
+
|
|
1456
1601
|
default:
|
|
1457
1602
|
return '1';
|
|
1458
1603
|
}
|
|
1459
1604
|
}
|
|
1605
|
+
|
|
1460
1606
|
function getJourney(docType) {
|
|
1461
1607
|
return 'na';
|
|
1462
1608
|
}
|
|
@@ -1467,6 +1613,7 @@ function prepareFaceDetector() {
|
|
|
1467
1613
|
console.log('loaded models');
|
|
1468
1614
|
var baseImage = new Image();
|
|
1469
1615
|
baseImage.src = "data:image/png;base64,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";
|
|
1616
|
+
|
|
1470
1617
|
baseImage.onload = function () {
|
|
1471
1618
|
try {
|
|
1472
1619
|
console.log('loaded base image');
|
|
@@ -1503,13 +1650,16 @@ var faceMatch = function faceMatch(url, referenceId, userId, appId, matchType, i
|
|
|
1503
1650
|
return Promise.reject(e);
|
|
1504
1651
|
}
|
|
1505
1652
|
};
|
|
1653
|
+
|
|
1506
1654
|
function dataURItoBlob$2(dataURI, imageType) {
|
|
1507
1655
|
var byteString = atob(dataURI);
|
|
1508
1656
|
var ab = new ArrayBuffer(byteString.length);
|
|
1509
1657
|
var ia = new Uint8Array(ab);
|
|
1658
|
+
|
|
1510
1659
|
for (var i = 0; i < byteString.length; i++) {
|
|
1511
1660
|
ia[i] = byteString.charCodeAt(i);
|
|
1512
1661
|
}
|
|
1662
|
+
|
|
1513
1663
|
var bb = new Blob([ab], {
|
|
1514
1664
|
type: imageType
|
|
1515
1665
|
});
|