ngx-scandoc 1.2.1 → 1.2.3
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/core/components/scan/scan.component.d.ts +2 -0
- package/core/helpers/object-utils.d.ts +16 -0
- package/core/interfaces/config.d.ts +2 -0
- package/esm2020/core/components/camera-switch/camera-switch.component.mjs +4 -3
- package/esm2020/core/components/scan/scan.component.mjs +8 -6
- package/esm2020/core/components/scan-results/scan-results.component.mjs +4 -3
- package/esm2020/core/components/webcam/webcam/webcam.component.mjs +4 -2
- package/esm2020/core/helpers/object-utils.mjs +100 -0
- package/esm2020/core/interfaces/config.mjs +1 -1
- package/esm2020/dialogs/components/scan-profile/scan-profile.component.mjs +4 -3
- package/esm2020/dialogs/components/turn-document/turn-document.component.mjs +4 -3
- package/esm2020/providers/auth.provider.mjs +68 -17
- package/esm2020/providers/interceptor.provider.mjs +11 -5
- package/esm2020/providers/scan.form.mjs +32 -32
- package/esm2020/providers/translate-loader.provider.mjs +126 -0
- package/esm2020/providers/translation.provider.mjs +83 -8
- package/esm2020/public-api.mjs +3 -2
- package/fesm2015/ngx-scandoc.mjs +439 -84
- package/fesm2015/ngx-scandoc.mjs.map +1 -1
- package/fesm2020/ngx-scandoc.mjs +437 -84
- package/fesm2020/ngx-scandoc.mjs.map +1 -1
- package/package.json +1 -1
- package/providers/auth.provider.d.ts +9 -4
- package/providers/scan.form.d.ts +2 -2
- package/providers/translate-loader.provider.d.ts +28 -0
- package/providers/translation.provider.d.ts +21 -4
- package/public-api.d.ts +2 -1
- package/src/assets/i18n/de.json +110 -0
- package/src/assets/i18n/en.json +105 -0
- package/src/assets/i18n/hr.json +115 -0
- package/src/assets/i18n/it.json +115 -0
package/fesm2020/ngx-scandoc.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, EventEmitter, Component, Input, Output, ViewChild, HostListener, NgModule, Inject, ChangeDetectionStrategy, HostBinding, Pipe, ViewContainerRef } from '@angular/core';
|
|
3
|
-
import * as
|
|
2
|
+
import { Injectable, EventEmitter, Component, Input, Output, ViewChild, HostListener, NgModule, Inject, InjectionToken, Optional, ChangeDetectionStrategy, HostBinding, Pipe, ViewContainerRef } from '@angular/core';
|
|
3
|
+
import * as i2$1 from '@angular/common';
|
|
4
4
|
import { CommonModule } from '@angular/common';
|
|
5
|
-
import { Observable, from, Subject, of, tap as tap$1, distinctUntilChanged, throwError } from 'rxjs';
|
|
6
|
-
import { tap, switchMap, takeUntil, map, share,
|
|
5
|
+
import { Observable, from, Subject, of, tap as tap$1, distinctUntilChanged, throwError, forkJoin } from 'rxjs';
|
|
6
|
+
import { tap, switchMap, takeUntil, map, catchError, share, retry } from 'rxjs/operators';
|
|
7
7
|
import * as i1 from '@angular/cdk/layout';
|
|
8
8
|
import { Breakpoints } from '@angular/cdk/layout';
|
|
9
9
|
import * as i2 from '@angular/cdk/platform';
|
|
@@ -23,7 +23,7 @@ import * as i6 from '@angular/material/button';
|
|
|
23
23
|
import { MatButtonModule } from '@angular/material/button';
|
|
24
24
|
import * as i9 from '@angular/material/progress-bar';
|
|
25
25
|
import { MatProgressBarModule } from '@angular/material/progress-bar';
|
|
26
|
-
import * as i5
|
|
26
|
+
import * as i5 from '@angular/material/card';
|
|
27
27
|
import { MatCardModule } from '@angular/material/card';
|
|
28
28
|
import * as i7 from '@ngx-formly/core';
|
|
29
29
|
import { FormlyModule } from '@ngx-formly/core';
|
|
@@ -41,7 +41,7 @@ import { MatListModule } from '@angular/material/list';
|
|
|
41
41
|
import { MatMenuModule } from '@angular/material/menu';
|
|
42
42
|
import { MatPaginatorModule } from '@angular/material/paginator';
|
|
43
43
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
44
|
-
import * as i5$
|
|
44
|
+
import * as i5$1 from '@angular/material/select';
|
|
45
45
|
import { MatSelectModule } from '@angular/material/select';
|
|
46
46
|
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
47
47
|
import { MatSliderModule } from '@angular/material/slider';
|
|
@@ -522,7 +522,7 @@ class WebcamComponent extends BaseComponent {
|
|
|
522
522
|
});
|
|
523
523
|
}
|
|
524
524
|
onResize() {
|
|
525
|
-
this.videoReady.next(false);
|
|
525
|
+
// this.videoReady.next(false);
|
|
526
526
|
this.resizeStage();
|
|
527
527
|
}
|
|
528
528
|
/**
|
|
@@ -674,6 +674,7 @@ class WebcamComponent extends BaseComponent {
|
|
|
674
674
|
this.worker = new Worker(url);
|
|
675
675
|
this.worker.onmessage = ({ data }) => {
|
|
676
676
|
if (data.base64) {
|
|
677
|
+
console.log(data);
|
|
677
678
|
data.type == 'data';
|
|
678
679
|
this.imageHandler.next(data);
|
|
679
680
|
}
|
|
@@ -1045,6 +1046,7 @@ class WebcamComponent extends BaseComponent {
|
|
|
1045
1046
|
* Init webcam live view
|
|
1046
1047
|
*/
|
|
1047
1048
|
initWebcam(deviceId, userVideoTrackConstraints) {
|
|
1049
|
+
console.log('INIT WEBCAM');
|
|
1048
1050
|
const _video = this.nativeVideoElement;
|
|
1049
1051
|
// const videoStreamer = this.videoStreamer.nativeElement;
|
|
1050
1052
|
// const videoSmall = document.createElement('video');
|
|
@@ -1244,7 +1246,7 @@ WebcamComponent.DEFAULT_VIDEO_OPTIONS = {
|
|
|
1244
1246
|
WebcamComponent.DEFAULT_IMAGE_TYPE = 'image/jpeg';
|
|
1245
1247
|
WebcamComponent.DEFAULT_IMAGE_QUALITY = 1;
|
|
1246
1248
|
WebcamComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WebcamComponent, deps: [{ token: i1.BreakpointObserver }, { token: i2.Platform }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: NgxScandocCameraProvider }], target: i0.ɵɵFactoryTarget.Component });
|
|
1247
|
-
WebcamComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: WebcamComponent, selector: "ngx-scandoc-webcam", inputs: { imageHandler: "imageHandler", id: "id", type: "type", width: "width", height: "height", videoOptions: "videoOptions", allowCameraSwitch: "allowCameraSwitch", mirrorImage: "mirrorImage", captureImageData: "captureImageData", imageType: "imageType", imageQuality: "imageQuality", trigger: "trigger", switchCamera: "switchCamera" }, outputs: { imageCapture: "imageCapture", initError: "initError", imageClick: "imageClick", cameraSwitched: "cameraSwitched", videoReady: "videoReady", destroyed: "destroyed" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "video", first: true, predicate: ["video"], descendants: true, static: true }, { propertyName: "videoStreamer", first: true, predicate: ["videoStreamer"], descendants: true, static: true }, { propertyName: "canvas", first: true, predicate: ["canvas"], descendants: true, static: true }, { propertyName: "canvasSnapshot", first: true, predicate: ["canvasSnapshot"], descendants: true, static: true }, { propertyName: "canvasResize", first: true, predicate: ["canvasResize"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"webcam-wrapper\">\n <div>\n <video\n #video\n autoplay\n muted\n style=\"display: block\"\n playsinline\n\n ></video>\n\n <div class=\"rectangle\">\n\n <canvas\n #canvas\n [ngStyle]=\"{ visibility: showVideo ? 'visible' : 'hidden' }\"\n [width]=\"canvasSize.width\"\n [height]=\"canvasSize.height\"\n ></canvas>\n </div>\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex:1;transform:transale3d(0,0,0);background-color:#000}.webcam-wrapper{display:flex;flex-direction:row;align-items:center;flex:1;justify-content:center;position:relative}.webcam-wrapper canvas{transform:transale3d(0,0,0);display:block;position:relative;z-index:20;left:0;top:0}.webcam-wrapper .rectangle{position:absolute;left:0;top:0;display:flex;flex-direction:row;align-items:center;justify-content:center;width:100%;height:100%}\n"], dependencies: [{ kind: "directive", type:
|
|
1249
|
+
WebcamComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: WebcamComponent, selector: "ngx-scandoc-webcam", inputs: { imageHandler: "imageHandler", id: "id", type: "type", width: "width", height: "height", videoOptions: "videoOptions", allowCameraSwitch: "allowCameraSwitch", mirrorImage: "mirrorImage", captureImageData: "captureImageData", imageType: "imageType", imageQuality: "imageQuality", trigger: "trigger", switchCamera: "switchCamera" }, outputs: { imageCapture: "imageCapture", initError: "initError", imageClick: "imageClick", cameraSwitched: "cameraSwitched", videoReady: "videoReady", destroyed: "destroyed" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "video", first: true, predicate: ["video"], descendants: true, static: true }, { propertyName: "videoStreamer", first: true, predicate: ["videoStreamer"], descendants: true, static: true }, { propertyName: "canvas", first: true, predicate: ["canvas"], descendants: true, static: true }, { propertyName: "canvasSnapshot", first: true, predicate: ["canvasSnapshot"], descendants: true, static: true }, { propertyName: "canvasResize", first: true, predicate: ["canvasResize"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"webcam-wrapper\">\n <div>\n <video\n #video\n autoplay\n muted\n style=\"display: block\"\n playsinline\n\n ></video>\n\n <div class=\"rectangle\">\n\n <canvas\n #canvas\n [ngStyle]=\"{ visibility: showVideo ? 'visible' : 'hidden' }\"\n [width]=\"canvasSize.width\"\n [height]=\"canvasSize.height\"\n ></canvas>\n </div>\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex:1;transform:transale3d(0,0,0);background-color:#000}.webcam-wrapper{display:flex;flex-direction:row;align-items:center;flex:1;justify-content:center;position:relative}.webcam-wrapper canvas{transform:transale3d(0,0,0);display:block;position:relative;z-index:20;left:0;top:0}.webcam-wrapper .rectangle{position:absolute;left:0;top:0;display:flex;flex-direction:row;align-items:center;justify-content:center;width:100%;height:100%}\n"], dependencies: [{ kind: "directive", type: i2$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
|
1248
1250
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WebcamComponent, decorators: [{
|
|
1249
1251
|
type: Component,
|
|
1250
1252
|
args: [{ selector: 'ngx-scandoc-webcam', template: "<div class=\"webcam-wrapper\">\n <div>\n <video\n #video\n autoplay\n muted\n style=\"display: block\"\n playsinline\n\n ></video>\n\n <div class=\"rectangle\">\n\n <canvas\n #canvas\n [ngStyle]=\"{ visibility: showVideo ? 'visible' : 'hidden' }\"\n [width]=\"canvasSize.width\"\n [height]=\"canvasSize.height\"\n ></canvas>\n </div>\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:row;flex:1;transform:transale3d(0,0,0);background-color:#000}.webcam-wrapper{display:flex;flex-direction:row;align-items:center;flex:1;justify-content:center;position:relative}.webcam-wrapper canvas{transform:transale3d(0,0,0);display:block;position:relative;z-index:20;left:0;top:0}.webcam-wrapper .rectangle{position:absolute;left:0;top:0;display:flex;flex-direction:row;align-items:center;justify-content:center;width:100%;height:100%}\n"] }]
|
|
@@ -1833,38 +1835,88 @@ class AuthProvider {
|
|
|
1833
1835
|
this.http = http;
|
|
1834
1836
|
this.config = config;
|
|
1835
1837
|
this.token = '';
|
|
1838
|
+
this.refresh_token = '';
|
|
1836
1839
|
this.tokenTimestamps = {
|
|
1837
|
-
|
|
1838
|
-
|
|
1840
|
+
Time: 0,
|
|
1841
|
+
Client: 0,
|
|
1842
|
+
SubClient: 0,
|
|
1839
1843
|
};
|
|
1840
1844
|
}
|
|
1845
|
+
setSubClient(name) {
|
|
1846
|
+
this.subClient = name;
|
|
1847
|
+
}
|
|
1841
1848
|
setConfig() { }
|
|
1842
1849
|
get tokenExpired() {
|
|
1843
|
-
|
|
1850
|
+
console.log(this.tokenTimestamps, this.token);
|
|
1851
|
+
if (this.token == '' || this.tokenTimestamps.Time === 0) {
|
|
1844
1852
|
console.log('EXPIRED');
|
|
1845
1853
|
return true;
|
|
1846
1854
|
}
|
|
1847
|
-
const {
|
|
1848
|
-
|
|
1855
|
+
const { Time } = this.tokenTimestamps;
|
|
1856
|
+
const tokenDate = moment(Time);
|
|
1857
|
+
const isValid = moment(tokenDate).isBefore(moment().add(5, 'minutes'));
|
|
1858
|
+
console.log('VALID', isValid);
|
|
1859
|
+
return !isValid;
|
|
1849
1860
|
}
|
|
1850
1861
|
resetToken() {
|
|
1851
|
-
this.token = '';
|
|
1862
|
+
// this.token = '';
|
|
1852
1863
|
}
|
|
1853
1864
|
get accesToken() {
|
|
1854
|
-
|
|
1865
|
+
console.log('AT');
|
|
1866
|
+
return this.tokenExpired ? this.fetchToken() : of(this.token);
|
|
1867
|
+
}
|
|
1868
|
+
fetchToken() {
|
|
1869
|
+
if (this.token && this.refresh_token) {
|
|
1870
|
+
return this.refreshToken();
|
|
1871
|
+
}
|
|
1872
|
+
return this.getToken();
|
|
1873
|
+
}
|
|
1874
|
+
refreshToken() {
|
|
1875
|
+
const { path, refresh } = this.config;
|
|
1876
|
+
return this.http
|
|
1877
|
+
.post(`${path}${refresh}`, {
|
|
1878
|
+
refresh_token: this.refresh_token,
|
|
1879
|
+
})
|
|
1880
|
+
.pipe(tap((token) => {
|
|
1881
|
+
// console.log(this.token);
|
|
1882
|
+
this.token = token.access_token;
|
|
1883
|
+
this.updateToken();
|
|
1884
|
+
// this.token = token.access_token;
|
|
1885
|
+
// console.log('TOKEN', this.token);
|
|
1886
|
+
// this.refresh_token = token.refresh_token;
|
|
1887
|
+
// const decoded: any = jwt_decode(this.token);
|
|
1888
|
+
// console.log(decoded);
|
|
1889
|
+
// const { Time, Client, SubClient } = decoded;
|
|
1890
|
+
// this.tokenTimestamps = { Time, Client, SubClient };
|
|
1891
|
+
}), map((data) => data.access_token));
|
|
1892
|
+
}
|
|
1893
|
+
get user_key() {
|
|
1894
|
+
return this.config.clientId;
|
|
1895
|
+
}
|
|
1896
|
+
get sub_client() {
|
|
1897
|
+
return this.config.tokenName ? this.config.tokenName : this.subClient;
|
|
1898
|
+
}
|
|
1899
|
+
updateToken() {
|
|
1900
|
+
const decoded = jwt_decode(this.token);
|
|
1901
|
+
console.log(decoded);
|
|
1902
|
+
const { Time, Client, SubClient } = decoded;
|
|
1903
|
+
this.tokenTimestamps = { Time, Client, SubClient };
|
|
1855
1904
|
}
|
|
1856
1905
|
getToken() {
|
|
1906
|
+
console.log('GET');
|
|
1907
|
+
const { path, login } = this.config;
|
|
1857
1908
|
return this.http
|
|
1858
|
-
.post(
|
|
1859
|
-
|
|
1860
|
-
|
|
1909
|
+
.post(`${path}${login}`, {
|
|
1910
|
+
user_key: this.user_key,
|
|
1911
|
+
sub_client: this.sub_client,
|
|
1861
1912
|
})
|
|
1862
|
-
.pipe(
|
|
1863
|
-
this.token
|
|
1864
|
-
|
|
1865
|
-
|
|
1866
|
-
this.
|
|
1867
|
-
|
|
1913
|
+
.pipe(tap((token) => {
|
|
1914
|
+
console.log(this.token);
|
|
1915
|
+
this.token = token.access_token;
|
|
1916
|
+
console.log('TOKEN', this.token);
|
|
1917
|
+
this.refresh_token = token.refresh_token;
|
|
1918
|
+
this.updateToken();
|
|
1919
|
+
}), map((data) => data.access_token));
|
|
1868
1920
|
}
|
|
1869
1921
|
}
|
|
1870
1922
|
AuthProvider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AuthProvider, deps: [{ token: i1$1.HttpClient }, { token: 'configAuth' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
@@ -1879,9 +1931,77 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
1879
1931
|
args: ['configAuth']
|
|
1880
1932
|
}] }]; } });
|
|
1881
1933
|
|
|
1882
|
-
|
|
1883
|
-
|
|
1934
|
+
const TRANSLATION_PROVIDER = new InjectionToken('Injection token for translation providers.');
|
|
1935
|
+
class NgxScanDocTranslationProvider {
|
|
1936
|
+
constructor(translate, providers, platformLocation) {
|
|
1884
1937
|
this.translate = translate;
|
|
1938
|
+
this.platformLocation = platformLocation;
|
|
1939
|
+
console.log(this.translate);
|
|
1940
|
+
this.customLoader = this.translate.currentLoader;
|
|
1941
|
+
this.defaultLang = 'en';
|
|
1942
|
+
translate.setDefaultLang(this.defaultLang);
|
|
1943
|
+
if (providers && providers.length > 0) {
|
|
1944
|
+
for (const provider of providers) {
|
|
1945
|
+
this.addTranslationFolder(provider.name, provider.source);
|
|
1946
|
+
}
|
|
1947
|
+
}
|
|
1948
|
+
}
|
|
1949
|
+
path(path) {
|
|
1950
|
+
return path;
|
|
1951
|
+
// const baseHref = this.platformLocation
|
|
1952
|
+
// .getBaseHrefFromDOM()
|
|
1953
|
+
// .split('/')
|
|
1954
|
+
// .join('');
|
|
1955
|
+
// return baseHref != '' ? `/${baseHref}${path}` : path;
|
|
1956
|
+
}
|
|
1957
|
+
addTranslationFolder(name = '', path = '') {
|
|
1958
|
+
console.log(name, path, this.userLang, this.defaultLang);
|
|
1959
|
+
if (!this.customLoader.providerRegistered(name)) {
|
|
1960
|
+
this.customLoader.registerProvider(name, this.path(path));
|
|
1961
|
+
if (this.userLang) {
|
|
1962
|
+
const existCurrentLang = this.translate.currentLang ? true : false;
|
|
1963
|
+
this.loadTranslation(this.userLang, this.defaultLang, !existCurrentLang);
|
|
1964
|
+
}
|
|
1965
|
+
else {
|
|
1966
|
+
this.loadTranslation(this.defaultLang);
|
|
1967
|
+
}
|
|
1968
|
+
}
|
|
1969
|
+
}
|
|
1970
|
+
loadTranslation(lang, fallback, useLang = true) {
|
|
1971
|
+
this.translate.getTranslation(lang).subscribe((resp) => {
|
|
1972
|
+
this.onTranslationChanged(lang);
|
|
1973
|
+
if (useLang) {
|
|
1974
|
+
setTimeout(() => {
|
|
1975
|
+
this.translate.use(lang);
|
|
1976
|
+
}, 20);
|
|
1977
|
+
}
|
|
1978
|
+
// this.translate.reloadLang(lang)
|
|
1979
|
+
}, () => {
|
|
1980
|
+
if (fallback && fallback !== lang) {
|
|
1981
|
+
this.loadTranslation(fallback);
|
|
1982
|
+
}
|
|
1983
|
+
});
|
|
1984
|
+
}
|
|
1985
|
+
updateTranslation(lang, fallback) {
|
|
1986
|
+
return this.translate.getTranslation(lang).pipe(catchError(() => {
|
|
1987
|
+
if (fallback && fallback !== lang) {
|
|
1988
|
+
return this.updateTranslation(fallback);
|
|
1989
|
+
}
|
|
1990
|
+
return this.translate.use(lang);
|
|
1991
|
+
}), switchMap(() => {
|
|
1992
|
+
this.onTranslationChanged(lang);
|
|
1993
|
+
return this.translate.use(lang);
|
|
1994
|
+
}));
|
|
1995
|
+
}
|
|
1996
|
+
onTranslationChanged(lang) {
|
|
1997
|
+
this.translate.onTranslationChange.next({
|
|
1998
|
+
lang,
|
|
1999
|
+
translations: this.customLoader.getFullTranslationJSON(lang),
|
|
2000
|
+
});
|
|
2001
|
+
}
|
|
2002
|
+
use(lang) {
|
|
2003
|
+
this.customLoader.init(lang);
|
|
2004
|
+
return this.updateTranslation(lang);
|
|
1885
2005
|
}
|
|
1886
2006
|
forms(item, namespace = null) {
|
|
1887
2007
|
if (item.fieldGroup) {
|
|
@@ -1917,14 +2037,19 @@ class TranslationProvider {
|
|
|
1917
2037
|
return item;
|
|
1918
2038
|
}
|
|
1919
2039
|
}
|
|
1920
|
-
|
|
1921
|
-
|
|
1922
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type:
|
|
2040
|
+
NgxScanDocTranslationProvider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NgxScanDocTranslationProvider, deps: [{ token: i1$2.TranslateService }, { token: TRANSLATION_PROVIDER, optional: true }, { token: i2$1.PlatformLocation }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2041
|
+
NgxScanDocTranslationProvider.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NgxScanDocTranslationProvider, providedIn: 'root' });
|
|
2042
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NgxScanDocTranslationProvider, decorators: [{
|
|
1923
2043
|
type: Injectable,
|
|
1924
2044
|
args: [{
|
|
1925
2045
|
providedIn: 'root',
|
|
1926
2046
|
}]
|
|
1927
|
-
}], ctorParameters: function () { return [{ type: i1$2.TranslateService }
|
|
2047
|
+
}], ctorParameters: function () { return [{ type: i1$2.TranslateService }, { type: undefined, decorators: [{
|
|
2048
|
+
type: Optional
|
|
2049
|
+
}, {
|
|
2050
|
+
type: Inject,
|
|
2051
|
+
args: [TRANSLATION_PROVIDER]
|
|
2052
|
+
}] }, { type: i2$1.PlatformLocation }]; } });
|
|
1928
2053
|
|
|
1929
2054
|
class ScanFieldsProvider {
|
|
1930
2055
|
constructor(translate, provider) {
|
|
@@ -1943,7 +2068,7 @@ class ScanFieldsProvider {
|
|
|
1943
2068
|
class: 'checkbox ',
|
|
1944
2069
|
defaultValue: true,
|
|
1945
2070
|
templateOptions: {
|
|
1946
|
-
label: 'form.scan.document.update.profile',
|
|
2071
|
+
label: 'scandoc.form.scan.document.update.profile',
|
|
1947
2072
|
},
|
|
1948
2073
|
},
|
|
1949
2074
|
{
|
|
@@ -1953,7 +2078,7 @@ class ScanFieldsProvider {
|
|
|
1953
2078
|
key: 'document',
|
|
1954
2079
|
defaultValue: true,
|
|
1955
2080
|
templateOptions: {
|
|
1956
|
-
label: 'form.scan.document.update.document',
|
|
2081
|
+
label: 'scandoc.form.scan.document.update.document',
|
|
1957
2082
|
},
|
|
1958
2083
|
},
|
|
1959
2084
|
{
|
|
@@ -1963,7 +2088,7 @@ class ScanFieldsProvider {
|
|
|
1963
2088
|
key: 'attachment',
|
|
1964
2089
|
defaultValue: true,
|
|
1965
2090
|
templateOptions: {
|
|
1966
|
-
label: 'form.scan.document.update.attachment',
|
|
2091
|
+
label: 'scandoc.form.scan.document.update.attachment',
|
|
1967
2092
|
},
|
|
1968
2093
|
},
|
|
1969
2094
|
].map((item) => this.translate.forms(item)),
|
|
@@ -1983,14 +2108,14 @@ class ScanFieldsProvider {
|
|
|
1983
2108
|
{
|
|
1984
2109
|
type: 'title',
|
|
1985
2110
|
templateOptions: {
|
|
1986
|
-
label: 'form.scan.document.guestDetailsTitle',
|
|
2111
|
+
label: 'scandoc.form.scan.document.guestDetailsTitle',
|
|
1987
2112
|
},
|
|
1988
2113
|
},
|
|
1989
2114
|
// {
|
|
1990
2115
|
// type: 'profile-image',
|
|
1991
2116
|
// key: '_avatar',
|
|
1992
2117
|
// templateOptions: {
|
|
1993
|
-
// label: 'form.scan.document.firstName',
|
|
2118
|
+
// label: 'scandoc.form.scan.document.firstName',
|
|
1994
2119
|
// },
|
|
1995
2120
|
// },
|
|
1996
2121
|
{
|
|
@@ -1998,7 +2123,7 @@ class ScanFieldsProvider {
|
|
|
1998
2123
|
key: 'firstName',
|
|
1999
2124
|
className: 'small',
|
|
2000
2125
|
templateOptions: {
|
|
2001
|
-
label: 'form.scan.document.firstName',
|
|
2126
|
+
label: 'scandoc.form.scan.document.firstName',
|
|
2002
2127
|
required: true,
|
|
2003
2128
|
},
|
|
2004
2129
|
},
|
|
@@ -2007,7 +2132,7 @@ class ScanFieldsProvider {
|
|
|
2007
2132
|
key: 'lastName',
|
|
2008
2133
|
className: 'small',
|
|
2009
2134
|
templateOptions: {
|
|
2010
|
-
label: 'form.scan.document.lastName',
|
|
2135
|
+
label: 'scandoc.form.scan.document.lastName',
|
|
2011
2136
|
required: true,
|
|
2012
2137
|
},
|
|
2013
2138
|
},
|
|
@@ -2017,7 +2142,7 @@ class ScanFieldsProvider {
|
|
|
2017
2142
|
type: 'input',
|
|
2018
2143
|
templateOptions: {
|
|
2019
2144
|
color: 'accent',
|
|
2020
|
-
label: 'form.scan.document.secondLastName',
|
|
2145
|
+
label: 'scandoc.form.scan.document.secondLastName',
|
|
2021
2146
|
},
|
|
2022
2147
|
hideExpression: 'model.hideSecondLastName',
|
|
2023
2148
|
},
|
|
@@ -2026,7 +2151,7 @@ class ScanFieldsProvider {
|
|
|
2026
2151
|
key: 'middleName',
|
|
2027
2152
|
className: 'small',
|
|
2028
2153
|
templateOptions: {
|
|
2029
|
-
label: 'form.scan.document.middleName',
|
|
2154
|
+
label: 'scandoc.form.scan.document.middleName',
|
|
2030
2155
|
},
|
|
2031
2156
|
},
|
|
2032
2157
|
{
|
|
@@ -2038,7 +2163,7 @@ class ScanFieldsProvider {
|
|
|
2038
2163
|
key: 'birthDate',
|
|
2039
2164
|
className: 'w-100-p small mr-8',
|
|
2040
2165
|
templateOptions: {
|
|
2041
|
-
label: 'form.scan.document.birthDate',
|
|
2166
|
+
label: 'scandoc.form.scan.document.birthDate',
|
|
2042
2167
|
},
|
|
2043
2168
|
},
|
|
2044
2169
|
{
|
|
@@ -2046,7 +2171,7 @@ class ScanFieldsProvider {
|
|
|
2046
2171
|
key: 'gender',
|
|
2047
2172
|
className: 'w-100-p small ml-8',
|
|
2048
2173
|
templateOptions: {
|
|
2049
|
-
label: 'form.scan.document.gender',
|
|
2174
|
+
label: 'scandoc.form.scan.document.gender',
|
|
2050
2175
|
options: [
|
|
2051
2176
|
{ value: 'MALE', label: 'MALE' },
|
|
2052
2177
|
{ value: 'FEMALE', label: 'FEMALE' },
|
|
@@ -2061,7 +2186,7 @@ class ScanFieldsProvider {
|
|
|
2061
2186
|
key: 'birthPlace',
|
|
2062
2187
|
className: 'small',
|
|
2063
2188
|
templateOptions: {
|
|
2064
|
-
label: 'form.scan.document.birthPlace',
|
|
2189
|
+
label: 'scandoc.form.scan.document.birthPlace',
|
|
2065
2190
|
},
|
|
2066
2191
|
},
|
|
2067
2192
|
{
|
|
@@ -2069,7 +2194,7 @@ class ScanFieldsProvider {
|
|
|
2069
2194
|
key: 'birthCountry',
|
|
2070
2195
|
className: 'small',
|
|
2071
2196
|
templateOptions: {
|
|
2072
|
-
label: 'form.scan.document.birthCountry',
|
|
2197
|
+
label: 'scandoc.form.scan.document.birthCountry',
|
|
2073
2198
|
options: this.provider.countries(),
|
|
2074
2199
|
},
|
|
2075
2200
|
},
|
|
@@ -2078,7 +2203,7 @@ class ScanFieldsProvider {
|
|
|
2078
2203
|
key: 'nationality',
|
|
2079
2204
|
type: 'select',
|
|
2080
2205
|
templateOptions: {
|
|
2081
|
-
label: 'form.scan.document.nationality',
|
|
2206
|
+
label: 'scandoc.form.scan.document.nationality',
|
|
2082
2207
|
// appearance: 'outline',
|
|
2083
2208
|
// options: this.profileProvider.nationalities(),
|
|
2084
2209
|
options: this.provider.countries(),
|
|
@@ -2093,14 +2218,14 @@ class ScanFieldsProvider {
|
|
|
2093
2218
|
{
|
|
2094
2219
|
type: 'title',
|
|
2095
2220
|
templateOptions: {
|
|
2096
|
-
label: 'form.scan.document.documentTitle',
|
|
2221
|
+
label: 'scandoc.form.scan.document.documentTitle',
|
|
2097
2222
|
},
|
|
2098
2223
|
},
|
|
2099
2224
|
{
|
|
2100
2225
|
type: 'select',
|
|
2101
2226
|
key: 'documentType',
|
|
2102
2227
|
templateOptions: {
|
|
2103
|
-
label: 'form.scan.document.documentType',
|
|
2228
|
+
label: 'scandoc.form.scan.document.documentType',
|
|
2104
2229
|
options: [
|
|
2105
2230
|
{ value: 'ID', label: 'Identity Document' },
|
|
2106
2231
|
{ value: 'PASS', label: 'Passport' },
|
|
@@ -2115,7 +2240,7 @@ class ScanFieldsProvider {
|
|
|
2115
2240
|
type: 'input',
|
|
2116
2241
|
key: 'documentNumber',
|
|
2117
2242
|
templateOptions: {
|
|
2118
|
-
label: 'form.scan.document.documentNumber',
|
|
2243
|
+
label: 'scandoc.form.scan.document.documentNumber',
|
|
2119
2244
|
required: true,
|
|
2120
2245
|
},
|
|
2121
2246
|
},
|
|
@@ -2128,7 +2253,7 @@ class ScanFieldsProvider {
|
|
|
2128
2253
|
key: 'issueDate',
|
|
2129
2254
|
className: 'small mr-8',
|
|
2130
2255
|
templateOptions: {
|
|
2131
|
-
label: 'form.scan.document.issueDate',
|
|
2256
|
+
label: 'scandoc.form.scan.document.issueDate',
|
|
2132
2257
|
},
|
|
2133
2258
|
},
|
|
2134
2259
|
{
|
|
@@ -2136,7 +2261,7 @@ class ScanFieldsProvider {
|
|
|
2136
2261
|
key: 'expirationDate',
|
|
2137
2262
|
className: 'small ml-8',
|
|
2138
2263
|
templateOptions: {
|
|
2139
|
-
label: 'form.scan.document.expirationDate',
|
|
2264
|
+
label: 'scandoc.form.scan.document.expirationDate',
|
|
2140
2265
|
},
|
|
2141
2266
|
},
|
|
2142
2267
|
],
|
|
@@ -2145,7 +2270,7 @@ class ScanFieldsProvider {
|
|
|
2145
2270
|
type: 'select',
|
|
2146
2271
|
key: 'issueStateCode',
|
|
2147
2272
|
templateOptions: {
|
|
2148
|
-
label: 'form.scan.document.issuingStateCode',
|
|
2273
|
+
label: 'scandoc.form.scan.document.issuingStateCode',
|
|
2149
2274
|
options: this.provider.countries(),
|
|
2150
2275
|
},
|
|
2151
2276
|
},
|
|
@@ -2153,7 +2278,7 @@ class ScanFieldsProvider {
|
|
|
2153
2278
|
type: 'input',
|
|
2154
2279
|
key: 'issuingPlace',
|
|
2155
2280
|
templateOptions: {
|
|
2156
|
-
label: 'form.scan.document.issuingPlace',
|
|
2281
|
+
label: 'scandoc.form.scan.document.issuingPlace',
|
|
2157
2282
|
required: false,
|
|
2158
2283
|
},
|
|
2159
2284
|
},
|
|
@@ -2164,7 +2289,7 @@ class ScanFieldsProvider {
|
|
|
2164
2289
|
{
|
|
2165
2290
|
type: 'title',
|
|
2166
2291
|
templateOptions: {
|
|
2167
|
-
label: 'form.scan.document.addressTitle',
|
|
2292
|
+
label: 'scandoc.form.scan.document.addressTitle',
|
|
2168
2293
|
badge: 'communications',
|
|
2169
2294
|
},
|
|
2170
2295
|
},
|
|
@@ -2175,7 +2300,7 @@ class ScanFieldsProvider {
|
|
|
2175
2300
|
// key: 'typeID',
|
|
2176
2301
|
// type: 'select',
|
|
2177
2302
|
// templateOptions: {
|
|
2178
|
-
// label: 'form.profile.address.type',
|
|
2303
|
+
// label: 'scandoc.form.profile.address.type',
|
|
2179
2304
|
// required: true,
|
|
2180
2305
|
// // options: this.profileProvider.addressTypes(),
|
|
2181
2306
|
// expressionProperties: {
|
|
@@ -2201,7 +2326,7 @@ class ScanFieldsProvider {
|
|
|
2201
2326
|
type: 'select',
|
|
2202
2327
|
templateOptions: {
|
|
2203
2328
|
required: true,
|
|
2204
|
-
label: 'form.profile.address.country',
|
|
2329
|
+
label: 'scandoc.form.profile.address.country',
|
|
2205
2330
|
options: this.provider.countries(),
|
|
2206
2331
|
},
|
|
2207
2332
|
// expressionProperties: {
|
|
@@ -2222,7 +2347,7 @@ class ScanFieldsProvider {
|
|
|
2222
2347
|
key: 'zip',
|
|
2223
2348
|
type: 'input',
|
|
2224
2349
|
templateOptions: {
|
|
2225
|
-
label: 'form.profile.address.zip',
|
|
2350
|
+
label: 'scandoc.form.profile.address.zip',
|
|
2226
2351
|
labelProp: (item) => {
|
|
2227
2352
|
return `${item.zip} (${item.city})`;
|
|
2228
2353
|
},
|
|
@@ -2249,7 +2374,7 @@ class ScanFieldsProvider {
|
|
|
2249
2374
|
key: 'city',
|
|
2250
2375
|
type: 'input',
|
|
2251
2376
|
templateOptions: {
|
|
2252
|
-
label: 'form.profile.address.city',
|
|
2377
|
+
label: 'scandoc.form.profile.address.city',
|
|
2253
2378
|
},
|
|
2254
2379
|
// expressionProperties: {
|
|
2255
2380
|
// 'templateOptions.disabled': (model: any) =>
|
|
@@ -2263,7 +2388,7 @@ class ScanFieldsProvider {
|
|
|
2263
2388
|
// key: 'state',
|
|
2264
2389
|
// type: 'input',
|
|
2265
2390
|
// templateOptions: {
|
|
2266
|
-
// label: 'form.profile.address.state',
|
|
2391
|
+
// label: 'scandoc.form.profile.address.state',
|
|
2267
2392
|
// },
|
|
2268
2393
|
// // expressionProperties: {
|
|
2269
2394
|
// // 'templateOptions.disabled': (model: any) => !model.newAddress,
|
|
@@ -2274,7 +2399,7 @@ class ScanFieldsProvider {
|
|
|
2274
2399
|
// key: 'countryStateID',
|
|
2275
2400
|
// type: 'select',
|
|
2276
2401
|
// templateOptions: {
|
|
2277
|
-
// label: 'form.profile.address.regionalStatistics',
|
|
2402
|
+
// label: 'scandoc.form.profile.address.regionalStatistics',
|
|
2278
2403
|
// options: this.provider.countries(),
|
|
2279
2404
|
// },
|
|
2280
2405
|
// // expressionProperties: {
|
|
@@ -2286,7 +2411,7 @@ class ScanFieldsProvider {
|
|
|
2286
2411
|
key: 'street1',
|
|
2287
2412
|
type: 'input',
|
|
2288
2413
|
templateOptions: {
|
|
2289
|
-
label: 'form.profile.address.street',
|
|
2414
|
+
label: 'scandoc.form.profile.address.street',
|
|
2290
2415
|
},
|
|
2291
2416
|
// expressionProperties: {
|
|
2292
2417
|
// 'templateOptions.disabled': (model: any) => !model.newAddress,
|
|
@@ -2299,14 +2424,14 @@ class ScanFieldsProvider {
|
|
|
2299
2424
|
].map((item) => this.translate.forms(item));
|
|
2300
2425
|
}
|
|
2301
2426
|
}
|
|
2302
|
-
ScanFieldsProvider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScanFieldsProvider, deps: [{ token:
|
|
2427
|
+
ScanFieldsProvider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScanFieldsProvider, deps: [{ token: NgxScanDocTranslationProvider }, { token: ScanProvider }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2303
2428
|
ScanFieldsProvider.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScanFieldsProvider, providedIn: 'root' });
|
|
2304
2429
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScanFieldsProvider, decorators: [{
|
|
2305
2430
|
type: Injectable,
|
|
2306
2431
|
args: [{
|
|
2307
2432
|
providedIn: 'root',
|
|
2308
2433
|
}]
|
|
2309
|
-
}], ctorParameters: function () { return [{ type:
|
|
2434
|
+
}], ctorParameters: function () { return [{ type: NgxScanDocTranslationProvider }, { type: ScanProvider }]; } });
|
|
2310
2435
|
|
|
2311
2436
|
class ScanResultsComponent {
|
|
2312
2437
|
constructor(cameraProvider, formProvider) {
|
|
@@ -2323,10 +2448,10 @@ class ScanResultsComponent {
|
|
|
2323
2448
|
}
|
|
2324
2449
|
}
|
|
2325
2450
|
ScanResultsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScanResultsComponent, deps: [{ token: NgxScandocCameraProvider }, { token: ScanFieldsProvider }], target: i0.ɵɵFactoryTarget.Component });
|
|
2326
|
-
ScanResultsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScanResultsComponent, selector: "ngx-scan-results", inputs: { model: "model", images: "images", form: "form" }, outputs: { action: "action" }, ngImport: i0, template: "<div class=\"wraper\">\n <div style=\"flex: 1\">\n <mat-card style=\"margin: 4px; padding: 4px 16px\">\n <h3>
|
|
2451
|
+
ScanResultsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScanResultsComponent, selector: "ngx-scan-results", inputs: { model: "model", images: "images", form: "form" }, outputs: { action: "action" }, ngImport: i0, template: "<div class=\"wraper\">\n <div style=\"flex: 1\">\n <mat-card style=\"margin: 4px; padding: 4px 16px\">\n <h3>{{ \"scandoc.result.avatar\" | translate }}</h3>\n <div class=\"selfieContainer\">\n <div class=\"selfie\">\n <img *ngIf=\"model?._avatar\" class=\"preview\" [src]=\"model._avatar\" />\n </div>\n <button (click)=\"selfie()\" mat-raised-button>\n {{ \"scandoc.result.takeSelfie\" | translate }}\n </button>\n </div>\n </mat-card>\n\n <form\n fxLayout=\"row\"\n fxLayoutAlign=\"start center\"\n class=\"px-16 py-0 w-100-p\"\n [formGroup]=\"form\"\n >\n <formly-form\n ngClass.lt-md=\"mobile\"\n fxFlex\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n >\n </formly-form>\n </form>\n </div>\n <div style=\"flex: 1\" class=\"pr-16 m-4\">\n <mat-card style=\"margin: 4px; padding-top: 2px\" class=\"images\">\n <h3>{{ \"scandoc.result.images\" | translate }}</h3>\n <ng-container *ngFor=\"let img of images\">\n <div fxLayout=\"column\">\n <ng-container *ngIf=\"img.side === 0\">\n <div class=\"title\">\n {{ \"scandoc.result.frontSide\" | translate }}\n </div>\n </ng-container>\n <ng-container *ngIf=\"img.side === 1\">\n <div class=\"title\">{{ \"scandoc.result.backSide\" | translate }}</div>\n </ng-container>\n <img\n class=\"preview\"\n style=\"max-width: 460px; border-radius: 1rem\"\n [src]=\"img.data\"\n />\n </div>\n </ng-container>\n </mat-card>\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:column!important;flex:1;overflow:hidden}.images .title{padding:8px 0;font-weight:600}.images img{margin-bottom:16px;width:100%}.wraper{padding:8px 8px 0 0;overflow:auto;flex:1;display:flex;flex-direction:row}mat-card{box-shadow:none!important}.selfieContainer{display:flex;flex-direction:row;align-items:center}.selfieContainer .selfie{width:150px}.selfieContainer .selfie .preview{width:120px;height:120px;border-radius:80px}.selfieContainer .button{box-shadow:none;border:1px solid rgba(0,0,0,.1)}\n"], dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i5.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "component", type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }] });
|
|
2327
2452
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScanResultsComponent, decorators: [{
|
|
2328
2453
|
type: Component,
|
|
2329
|
-
args: [{ selector: 'ngx-scan-results', template: "<div class=\"wraper\">\n <div style=\"flex: 1\">\n <mat-card style=\"margin: 4px; padding: 4px 16px\">\n <h3>
|
|
2454
|
+
args: [{ selector: 'ngx-scan-results', template: "<div class=\"wraper\">\n <div style=\"flex: 1\">\n <mat-card style=\"margin: 4px; padding: 4px 16px\">\n <h3>{{ \"scandoc.result.avatar\" | translate }}</h3>\n <div class=\"selfieContainer\">\n <div class=\"selfie\">\n <img *ngIf=\"model?._avatar\" class=\"preview\" [src]=\"model._avatar\" />\n </div>\n <button (click)=\"selfie()\" mat-raised-button>\n {{ \"scandoc.result.takeSelfie\" | translate }}\n </button>\n </div>\n </mat-card>\n\n <form\n fxLayout=\"row\"\n fxLayoutAlign=\"start center\"\n class=\"px-16 py-0 w-100-p\"\n [formGroup]=\"form\"\n >\n <formly-form\n ngClass.lt-md=\"mobile\"\n fxFlex\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n >\n </formly-form>\n </form>\n </div>\n <div style=\"flex: 1\" class=\"pr-16 m-4\">\n <mat-card style=\"margin: 4px; padding-top: 2px\" class=\"images\">\n <h3>{{ \"scandoc.result.images\" | translate }}</h3>\n <ng-container *ngFor=\"let img of images\">\n <div fxLayout=\"column\">\n <ng-container *ngIf=\"img.side === 0\">\n <div class=\"title\">\n {{ \"scandoc.result.frontSide\" | translate }}\n </div>\n </ng-container>\n <ng-container *ngIf=\"img.side === 1\">\n <div class=\"title\">{{ \"scandoc.result.backSide\" | translate }}</div>\n </ng-container>\n <img\n class=\"preview\"\n style=\"max-width: 460px; border-radius: 1rem\"\n [src]=\"img.data\"\n />\n </div>\n </ng-container>\n </mat-card>\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:column!important;flex:1;overflow:hidden}.images .title{padding:8px 0;font-weight:600}.images img{margin-bottom:16px;width:100%}.wraper{padding:8px 8px 0 0;overflow:auto;flex:1;display:flex;flex-direction:row}mat-card{box-shadow:none!important}.selfieContainer{display:flex;flex-direction:row;align-items:center}.selfieContainer .selfie{width:150px}.selfieContainer .selfie .preview{width:120px;height:120px;border-radius:80px}.selfieContainer .button{box-shadow:none;border:1px solid rgba(0,0,0,.1)}\n"] }]
|
|
2330
2455
|
}], ctorParameters: function () { return [{ type: NgxScandocCameraProvider }, { type: ScanFieldsProvider }]; }, propDecorators: { model: [{
|
|
2331
2456
|
type: Input
|
|
2332
2457
|
}], images: [{
|
|
@@ -2377,7 +2502,7 @@ class ScanComponent extends BaseComponent {
|
|
|
2377
2502
|
this.documentTypeSelected = false;
|
|
2378
2503
|
this.preview = null;
|
|
2379
2504
|
this.errorCode = '1000';
|
|
2380
|
-
this.displayInfo = '
|
|
2505
|
+
this.displayInfo = 'scandoc.info.position';
|
|
2381
2506
|
this.allowCameraSwitch = true;
|
|
2382
2507
|
this.verificationErrorSent = false;
|
|
2383
2508
|
this.error = false;
|
|
@@ -2510,7 +2635,7 @@ class ScanComponent extends BaseComponent {
|
|
|
2510
2635
|
}
|
|
2511
2636
|
handleBurstData(imagesArray, images, type = 'plain') {
|
|
2512
2637
|
this.__subs(this.scanProvider.burst(imagesArray)).subscribe((resp) => {
|
|
2513
|
-
this.displayInfo = resp.
|
|
2638
|
+
this.displayInfo = 'scandoc.info.c' + resp.InfoCode;
|
|
2514
2639
|
console.timeEnd('validationPOST');
|
|
2515
2640
|
console.log('AnalysisTime', resp.AnalysisTime);
|
|
2516
2641
|
const { DocType, Series, Side, InfoCode } = resp;
|
|
@@ -2557,7 +2682,7 @@ class ScanComponent extends BaseComponent {
|
|
|
2557
2682
|
});
|
|
2558
2683
|
}
|
|
2559
2684
|
console.log('ID SIDE', this.idScan);
|
|
2560
|
-
this.displayInfo = '
|
|
2685
|
+
this.displayInfo = 'scandoc.info.turn';
|
|
2561
2686
|
}
|
|
2562
2687
|
}
|
|
2563
2688
|
else {
|
|
@@ -2728,6 +2853,8 @@ class ScanComponent extends BaseComponent {
|
|
|
2728
2853
|
},
|
|
2729
2854
|
// CallBackUrl: 'http://demo:5000/report/extracted/',
|
|
2730
2855
|
};
|
|
2856
|
+
this.frontImage = 'data:image/jpeg;base64,' + payload.DataFields.FrontImage;
|
|
2857
|
+
this.backImage = 'data:image/jpeg;base64,' + payload.DataFields.BackImage;
|
|
2731
2858
|
if (!this.scanBlastData[1].image) {
|
|
2732
2859
|
payload.Settings.IgnoreBackImage = true;
|
|
2733
2860
|
}
|
|
@@ -2891,10 +3018,10 @@ class ScanComponent extends BaseComponent {
|
|
|
2891
3018
|
}
|
|
2892
3019
|
}
|
|
2893
3020
|
ScanComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScanComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i1$2.TranslateService }, { token: NgxScandocCameraProvider }, { token: i0.Injector }, { token: LayoutProvider }, { token: AuthProvider }], target: i0.ɵɵFactoryTarget.Component });
|
|
2894
|
-
ScanComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScanComponent, selector: "ngx-scan", inputs: { type: "type", dialogs: "dialogs", showDialog: "showDialog" }, outputs: { actions: "actions" }, host: { listeners: { "window:resize": "onResize($event)" }, properties: { "class.mobile": "this.class" } }, viewQueries: [{ propertyName: "wraper", first: true, predicate: ["wraper"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<section *ngIf=\"result\">\n <ngx-scan-results\n (action)=\"selfie()\"\n [form]=\"form\"\n [model]=\"model\"\n [images]=\"images\"\n ></ngx-scan-results>\n\n <footer>\n <div class=\"actions\">\n <button class=\"mr-4\" mat-raised-button (click)=\"retake()\">\n
|
|
3021
|
+
ScanComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScanComponent, selector: "ngx-scan", inputs: { type: "type", dialogs: "dialogs", showDialog: "showDialog" }, outputs: { actions: "actions" }, host: { listeners: { "window:resize": "onResize($event)" }, properties: { "class.mobile": "this.class" } }, viewQueries: [{ propertyName: "wraper", first: true, predicate: ["wraper"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<section *ngIf=\"result\">\n <ngx-scan-results\n (action)=\"selfie()\"\n [form]=\"form\"\n [model]=\"model\"\n [images]=\"images\"\n ></ngx-scan-results>\n<!-- <div style=\"display:none\">\n<img [src]=\"frontImage\">\n<img [src]=\"backImage\">\n</div> -->\n\n <footer>\n <div class=\"actions\">\n <button class=\"mr-4\" mat-raised-button (click)=\"retake()\">\n {{ \"scandoc.reTake\" | translate }}\n </button>\n <button\n [disabled]=\"error || form.invalid\"\n class=\"ml-4\"\n mat-raised-button\n (click)=\"use()\"\n >\n {{ \"scandoc.useData\" | translate }}\n </button>\n </div>\n </footer>\n</section>\n\n<section *ngIf=\"!result && documentTypeSelected\">\n <div #wraper class=\"wraper\">\n <div class=\"loading\" *ngIf=\"!cameraReady && !preview\">\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n </div>\n\n <ng-container *ngIf=\"!error\">\n <ngx-scandoc-webcam\n *ngIf=\"!preview && !scaning\"\n class=\"main\"\n [imageQuality]=\"1\"\n #webcam\n type=\"document\"\n [trigger]=\"trigger\"\n [imageHandler]=\"imageHandler\"\n (imageCapture)=\"handleImage($event)\"\n [allowCameraSwitch]=\"allowCameraSwitch\"\n [videoOptions]=\"videoOptions\"\n [switchCamera]=\"cameraProvider.nextWebcamObservable\"\n (cameraSwitched)=\"cameraWasSwitched($event)\"\n (initError)=\"handleInitError($event)\"\n [width]=\"width\"\n [height]=\"height\"\n (destroyed)=\"cameraOff($event)\"\n (videoReady)=\"videoReady($event)\"\n >\n </ngx-scandoc-webcam>\n </ng-container>\n <div\n class=\"previewData\"\n *ngIf=\"preview\"\n style=\"z-index: 20; position: absolute; width: 100%; height: 100%\"\n >\n <div class=\"p-16 error\" *ngIf=\"error\">\n <div>\n <div class=\"title\">\n <mat-icon>error_outline</mat-icon\n ><span class=\"ml-8\">{{\n \"scandoc.unableToDetectId\" | translate\n }}</span>\n </div>\n\n <ng-container *ngIf=\"errorCode === '1001'\">\n <div>\n {{ \"scandoc.extraction.c1001\" | translate }}\n </div>\n </ng-container>\n <ng-container *ngIf=\"errorCode === '1002'\">\n <div>\n {{ \"scandoc.extraction.c1002\" | translate }}\n </div>\n </ng-container>\n\n <ul *ngIf=\"errorCode === '1000'\">\n <li>\n {{ \"scandoc.placeIdCloseToDevice\" | translate }}\n </li>\n <li>\n {{ \"scandoc.ensureSufficientLight\" | translate }}\n </li>\n <li>\n {{ \"scandoc.holdDocumentSteady\" | translate }}\n </li>\n <li>\n {{ \"scandoc.makeSureAllEdgesOfTheIdAreVisible\" | translate }}\n </li>\n <li>\n {{\n \"scandoc.makeSureThereAreNoGlareAndShadowsOnTheId\" | translate\n }}\n </li>\n </ul>\n </div>\n </div>\n\n <div class=\"scanPreview\" *ngIf=\"!error && !scaning\">\n <!-- <div class=\"py-16\" style=\"font-size: 16px\">\n {{\n \"scandoc.ensureAllTextsAreVisible\"\n | translate\n }}\n </div> -->\n <div\n class=\"image\"\n [style.background-image]=\"'url(' + preview + ')'\"\n ></div>\n </div>\n </div>\n </div>\n\n <footer>\n <div class=\"displayInfo\" *ngIf=\"!preview && cameraReady\">\n {{ displayInfo | translate }}\n </div>\n <!-- <div style=\"height: 26px\">\n <div\n style=\"text-align: center; font-size: 18px\"\n *ngIf=\"idScan && !preview && cameraReady\"\n >\n <ng-container *ngIf=\"idScan === 'BACK'\">\n Turn document and:\n {{ \"scandoc.captureBack\" | translate }}\n </ng-container>\n <ng-container *ngIf=\"idScan === 'FRONT'\">\n Turn document and:\n {{ \"scandoc.captureFront\" | translate }}\n </ng-container>\n </div>\n </div> -->\n\n <div class=\"actions\" *ngIf=\"preview\">\n <button class=\"mr-4\" mat-raised-button (click)=\"retry()\">\n {{ \"scandoc.retry\" | translate }}\n </button>\n\n <button\n [disabled]=\"error\"\n class=\"ml-4\"\n mat-raised-button\n (click)=\"continue()\"\n >\n {{ \"scandoc.continueWithSelectedImage\" | translate }}\n </button>\n </div>\n </footer>\n</section>\n", styles: [":host{display:flex;flex-direction:column!important;flex:1;background-color:#f5f5f5;overflow:hidden}section{flex:1;display:flex;flex-direction:column;position:relative;overflow:hidden}.wraper{position:relative;overflow:hidden;display:flex;flex-direction:column;flex:1}.wraper .loading{position:absolute;inset:0;z-index:20;background-color:#f5f5f5}.documentTurnOver{position:absolute;width:100%;height:100%;top:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.documentTurnOver mat-icon{width:200px;color:#fff;height:200px;font-size:100px}.displayInfo{text-align:center;flex:1;width:100%;background-color:#000;height:50px;display:flex;flex-direction:row;align-items:center;justify-content:center;color:#fff;z-index:200}.displayInfo.mobile{font-size:12px}.preview{width:100%;border-radius:1%}footer button{box-shadow:none!important;height:45px;min-height:45px;text-transform:uppercase}footer .actions{display:flex;flex-direction:row;align-items:center;padding:8px}footer .actions button{flex:1}.error{display:flex;align-items:center;justify-content:center;flex:1}.error .title{font-size:20px;margin-bottom:8px}.error .title mat-icon{margin-right:8px}.error ul{font-size:18px;list-style-type:none}mat-card{box-shadow:none!important}.mr-4{margin-right:4px}.ml-4{margin-left:4px}.p-16{padding:16px}.p-8{padding:8px}.py-16{padding:16px 0}.w-100-p{width:100%}.scanPreview{padding:16px}.scanPreview .image{background-position:center;background-repeat:no-repeat;background-size:contain}.empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: WebcamComponent, selector: "ngx-scandoc-webcam", inputs: ["imageHandler", "id", "type", "width", "height", "videoOptions", "allowCameraSwitch", "mirrorImage", "captureImageData", "imageType", "imageQuality", "trigger", "switchCamera"], outputs: ["imageCapture", "initError", "imageClick", "cameraSwitched", "videoReady", "destroyed"] }, { kind: "component", type: i7$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: ScanResultsComponent, selector: "ngx-scan-results", inputs: ["model", "images", "form"], outputs: ["action"] }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2895
3022
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScanComponent, decorators: [{
|
|
2896
3023
|
type: Component,
|
|
2897
|
-
args: [{ selector: 'ngx-scan', changeDetection: ChangeDetectionStrategy.OnPush, template: "<section *ngIf=\"result\">\n <ngx-scan-results\n (action)=\"selfie()\"\n [form]=\"form\"\n [model]=\"model\"\n [images]=\"images\"\n ></ngx-scan-results>\n\n <footer>\n <div class=\"actions\">\n <button class=\"mr-4\" mat-raised-button (click)=\"retake()\">\n
|
|
3024
|
+
args: [{ selector: 'ngx-scan', changeDetection: ChangeDetectionStrategy.OnPush, template: "<section *ngIf=\"result\">\n <ngx-scan-results\n (action)=\"selfie()\"\n [form]=\"form\"\n [model]=\"model\"\n [images]=\"images\"\n ></ngx-scan-results>\n<!-- <div style=\"display:none\">\n<img [src]=\"frontImage\">\n<img [src]=\"backImage\">\n</div> -->\n\n <footer>\n <div class=\"actions\">\n <button class=\"mr-4\" mat-raised-button (click)=\"retake()\">\n {{ \"scandoc.reTake\" | translate }}\n </button>\n <button\n [disabled]=\"error || form.invalid\"\n class=\"ml-4\"\n mat-raised-button\n (click)=\"use()\"\n >\n {{ \"scandoc.useData\" | translate }}\n </button>\n </div>\n </footer>\n</section>\n\n<section *ngIf=\"!result && documentTypeSelected\">\n <div #wraper class=\"wraper\">\n <div class=\"loading\" *ngIf=\"!cameraReady && !preview\">\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n </div>\n\n <ng-container *ngIf=\"!error\">\n <ngx-scandoc-webcam\n *ngIf=\"!preview && !scaning\"\n class=\"main\"\n [imageQuality]=\"1\"\n #webcam\n type=\"document\"\n [trigger]=\"trigger\"\n [imageHandler]=\"imageHandler\"\n (imageCapture)=\"handleImage($event)\"\n [allowCameraSwitch]=\"allowCameraSwitch\"\n [videoOptions]=\"videoOptions\"\n [switchCamera]=\"cameraProvider.nextWebcamObservable\"\n (cameraSwitched)=\"cameraWasSwitched($event)\"\n (initError)=\"handleInitError($event)\"\n [width]=\"width\"\n [height]=\"height\"\n (destroyed)=\"cameraOff($event)\"\n (videoReady)=\"videoReady($event)\"\n >\n </ngx-scandoc-webcam>\n </ng-container>\n <div\n class=\"previewData\"\n *ngIf=\"preview\"\n style=\"z-index: 20; position: absolute; width: 100%; height: 100%\"\n >\n <div class=\"p-16 error\" *ngIf=\"error\">\n <div>\n <div class=\"title\">\n <mat-icon>error_outline</mat-icon\n ><span class=\"ml-8\">{{\n \"scandoc.unableToDetectId\" | translate\n }}</span>\n </div>\n\n <ng-container *ngIf=\"errorCode === '1001'\">\n <div>\n {{ \"scandoc.extraction.c1001\" | translate }}\n </div>\n </ng-container>\n <ng-container *ngIf=\"errorCode === '1002'\">\n <div>\n {{ \"scandoc.extraction.c1002\" | translate }}\n </div>\n </ng-container>\n\n <ul *ngIf=\"errorCode === '1000'\">\n <li>\n {{ \"scandoc.placeIdCloseToDevice\" | translate }}\n </li>\n <li>\n {{ \"scandoc.ensureSufficientLight\" | translate }}\n </li>\n <li>\n {{ \"scandoc.holdDocumentSteady\" | translate }}\n </li>\n <li>\n {{ \"scandoc.makeSureAllEdgesOfTheIdAreVisible\" | translate }}\n </li>\n <li>\n {{\n \"scandoc.makeSureThereAreNoGlareAndShadowsOnTheId\" | translate\n }}\n </li>\n </ul>\n </div>\n </div>\n\n <div class=\"scanPreview\" *ngIf=\"!error && !scaning\">\n <!-- <div class=\"py-16\" style=\"font-size: 16px\">\n {{\n \"scandoc.ensureAllTextsAreVisible\"\n | translate\n }}\n </div> -->\n <div\n class=\"image\"\n [style.background-image]=\"'url(' + preview + ')'\"\n ></div>\n </div>\n </div>\n </div>\n\n <footer>\n <div class=\"displayInfo\" *ngIf=\"!preview && cameraReady\">\n {{ displayInfo | translate }}\n </div>\n <!-- <div style=\"height: 26px\">\n <div\n style=\"text-align: center; font-size: 18px\"\n *ngIf=\"idScan && !preview && cameraReady\"\n >\n <ng-container *ngIf=\"idScan === 'BACK'\">\n Turn document and:\n {{ \"scandoc.captureBack\" | translate }}\n </ng-container>\n <ng-container *ngIf=\"idScan === 'FRONT'\">\n Turn document and:\n {{ \"scandoc.captureFront\" | translate }}\n </ng-container>\n </div>\n </div> -->\n\n <div class=\"actions\" *ngIf=\"preview\">\n <button class=\"mr-4\" mat-raised-button (click)=\"retry()\">\n {{ \"scandoc.retry\" | translate }}\n </button>\n\n <button\n [disabled]=\"error\"\n class=\"ml-4\"\n mat-raised-button\n (click)=\"continue()\"\n >\n {{ \"scandoc.continueWithSelectedImage\" | translate }}\n </button>\n </div>\n </footer>\n</section>\n", styles: [":host{display:flex;flex-direction:column!important;flex:1;background-color:#f5f5f5;overflow:hidden}section{flex:1;display:flex;flex-direction:column;position:relative;overflow:hidden}.wraper{position:relative;overflow:hidden;display:flex;flex-direction:column;flex:1}.wraper .loading{position:absolute;inset:0;z-index:20;background-color:#f5f5f5}.documentTurnOver{position:absolute;width:100%;height:100%;top:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.documentTurnOver mat-icon{width:200px;color:#fff;height:200px;font-size:100px}.displayInfo{text-align:center;flex:1;width:100%;background-color:#000;height:50px;display:flex;flex-direction:row;align-items:center;justify-content:center;color:#fff;z-index:200}.displayInfo.mobile{font-size:12px}.preview{width:100%;border-radius:1%}footer button{box-shadow:none!important;height:45px;min-height:45px;text-transform:uppercase}footer .actions{display:flex;flex-direction:row;align-items:center;padding:8px}footer .actions button{flex:1}.error{display:flex;align-items:center;justify-content:center;flex:1}.error .title{font-size:20px;margin-bottom:8px}.error .title mat-icon{margin-right:8px}.error ul{font-size:18px;list-style-type:none}mat-card{box-shadow:none!important}.mr-4{margin-right:4px}.ml-4{margin-left:4px}.p-16{padding:16px}.p-8{padding:8px}.py-16{padding:16px 0}.w-100-p{width:100%}.scanPreview{padding:16px}.scanPreview .image{background-position:center;background-repeat:no-repeat;background-size:contain}.empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center}\n"] }]
|
|
2898
3025
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i1$2.TranslateService }, { type: NgxScandocCameraProvider }, { type: i0.Injector }, { type: LayoutProvider }, { type: AuthProvider }]; }, propDecorators: { type: [{
|
|
2899
3026
|
type: Input
|
|
2900
3027
|
}], dialogs: [{
|
|
@@ -3082,7 +3209,7 @@ AvatarTypeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ve
|
|
|
3082
3209
|
[ngClass]="width"
|
|
3083
3210
|
></ngx-avatars>
|
|
3084
3211
|
</mat-card>
|
|
3085
|
-
`, isInline: true, styles: ["mat-card{border-radius:0;box-shadow:none!important}\n"], dependencies: [{ kind: "directive", type:
|
|
3212
|
+
`, isInline: true, styles: ["mat-card{border-radius:0;box-shadow:none!important}\n"], dependencies: [{ kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i5.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "component", type: i3.AvatarComponent, selector: "ngx-avatars", inputs: ["round", "size", "textSizeRatio", "bgColor", "fgColor", "borderColor", "style", "cornerRadius", "facebookId", "twitterId", "googleId", "instagramId", "vkontakteId", "skypeId", "gravatarId", "githubId", "src", "name", "value", "referrerpolicy", "placeholder", "initialsSize"], outputs: ["clickOnAvatar"] }] });
|
|
3086
3213
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AvatarTypeComponent, decorators: [{
|
|
3087
3214
|
type: Component,
|
|
3088
3215
|
args: [{ selector: 'app-formly-avatar-type', template: `
|
|
@@ -3131,7 +3258,7 @@ TitleTypeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ver
|
|
|
3131
3258
|
{{ to.chip | translate }}
|
|
3132
3259
|
</div>
|
|
3133
3260
|
</div>
|
|
3134
|
-
`, isInline: true, styles: [".chip{background:whitesmoke;border-radius:6px;padding:4px 8px;font-size:12px;color:#888;font-weight:600}\n"], dependencies: [{ kind: "directive", type:
|
|
3261
|
+
`, isInline: true, styles: [".chip{background:whitesmoke;border-radius:6px;padding:4px 8px;font-size:12px;color:#888;font-weight:600}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }] });
|
|
3135
3262
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TitleTypeComponent, decorators: [{
|
|
3136
3263
|
type: Component,
|
|
3137
3264
|
args: [{ selector: 'app-formly-title-type', template: `
|
|
@@ -3184,7 +3311,7 @@ ProfileImageTypeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.
|
|
|
3184
3311
|
|
|
3185
3312
|
></ngx-avatars>
|
|
3186
3313
|
</mat-card>
|
|
3187
|
-
`, isInline: true, styles: ["mat-card{border-radius:0;box-shadow:none!important}.profile-image{width:150px;height:150px;border-radius:50%}\n"], dependencies: [{ kind: "component", type: i5
|
|
3314
|
+
`, isInline: true, styles: ["mat-card{border-radius:0;box-shadow:none!important}.profile-image{width:150px;height:150px;border-radius:50%}\n"], dependencies: [{ kind: "component", type: i5.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "component", type: i3.AvatarComponent, selector: "ngx-avatars", inputs: ["round", "size", "textSizeRatio", "bgColor", "fgColor", "borderColor", "style", "cornerRadius", "facebookId", "twitterId", "googleId", "instagramId", "vkontakteId", "skypeId", "gravatarId", "githubId", "src", "name", "value", "referrerpolicy", "placeholder", "initialsSize"], outputs: ["clickOnAvatar"] }] });
|
|
3188
3315
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ProfileImageTypeComponent, decorators: [{
|
|
3189
3316
|
type: Component,
|
|
3190
3317
|
args: [{ selector: 'app-formly-profile-image-type', template: `
|
|
@@ -3283,10 +3410,10 @@ class CameraSwitchComponent {
|
|
|
3283
3410
|
ngOnDestroy() { }
|
|
3284
3411
|
}
|
|
3285
3412
|
CameraSwitchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CameraSwitchComponent, deps: [{ token: NgxScandocCameraProvider }], target: i0.ɵɵFactoryTarget.Component });
|
|
3286
|
-
CameraSwitchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CameraSwitchComponent, selector: "ngx-scan-camera-switch", ngImport: i0, template: "<mat-form-field\n style=\"font-size: 14px; width: 200px; margin-top: 8px\"\n class=\"w-100 mr-16 mt-8\"\n>\n <mat-label>
|
|
3413
|
+
CameraSwitchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: CameraSwitchComponent, selector: "ngx-scan-camera-switch", ngImport: i0, template: "<mat-form-field\n style=\"font-size: 14px; width: 200px; margin-top: 8px\"\n class=\"w-100 mr-16 mt-8\"\n>\n <mat-label> {{ \"scandoc.camera\" | translate }} </mat-label>\n <mat-select\n (selectionChange)=\"cameraProvider.selectCamera($event)\"\n [(ngModel)]=\"cameraProvider.deviceId\"\n >\n <mat-option\n *ngFor=\"let device of cameraProvider.mediaDevices\"\n [value]=\"device.deviceId\"\n >\n {{ device.label }}\n </mat-option>\n </mat-select>\n</mat-form-field>\n", styles: [":host{display:flex;flex-direction:column!important;flex:1}\n"], dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$1.MatLabel, selector: "mat-label" }, { kind: "component", type: i5$1.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i6$1.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }] });
|
|
3287
3414
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CameraSwitchComponent, decorators: [{
|
|
3288
3415
|
type: Component,
|
|
3289
|
-
args: [{ selector: 'ngx-scan-camera-switch', template: "<mat-form-field\n style=\"font-size: 14px; width: 200px; margin-top: 8px\"\n class=\"w-100 mr-16 mt-8\"\n>\n <mat-label>
|
|
3416
|
+
args: [{ selector: 'ngx-scan-camera-switch', template: "<mat-form-field\n style=\"font-size: 14px; width: 200px; margin-top: 8px\"\n class=\"w-100 mr-16 mt-8\"\n>\n <mat-label> {{ \"scandoc.camera\" | translate }} </mat-label>\n <mat-select\n (selectionChange)=\"cameraProvider.selectCamera($event)\"\n [(ngModel)]=\"cameraProvider.deviceId\"\n >\n <mat-option\n *ngFor=\"let device of cameraProvider.mediaDevices\"\n [value]=\"device.deviceId\"\n >\n {{ device.label }}\n </mat-option>\n </mat-select>\n</mat-form-field>\n", styles: [":host{display:flex;flex-direction:column!important;flex:1}\n"] }]
|
|
3290
3417
|
}], ctorParameters: function () { return [{ type: NgxScandocCameraProvider }]; } });
|
|
3291
3418
|
|
|
3292
3419
|
class CoreComponentsModule {
|
|
@@ -3437,7 +3564,7 @@ class ConfirmComponent {
|
|
|
3437
3564
|
close() { }
|
|
3438
3565
|
}
|
|
3439
3566
|
ConfirmComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ConfirmComponent, deps: [{ token: i1$4.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
3440
|
-
ConfirmComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ConfirmComponent, selector: "app-confirm", host: { listeners: { "document:keyup.enter": "onEnterPress($event)", "document:keyup.escape": "onEscapePress($event)" } }, ngImport: i0, template: "<header class=\"page-header\" fxLayout=\"row\" fxLayoutAlign=\"start center\">\n\n\n <div class=\"title\" ngClass.lt-sm=\"title-small\">\n {{ data.title | translate }}\n\n <!-- {{ data.text.statusText }} {{ data.text.status }} -->\n </div>\n\n <span fxFlex></span>\n\n <!-- <div class=\"separator\"></div>\n\n <button mat-button (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button> -->\n <!-- <mat-icon class=\"mr-16\" style=\"color:#888;\">info_outline</mat-icon> -->\n</header>\n\n<div fxLayout=\"column\" fxLayoutAlign=\"center center\">\n <!-- <img\n style=\"height: 240px; margin: 34px 0px;display: none;\"\n [src]=\"'/assets/images/illustrations/' + images[type]\"\n /> -->\n <!-- <img style=\"width:60px;\" src=\"/assets/images/illustrations/door-lock.png\"> -->\n\n <div class=\"text\" *ngIf=\"data.text\">\n <span [innerHtml]=\"data.text\"></span>\n </div>\n</div>\n\n<!-- -->\n\n<footer>\n\n <div class=\"actions\" fxLayout=\"row\" fxLayoutAlign=\"end center\">\n <button\n *ngIf=\"!data.alert && !options?.hideCancelButton\"\n (click)=\"action(false)\"\n mat-raised-button\n >\n {{ data.cancel || 'core.page.cancel' | translate }}\n </button>\n\n <button\n *ngIf=\"data.no && !options?.hideNoButton\"\n (click)=\"action('no')\"\n\n mat-raised-button\n >\n {{ data.no }}\n </button>\n <button\n *ngIf=\"!data.hideOkButton && !options?.hideOkButton\"\n (click)=\"action(true)\"\n color=\"accent\"\n mat-raised-button\n >\n <ng-container *ngIf=\"!data.alert\">\n {{ data.ok || 'core.page.confirm' | translate }}\n </ng-container>\n\n <ng-container *ngIf=\"data.alert\">\n {{ data.ok || 'core.page.close' | translate }}\n </ng-container>\n </button>\n </div>\n</footer>\n", styles: [":host{display:flex;flex-direction:column;flex:1;height:100%;width:100%}.title{font-size:18px}.text{padding:0 30px;text-align:center;font-size:16px;margin:40px 0}.actions{min-height:60px}.actions button{min-width:120px;margin-right:16px;box-shadow:none;text-transform:uppercase}footer{background-color:#fff}footer button{box-shadow:none!important;border:1px solid rgba(0,0,0,.12);font-size:13px}\n", ".page-header{z-index:2000;height:64px;padding:0;background-color:#fff;border-bottom:1px solid rgba(0,0,0,.12)}.page-header .title{padding-left:24px;line-height:64px;font-size:18px}.page-header .separator{width:1px;background-color:#0000001f;height:100%}.page-header .total{line-height:64px}.page-header .total span{font-weight:700}.page-footer{height:64px}.page-footer button{margin-left:24px;box-shadow:none!important}\n"], dependencies: [{ kind: "directive", type:
|
|
3567
|
+
ConfirmComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ConfirmComponent, selector: "app-confirm", host: { listeners: { "document:keyup.enter": "onEnterPress($event)", "document:keyup.escape": "onEscapePress($event)" } }, ngImport: i0, template: "<header class=\"page-header\" fxLayout=\"row\" fxLayoutAlign=\"start center\">\n\n\n <div class=\"title\" ngClass.lt-sm=\"title-small\">\n {{ data.title | translate }}\n\n <!-- {{ data.text.statusText }} {{ data.text.status }} -->\n </div>\n\n <span fxFlex></span>\n\n <!-- <div class=\"separator\"></div>\n\n <button mat-button (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button> -->\n <!-- <mat-icon class=\"mr-16\" style=\"color:#888;\">info_outline</mat-icon> -->\n</header>\n\n<div fxLayout=\"column\" fxLayoutAlign=\"center center\">\n <!-- <img\n style=\"height: 240px; margin: 34px 0px;display: none;\"\n [src]=\"'/assets/images/illustrations/' + images[type]\"\n /> -->\n <!-- <img style=\"width:60px;\" src=\"/assets/images/illustrations/door-lock.png\"> -->\n\n <div class=\"text\" *ngIf=\"data.text\">\n <span [innerHtml]=\"data.text\"></span>\n </div>\n</div>\n\n<!-- -->\n\n<footer>\n\n <div class=\"actions\" fxLayout=\"row\" fxLayoutAlign=\"end center\">\n <button\n *ngIf=\"!data.alert && !options?.hideCancelButton\"\n (click)=\"action(false)\"\n mat-raised-button\n >\n {{ data.cancel || 'core.page.cancel' | translate }}\n </button>\n\n <button\n *ngIf=\"data.no && !options?.hideNoButton\"\n (click)=\"action('no')\"\n\n mat-raised-button\n >\n {{ data.no }}\n </button>\n <button\n *ngIf=\"!data.hideOkButton && !options?.hideOkButton\"\n (click)=\"action(true)\"\n color=\"accent\"\n mat-raised-button\n >\n <ng-container *ngIf=\"!data.alert\">\n {{ data.ok || 'core.page.confirm' | translate }}\n </ng-container>\n\n <ng-container *ngIf=\"data.alert\">\n {{ data.ok || 'core.page.close' | translate }}\n </ng-container>\n </button>\n </div>\n</footer>\n", styles: [":host{display:flex;flex-direction:column;flex:1;height:100%;width:100%}.title{font-size:18px}.text{padding:0 30px;text-align:center;font-size:16px;margin:40px 0}.actions{min-height:60px}.actions button{min-width:120px;margin-right:16px;box-shadow:none;text-transform:uppercase}footer{background-color:#fff}footer button{box-shadow:none!important;border:1px solid rgba(0,0,0,.12);font-size:13px}\n", ".page-header{z-index:2000;height:64px;padding:0;background-color:#fff;border-bottom:1px solid rgba(0,0,0,.12)}.page-header .title{padding-left:24px;line-height:64px;font-size:18px}.page-header .separator{width:1px;background-color:#0000001f;height:100%}.page-header .total{line-height:64px}.page-header .total span{font-weight:700}.page-footer{height:64px}.page-footer button{margin-left:24px;box-shadow:none!important}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }] });
|
|
3441
3568
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ConfirmComponent, decorators: [{
|
|
3442
3569
|
type: Component,
|
|
3443
3570
|
args: [{ selector: 'app-confirm', template: "<header class=\"page-header\" fxLayout=\"row\" fxLayoutAlign=\"start center\">\n\n\n <div class=\"title\" ngClass.lt-sm=\"title-small\">\n {{ data.title | translate }}\n\n <!-- {{ data.text.statusText }} {{ data.text.status }} -->\n </div>\n\n <span fxFlex></span>\n\n <!-- <div class=\"separator\"></div>\n\n <button mat-button (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button> -->\n <!-- <mat-icon class=\"mr-16\" style=\"color:#888;\">info_outline</mat-icon> -->\n</header>\n\n<div fxLayout=\"column\" fxLayoutAlign=\"center center\">\n <!-- <img\n style=\"height: 240px; margin: 34px 0px;display: none;\"\n [src]=\"'/assets/images/illustrations/' + images[type]\"\n /> -->\n <!-- <img style=\"width:60px;\" src=\"/assets/images/illustrations/door-lock.png\"> -->\n\n <div class=\"text\" *ngIf=\"data.text\">\n <span [innerHtml]=\"data.text\"></span>\n </div>\n</div>\n\n<!-- -->\n\n<footer>\n\n <div class=\"actions\" fxLayout=\"row\" fxLayoutAlign=\"end center\">\n <button\n *ngIf=\"!data.alert && !options?.hideCancelButton\"\n (click)=\"action(false)\"\n mat-raised-button\n >\n {{ data.cancel || 'core.page.cancel' | translate }}\n </button>\n\n <button\n *ngIf=\"data.no && !options?.hideNoButton\"\n (click)=\"action('no')\"\n\n mat-raised-button\n >\n {{ data.no }}\n </button>\n <button\n *ngIf=\"!data.hideOkButton && !options?.hideOkButton\"\n (click)=\"action(true)\"\n color=\"accent\"\n mat-raised-button\n >\n <ng-container *ngIf=\"!data.alert\">\n {{ data.ok || 'core.page.confirm' | translate }}\n </ng-container>\n\n <ng-container *ngIf=\"data.alert\">\n {{ data.ok || 'core.page.close' | translate }}\n </ng-container>\n </button>\n </div>\n</footer>\n", styles: [":host{display:flex;flex-direction:column;flex:1;height:100%;width:100%}.title{font-size:18px}.text{padding:0 30px;text-align:center;font-size:16px;margin:40px 0}.actions{min-height:60px}.actions button{min-width:120px;margin-right:16px;box-shadow:none;text-transform:uppercase}footer{background-color:#fff}footer button{box-shadow:none!important;border:1px solid rgba(0,0,0,.12);font-size:13px}\n", ".page-header{z-index:2000;height:64px;padding:0;background-color:#fff;border-bottom:1px solid rgba(0,0,0,.12)}.page-header .title{padding-left:24px;line-height:64px;font-size:18px}.page-header .separator{width:1px;background-color:#0000001f;height:100%}.page-header .total{line-height:64px}.page-header .total span{font-weight:700}.page-footer{height:64px}.page-footer button{margin-left:24px;box-shadow:none!important}\n"] }]
|
|
@@ -3808,7 +3935,7 @@ class ScanSelfieComponent {
|
|
|
3808
3935
|
selfie() { }
|
|
3809
3936
|
}
|
|
3810
3937
|
ScanSelfieComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScanSelfieComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: ScanProvider }, { token: DialogsCoreProvider }, { token: i1$2.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
3811
|
-
ScanSelfieComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScanSelfieComponent, selector: "app-scan-selfie", inputs: { type: "type" }, outputs: { actions: "actions" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "wraper", first: true, predicate: ["wraper"], descendants: true }], ngImport: i0, template: "<header class=\"page-header\">\n <div class=\"title\">Selfie</div>\n\n <span class=\"flex\"></span>\n <ng-container\n *ngIf=\"\n documentTypeSelected &&\n !result &&\n !error &&\n multipleWebcamsAvailable &&\n !preview\n \"\n >\n <div class=\"separator\"></div>\n <div style=\"padding: 0px 16px\">\n <div class=\"flex-column\">\n <mat-form-field\n style=\"font-size: 14px; width: 200px; margin-top: 8px\"\n class=\"w-200 mr-16 mt-8\"\n >\n <mat-label> Camera </mat-label>\n <mat-select\n (selectionChange)=\"selectCamera($event)\"\n [(ngModel)]=\"deviceId\"\n >\n <mat-option\n *ngFor=\"let device of mediaDevices\"\n [value]=\"device.deviceId\"\n >\n {{ device.label }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </div>\n </ng-container>\n\n <ng-container>\n <div class=\"separator\"></div>\n\n <button mat-button (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n </ng-container>\n <!-- <ng-container *ngIf=\"type === 'desktop'\">\n <div class=\"separator\"></div>\n <button mat-button (click)=\"sendMobile()\">\n <mat-icon>tablet_mac</mat-icon>\n </button>\n\n <div class=\"separator\"></div>\n\n <button mat-button (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n </ng-container> -->\n</header>\n\n<div *ngIf=\"!result\" class=\"flex-column flex\">\n <div #wraper class=\"wraper flex flex-row\">\n <div\n style=\"\n position: absolute;\n top: 0px;\n left: 0px;\n right: 0px;\n bottom: 0px;\n z-index: 20;\n background-color: whitesmoke;\n \"\n *ngIf=\"!cameraReady && !preview\"\n >\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n </div>\n\n <ng-container *ngIf=\"!error\">\n <!-- <div\n class=\"rectangle\"\n [ngStyle]=\"{\n 'width.px': videoHeight * 0.75 * 1.588,\n 'height.px': videoHeight * 0.75\n }\"\n ></div>\n <svg\n *ngIf=\"videoWidth\"\n style=\"position: absolute; left: 0px; top: 0px\"\n width=\"0\"\n height=\"0\"\n >\n <defs>\n <clipPath id=\"myClip\">\n <rect\n stroke-width=\"6\"\n stroke-color=\"red\"\n [attr.x]=\"(videoWidth - videoHeight * 0.75 * 1.588) / 2\"\n [attr.y]=\"(videoHeight * 0.25) / 2\"\n [attr.width]=\"videoHeight * 0.75 * 1.588\"\n [attr.height]=\"videoHeight * 0.75\"\n rx=\"25\"\n />\n </clipPath>\n </defs>\n </svg> -->\n\n <ngx-scandoc-webcam\n *ngIf=\"!preview && !scaning\"\n class=\"main flex\"\n [imageQuality]=\"1\"\n #webcam\n [trigger]=\"trigger\"\n (imageCapture)=\"handleImage($event)\"\n [allowCameraSwitch]=\"allowCameraSwitch\"\n [videoOptions]=\"videoOptions\"\n [switchCamera]=\"nextWebcamObservable\"\n (cameraSwitched)=\"cameraWasSwitched($event)\"\n (initError)=\"handleInitError($event)\"\n type=\"selfie\"\n [width]=\"width\"\n [height]=\"height\"\n (destroyed)=\"cameraOff($event)\"\n >\n </ngx-scandoc-webcam>\n </ng-container>\n <div\n class=\"previewData\"\n *ngIf=\"preview\"\n style=\"\n z-index: 20;\n position: absolute;\n width: 100%;\n height: 100%;\n flex: 1;\n display: flex;\n flex-direction: row;\n \"\n >\n <div\n class=\"scanPreview\"\n style=\"display: flex; flex-direction: column; flex: 1\"\n *ngIf=\"!error && !scaning\"\n >\n <div\n style=\"flex: 1\"\n class=\"image\"\n [style.background-image]=\"'url(' + preview + ')'\"\n ></div>\n </div>\n </div>\n </div>\n\n <footer class=\"p-8 flex-row\">\n <button\n [disabled]=\"!cameraReady\"\n class=\"w-100-p\"\n *ngIf=\"!preview\"\n mat-raised-button\n (click)=\"scan()\"\n >\n <ng-container> TAKE SELFIE </ng-container>\n </button>\n\n <div\n class=\"w-100-p flex-row flex\"\n *ngIf=\"preview\"\n style=\"align-items: center\"\n >\n <button style=\"flex: 1\" class=\"mr-4\" mat-raised-button (click)=\"retry()\">\n RETRY\n </button>\n\n <button\n [disabled]=\"error\"\n style=\"flex: 1\"\n class=\"ml-4\"\n mat-raised-button\n (click)=\"continue()\"\n >\n CONTINUE\n </button>\n </div>\n </footer>\n</div>\n", styles: [":host{display:flex;flex-direction:column!important;flex:1;background-color:#f5f5f5}.page-header{display:flex;flex-direction:row}.flex{flex:1}.flex-column{display:flex;flex-direction:column}.flex-row{display:flex;flex-direction:row}.element{margin-bottom:8px}.element label{font-size:14px}.element div{font-size:18px}.wraper{position:relative;overflow:hidden}h3{color:#459ae5;font-size:16px}.preview{width:100%;border-radius:1%}.documentTypeWraper{width:400px}.documentTypeWraper .label{font-size:14px;margin-bottom:20px}.documentTypeWraper button{box-shadow:none}.overPane{position:absolute;width:100%;height:100%;top:0;left:0}.overPane app-webcam{clip-path:url(#myClip)}.subhead{height:55px;padding-top:8px}.rectangle{z-index:2;position:absolute;top:50%;left:50%;width:85.6mm;height:53.98mm;transform:translate(-50%,-50%);box-sizing:border-box;border:2px dashed #459be5;border-radius:3mm}.mask{z-index:1;position:absolute;width:100%;height:100%;background-position:center center;background-size:380mm;background-repeat:no-repeat}.label{font-size:11px;margin-top:4px}footer button{box-shadow:none!important;height:45px;min-height:45px;border:1px solid rgba(0,0,0,.12);text-transform:uppercase}h4{font-size:16px}.images label{font-size:11px;color:#888;line-height:20px}.images .title{padding:8px 0;font-weight:600}.images img{margin-bottom:16px}.error .title{font-size:22px}.error ul{font-size:18px}.photo{width:120px;height:120px;overflow:hidden}.signature{width:200px}mat-card{box-shadow:none!important}.scanBlastWraper button{text-transform:uppercase}.scanBlastWraper.mobile mat-card{margin:4px!important}.scanBlastWraper.mobile .description{font-size:12px;flex-direction:row!important}.scanBlastWraper.mobile .description .imgWrap{padding:0!important}.scanBlastWraper.mobile .description .btnActions{position:absolute;right:0}.scanBlastWraper.mobile .description button{font-size:11px!important;margin:0!important;position:absolute;right:16px}.scanBlastWraper.mobile .description button.rotateButton{top:58px}.scanBlastWraper.mobile .description button.remButton{top:8px}.scanBlastWraper.mobile .description button mat-icon{margin:0!important}.scanBlastWraper.mobile .description button div.label{display:none}.mobile .scanBlast button{font-size:11px!important}.scanBlast{display:flex;flex-direction:row;flex:1;padding:0 4px}.scanBlast mat-card{padding:0;box-shadow:none;margin:8px 4px;flex:1}.scanBlast mat-card .head{display:flex;flex-direction:row;align-items:center;justify-items:center;border-bottom:1px solid rgba(0,0,0,.12);height:60px;padding:8px}.scanBlast mat-card .head.small{height:30px!important;padding:4px 8px!important}.scanBlast mat-card .head.small .title{font-size:12px!important;margin-left:4px!important}.scanBlast mat-card .head button{max-width:120px;height:40px;box-shadow:none;border:1px solid rgba(0,0,0,.12)}.scanBlast mat-card .head .title{margin-left:16px;color:#459ae5;font-size:16px}.scanBlast mat-card .content{margin:8px;flex:1}.scanBlast mat-card .description{text-align:center;color:#888;font-size:14px}.scanBlast mat-card .actions{background-color:#e9e9e9;display:flex;flex-direction:row}.scanBlast mat-card .actions .mat-button-disabled{background-color:#fff!important}.scanBlast mat-card .actions button{box-shadow:none;width:50%;margin:8px;height:40px;font-size:12px}.scanBlast mat-card .actions button mat-icon{margin-right:8px}.scanBlast mat-card .previewPlaceholder{flex:1;border-radius:6px;display:flex;flex-direction:column}.scanBlast mat-card .previewPlaceholder .description{display:flex;flex:1;flex-direction:column;justify-content:center}.scanBlast mat-card .previewPlaceholder button{box-shadow:none;margin-top:8px;height:40px;font-size:12px}.scanBlast mat-card .previewPlaceholder button mat-icon{margin-right:8px}.scanBlast mat-card .previewPlaceholder .imgWrap{flex-direction:column;flex:1;padding:8px;background-color:#f5f5f5;border-radius:4px}.scanBlast mat-card .previewPlaceholder .imgWrap img{width:100%;border-radius:4px}.scanBlast mat-card .previewPlaceholder .imgWrap .image{background-position:center;background-repeat:no-repeat;background-size:contain}.mr-4{margin-right:4px}.ml-4{margin-left:4px}.p-16{padding:16px}.p-8{padding:8px}.py-16{padding:16px 0}.w-100-p{width:100%}.scanPreview{padding:16px}.scanPreview .image{background-position:center;background-repeat:no-repeat;background-size:contain}.empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center}.summary label{font-size:12px;color:#888;margin-top:2px}.summary .name{font-size:14px}.selfieContainer{display:flex;flex-direction:column;margin-bottom:20px}.selfieContainer button{box-shadow:none;border:1px solid rgba(0,0,0,.12)}.selfieContainer .selfie{margin:8px auto;width:120px;height:120px;border-radius:60px;border:1px solid rgba(0,0,0,.12)}\n", ".page-header{z-index:2000;height:64px;padding:0;background-color:#fff;border-bottom:1px solid rgba(0,0,0,.12)}.page-header .title{padding-left:24px;line-height:64px;font-size:18px}.page-header .separator{width:1px;background-color:#0000001f;height:100%}.page-header .total{line-height:64px}.page-header .total span{font-weight:700}.page-footer{height:64px}.page-footer button{margin-left:24px;box-shadow:none!important}\n"], dependencies: [{ kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$1.MatLabel, selector: "mat-label" }, { kind: "component", type: i5$2.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i6$1.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i7$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: WebcamComponent, selector: "ngx-scandoc-webcam", inputs: ["imageHandler", "id", "type", "width", "height", "videoOptions", "allowCameraSwitch", "mirrorImage", "captureImageData", "imageType", "imageQuality", "trigger", "switchCamera"], outputs: ["imageCapture", "initError", "imageClick", "cameraSwitched", "videoReady", "destroyed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3938
|
+
ScanSelfieComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScanSelfieComponent, selector: "app-scan-selfie", inputs: { type: "type" }, outputs: { actions: "actions" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "wraper", first: true, predicate: ["wraper"], descendants: true }], ngImport: i0, template: "<header class=\"page-header\">\n <div class=\"title\">Selfie</div>\n\n <span class=\"flex\"></span>\n <ng-container\n *ngIf=\"\n documentTypeSelected &&\n !result &&\n !error &&\n multipleWebcamsAvailable &&\n !preview\n \"\n >\n <div class=\"separator\"></div>\n <div style=\"padding: 0px 16px\">\n <div class=\"flex-column\">\n <mat-form-field\n style=\"font-size: 14px; width: 200px; margin-top: 8px\"\n class=\"w-200 mr-16 mt-8\"\n >\n <mat-label> Camera </mat-label>\n <mat-select\n (selectionChange)=\"selectCamera($event)\"\n [(ngModel)]=\"deviceId\"\n >\n <mat-option\n *ngFor=\"let device of mediaDevices\"\n [value]=\"device.deviceId\"\n >\n {{ device.label }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </div>\n </ng-container>\n\n <ng-container>\n <div class=\"separator\"></div>\n\n <button mat-button (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n </ng-container>\n <!-- <ng-container *ngIf=\"type === 'desktop'\">\n <div class=\"separator\"></div>\n <button mat-button (click)=\"sendMobile()\">\n <mat-icon>tablet_mac</mat-icon>\n </button>\n\n <div class=\"separator\"></div>\n\n <button mat-button (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n </ng-container> -->\n</header>\n\n<div *ngIf=\"!result\" class=\"flex-column flex\">\n <div #wraper class=\"wraper flex flex-row\">\n <div\n style=\"\n position: absolute;\n top: 0px;\n left: 0px;\n right: 0px;\n bottom: 0px;\n z-index: 20;\n background-color: whitesmoke;\n \"\n *ngIf=\"!cameraReady && !preview\"\n >\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n </div>\n\n <ng-container *ngIf=\"!error\">\n <!-- <div\n class=\"rectangle\"\n [ngStyle]=\"{\n 'width.px': videoHeight * 0.75 * 1.588,\n 'height.px': videoHeight * 0.75\n }\"\n ></div>\n <svg\n *ngIf=\"videoWidth\"\n style=\"position: absolute; left: 0px; top: 0px\"\n width=\"0\"\n height=\"0\"\n >\n <defs>\n <clipPath id=\"myClip\">\n <rect\n stroke-width=\"6\"\n stroke-color=\"red\"\n [attr.x]=\"(videoWidth - videoHeight * 0.75 * 1.588) / 2\"\n [attr.y]=\"(videoHeight * 0.25) / 2\"\n [attr.width]=\"videoHeight * 0.75 * 1.588\"\n [attr.height]=\"videoHeight * 0.75\"\n rx=\"25\"\n />\n </clipPath>\n </defs>\n </svg> -->\n\n <ngx-scandoc-webcam\n *ngIf=\"!preview && !scaning\"\n class=\"main flex\"\n [imageQuality]=\"1\"\n #webcam\n [trigger]=\"trigger\"\n (imageCapture)=\"handleImage($event)\"\n [allowCameraSwitch]=\"allowCameraSwitch\"\n [videoOptions]=\"videoOptions\"\n [switchCamera]=\"nextWebcamObservable\"\n (cameraSwitched)=\"cameraWasSwitched($event)\"\n (initError)=\"handleInitError($event)\"\n type=\"selfie\"\n [width]=\"width\"\n [height]=\"height\"\n (destroyed)=\"cameraOff($event)\"\n >\n </ngx-scandoc-webcam>\n </ng-container>\n <div\n class=\"previewData\"\n *ngIf=\"preview\"\n style=\"\n z-index: 20;\n position: absolute;\n width: 100%;\n height: 100%;\n flex: 1;\n display: flex;\n flex-direction: row;\n \"\n >\n <div\n class=\"scanPreview\"\n style=\"display: flex; flex-direction: column; flex: 1\"\n *ngIf=\"!error && !scaning\"\n >\n <div\n style=\"flex: 1\"\n class=\"image\"\n [style.background-image]=\"'url(' + preview + ')'\"\n ></div>\n </div>\n </div>\n </div>\n\n <footer class=\"p-8 flex-row\">\n <button\n [disabled]=\"!cameraReady\"\n class=\"w-100-p\"\n *ngIf=\"!preview\"\n mat-raised-button\n (click)=\"scan()\"\n >\n <ng-container> TAKE SELFIE </ng-container>\n </button>\n\n <div\n class=\"w-100-p flex-row flex\"\n *ngIf=\"preview\"\n style=\"align-items: center\"\n >\n <button style=\"flex: 1\" class=\"mr-4\" mat-raised-button (click)=\"retry()\">\n RETRY\n </button>\n\n <button\n [disabled]=\"error\"\n style=\"flex: 1\"\n class=\"ml-4\"\n mat-raised-button\n (click)=\"continue()\"\n >\n CONTINUE\n </button>\n </div>\n </footer>\n</div>\n", styles: [":host{display:flex;flex-direction:column!important;flex:1;background-color:#f5f5f5}.page-header{display:flex;flex-direction:row}.flex{flex:1}.flex-column{display:flex;flex-direction:column}.flex-row{display:flex;flex-direction:row}.element{margin-bottom:8px}.element label{font-size:14px}.element div{font-size:18px}.wraper{position:relative;overflow:hidden}h3{color:#459ae5;font-size:16px}.preview{width:100%;border-radius:1%}.documentTypeWraper{width:400px}.documentTypeWraper .label{font-size:14px;margin-bottom:20px}.documentTypeWraper button{box-shadow:none}.overPane{position:absolute;width:100%;height:100%;top:0;left:0}.overPane app-webcam{clip-path:url(#myClip)}.subhead{height:55px;padding-top:8px}.rectangle{z-index:2;position:absolute;top:50%;left:50%;width:85.6mm;height:53.98mm;transform:translate(-50%,-50%);box-sizing:border-box;border:2px dashed #459be5;border-radius:3mm}.mask{z-index:1;position:absolute;width:100%;height:100%;background-position:center center;background-size:380mm;background-repeat:no-repeat}.label{font-size:11px;margin-top:4px}footer button{box-shadow:none!important;height:45px;min-height:45px;border:1px solid rgba(0,0,0,.12);text-transform:uppercase}h4{font-size:16px}.images label{font-size:11px;color:#888;line-height:20px}.images .title{padding:8px 0;font-weight:600}.images img{margin-bottom:16px}.error .title{font-size:22px}.error ul{font-size:18px}.photo{width:120px;height:120px;overflow:hidden}.signature{width:200px}mat-card{box-shadow:none!important}.scanBlastWraper button{text-transform:uppercase}.scanBlastWraper.mobile mat-card{margin:4px!important}.scanBlastWraper.mobile .description{font-size:12px;flex-direction:row!important}.scanBlastWraper.mobile .description .imgWrap{padding:0!important}.scanBlastWraper.mobile .description .btnActions{position:absolute;right:0}.scanBlastWraper.mobile .description button{font-size:11px!important;margin:0!important;position:absolute;right:16px}.scanBlastWraper.mobile .description button.rotateButton{top:58px}.scanBlastWraper.mobile .description button.remButton{top:8px}.scanBlastWraper.mobile .description button mat-icon{margin:0!important}.scanBlastWraper.mobile .description button div.label{display:none}.mobile .scanBlast button{font-size:11px!important}.scanBlast{display:flex;flex-direction:row;flex:1;padding:0 4px}.scanBlast mat-card{padding:0;box-shadow:none;margin:8px 4px;flex:1}.scanBlast mat-card .head{display:flex;flex-direction:row;align-items:center;justify-items:center;border-bottom:1px solid rgba(0,0,0,.12);height:60px;padding:8px}.scanBlast mat-card .head.small{height:30px!important;padding:4px 8px!important}.scanBlast mat-card .head.small .title{font-size:12px!important;margin-left:4px!important}.scanBlast mat-card .head button{max-width:120px;height:40px;box-shadow:none;border:1px solid rgba(0,0,0,.12)}.scanBlast mat-card .head .title{margin-left:16px;color:#459ae5;font-size:16px}.scanBlast mat-card .content{margin:8px;flex:1}.scanBlast mat-card .description{text-align:center;color:#888;font-size:14px}.scanBlast mat-card .actions{background-color:#e9e9e9;display:flex;flex-direction:row}.scanBlast mat-card .actions .mat-button-disabled{background-color:#fff!important}.scanBlast mat-card .actions button{box-shadow:none;width:50%;margin:8px;height:40px;font-size:12px}.scanBlast mat-card .actions button mat-icon{margin-right:8px}.scanBlast mat-card .previewPlaceholder{flex:1;border-radius:6px;display:flex;flex-direction:column}.scanBlast mat-card .previewPlaceholder .description{display:flex;flex:1;flex-direction:column;justify-content:center}.scanBlast mat-card .previewPlaceholder button{box-shadow:none;margin-top:8px;height:40px;font-size:12px}.scanBlast mat-card .previewPlaceholder button mat-icon{margin-right:8px}.scanBlast mat-card .previewPlaceholder .imgWrap{flex-direction:column;flex:1;padding:8px;background-color:#f5f5f5;border-radius:4px}.scanBlast mat-card .previewPlaceholder .imgWrap img{width:100%;border-radius:4px}.scanBlast mat-card .previewPlaceholder .imgWrap .image{background-position:center;background-repeat:no-repeat;background-size:contain}.mr-4{margin-right:4px}.ml-4{margin-left:4px}.p-16{padding:16px}.p-8{padding:8px}.py-16{padding:16px 0}.w-100-p{width:100%}.scanPreview{padding:16px}.scanPreview .image{background-position:center;background-repeat:no-repeat;background-size:contain}.empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center}.summary label{font-size:12px;color:#888;margin-top:2px}.summary .name{font-size:14px}.selfieContainer{display:flex;flex-direction:column;margin-bottom:20px}.selfieContainer button{box-shadow:none;border:1px solid rgba(0,0,0,.12)}.selfieContainer .selfie{margin:8px auto;width:120px;height:120px;border-radius:60px;border:1px solid rgba(0,0,0,.12)}\n", ".page-header{z-index:2000;height:64px;padding:0;background-color:#fff;border-bottom:1px solid rgba(0,0,0,.12)}.page-header .title{padding-left:24px;line-height:64px;font-size:18px}.page-header .separator{width:1px;background-color:#0000001f;height:100%}.page-header .total{line-height:64px}.page-header .total span{font-weight:700}.page-footer{height:64px}.page-footer button{margin-left:24px;box-shadow:none!important}\n"], dependencies: [{ kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4$1.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$1.MatLabel, selector: "mat-label" }, { kind: "component", type: i5$1.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i6$1.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i7$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: WebcamComponent, selector: "ngx-scandoc-webcam", inputs: ["imageHandler", "id", "type", "width", "height", "videoOptions", "allowCameraSwitch", "mirrorImage", "captureImageData", "imageType", "imageQuality", "trigger", "switchCamera"], outputs: ["imageCapture", "initError", "imageClick", "cameraSwitched", "videoReady", "destroyed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3812
3939
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScanSelfieComponent, decorators: [{
|
|
3813
3940
|
type: Component,
|
|
3814
3941
|
args: [{ selector: 'app-scan-selfie', changeDetection: ChangeDetectionStrategy.OnPush, template: "<header class=\"page-header\">\n <div class=\"title\">Selfie</div>\n\n <span class=\"flex\"></span>\n <ng-container\n *ngIf=\"\n documentTypeSelected &&\n !result &&\n !error &&\n multipleWebcamsAvailable &&\n !preview\n \"\n >\n <div class=\"separator\"></div>\n <div style=\"padding: 0px 16px\">\n <div class=\"flex-column\">\n <mat-form-field\n style=\"font-size: 14px; width: 200px; margin-top: 8px\"\n class=\"w-200 mr-16 mt-8\"\n >\n <mat-label> Camera </mat-label>\n <mat-select\n (selectionChange)=\"selectCamera($event)\"\n [(ngModel)]=\"deviceId\"\n >\n <mat-option\n *ngFor=\"let device of mediaDevices\"\n [value]=\"device.deviceId\"\n >\n {{ device.label }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </div>\n </ng-container>\n\n <ng-container>\n <div class=\"separator\"></div>\n\n <button mat-button (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n </ng-container>\n <!-- <ng-container *ngIf=\"type === 'desktop'\">\n <div class=\"separator\"></div>\n <button mat-button (click)=\"sendMobile()\">\n <mat-icon>tablet_mac</mat-icon>\n </button>\n\n <div class=\"separator\"></div>\n\n <button mat-button (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n </ng-container> -->\n</header>\n\n<div *ngIf=\"!result\" class=\"flex-column flex\">\n <div #wraper class=\"wraper flex flex-row\">\n <div\n style=\"\n position: absolute;\n top: 0px;\n left: 0px;\n right: 0px;\n bottom: 0px;\n z-index: 20;\n background-color: whitesmoke;\n \"\n *ngIf=\"!cameraReady && !preview\"\n >\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n </div>\n\n <ng-container *ngIf=\"!error\">\n <!-- <div\n class=\"rectangle\"\n [ngStyle]=\"{\n 'width.px': videoHeight * 0.75 * 1.588,\n 'height.px': videoHeight * 0.75\n }\"\n ></div>\n <svg\n *ngIf=\"videoWidth\"\n style=\"position: absolute; left: 0px; top: 0px\"\n width=\"0\"\n height=\"0\"\n >\n <defs>\n <clipPath id=\"myClip\">\n <rect\n stroke-width=\"6\"\n stroke-color=\"red\"\n [attr.x]=\"(videoWidth - videoHeight * 0.75 * 1.588) / 2\"\n [attr.y]=\"(videoHeight * 0.25) / 2\"\n [attr.width]=\"videoHeight * 0.75 * 1.588\"\n [attr.height]=\"videoHeight * 0.75\"\n rx=\"25\"\n />\n </clipPath>\n </defs>\n </svg> -->\n\n <ngx-scandoc-webcam\n *ngIf=\"!preview && !scaning\"\n class=\"main flex\"\n [imageQuality]=\"1\"\n #webcam\n [trigger]=\"trigger\"\n (imageCapture)=\"handleImage($event)\"\n [allowCameraSwitch]=\"allowCameraSwitch\"\n [videoOptions]=\"videoOptions\"\n [switchCamera]=\"nextWebcamObservable\"\n (cameraSwitched)=\"cameraWasSwitched($event)\"\n (initError)=\"handleInitError($event)\"\n type=\"selfie\"\n [width]=\"width\"\n [height]=\"height\"\n (destroyed)=\"cameraOff($event)\"\n >\n </ngx-scandoc-webcam>\n </ng-container>\n <div\n class=\"previewData\"\n *ngIf=\"preview\"\n style=\"\n z-index: 20;\n position: absolute;\n width: 100%;\n height: 100%;\n flex: 1;\n display: flex;\n flex-direction: row;\n \"\n >\n <div\n class=\"scanPreview\"\n style=\"display: flex; flex-direction: column; flex: 1\"\n *ngIf=\"!error && !scaning\"\n >\n <div\n style=\"flex: 1\"\n class=\"image\"\n [style.background-image]=\"'url(' + preview + ')'\"\n ></div>\n </div>\n </div>\n </div>\n\n <footer class=\"p-8 flex-row\">\n <button\n [disabled]=\"!cameraReady\"\n class=\"w-100-p\"\n *ngIf=\"!preview\"\n mat-raised-button\n (click)=\"scan()\"\n >\n <ng-container> TAKE SELFIE </ng-container>\n </button>\n\n <div\n class=\"w-100-p flex-row flex\"\n *ngIf=\"preview\"\n style=\"align-items: center\"\n >\n <button style=\"flex: 1\" class=\"mr-4\" mat-raised-button (click)=\"retry()\">\n RETRY\n </button>\n\n <button\n [disabled]=\"error\"\n style=\"flex: 1\"\n class=\"ml-4\"\n mat-raised-button\n (click)=\"continue()\"\n >\n CONTINUE\n </button>\n </div>\n </footer>\n</div>\n", styles: [":host{display:flex;flex-direction:column!important;flex:1;background-color:#f5f5f5}.page-header{display:flex;flex-direction:row}.flex{flex:1}.flex-column{display:flex;flex-direction:column}.flex-row{display:flex;flex-direction:row}.element{margin-bottom:8px}.element label{font-size:14px}.element div{font-size:18px}.wraper{position:relative;overflow:hidden}h3{color:#459ae5;font-size:16px}.preview{width:100%;border-radius:1%}.documentTypeWraper{width:400px}.documentTypeWraper .label{font-size:14px;margin-bottom:20px}.documentTypeWraper button{box-shadow:none}.overPane{position:absolute;width:100%;height:100%;top:0;left:0}.overPane app-webcam{clip-path:url(#myClip)}.subhead{height:55px;padding-top:8px}.rectangle{z-index:2;position:absolute;top:50%;left:50%;width:85.6mm;height:53.98mm;transform:translate(-50%,-50%);box-sizing:border-box;border:2px dashed #459be5;border-radius:3mm}.mask{z-index:1;position:absolute;width:100%;height:100%;background-position:center center;background-size:380mm;background-repeat:no-repeat}.label{font-size:11px;margin-top:4px}footer button{box-shadow:none!important;height:45px;min-height:45px;border:1px solid rgba(0,0,0,.12);text-transform:uppercase}h4{font-size:16px}.images label{font-size:11px;color:#888;line-height:20px}.images .title{padding:8px 0;font-weight:600}.images img{margin-bottom:16px}.error .title{font-size:22px}.error ul{font-size:18px}.photo{width:120px;height:120px;overflow:hidden}.signature{width:200px}mat-card{box-shadow:none!important}.scanBlastWraper button{text-transform:uppercase}.scanBlastWraper.mobile mat-card{margin:4px!important}.scanBlastWraper.mobile .description{font-size:12px;flex-direction:row!important}.scanBlastWraper.mobile .description .imgWrap{padding:0!important}.scanBlastWraper.mobile .description .btnActions{position:absolute;right:0}.scanBlastWraper.mobile .description button{font-size:11px!important;margin:0!important;position:absolute;right:16px}.scanBlastWraper.mobile .description button.rotateButton{top:58px}.scanBlastWraper.mobile .description button.remButton{top:8px}.scanBlastWraper.mobile .description button mat-icon{margin:0!important}.scanBlastWraper.mobile .description button div.label{display:none}.mobile .scanBlast button{font-size:11px!important}.scanBlast{display:flex;flex-direction:row;flex:1;padding:0 4px}.scanBlast mat-card{padding:0;box-shadow:none;margin:8px 4px;flex:1}.scanBlast mat-card .head{display:flex;flex-direction:row;align-items:center;justify-items:center;border-bottom:1px solid rgba(0,0,0,.12);height:60px;padding:8px}.scanBlast mat-card .head.small{height:30px!important;padding:4px 8px!important}.scanBlast mat-card .head.small .title{font-size:12px!important;margin-left:4px!important}.scanBlast mat-card .head button{max-width:120px;height:40px;box-shadow:none;border:1px solid rgba(0,0,0,.12)}.scanBlast mat-card .head .title{margin-left:16px;color:#459ae5;font-size:16px}.scanBlast mat-card .content{margin:8px;flex:1}.scanBlast mat-card .description{text-align:center;color:#888;font-size:14px}.scanBlast mat-card .actions{background-color:#e9e9e9;display:flex;flex-direction:row}.scanBlast mat-card .actions .mat-button-disabled{background-color:#fff!important}.scanBlast mat-card .actions button{box-shadow:none;width:50%;margin:8px;height:40px;font-size:12px}.scanBlast mat-card .actions button mat-icon{margin-right:8px}.scanBlast mat-card .previewPlaceholder{flex:1;border-radius:6px;display:flex;flex-direction:column}.scanBlast mat-card .previewPlaceholder .description{display:flex;flex:1;flex-direction:column;justify-content:center}.scanBlast mat-card .previewPlaceholder button{box-shadow:none;margin-top:8px;height:40px;font-size:12px}.scanBlast mat-card .previewPlaceholder button mat-icon{margin-right:8px}.scanBlast mat-card .previewPlaceholder .imgWrap{flex-direction:column;flex:1;padding:8px;background-color:#f5f5f5;border-radius:4px}.scanBlast mat-card .previewPlaceholder .imgWrap img{width:100%;border-radius:4px}.scanBlast mat-card .previewPlaceholder .imgWrap .image{background-position:center;background-repeat:no-repeat;background-size:contain}.mr-4{margin-right:4px}.ml-4{margin-left:4px}.p-16{padding:16px}.p-8{padding:8px}.py-16{padding:16px 0}.w-100-p{width:100%}.scanPreview{padding:16px}.scanPreview .image{background-position:center;background-repeat:no-repeat;background-size:contain}.empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center}.summary label{font-size:12px;color:#888;margin-top:2px}.summary .name{font-size:14px}.selfieContainer{display:flex;flex-direction:column;margin-bottom:20px}.selfieContainer button{box-shadow:none;border:1px solid rgba(0,0,0,.12)}.selfieContainer .selfie{margin:8px auto;width:120px;height:120px;border-radius:60px;border:1px solid rgba(0,0,0,.12)}\n", ".page-header{z-index:2000;height:64px;padding:0;background-color:#fff;border-bottom:1px solid rgba(0,0,0,.12)}.page-header .title{padding-left:24px;line-height:64px;font-size:18px}.page-header .separator{width:1px;background-color:#0000001f;height:100%}.page-header .total{line-height:64px}.page-header .total span{font-weight:700}.page-footer{height:64px}.page-footer button{margin-left:24px;box-shadow:none!important}\n"] }]
|
|
@@ -3838,10 +3965,10 @@ class TurnDocumentComponent {
|
|
|
3838
3965
|
}
|
|
3839
3966
|
}
|
|
3840
3967
|
TurnDocumentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TurnDocumentComponent, deps: [{ token: i1$4.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
3841
|
-
TurnDocumentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TurnDocumentComponent, selector: "app-turndocuments", ngImport: i0, template: "<div class=\"inner\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\n <!-- <img\n style=\"height: 240px; margin: 34px 0px;display: none;\"\n [src]=\"'/assets/images/illustrations/' + images[type]\"\n /> -->\n <!-- <img style=\"width:60px;\" src=\"/assets/images/illustrations/door-lock.png\"> -->\n\n <mat-icon>360</mat-icon>\n <div class=\"text\">\n <ng-container *ngIf=\"data.idScan === 'BACK'\">\n
|
|
3968
|
+
TurnDocumentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TurnDocumentComponent, selector: "app-turndocuments", ngImport: i0, template: "<div class=\"inner\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\n <!-- <img\n style=\"height: 240px; margin: 34px 0px;display: none;\"\n [src]=\"'/assets/images/illustrations/' + images[type]\"\n /> -->\n <!-- <img style=\"width:60px;\" src=\"/assets/images/illustrations/door-lock.png\"> -->\n\n <mat-icon>360</mat-icon>\n <div class=\"text\">\n <ng-container *ngIf=\"data.idScan === 'BACK'\">\n {{ \"scandoc.turnAndCapture.back\" | translate }}\n </ng-container>\n <ng-container *ngIf=\"data.idScan === 'FRONT'\">\n {{ \"scandoc.turnAndCapture.front\" | translate }}\n </ng-container>\n </div>\n</div>\n\n<!-- -->\n\n<footer>\n <button (click)=\"close()\" mat-raised-button>Ok</button>\n</footer>\n", styles: [":host{display:flex;flex-direction:column;flex:1;height:100%;width:100%}.inner{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:30px 20px 0}.inner mat-icon{width:60px;height:60px;font-size:60px}.inner .text{margin:20px 0}footer{display:flex;flex-direction:row;align-items:center;justify-content:center;padding-bottom:20px}footer button{min-width:200px;box-shadow:none;border:1px solid #ccc}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }] });
|
|
3842
3969
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TurnDocumentComponent, decorators: [{
|
|
3843
3970
|
type: Component,
|
|
3844
|
-
args: [{ selector: 'app-turndocuments', template: "<div class=\"inner\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\n <!-- <img\n style=\"height: 240px; margin: 34px 0px;display: none;\"\n [src]=\"'/assets/images/illustrations/' + images[type]\"\n /> -->\n <!-- <img style=\"width:60px;\" src=\"/assets/images/illustrations/door-lock.png\"> -->\n\n <mat-icon>360</mat-icon>\n <div class=\"text\">\n <ng-container *ngIf=\"data.idScan === 'BACK'\">\n
|
|
3971
|
+
args: [{ selector: 'app-turndocuments', template: "<div class=\"inner\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\n <!-- <img\n style=\"height: 240px; margin: 34px 0px;display: none;\"\n [src]=\"'/assets/images/illustrations/' + images[type]\"\n /> -->\n <!-- <img style=\"width:60px;\" src=\"/assets/images/illustrations/door-lock.png\"> -->\n\n <mat-icon>360</mat-icon>\n <div class=\"text\">\n <ng-container *ngIf=\"data.idScan === 'BACK'\">\n {{ \"scandoc.turnAndCapture.back\" | translate }}\n </ng-container>\n <ng-container *ngIf=\"data.idScan === 'FRONT'\">\n {{ \"scandoc.turnAndCapture.front\" | translate }}\n </ng-container>\n </div>\n</div>\n\n<!-- -->\n\n<footer>\n <button (click)=\"close()\" mat-raised-button>Ok</button>\n</footer>\n", styles: [":host{display:flex;flex-direction:column;flex:1;height:100%;width:100%}.inner{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:30px 20px 0}.inner mat-icon{width:60px;height:60px;font-size:60px}.inner .text{margin:20px 0}footer{display:flex;flex-direction:row;align-items:center;justify-content:center;padding-bottom:20px}footer button{min-width:200px;box-shadow:none;border:1px solid #ccc}\n"] }]
|
|
3845
3972
|
}], ctorParameters: function () { return [{ type: i1$4.MatDialogRef }, { type: undefined, decorators: [{
|
|
3846
3973
|
type: Inject,
|
|
3847
3974
|
args: [MAT_DIALOG_DATA]
|
|
@@ -3978,10 +4105,10 @@ class ScanProfileComponent extends BaseComponent {
|
|
|
3978
4105
|
}
|
|
3979
4106
|
}
|
|
3980
4107
|
ScanProfileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScanProfileComponent, deps: [{ token: DialogsCoreProvider }, { token: i1$4.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
3981
|
-
ScanProfileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScanProfileComponent, selector: "app-scan-profile", inputs: { type: "type" }, usesInheritance: true, ngImport: i0, template: "<header class=\"page-header\">\n <div class=\"title\" ngClass.lt-sm=\"title-small\"
|
|
4108
|
+
ScanProfileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScanProfileComponent, selector: "app-scan-profile", inputs: { type: "type" }, usesInheritance: true, ngImport: i0, template: "<header class=\"page-header\">\n <div class=\"title\" ngClass.lt-sm=\"title-small\">\n {{ \"scandoc.title\" | translate }}\n </div>\n\n <span style=\"flex: 1\"></span>\n\n <ng-container>\n <div class=\"separator\"></div>\n <div style=\"padding: 0px 16px\">\n <ngx-scan-camera-switch></ngx-scan-camera-switch>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"type === 'desktop'\">\n <div class=\"separator\"></div>\n\n <button mat-button (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n </ng-container>\n</header>\n\n<ngx-scan\n (actions)=\"actions($event)\"\n [showDialog]=\"showDialog\"\n [dialogs]=\"dialogs\"\n></ngx-scan>\n", styles: [":host{display:flex;flex-direction:column!important;flex:1;background-color:#f5f5f5;overflow:hidden}.page-header{display:flex;flex-direction:row;align-items:center}.page-header button{height:100%}\n", ".page-header{z-index:2000;height:64px;padding:0;background-color:#fff;border-bottom:1px solid rgba(0,0,0,.12)}.page-header .title{padding-left:24px;line-height:64px;font-size:18px}.page-header .separator{width:1px;background-color:#0000001f;height:100%}.page-header .total{line-height:64px}.page-header .total span{font-weight:700}.page-footer{height:64px}.page-footer button{margin-left:24px;box-shadow:none!important}\n"], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: ScanComponent, selector: "ngx-scan", inputs: ["type", "dialogs", "showDialog"], outputs: ["actions"] }, { kind: "component", type: CameraSwitchComponent, selector: "ngx-scan-camera-switch" }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3982
4109
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScanProfileComponent, decorators: [{
|
|
3983
4110
|
type: Component,
|
|
3984
|
-
args: [{ selector: 'app-scan-profile', changeDetection: ChangeDetectionStrategy.OnPush, template: "<header class=\"page-header\">\n <div class=\"title\" ngClass.lt-sm=\"title-small\"
|
|
4111
|
+
args: [{ selector: 'app-scan-profile', changeDetection: ChangeDetectionStrategy.OnPush, template: "<header class=\"page-header\">\n <div class=\"title\" ngClass.lt-sm=\"title-small\">\n {{ \"scandoc.title\" | translate }}\n </div>\n\n <span style=\"flex: 1\"></span>\n\n <ng-container>\n <div class=\"separator\"></div>\n <div style=\"padding: 0px 16px\">\n <ngx-scan-camera-switch></ngx-scan-camera-switch>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"type === 'desktop'\">\n <div class=\"separator\"></div>\n\n <button mat-button (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n </ng-container>\n</header>\n\n<ngx-scan\n (actions)=\"actions($event)\"\n [showDialog]=\"showDialog\"\n [dialogs]=\"dialogs\"\n></ngx-scan>\n", styles: [":host{display:flex;flex-direction:column!important;flex:1;background-color:#f5f5f5;overflow:hidden}.page-header{display:flex;flex-direction:row;align-items:center}.page-header button{height:100%}\n", ".page-header{z-index:2000;height:64px;padding:0;background-color:#fff;border-bottom:1px solid rgba(0,0,0,.12)}.page-header .title{padding-left:24px;line-height:64px;font-size:18px}.page-header .separator{width:1px;background-color:#0000001f;height:100%}.page-header .total{line-height:64px}.page-header .total span{font-weight:700}.page-footer{height:64px}.page-footer button{margin-left:24px;box-shadow:none!important}\n"] }]
|
|
3985
4112
|
}], ctorParameters: function () { return [{ type: DialogsCoreProvider }, { type: i1$4.MatDialogRef }]; }, propDecorators: { type: [{
|
|
3986
4113
|
type: Input
|
|
3987
4114
|
}] } });
|
|
@@ -4059,7 +4186,7 @@ class HttpErrorInterceptor {
|
|
|
4059
4186
|
}
|
|
4060
4187
|
intercept(req, next) {
|
|
4061
4188
|
//console.log(req.url);
|
|
4062
|
-
if (req.url.indexOf('
|
|
4189
|
+
if (req.url.indexOf('/ks/') >= 0 || req.url.indexOf('/assets/') >= 0) {
|
|
4063
4190
|
return next.handle(req);
|
|
4064
4191
|
}
|
|
4065
4192
|
const authProvider = this.injector.get(AuthProvider);
|
|
@@ -4073,6 +4200,7 @@ class HttpErrorInterceptor {
|
|
|
4073
4200
|
return next.handle(req);
|
|
4074
4201
|
}
|
|
4075
4202
|
}
|
|
4203
|
+
console.log('AUTH II');
|
|
4076
4204
|
this.inflightAuthRequest = authProvider.accesToken;
|
|
4077
4205
|
return this.inflightAuthRequest.pipe(share(), switchMap((token) => {
|
|
4078
4206
|
// unset request inflight
|
|
@@ -4089,9 +4217,14 @@ class HttpErrorInterceptor {
|
|
|
4089
4217
|
tokenExpired = find ? true : false;
|
|
4090
4218
|
}
|
|
4091
4219
|
console.log(err);
|
|
4092
|
-
if (err.status === 401 || tokenExpired) {
|
|
4093
|
-
authProvider.
|
|
4094
|
-
|
|
4220
|
+
if (err.status === 401 || err.status === 403 || tokenExpired) {
|
|
4221
|
+
return authProvider.refreshToken().pipe(switchMap((token) => {
|
|
4222
|
+
const transaction = req.headers.get('TransactionID');
|
|
4223
|
+
const authReq = req.clone({
|
|
4224
|
+
headers: this.getHeaders(token, transaction || ''),
|
|
4225
|
+
});
|
|
4226
|
+
return next.handle(authReq);
|
|
4227
|
+
}));
|
|
4095
4228
|
}
|
|
4096
4229
|
else {
|
|
4097
4230
|
return throwError(() => new Error('' + (err && err.status ? ':' + err.status : '')));
|
|
@@ -4118,6 +4251,226 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
4118
4251
|
type: Injectable
|
|
4119
4252
|
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
4120
4253
|
|
|
4254
|
+
class Iso11649Reference {
|
|
4255
|
+
constructor() {
|
|
4256
|
+
this.FORMAT_RF = /^RF[0-9]{2}[A-Z0-9]{1,21}$/;
|
|
4257
|
+
this.CHARCODE_A = 'A'.charCodeAt(0);
|
|
4258
|
+
this.CHARCODE_0 = '0'.charCodeAt(0);
|
|
4259
|
+
}
|
|
4260
|
+
validate(rawValue) {
|
|
4261
|
+
const value = rawValue.replace(/ /g, '');
|
|
4262
|
+
// console.log(value);
|
|
4263
|
+
if (!value.match(this.FORMAT_RF)) {
|
|
4264
|
+
return false;
|
|
4265
|
+
// throw new Error('Invalid Creditor Reference format; expecting: \'' + this.FORMAT_RF + '\', found: \'' + value + '\'');
|
|
4266
|
+
}
|
|
4267
|
+
return (this.computeWithoutCheck(value.substring(4, value.length) + value.substring(0, 4)) === 1);
|
|
4268
|
+
}
|
|
4269
|
+
computeWithoutCheck(rawValue) {
|
|
4270
|
+
return this.mod97(rawValue);
|
|
4271
|
+
}
|
|
4272
|
+
mod97(value) {
|
|
4273
|
+
let buffer = 0;
|
|
4274
|
+
let charCode;
|
|
4275
|
+
for (let i = 0; i < value.length; ++i) {
|
|
4276
|
+
charCode = value.charCodeAt(i);
|
|
4277
|
+
buffer =
|
|
4278
|
+
charCode +
|
|
4279
|
+
(charCode >= this.CHARCODE_A
|
|
4280
|
+
? buffer * 100 - this.CHARCODE_A + 10
|
|
4281
|
+
: buffer * 10 - this.CHARCODE_0);
|
|
4282
|
+
if (buffer > 1000000) {
|
|
4283
|
+
buffer %= 97;
|
|
4284
|
+
}
|
|
4285
|
+
}
|
|
4286
|
+
return buffer % 97;
|
|
4287
|
+
}
|
|
4288
|
+
}
|
|
4289
|
+
class ObjectUtils {
|
|
4290
|
+
static getValue(target, key) {
|
|
4291
|
+
if (!target) {
|
|
4292
|
+
return undefined;
|
|
4293
|
+
}
|
|
4294
|
+
const keys = key.split('.');
|
|
4295
|
+
key = '';
|
|
4296
|
+
do {
|
|
4297
|
+
key += keys.shift();
|
|
4298
|
+
const value = target[key];
|
|
4299
|
+
if (value !== undefined && (typeof value === 'object' || !keys.length)) {
|
|
4300
|
+
target = value;
|
|
4301
|
+
key = '';
|
|
4302
|
+
}
|
|
4303
|
+
else if (!keys.length) {
|
|
4304
|
+
target = undefined;
|
|
4305
|
+
}
|
|
4306
|
+
else {
|
|
4307
|
+
key += '.';
|
|
4308
|
+
}
|
|
4309
|
+
} while (keys.length);
|
|
4310
|
+
return target;
|
|
4311
|
+
}
|
|
4312
|
+
static deepCopy(inputObj) {
|
|
4313
|
+
let newObj = inputObj;
|
|
4314
|
+
if (inputObj && typeof inputObj === 'object') {
|
|
4315
|
+
newObj =
|
|
4316
|
+
Object.prototype.toString.call(inputObj) === '[object Array]' ? [] : {};
|
|
4317
|
+
for (const i of Object.keys(inputObj)) {
|
|
4318
|
+
newObj[i] = this.deepCopy(inputObj[i]);
|
|
4319
|
+
}
|
|
4320
|
+
if (Object.prototype.toString.call(inputObj) === '[object Map]') {
|
|
4321
|
+
newObj = new Map();
|
|
4322
|
+
inputObj.forEach((v, k) => {
|
|
4323
|
+
newObj.set(k, this.deepCopy(v));
|
|
4324
|
+
});
|
|
4325
|
+
}
|
|
4326
|
+
}
|
|
4327
|
+
return newObj;
|
|
4328
|
+
}
|
|
4329
|
+
static copy(item) {
|
|
4330
|
+
return JSON.parse(JSON.stringify(item));
|
|
4331
|
+
}
|
|
4332
|
+
static compare(a, b, isAsc) {
|
|
4333
|
+
return (a < b ? -1 : 1) * (isAsc ? 1 : -1);
|
|
4334
|
+
}
|
|
4335
|
+
static merge(...objects) {
|
|
4336
|
+
const result = {};
|
|
4337
|
+
objects.forEach((source) => {
|
|
4338
|
+
Object.keys(source).forEach((prop) => {
|
|
4339
|
+
if (prop in result && Array.isArray(result[prop])) {
|
|
4340
|
+
result[prop] = result[prop].concat(source[prop]);
|
|
4341
|
+
}
|
|
4342
|
+
else if (prop in result && typeof result[prop] === 'object') {
|
|
4343
|
+
result[prop] = ObjectUtils.merge(result[prop], source[prop]);
|
|
4344
|
+
}
|
|
4345
|
+
else {
|
|
4346
|
+
result[prop] = source[prop];
|
|
4347
|
+
}
|
|
4348
|
+
});
|
|
4349
|
+
});
|
|
4350
|
+
return result;
|
|
4351
|
+
}
|
|
4352
|
+
}
|
|
4353
|
+
|
|
4354
|
+
class ComponentTranslationModel {
|
|
4355
|
+
constructor(obj) {
|
|
4356
|
+
this.name = obj && obj.name;
|
|
4357
|
+
this.path = obj && obj.path;
|
|
4358
|
+
this.json = (obj && obj.json) || [];
|
|
4359
|
+
}
|
|
4360
|
+
}
|
|
4361
|
+
class TranslateLoaderProvider {
|
|
4362
|
+
constructor(http) {
|
|
4363
|
+
this.http = http;
|
|
4364
|
+
// private prefix = null;
|
|
4365
|
+
this.suffix = '.json';
|
|
4366
|
+
this.providers = [];
|
|
4367
|
+
this.queue = [];
|
|
4368
|
+
}
|
|
4369
|
+
ngOnDestroy() {
|
|
4370
|
+
console.log('TRANSLATE DESTROY');
|
|
4371
|
+
}
|
|
4372
|
+
registerProvider(name, path) {
|
|
4373
|
+
const registered = this.providers.find((provider) => provider.name === name);
|
|
4374
|
+
if (registered) {
|
|
4375
|
+
registered.path = path;
|
|
4376
|
+
}
|
|
4377
|
+
else {
|
|
4378
|
+
this.providers.push(new ComponentTranslationModel({ name: name, path: path }));
|
|
4379
|
+
}
|
|
4380
|
+
}
|
|
4381
|
+
providerRegistered(name) {
|
|
4382
|
+
return this.providers.find((x) => x.name === name) ? true : false;
|
|
4383
|
+
}
|
|
4384
|
+
getComponentToFetch(lang) {
|
|
4385
|
+
const observableBatch = [];
|
|
4386
|
+
if (!this.queue[lang]) {
|
|
4387
|
+
this.queue[lang] = [];
|
|
4388
|
+
}
|
|
4389
|
+
this.providers.forEach((component) => {
|
|
4390
|
+
if (!this.isComponentInQueue(lang, component.name)) {
|
|
4391
|
+
this.queue[lang].push(component.name);
|
|
4392
|
+
const translationUrl = `${component.path}/${lang}${this.suffix}?v=${Date.now()}`;
|
|
4393
|
+
observableBatch.push(this.http.get(translationUrl).pipe(map((res) => {
|
|
4394
|
+
component.json[lang] = res;
|
|
4395
|
+
}), retry(3), catchError(() => throwError(`Failed to load ${translationUrl}`))));
|
|
4396
|
+
}
|
|
4397
|
+
});
|
|
4398
|
+
return observableBatch;
|
|
4399
|
+
}
|
|
4400
|
+
init(lang) {
|
|
4401
|
+
if (this.queue[lang] === undefined) {
|
|
4402
|
+
this.queue[lang] = [];
|
|
4403
|
+
}
|
|
4404
|
+
}
|
|
4405
|
+
isComponentInQueue(lang, name) {
|
|
4406
|
+
return (this.queue[lang] || []).find((x) => x === name) ? true : false;
|
|
4407
|
+
}
|
|
4408
|
+
getFullTranslationJSON(lang) {
|
|
4409
|
+
let result = {};
|
|
4410
|
+
this.providers
|
|
4411
|
+
.slice(0)
|
|
4412
|
+
.sort((a, b) => {
|
|
4413
|
+
if (a.name === 'app') {
|
|
4414
|
+
return 1;
|
|
4415
|
+
}
|
|
4416
|
+
if (b.name === 'app') {
|
|
4417
|
+
return -1;
|
|
4418
|
+
}
|
|
4419
|
+
return a.name.localeCompare(b.name);
|
|
4420
|
+
})
|
|
4421
|
+
.forEach((model) => {
|
|
4422
|
+
if (model.json && model.json[lang]) {
|
|
4423
|
+
result = ObjectUtils.merge(result, model.json[lang]);
|
|
4424
|
+
}
|
|
4425
|
+
});
|
|
4426
|
+
return result;
|
|
4427
|
+
}
|
|
4428
|
+
getTranslation(lang) {
|
|
4429
|
+
let hasFailures = false;
|
|
4430
|
+
const batch = [
|
|
4431
|
+
...this.getComponentToFetch(lang).map((observable) => {
|
|
4432
|
+
return observable.pipe(catchError((error) => {
|
|
4433
|
+
hasFailures = true;
|
|
4434
|
+
return of(error);
|
|
4435
|
+
}));
|
|
4436
|
+
}),
|
|
4437
|
+
];
|
|
4438
|
+
return new Observable((observer) => {
|
|
4439
|
+
if (batch.length > 0) {
|
|
4440
|
+
forkJoin(batch).subscribe(() => {
|
|
4441
|
+
const fullTranslation = this.getFullTranslationJSON(lang);
|
|
4442
|
+
if (fullTranslation) {
|
|
4443
|
+
observer.next(fullTranslation);
|
|
4444
|
+
}
|
|
4445
|
+
if (hasFailures) {
|
|
4446
|
+
observer.error('Failed to load some resources');
|
|
4447
|
+
}
|
|
4448
|
+
else {
|
|
4449
|
+
observer.complete();
|
|
4450
|
+
}
|
|
4451
|
+
}, (err) => {
|
|
4452
|
+
observer.error('Failed to load some resources');
|
|
4453
|
+
});
|
|
4454
|
+
}
|
|
4455
|
+
else {
|
|
4456
|
+
const fullTranslation = this.getFullTranslationJSON(lang);
|
|
4457
|
+
if (fullTranslation) {
|
|
4458
|
+
observer.next(fullTranslation);
|
|
4459
|
+
observer.complete();
|
|
4460
|
+
}
|
|
4461
|
+
}
|
|
4462
|
+
});
|
|
4463
|
+
}
|
|
4464
|
+
}
|
|
4465
|
+
TranslateLoaderProvider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TranslateLoaderProvider, deps: [{ token: i1$1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4466
|
+
TranslateLoaderProvider.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TranslateLoaderProvider, providedIn: 'root' });
|
|
4467
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TranslateLoaderProvider, decorators: [{
|
|
4468
|
+
type: Injectable,
|
|
4469
|
+
args: [{
|
|
4470
|
+
providedIn: 'root',
|
|
4471
|
+
}]
|
|
4472
|
+
}], ctorParameters: function () { return [{ type: i1$1.HttpClient }]; } });
|
|
4473
|
+
|
|
4121
4474
|
class webRtcProvider {
|
|
4122
4475
|
constructor() {
|
|
4123
4476
|
this.pc = new RTCPeerConnection();
|
|
@@ -4211,5 +4564,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
4211
4564
|
* Generated bundle index. Do not edit.
|
|
4212
4565
|
*/
|
|
4213
4566
|
|
|
4214
|
-
export { AppFormModule, AuthProvider, BlankComponent, CameraSwitchComponent, CoreComponentsModule, CorePipesModule, DialogsCoreProvider, DialogsModule, HttpErrorInterceptor, LoadingComponent, MaterialModule, NgxScandocModule, SafeResourceUrlPipe, ScanComponent, ScanFieldsProvider, ScanProfileComponent, ScanProvider, ScanSelfieComponent,
|
|
4567
|
+
export { AppFormModule, AuthProvider, BlankComponent, CameraSwitchComponent, CoreComponentsModule, CorePipesModule, DialogsCoreProvider, DialogsModule, HttpErrorInterceptor, LoadingComponent, MaterialModule, NgxScanDocTranslationProvider, NgxScandocModule, SafeResourceUrlPipe, ScanComponent, ScanFieldsProvider, ScanProfileComponent, ScanProvider, ScanSelfieComponent, TranslateLoaderProvider, TurnDocumentComponent, WebcamComponent, WebcamModule, webRtcProvider };
|
|
4215
4568
|
//# sourceMappingURL=ngx-scandoc.mjs.map
|