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/fesm2015/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
|
}
|
|
@@ -1047,6 +1048,7 @@ class WebcamComponent extends BaseComponent {
|
|
|
1047
1048
|
* Init webcam live view
|
|
1048
1049
|
*/
|
|
1049
1050
|
initWebcam(deviceId, userVideoTrackConstraints) {
|
|
1051
|
+
console.log('INIT WEBCAM');
|
|
1050
1052
|
const _video = this.nativeVideoElement;
|
|
1051
1053
|
// const videoStreamer = this.videoStreamer.nativeElement;
|
|
1052
1054
|
// const videoSmall = document.createElement('video');
|
|
@@ -1247,7 +1249,7 @@ WebcamComponent.DEFAULT_VIDEO_OPTIONS = {
|
|
|
1247
1249
|
WebcamComponent.DEFAULT_IMAGE_TYPE = 'image/jpeg';
|
|
1248
1250
|
WebcamComponent.DEFAULT_IMAGE_QUALITY = 1;
|
|
1249
1251
|
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 });
|
|
1250
|
-
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:
|
|
1252
|
+
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"] }] });
|
|
1251
1253
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: WebcamComponent, decorators: [{
|
|
1252
1254
|
type: Component,
|
|
1253
1255
|
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"] }]
|
|
@@ -1838,38 +1840,88 @@ class AuthProvider {
|
|
|
1838
1840
|
this.http = http;
|
|
1839
1841
|
this.config = config;
|
|
1840
1842
|
this.token = '';
|
|
1843
|
+
this.refresh_token = '';
|
|
1841
1844
|
this.tokenTimestamps = {
|
|
1842
|
-
|
|
1843
|
-
|
|
1845
|
+
Time: 0,
|
|
1846
|
+
Client: 0,
|
|
1847
|
+
SubClient: 0,
|
|
1844
1848
|
};
|
|
1845
1849
|
}
|
|
1850
|
+
setSubClient(name) {
|
|
1851
|
+
this.subClient = name;
|
|
1852
|
+
}
|
|
1846
1853
|
setConfig() { }
|
|
1847
1854
|
get tokenExpired() {
|
|
1848
|
-
|
|
1855
|
+
console.log(this.tokenTimestamps, this.token);
|
|
1856
|
+
if (this.token == '' || this.tokenTimestamps.Time === 0) {
|
|
1849
1857
|
console.log('EXPIRED');
|
|
1850
1858
|
return true;
|
|
1851
1859
|
}
|
|
1852
|
-
const {
|
|
1853
|
-
|
|
1860
|
+
const { Time } = this.tokenTimestamps;
|
|
1861
|
+
const tokenDate = moment(Time);
|
|
1862
|
+
const isValid = moment(tokenDate).isBefore(moment().add(5, 'minutes'));
|
|
1863
|
+
console.log('VALID', isValid);
|
|
1864
|
+
return !isValid;
|
|
1854
1865
|
}
|
|
1855
1866
|
resetToken() {
|
|
1856
|
-
this.token = '';
|
|
1867
|
+
// this.token = '';
|
|
1857
1868
|
}
|
|
1858
1869
|
get accesToken() {
|
|
1859
|
-
|
|
1870
|
+
console.log('AT');
|
|
1871
|
+
return this.tokenExpired ? this.fetchToken() : of(this.token);
|
|
1872
|
+
}
|
|
1873
|
+
fetchToken() {
|
|
1874
|
+
if (this.token && this.refresh_token) {
|
|
1875
|
+
return this.refreshToken();
|
|
1876
|
+
}
|
|
1877
|
+
return this.getToken();
|
|
1878
|
+
}
|
|
1879
|
+
refreshToken() {
|
|
1880
|
+
const { path, refresh } = this.config;
|
|
1881
|
+
return this.http
|
|
1882
|
+
.post(`${path}${refresh}`, {
|
|
1883
|
+
refresh_token: this.refresh_token,
|
|
1884
|
+
})
|
|
1885
|
+
.pipe(tap((token) => {
|
|
1886
|
+
// console.log(this.token);
|
|
1887
|
+
this.token = token.access_token;
|
|
1888
|
+
this.updateToken();
|
|
1889
|
+
// this.token = token.access_token;
|
|
1890
|
+
// console.log('TOKEN', this.token);
|
|
1891
|
+
// this.refresh_token = token.refresh_token;
|
|
1892
|
+
// const decoded: any = jwt_decode(this.token);
|
|
1893
|
+
// console.log(decoded);
|
|
1894
|
+
// const { Time, Client, SubClient } = decoded;
|
|
1895
|
+
// this.tokenTimestamps = { Time, Client, SubClient };
|
|
1896
|
+
}), map((data) => data.access_token));
|
|
1897
|
+
}
|
|
1898
|
+
get user_key() {
|
|
1899
|
+
return this.config.clientId;
|
|
1900
|
+
}
|
|
1901
|
+
get sub_client() {
|
|
1902
|
+
return this.config.tokenName ? this.config.tokenName : this.subClient;
|
|
1903
|
+
}
|
|
1904
|
+
updateToken() {
|
|
1905
|
+
const decoded = jwt_decode(this.token);
|
|
1906
|
+
console.log(decoded);
|
|
1907
|
+
const { Time, Client, SubClient } = decoded;
|
|
1908
|
+
this.tokenTimestamps = { Time, Client, SubClient };
|
|
1860
1909
|
}
|
|
1861
1910
|
getToken() {
|
|
1911
|
+
console.log('GET');
|
|
1912
|
+
const { path, login } = this.config;
|
|
1862
1913
|
return this.http
|
|
1863
|
-
.post(
|
|
1864
|
-
|
|
1865
|
-
|
|
1914
|
+
.post(`${path}${login}`, {
|
|
1915
|
+
user_key: this.user_key,
|
|
1916
|
+
sub_client: this.sub_client,
|
|
1866
1917
|
})
|
|
1867
|
-
.pipe(
|
|
1868
|
-
this.token
|
|
1869
|
-
|
|
1870
|
-
|
|
1871
|
-
this.
|
|
1872
|
-
|
|
1918
|
+
.pipe(tap((token) => {
|
|
1919
|
+
console.log(this.token);
|
|
1920
|
+
this.token = token.access_token;
|
|
1921
|
+
console.log('TOKEN', this.token);
|
|
1922
|
+
this.refresh_token = token.refresh_token;
|
|
1923
|
+
this.updateToken();
|
|
1924
|
+
}), map((data) => data.access_token));
|
|
1873
1925
|
}
|
|
1874
1926
|
}
|
|
1875
1927
|
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 });
|
|
@@ -1886,9 +1938,77 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
1886
1938
|
}] }];
|
|
1887
1939
|
} });
|
|
1888
1940
|
|
|
1889
|
-
|
|
1890
|
-
|
|
1941
|
+
const TRANSLATION_PROVIDER = new InjectionToken('Injection token for translation providers.');
|
|
1942
|
+
class NgxScanDocTranslationProvider {
|
|
1943
|
+
constructor(translate, providers, platformLocation) {
|
|
1891
1944
|
this.translate = translate;
|
|
1945
|
+
this.platformLocation = platformLocation;
|
|
1946
|
+
console.log(this.translate);
|
|
1947
|
+
this.customLoader = this.translate.currentLoader;
|
|
1948
|
+
this.defaultLang = 'en';
|
|
1949
|
+
translate.setDefaultLang(this.defaultLang);
|
|
1950
|
+
if (providers && providers.length > 0) {
|
|
1951
|
+
for (const provider of providers) {
|
|
1952
|
+
this.addTranslationFolder(provider.name, provider.source);
|
|
1953
|
+
}
|
|
1954
|
+
}
|
|
1955
|
+
}
|
|
1956
|
+
path(path) {
|
|
1957
|
+
return path;
|
|
1958
|
+
// const baseHref = this.platformLocation
|
|
1959
|
+
// .getBaseHrefFromDOM()
|
|
1960
|
+
// .split('/')
|
|
1961
|
+
// .join('');
|
|
1962
|
+
// return baseHref != '' ? `/${baseHref}${path}` : path;
|
|
1963
|
+
}
|
|
1964
|
+
addTranslationFolder(name = '', path = '') {
|
|
1965
|
+
console.log(name, path, this.userLang, this.defaultLang);
|
|
1966
|
+
if (!this.customLoader.providerRegistered(name)) {
|
|
1967
|
+
this.customLoader.registerProvider(name, this.path(path));
|
|
1968
|
+
if (this.userLang) {
|
|
1969
|
+
const existCurrentLang = this.translate.currentLang ? true : false;
|
|
1970
|
+
this.loadTranslation(this.userLang, this.defaultLang, !existCurrentLang);
|
|
1971
|
+
}
|
|
1972
|
+
else {
|
|
1973
|
+
this.loadTranslation(this.defaultLang);
|
|
1974
|
+
}
|
|
1975
|
+
}
|
|
1976
|
+
}
|
|
1977
|
+
loadTranslation(lang, fallback, useLang = true) {
|
|
1978
|
+
this.translate.getTranslation(lang).subscribe((resp) => {
|
|
1979
|
+
this.onTranslationChanged(lang);
|
|
1980
|
+
if (useLang) {
|
|
1981
|
+
setTimeout(() => {
|
|
1982
|
+
this.translate.use(lang);
|
|
1983
|
+
}, 20);
|
|
1984
|
+
}
|
|
1985
|
+
// this.translate.reloadLang(lang)
|
|
1986
|
+
}, () => {
|
|
1987
|
+
if (fallback && fallback !== lang) {
|
|
1988
|
+
this.loadTranslation(fallback);
|
|
1989
|
+
}
|
|
1990
|
+
});
|
|
1991
|
+
}
|
|
1992
|
+
updateTranslation(lang, fallback) {
|
|
1993
|
+
return this.translate.getTranslation(lang).pipe(catchError(() => {
|
|
1994
|
+
if (fallback && fallback !== lang) {
|
|
1995
|
+
return this.updateTranslation(fallback);
|
|
1996
|
+
}
|
|
1997
|
+
return this.translate.use(lang);
|
|
1998
|
+
}), switchMap(() => {
|
|
1999
|
+
this.onTranslationChanged(lang);
|
|
2000
|
+
return this.translate.use(lang);
|
|
2001
|
+
}));
|
|
2002
|
+
}
|
|
2003
|
+
onTranslationChanged(lang) {
|
|
2004
|
+
this.translate.onTranslationChange.next({
|
|
2005
|
+
lang,
|
|
2006
|
+
translations: this.customLoader.getFullTranslationJSON(lang),
|
|
2007
|
+
});
|
|
2008
|
+
}
|
|
2009
|
+
use(lang) {
|
|
2010
|
+
this.customLoader.init(lang);
|
|
2011
|
+
return this.updateTranslation(lang);
|
|
1892
2012
|
}
|
|
1893
2013
|
forms(item, namespace = null) {
|
|
1894
2014
|
if (item.fieldGroup) {
|
|
@@ -1924,14 +2044,21 @@ class TranslationProvider {
|
|
|
1924
2044
|
return item;
|
|
1925
2045
|
}
|
|
1926
2046
|
}
|
|
1927
|
-
|
|
1928
|
-
|
|
1929
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type:
|
|
2047
|
+
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 });
|
|
2048
|
+
NgxScanDocTranslationProvider.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NgxScanDocTranslationProvider, providedIn: 'root' });
|
|
2049
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NgxScanDocTranslationProvider, decorators: [{
|
|
1930
2050
|
type: Injectable,
|
|
1931
2051
|
args: [{
|
|
1932
2052
|
providedIn: 'root',
|
|
1933
2053
|
}]
|
|
1934
|
-
}], ctorParameters: function () {
|
|
2054
|
+
}], ctorParameters: function () {
|
|
2055
|
+
return [{ type: i1$2.TranslateService }, { type: undefined, decorators: [{
|
|
2056
|
+
type: Optional
|
|
2057
|
+
}, {
|
|
2058
|
+
type: Inject,
|
|
2059
|
+
args: [TRANSLATION_PROVIDER]
|
|
2060
|
+
}] }, { type: i2$1.PlatformLocation }];
|
|
2061
|
+
} });
|
|
1935
2062
|
|
|
1936
2063
|
class ScanFieldsProvider {
|
|
1937
2064
|
constructor(translate, provider) {
|
|
@@ -1950,7 +2077,7 @@ class ScanFieldsProvider {
|
|
|
1950
2077
|
class: 'checkbox ',
|
|
1951
2078
|
defaultValue: true,
|
|
1952
2079
|
templateOptions: {
|
|
1953
|
-
label: 'form.scan.document.update.profile',
|
|
2080
|
+
label: 'scandoc.form.scan.document.update.profile',
|
|
1954
2081
|
},
|
|
1955
2082
|
},
|
|
1956
2083
|
{
|
|
@@ -1960,7 +2087,7 @@ class ScanFieldsProvider {
|
|
|
1960
2087
|
key: 'document',
|
|
1961
2088
|
defaultValue: true,
|
|
1962
2089
|
templateOptions: {
|
|
1963
|
-
label: 'form.scan.document.update.document',
|
|
2090
|
+
label: 'scandoc.form.scan.document.update.document',
|
|
1964
2091
|
},
|
|
1965
2092
|
},
|
|
1966
2093
|
{
|
|
@@ -1970,7 +2097,7 @@ class ScanFieldsProvider {
|
|
|
1970
2097
|
key: 'attachment',
|
|
1971
2098
|
defaultValue: true,
|
|
1972
2099
|
templateOptions: {
|
|
1973
|
-
label: 'form.scan.document.update.attachment',
|
|
2100
|
+
label: 'scandoc.form.scan.document.update.attachment',
|
|
1974
2101
|
},
|
|
1975
2102
|
},
|
|
1976
2103
|
].map((item) => this.translate.forms(item)),
|
|
@@ -1990,14 +2117,14 @@ class ScanFieldsProvider {
|
|
|
1990
2117
|
{
|
|
1991
2118
|
type: 'title',
|
|
1992
2119
|
templateOptions: {
|
|
1993
|
-
label: 'form.scan.document.guestDetailsTitle',
|
|
2120
|
+
label: 'scandoc.form.scan.document.guestDetailsTitle',
|
|
1994
2121
|
},
|
|
1995
2122
|
},
|
|
1996
2123
|
// {
|
|
1997
2124
|
// type: 'profile-image',
|
|
1998
2125
|
// key: '_avatar',
|
|
1999
2126
|
// templateOptions: {
|
|
2000
|
-
// label: 'form.scan.document.firstName',
|
|
2127
|
+
// label: 'scandoc.form.scan.document.firstName',
|
|
2001
2128
|
// },
|
|
2002
2129
|
// },
|
|
2003
2130
|
{
|
|
@@ -2005,7 +2132,7 @@ class ScanFieldsProvider {
|
|
|
2005
2132
|
key: 'firstName',
|
|
2006
2133
|
className: 'small',
|
|
2007
2134
|
templateOptions: {
|
|
2008
|
-
label: 'form.scan.document.firstName',
|
|
2135
|
+
label: 'scandoc.form.scan.document.firstName',
|
|
2009
2136
|
required: true,
|
|
2010
2137
|
},
|
|
2011
2138
|
},
|
|
@@ -2014,7 +2141,7 @@ class ScanFieldsProvider {
|
|
|
2014
2141
|
key: 'lastName',
|
|
2015
2142
|
className: 'small',
|
|
2016
2143
|
templateOptions: {
|
|
2017
|
-
label: 'form.scan.document.lastName',
|
|
2144
|
+
label: 'scandoc.form.scan.document.lastName',
|
|
2018
2145
|
required: true,
|
|
2019
2146
|
},
|
|
2020
2147
|
},
|
|
@@ -2024,7 +2151,7 @@ class ScanFieldsProvider {
|
|
|
2024
2151
|
type: 'input',
|
|
2025
2152
|
templateOptions: {
|
|
2026
2153
|
color: 'accent',
|
|
2027
|
-
label: 'form.scan.document.secondLastName',
|
|
2154
|
+
label: 'scandoc.form.scan.document.secondLastName',
|
|
2028
2155
|
},
|
|
2029
2156
|
hideExpression: 'model.hideSecondLastName',
|
|
2030
2157
|
},
|
|
@@ -2033,7 +2160,7 @@ class ScanFieldsProvider {
|
|
|
2033
2160
|
key: 'middleName',
|
|
2034
2161
|
className: 'small',
|
|
2035
2162
|
templateOptions: {
|
|
2036
|
-
label: 'form.scan.document.middleName',
|
|
2163
|
+
label: 'scandoc.form.scan.document.middleName',
|
|
2037
2164
|
},
|
|
2038
2165
|
},
|
|
2039
2166
|
{
|
|
@@ -2045,7 +2172,7 @@ class ScanFieldsProvider {
|
|
|
2045
2172
|
key: 'birthDate',
|
|
2046
2173
|
className: 'w-100-p small mr-8',
|
|
2047
2174
|
templateOptions: {
|
|
2048
|
-
label: 'form.scan.document.birthDate',
|
|
2175
|
+
label: 'scandoc.form.scan.document.birthDate',
|
|
2049
2176
|
},
|
|
2050
2177
|
},
|
|
2051
2178
|
{
|
|
@@ -2053,7 +2180,7 @@ class ScanFieldsProvider {
|
|
|
2053
2180
|
key: 'gender',
|
|
2054
2181
|
className: 'w-100-p small ml-8',
|
|
2055
2182
|
templateOptions: {
|
|
2056
|
-
label: 'form.scan.document.gender',
|
|
2183
|
+
label: 'scandoc.form.scan.document.gender',
|
|
2057
2184
|
options: [
|
|
2058
2185
|
{ value: 'MALE', label: 'MALE' },
|
|
2059
2186
|
{ value: 'FEMALE', label: 'FEMALE' },
|
|
@@ -2068,7 +2195,7 @@ class ScanFieldsProvider {
|
|
|
2068
2195
|
key: 'birthPlace',
|
|
2069
2196
|
className: 'small',
|
|
2070
2197
|
templateOptions: {
|
|
2071
|
-
label: 'form.scan.document.birthPlace',
|
|
2198
|
+
label: 'scandoc.form.scan.document.birthPlace',
|
|
2072
2199
|
},
|
|
2073
2200
|
},
|
|
2074
2201
|
{
|
|
@@ -2076,7 +2203,7 @@ class ScanFieldsProvider {
|
|
|
2076
2203
|
key: 'birthCountry',
|
|
2077
2204
|
className: 'small',
|
|
2078
2205
|
templateOptions: {
|
|
2079
|
-
label: 'form.scan.document.birthCountry',
|
|
2206
|
+
label: 'scandoc.form.scan.document.birthCountry',
|
|
2080
2207
|
options: this.provider.countries(),
|
|
2081
2208
|
},
|
|
2082
2209
|
},
|
|
@@ -2085,7 +2212,7 @@ class ScanFieldsProvider {
|
|
|
2085
2212
|
key: 'nationality',
|
|
2086
2213
|
type: 'select',
|
|
2087
2214
|
templateOptions: {
|
|
2088
|
-
label: 'form.scan.document.nationality',
|
|
2215
|
+
label: 'scandoc.form.scan.document.nationality',
|
|
2089
2216
|
// appearance: 'outline',
|
|
2090
2217
|
// options: this.profileProvider.nationalities(),
|
|
2091
2218
|
options: this.provider.countries(),
|
|
@@ -2100,14 +2227,14 @@ class ScanFieldsProvider {
|
|
|
2100
2227
|
{
|
|
2101
2228
|
type: 'title',
|
|
2102
2229
|
templateOptions: {
|
|
2103
|
-
label: 'form.scan.document.documentTitle',
|
|
2230
|
+
label: 'scandoc.form.scan.document.documentTitle',
|
|
2104
2231
|
},
|
|
2105
2232
|
},
|
|
2106
2233
|
{
|
|
2107
2234
|
type: 'select',
|
|
2108
2235
|
key: 'documentType',
|
|
2109
2236
|
templateOptions: {
|
|
2110
|
-
label: 'form.scan.document.documentType',
|
|
2237
|
+
label: 'scandoc.form.scan.document.documentType',
|
|
2111
2238
|
options: [
|
|
2112
2239
|
{ value: 'ID', label: 'Identity Document' },
|
|
2113
2240
|
{ value: 'PASS', label: 'Passport' },
|
|
@@ -2122,7 +2249,7 @@ class ScanFieldsProvider {
|
|
|
2122
2249
|
type: 'input',
|
|
2123
2250
|
key: 'documentNumber',
|
|
2124
2251
|
templateOptions: {
|
|
2125
|
-
label: 'form.scan.document.documentNumber',
|
|
2252
|
+
label: 'scandoc.form.scan.document.documentNumber',
|
|
2126
2253
|
required: true,
|
|
2127
2254
|
},
|
|
2128
2255
|
},
|
|
@@ -2135,7 +2262,7 @@ class ScanFieldsProvider {
|
|
|
2135
2262
|
key: 'issueDate',
|
|
2136
2263
|
className: 'small mr-8',
|
|
2137
2264
|
templateOptions: {
|
|
2138
|
-
label: 'form.scan.document.issueDate',
|
|
2265
|
+
label: 'scandoc.form.scan.document.issueDate',
|
|
2139
2266
|
},
|
|
2140
2267
|
},
|
|
2141
2268
|
{
|
|
@@ -2143,7 +2270,7 @@ class ScanFieldsProvider {
|
|
|
2143
2270
|
key: 'expirationDate',
|
|
2144
2271
|
className: 'small ml-8',
|
|
2145
2272
|
templateOptions: {
|
|
2146
|
-
label: 'form.scan.document.expirationDate',
|
|
2273
|
+
label: 'scandoc.form.scan.document.expirationDate',
|
|
2147
2274
|
},
|
|
2148
2275
|
},
|
|
2149
2276
|
],
|
|
@@ -2152,7 +2279,7 @@ class ScanFieldsProvider {
|
|
|
2152
2279
|
type: 'select',
|
|
2153
2280
|
key: 'issueStateCode',
|
|
2154
2281
|
templateOptions: {
|
|
2155
|
-
label: 'form.scan.document.issuingStateCode',
|
|
2282
|
+
label: 'scandoc.form.scan.document.issuingStateCode',
|
|
2156
2283
|
options: this.provider.countries(),
|
|
2157
2284
|
},
|
|
2158
2285
|
},
|
|
@@ -2160,7 +2287,7 @@ class ScanFieldsProvider {
|
|
|
2160
2287
|
type: 'input',
|
|
2161
2288
|
key: 'issuingPlace',
|
|
2162
2289
|
templateOptions: {
|
|
2163
|
-
label: 'form.scan.document.issuingPlace',
|
|
2290
|
+
label: 'scandoc.form.scan.document.issuingPlace',
|
|
2164
2291
|
required: false,
|
|
2165
2292
|
},
|
|
2166
2293
|
},
|
|
@@ -2171,7 +2298,7 @@ class ScanFieldsProvider {
|
|
|
2171
2298
|
{
|
|
2172
2299
|
type: 'title',
|
|
2173
2300
|
templateOptions: {
|
|
2174
|
-
label: 'form.scan.document.addressTitle',
|
|
2301
|
+
label: 'scandoc.form.scan.document.addressTitle',
|
|
2175
2302
|
badge: 'communications',
|
|
2176
2303
|
},
|
|
2177
2304
|
},
|
|
@@ -2182,7 +2309,7 @@ class ScanFieldsProvider {
|
|
|
2182
2309
|
// key: 'typeID',
|
|
2183
2310
|
// type: 'select',
|
|
2184
2311
|
// templateOptions: {
|
|
2185
|
-
// label: 'form.profile.address.type',
|
|
2312
|
+
// label: 'scandoc.form.profile.address.type',
|
|
2186
2313
|
// required: true,
|
|
2187
2314
|
// // options: this.profileProvider.addressTypes(),
|
|
2188
2315
|
// expressionProperties: {
|
|
@@ -2208,7 +2335,7 @@ class ScanFieldsProvider {
|
|
|
2208
2335
|
type: 'select',
|
|
2209
2336
|
templateOptions: {
|
|
2210
2337
|
required: true,
|
|
2211
|
-
label: 'form.profile.address.country',
|
|
2338
|
+
label: 'scandoc.form.profile.address.country',
|
|
2212
2339
|
options: this.provider.countries(),
|
|
2213
2340
|
},
|
|
2214
2341
|
// expressionProperties: {
|
|
@@ -2229,7 +2356,7 @@ class ScanFieldsProvider {
|
|
|
2229
2356
|
key: 'zip',
|
|
2230
2357
|
type: 'input',
|
|
2231
2358
|
templateOptions: {
|
|
2232
|
-
label: 'form.profile.address.zip',
|
|
2359
|
+
label: 'scandoc.form.profile.address.zip',
|
|
2233
2360
|
labelProp: (item) => {
|
|
2234
2361
|
return `${item.zip} (${item.city})`;
|
|
2235
2362
|
},
|
|
@@ -2256,7 +2383,7 @@ class ScanFieldsProvider {
|
|
|
2256
2383
|
key: 'city',
|
|
2257
2384
|
type: 'input',
|
|
2258
2385
|
templateOptions: {
|
|
2259
|
-
label: 'form.profile.address.city',
|
|
2386
|
+
label: 'scandoc.form.profile.address.city',
|
|
2260
2387
|
},
|
|
2261
2388
|
// expressionProperties: {
|
|
2262
2389
|
// 'templateOptions.disabled': (model: any) =>
|
|
@@ -2270,7 +2397,7 @@ class ScanFieldsProvider {
|
|
|
2270
2397
|
// key: 'state',
|
|
2271
2398
|
// type: 'input',
|
|
2272
2399
|
// templateOptions: {
|
|
2273
|
-
// label: 'form.profile.address.state',
|
|
2400
|
+
// label: 'scandoc.form.profile.address.state',
|
|
2274
2401
|
// },
|
|
2275
2402
|
// // expressionProperties: {
|
|
2276
2403
|
// // 'templateOptions.disabled': (model: any) => !model.newAddress,
|
|
@@ -2281,7 +2408,7 @@ class ScanFieldsProvider {
|
|
|
2281
2408
|
// key: 'countryStateID',
|
|
2282
2409
|
// type: 'select',
|
|
2283
2410
|
// templateOptions: {
|
|
2284
|
-
// label: 'form.profile.address.regionalStatistics',
|
|
2411
|
+
// label: 'scandoc.form.profile.address.regionalStatistics',
|
|
2285
2412
|
// options: this.provider.countries(),
|
|
2286
2413
|
// },
|
|
2287
2414
|
// // expressionProperties: {
|
|
@@ -2293,7 +2420,7 @@ class ScanFieldsProvider {
|
|
|
2293
2420
|
key: 'street1',
|
|
2294
2421
|
type: 'input',
|
|
2295
2422
|
templateOptions: {
|
|
2296
|
-
label: 'form.profile.address.street',
|
|
2423
|
+
label: 'scandoc.form.profile.address.street',
|
|
2297
2424
|
},
|
|
2298
2425
|
// expressionProperties: {
|
|
2299
2426
|
// 'templateOptions.disabled': (model: any) => !model.newAddress,
|
|
@@ -2306,14 +2433,14 @@ class ScanFieldsProvider {
|
|
|
2306
2433
|
].map((item) => this.translate.forms(item));
|
|
2307
2434
|
}
|
|
2308
2435
|
}
|
|
2309
|
-
ScanFieldsProvider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScanFieldsProvider, deps: [{ token:
|
|
2436
|
+
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 });
|
|
2310
2437
|
ScanFieldsProvider.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScanFieldsProvider, providedIn: 'root' });
|
|
2311
2438
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScanFieldsProvider, decorators: [{
|
|
2312
2439
|
type: Injectable,
|
|
2313
2440
|
args: [{
|
|
2314
2441
|
providedIn: 'root',
|
|
2315
2442
|
}]
|
|
2316
|
-
}], ctorParameters: function () { return [{ type:
|
|
2443
|
+
}], ctorParameters: function () { return [{ type: NgxScanDocTranslationProvider }, { type: ScanProvider }]; } });
|
|
2317
2444
|
|
|
2318
2445
|
class ScanResultsComponent {
|
|
2319
2446
|
constructor(cameraProvider, formProvider) {
|
|
@@ -2330,10 +2457,10 @@ class ScanResultsComponent {
|
|
|
2330
2457
|
}
|
|
2331
2458
|
}
|
|
2332
2459
|
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 });
|
|
2333
|
-
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>
|
|
2460
|
+
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" }] });
|
|
2334
2461
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScanResultsComponent, decorators: [{
|
|
2335
2462
|
type: Component,
|
|
2336
|
-
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>
|
|
2463
|
+
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"] }]
|
|
2337
2464
|
}], ctorParameters: function () { return [{ type: NgxScandocCameraProvider }, { type: ScanFieldsProvider }]; }, propDecorators: { model: [{
|
|
2338
2465
|
type: Input
|
|
2339
2466
|
}], images: [{
|
|
@@ -2384,7 +2511,7 @@ class ScanComponent extends BaseComponent {
|
|
|
2384
2511
|
this.documentTypeSelected = false;
|
|
2385
2512
|
this.preview = null;
|
|
2386
2513
|
this.errorCode = '1000';
|
|
2387
|
-
this.displayInfo = '
|
|
2514
|
+
this.displayInfo = 'scandoc.info.position';
|
|
2388
2515
|
this.allowCameraSwitch = true;
|
|
2389
2516
|
this.verificationErrorSent = false;
|
|
2390
2517
|
this.error = false;
|
|
@@ -2518,7 +2645,7 @@ class ScanComponent extends BaseComponent {
|
|
|
2518
2645
|
}
|
|
2519
2646
|
handleBurstData(imagesArray, images, type = 'plain') {
|
|
2520
2647
|
this.__subs(this.scanProvider.burst(imagesArray)).subscribe((resp) => {
|
|
2521
|
-
this.displayInfo = resp.
|
|
2648
|
+
this.displayInfo = 'scandoc.info.c' + resp.InfoCode;
|
|
2522
2649
|
console.timeEnd('validationPOST');
|
|
2523
2650
|
console.log('AnalysisTime', resp.AnalysisTime);
|
|
2524
2651
|
const { DocType, Series, Side, InfoCode } = resp;
|
|
@@ -2565,7 +2692,7 @@ class ScanComponent extends BaseComponent {
|
|
|
2565
2692
|
});
|
|
2566
2693
|
}
|
|
2567
2694
|
console.log('ID SIDE', this.idScan);
|
|
2568
|
-
this.displayInfo = '
|
|
2695
|
+
this.displayInfo = 'scandoc.info.turn';
|
|
2569
2696
|
}
|
|
2570
2697
|
}
|
|
2571
2698
|
else {
|
|
@@ -2736,6 +2863,8 @@ class ScanComponent extends BaseComponent {
|
|
|
2736
2863
|
},
|
|
2737
2864
|
// CallBackUrl: 'http://demo:5000/report/extracted/',
|
|
2738
2865
|
};
|
|
2866
|
+
this.frontImage = 'data:image/jpeg;base64,' + payload.DataFields.FrontImage;
|
|
2867
|
+
this.backImage = 'data:image/jpeg;base64,' + payload.DataFields.BackImage;
|
|
2739
2868
|
if (!this.scanBlastData[1].image) {
|
|
2740
2869
|
payload.Settings.IgnoreBackImage = true;
|
|
2741
2870
|
}
|
|
@@ -2901,10 +3030,10 @@ class ScanComponent extends BaseComponent {
|
|
|
2901
3030
|
}
|
|
2902
3031
|
}
|
|
2903
3032
|
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 });
|
|
2904
|
-
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
|
|
3033
|
+
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 });
|
|
2905
3034
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScanComponent, decorators: [{
|
|
2906
3035
|
type: Component,
|
|
2907
|
-
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
|
|
3036
|
+
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"] }]
|
|
2908
3037
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i1$2.TranslateService }, { type: NgxScandocCameraProvider }, { type: i0.Injector }, { type: LayoutProvider }, { type: AuthProvider }]; }, propDecorators: { type: [{
|
|
2909
3038
|
type: Input
|
|
2910
3039
|
}], dialogs: [{
|
|
@@ -3092,7 +3221,7 @@ AvatarTypeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ve
|
|
|
3092
3221
|
[ngClass]="width"
|
|
3093
3222
|
></ngx-avatars>
|
|
3094
3223
|
</mat-card>
|
|
3095
|
-
`, isInline: true, styles: ["mat-card{border-radius:0;box-shadow:none!important}\n"], dependencies: [{ kind: "directive", type:
|
|
3224
|
+
`, 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"] }] });
|
|
3096
3225
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AvatarTypeComponent, decorators: [{
|
|
3097
3226
|
type: Component,
|
|
3098
3227
|
args: [{ selector: 'app-formly-avatar-type', template: `
|
|
@@ -3141,7 +3270,7 @@ TitleTypeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ver
|
|
|
3141
3270
|
{{ to.chip | translate }}
|
|
3142
3271
|
</div>
|
|
3143
3272
|
</div>
|
|
3144
|
-
`, 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:
|
|
3273
|
+
`, 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" }] });
|
|
3145
3274
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TitleTypeComponent, decorators: [{
|
|
3146
3275
|
type: Component,
|
|
3147
3276
|
args: [{ selector: 'app-formly-title-type', template: `
|
|
@@ -3194,7 +3323,7 @@ ProfileImageTypeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.
|
|
|
3194
3323
|
|
|
3195
3324
|
></ngx-avatars>
|
|
3196
3325
|
</mat-card>
|
|
3197
|
-
`, 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
|
|
3326
|
+
`, 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"] }] });
|
|
3198
3327
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ProfileImageTypeComponent, decorators: [{
|
|
3199
3328
|
type: Component,
|
|
3200
3329
|
args: [{ selector: 'app-formly-profile-image-type', template: `
|
|
@@ -3293,10 +3422,10 @@ class CameraSwitchComponent {
|
|
|
3293
3422
|
ngOnDestroy() { }
|
|
3294
3423
|
}
|
|
3295
3424
|
CameraSwitchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CameraSwitchComponent, deps: [{ token: NgxScandocCameraProvider }], target: i0.ɵɵFactoryTarget.Component });
|
|
3296
|
-
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>
|
|
3425
|
+
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" }] });
|
|
3297
3426
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CameraSwitchComponent, decorators: [{
|
|
3298
3427
|
type: Component,
|
|
3299
|
-
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>
|
|
3428
|
+
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"] }]
|
|
3300
3429
|
}], ctorParameters: function () { return [{ type: NgxScandocCameraProvider }]; } });
|
|
3301
3430
|
|
|
3302
3431
|
class CoreComponentsModule {
|
|
@@ -3450,7 +3579,7 @@ class ConfirmComponent {
|
|
|
3450
3579
|
close() { }
|
|
3451
3580
|
}
|
|
3452
3581
|
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 });
|
|
3453
|
-
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:
|
|
3582
|
+
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" }] });
|
|
3454
3583
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ConfirmComponent, decorators: [{
|
|
3455
3584
|
type: Component,
|
|
3456
3585
|
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"] }]
|
|
@@ -3829,7 +3958,7 @@ class ScanSelfieComponent {
|
|
|
3829
3958
|
selfie() { }
|
|
3830
3959
|
}
|
|
3831
3960
|
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 });
|
|
3832
|
-
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 });
|
|
3961
|
+
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 });
|
|
3833
3962
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScanSelfieComponent, decorators: [{
|
|
3834
3963
|
type: Component,
|
|
3835
3964
|
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"] }]
|
|
@@ -3859,10 +3988,10 @@ class TurnDocumentComponent {
|
|
|
3859
3988
|
}
|
|
3860
3989
|
}
|
|
3861
3990
|
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 });
|
|
3862
|
-
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
|
|
3991
|
+
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" }] });
|
|
3863
3992
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TurnDocumentComponent, decorators: [{
|
|
3864
3993
|
type: Component,
|
|
3865
|
-
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
|
|
3994
|
+
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"] }]
|
|
3866
3995
|
}], ctorParameters: function () {
|
|
3867
3996
|
return [{ type: i1$4.MatDialogRef }, { type: undefined, decorators: [{
|
|
3868
3997
|
type: Inject,
|
|
@@ -4003,10 +4132,10 @@ class ScanProfileComponent extends BaseComponent {
|
|
|
4003
4132
|
}
|
|
4004
4133
|
}
|
|
4005
4134
|
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 });
|
|
4006
|
-
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\"
|
|
4135
|
+
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 });
|
|
4007
4136
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScanProfileComponent, decorators: [{
|
|
4008
4137
|
type: Component,
|
|
4009
|
-
args: [{ selector: 'app-scan-profile', changeDetection: ChangeDetectionStrategy.OnPush, template: "<header class=\"page-header\">\n <div class=\"title\" ngClass.lt-sm=\"title-small\"
|
|
4138
|
+
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"] }]
|
|
4010
4139
|
}], ctorParameters: function () { return [{ type: DialogsCoreProvider }, { type: i1$4.MatDialogRef }]; }, propDecorators: { type: [{
|
|
4011
4140
|
type: Input
|
|
4012
4141
|
}] } });
|
|
@@ -4084,7 +4213,7 @@ class HttpErrorInterceptor {
|
|
|
4084
4213
|
}
|
|
4085
4214
|
intercept(req, next) {
|
|
4086
4215
|
//console.log(req.url);
|
|
4087
|
-
if (req.url.indexOf('
|
|
4216
|
+
if (req.url.indexOf('/ks/') >= 0 || req.url.indexOf('/assets/') >= 0) {
|
|
4088
4217
|
return next.handle(req);
|
|
4089
4218
|
}
|
|
4090
4219
|
const authProvider = this.injector.get(AuthProvider);
|
|
@@ -4098,6 +4227,7 @@ class HttpErrorInterceptor {
|
|
|
4098
4227
|
return next.handle(req);
|
|
4099
4228
|
}
|
|
4100
4229
|
}
|
|
4230
|
+
console.log('AUTH II');
|
|
4101
4231
|
this.inflightAuthRequest = authProvider.accesToken;
|
|
4102
4232
|
return this.inflightAuthRequest.pipe(share(), switchMap((token) => {
|
|
4103
4233
|
// unset request inflight
|
|
@@ -4114,9 +4244,14 @@ class HttpErrorInterceptor {
|
|
|
4114
4244
|
tokenExpired = find ? true : false;
|
|
4115
4245
|
}
|
|
4116
4246
|
console.log(err);
|
|
4117
|
-
if (err.status === 401 || tokenExpired) {
|
|
4118
|
-
authProvider.
|
|
4119
|
-
|
|
4247
|
+
if (err.status === 401 || err.status === 403 || tokenExpired) {
|
|
4248
|
+
return authProvider.refreshToken().pipe(switchMap((token) => {
|
|
4249
|
+
const transaction = req.headers.get('TransactionID');
|
|
4250
|
+
const authReq = req.clone({
|
|
4251
|
+
headers: this.getHeaders(token, transaction || ''),
|
|
4252
|
+
});
|
|
4253
|
+
return next.handle(authReq);
|
|
4254
|
+
}));
|
|
4120
4255
|
}
|
|
4121
4256
|
else {
|
|
4122
4257
|
return throwError(() => new Error('' + (err && err.status ? ':' + err.status : '')));
|
|
@@ -4143,6 +4278,226 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
4143
4278
|
type: Injectable
|
|
4144
4279
|
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
4145
4280
|
|
|
4281
|
+
class Iso11649Reference {
|
|
4282
|
+
constructor() {
|
|
4283
|
+
this.FORMAT_RF = /^RF[0-9]{2}[A-Z0-9]{1,21}$/;
|
|
4284
|
+
this.CHARCODE_A = 'A'.charCodeAt(0);
|
|
4285
|
+
this.CHARCODE_0 = '0'.charCodeAt(0);
|
|
4286
|
+
}
|
|
4287
|
+
validate(rawValue) {
|
|
4288
|
+
const value = rawValue.replace(/ /g, '');
|
|
4289
|
+
// console.log(value);
|
|
4290
|
+
if (!value.match(this.FORMAT_RF)) {
|
|
4291
|
+
return false;
|
|
4292
|
+
// throw new Error('Invalid Creditor Reference format; expecting: \'' + this.FORMAT_RF + '\', found: \'' + value + '\'');
|
|
4293
|
+
}
|
|
4294
|
+
return (this.computeWithoutCheck(value.substring(4, value.length) + value.substring(0, 4)) === 1);
|
|
4295
|
+
}
|
|
4296
|
+
computeWithoutCheck(rawValue) {
|
|
4297
|
+
return this.mod97(rawValue);
|
|
4298
|
+
}
|
|
4299
|
+
mod97(value) {
|
|
4300
|
+
let buffer = 0;
|
|
4301
|
+
let charCode;
|
|
4302
|
+
for (let i = 0; i < value.length; ++i) {
|
|
4303
|
+
charCode = value.charCodeAt(i);
|
|
4304
|
+
buffer =
|
|
4305
|
+
charCode +
|
|
4306
|
+
(charCode >= this.CHARCODE_A
|
|
4307
|
+
? buffer * 100 - this.CHARCODE_A + 10
|
|
4308
|
+
: buffer * 10 - this.CHARCODE_0);
|
|
4309
|
+
if (buffer > 1000000) {
|
|
4310
|
+
buffer %= 97;
|
|
4311
|
+
}
|
|
4312
|
+
}
|
|
4313
|
+
return buffer % 97;
|
|
4314
|
+
}
|
|
4315
|
+
}
|
|
4316
|
+
class ObjectUtils {
|
|
4317
|
+
static getValue(target, key) {
|
|
4318
|
+
if (!target) {
|
|
4319
|
+
return undefined;
|
|
4320
|
+
}
|
|
4321
|
+
const keys = key.split('.');
|
|
4322
|
+
key = '';
|
|
4323
|
+
do {
|
|
4324
|
+
key += keys.shift();
|
|
4325
|
+
const value = target[key];
|
|
4326
|
+
if (value !== undefined && (typeof value === 'object' || !keys.length)) {
|
|
4327
|
+
target = value;
|
|
4328
|
+
key = '';
|
|
4329
|
+
}
|
|
4330
|
+
else if (!keys.length) {
|
|
4331
|
+
target = undefined;
|
|
4332
|
+
}
|
|
4333
|
+
else {
|
|
4334
|
+
key += '.';
|
|
4335
|
+
}
|
|
4336
|
+
} while (keys.length);
|
|
4337
|
+
return target;
|
|
4338
|
+
}
|
|
4339
|
+
static deepCopy(inputObj) {
|
|
4340
|
+
let newObj = inputObj;
|
|
4341
|
+
if (inputObj && typeof inputObj === 'object') {
|
|
4342
|
+
newObj =
|
|
4343
|
+
Object.prototype.toString.call(inputObj) === '[object Array]' ? [] : {};
|
|
4344
|
+
for (const i of Object.keys(inputObj)) {
|
|
4345
|
+
newObj[i] = this.deepCopy(inputObj[i]);
|
|
4346
|
+
}
|
|
4347
|
+
if (Object.prototype.toString.call(inputObj) === '[object Map]') {
|
|
4348
|
+
newObj = new Map();
|
|
4349
|
+
inputObj.forEach((v, k) => {
|
|
4350
|
+
newObj.set(k, this.deepCopy(v));
|
|
4351
|
+
});
|
|
4352
|
+
}
|
|
4353
|
+
}
|
|
4354
|
+
return newObj;
|
|
4355
|
+
}
|
|
4356
|
+
static copy(item) {
|
|
4357
|
+
return JSON.parse(JSON.stringify(item));
|
|
4358
|
+
}
|
|
4359
|
+
static compare(a, b, isAsc) {
|
|
4360
|
+
return (a < b ? -1 : 1) * (isAsc ? 1 : -1);
|
|
4361
|
+
}
|
|
4362
|
+
static merge(...objects) {
|
|
4363
|
+
const result = {};
|
|
4364
|
+
objects.forEach((source) => {
|
|
4365
|
+
Object.keys(source).forEach((prop) => {
|
|
4366
|
+
if (prop in result && Array.isArray(result[prop])) {
|
|
4367
|
+
result[prop] = result[prop].concat(source[prop]);
|
|
4368
|
+
}
|
|
4369
|
+
else if (prop in result && typeof result[prop] === 'object') {
|
|
4370
|
+
result[prop] = ObjectUtils.merge(result[prop], source[prop]);
|
|
4371
|
+
}
|
|
4372
|
+
else {
|
|
4373
|
+
result[prop] = source[prop];
|
|
4374
|
+
}
|
|
4375
|
+
});
|
|
4376
|
+
});
|
|
4377
|
+
return result;
|
|
4378
|
+
}
|
|
4379
|
+
}
|
|
4380
|
+
|
|
4381
|
+
class ComponentTranslationModel {
|
|
4382
|
+
constructor(obj) {
|
|
4383
|
+
this.name = obj && obj.name;
|
|
4384
|
+
this.path = obj && obj.path;
|
|
4385
|
+
this.json = (obj && obj.json) || [];
|
|
4386
|
+
}
|
|
4387
|
+
}
|
|
4388
|
+
class TranslateLoaderProvider {
|
|
4389
|
+
constructor(http) {
|
|
4390
|
+
this.http = http;
|
|
4391
|
+
// private prefix = null;
|
|
4392
|
+
this.suffix = '.json';
|
|
4393
|
+
this.providers = [];
|
|
4394
|
+
this.queue = [];
|
|
4395
|
+
}
|
|
4396
|
+
ngOnDestroy() {
|
|
4397
|
+
console.log('TRANSLATE DESTROY');
|
|
4398
|
+
}
|
|
4399
|
+
registerProvider(name, path) {
|
|
4400
|
+
const registered = this.providers.find((provider) => provider.name === name);
|
|
4401
|
+
if (registered) {
|
|
4402
|
+
registered.path = path;
|
|
4403
|
+
}
|
|
4404
|
+
else {
|
|
4405
|
+
this.providers.push(new ComponentTranslationModel({ name: name, path: path }));
|
|
4406
|
+
}
|
|
4407
|
+
}
|
|
4408
|
+
providerRegistered(name) {
|
|
4409
|
+
return this.providers.find((x) => x.name === name) ? true : false;
|
|
4410
|
+
}
|
|
4411
|
+
getComponentToFetch(lang) {
|
|
4412
|
+
const observableBatch = [];
|
|
4413
|
+
if (!this.queue[lang]) {
|
|
4414
|
+
this.queue[lang] = [];
|
|
4415
|
+
}
|
|
4416
|
+
this.providers.forEach((component) => {
|
|
4417
|
+
if (!this.isComponentInQueue(lang, component.name)) {
|
|
4418
|
+
this.queue[lang].push(component.name);
|
|
4419
|
+
const translationUrl = `${component.path}/${lang}${this.suffix}?v=${Date.now()}`;
|
|
4420
|
+
observableBatch.push(this.http.get(translationUrl).pipe(map((res) => {
|
|
4421
|
+
component.json[lang] = res;
|
|
4422
|
+
}), retry(3), catchError(() => throwError(`Failed to load ${translationUrl}`))));
|
|
4423
|
+
}
|
|
4424
|
+
});
|
|
4425
|
+
return observableBatch;
|
|
4426
|
+
}
|
|
4427
|
+
init(lang) {
|
|
4428
|
+
if (this.queue[lang] === undefined) {
|
|
4429
|
+
this.queue[lang] = [];
|
|
4430
|
+
}
|
|
4431
|
+
}
|
|
4432
|
+
isComponentInQueue(lang, name) {
|
|
4433
|
+
return (this.queue[lang] || []).find((x) => x === name) ? true : false;
|
|
4434
|
+
}
|
|
4435
|
+
getFullTranslationJSON(lang) {
|
|
4436
|
+
let result = {};
|
|
4437
|
+
this.providers
|
|
4438
|
+
.slice(0)
|
|
4439
|
+
.sort((a, b) => {
|
|
4440
|
+
if (a.name === 'app') {
|
|
4441
|
+
return 1;
|
|
4442
|
+
}
|
|
4443
|
+
if (b.name === 'app') {
|
|
4444
|
+
return -1;
|
|
4445
|
+
}
|
|
4446
|
+
return a.name.localeCompare(b.name);
|
|
4447
|
+
})
|
|
4448
|
+
.forEach((model) => {
|
|
4449
|
+
if (model.json && model.json[lang]) {
|
|
4450
|
+
result = ObjectUtils.merge(result, model.json[lang]);
|
|
4451
|
+
}
|
|
4452
|
+
});
|
|
4453
|
+
return result;
|
|
4454
|
+
}
|
|
4455
|
+
getTranslation(lang) {
|
|
4456
|
+
let hasFailures = false;
|
|
4457
|
+
const batch = [
|
|
4458
|
+
...this.getComponentToFetch(lang).map((observable) => {
|
|
4459
|
+
return observable.pipe(catchError((error) => {
|
|
4460
|
+
hasFailures = true;
|
|
4461
|
+
return of(error);
|
|
4462
|
+
}));
|
|
4463
|
+
}),
|
|
4464
|
+
];
|
|
4465
|
+
return new Observable((observer) => {
|
|
4466
|
+
if (batch.length > 0) {
|
|
4467
|
+
forkJoin(batch).subscribe(() => {
|
|
4468
|
+
const fullTranslation = this.getFullTranslationJSON(lang);
|
|
4469
|
+
if (fullTranslation) {
|
|
4470
|
+
observer.next(fullTranslation);
|
|
4471
|
+
}
|
|
4472
|
+
if (hasFailures) {
|
|
4473
|
+
observer.error('Failed to load some resources');
|
|
4474
|
+
}
|
|
4475
|
+
else {
|
|
4476
|
+
observer.complete();
|
|
4477
|
+
}
|
|
4478
|
+
}, (err) => {
|
|
4479
|
+
observer.error('Failed to load some resources');
|
|
4480
|
+
});
|
|
4481
|
+
}
|
|
4482
|
+
else {
|
|
4483
|
+
const fullTranslation = this.getFullTranslationJSON(lang);
|
|
4484
|
+
if (fullTranslation) {
|
|
4485
|
+
observer.next(fullTranslation);
|
|
4486
|
+
observer.complete();
|
|
4487
|
+
}
|
|
4488
|
+
}
|
|
4489
|
+
});
|
|
4490
|
+
}
|
|
4491
|
+
}
|
|
4492
|
+
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 });
|
|
4493
|
+
TranslateLoaderProvider.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TranslateLoaderProvider, providedIn: 'root' });
|
|
4494
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TranslateLoaderProvider, decorators: [{
|
|
4495
|
+
type: Injectable,
|
|
4496
|
+
args: [{
|
|
4497
|
+
providedIn: 'root',
|
|
4498
|
+
}]
|
|
4499
|
+
}], ctorParameters: function () { return [{ type: i1$1.HttpClient }]; } });
|
|
4500
|
+
|
|
4146
4501
|
class webRtcProvider {
|
|
4147
4502
|
constructor() {
|
|
4148
4503
|
this.pc = new RTCPeerConnection();
|
|
@@ -4236,5 +4591,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
4236
4591
|
* Generated bundle index. Do not edit.
|
|
4237
4592
|
*/
|
|
4238
4593
|
|
|
4239
|
-
export { AppFormModule, AuthProvider, BlankComponent, CameraSwitchComponent, CoreComponentsModule, CorePipesModule, DialogsCoreProvider, DialogsModule, HttpErrorInterceptor, LoadingComponent, MaterialModule, NgxScandocModule, SafeResourceUrlPipe, ScanComponent, ScanFieldsProvider, ScanProfileComponent, ScanProvider, ScanSelfieComponent,
|
|
4594
|
+
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 };
|
|
4240
4595
|
//# sourceMappingURL=ngx-scandoc.mjs.map
|