ngx-scandoc 1.2.4 → 1.3.1
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/components.module.d.ts +10 -7
- package/core/components/manual-scan/manual-scan.component.d.ts +61 -0
- package/core/components/scan/scan.component.d.ts +21 -24
- package/core/components/scan-results/scan-results.component.d.ts +11 -4
- package/core/components/webcam/util/webcam.util.d.ts +1 -1
- package/core/components/webcam/webcam/webcam.component.d.ts +26 -180
- package/core/components/webcam/webcam.module.d.ts +2 -0
- package/core/interfaces/config.d.ts +4 -0
- package/dialogs/components/prompt-manual/prompt-manual.component.d.ts +12 -0
- package/dialogs/components/scan-profile/scan-profile.component.d.ts +6 -1
- package/dialogs/components/scan-selfie/scan-selfie.component.d.ts +15 -61
- package/dialogs/dialogs.core.provider.d.ts +1 -0
- package/dialogs/dialogs.module.d.ts +12 -9
- package/esm2020/core/components/camera-switch/camera-switch.component.mjs +6 -4
- package/esm2020/core/components/components.module.mjs +32 -10
- package/esm2020/core/components/manual-scan/manual-scan.component.mjs +290 -0
- package/esm2020/core/components/scan/scan.component.mjs +301 -181
- package/esm2020/core/components/scan-results/scan-results.component.mjs +38 -12
- package/esm2020/core/components/webcam/util/webcam.util.mjs +7 -5
- package/esm2020/core/components/webcam/webcam/webcam.component.mjs +296 -772
- package/esm2020/core/components/webcam/webcam.module.mjs +8 -1
- package/esm2020/core/interfaces/config.mjs +1 -1
- package/esm2020/dialogs/components/confirm/confirm.component.mjs +3 -3
- package/esm2020/dialogs/components/prompt-manual/prompt-manual.component.mjs +30 -0
- package/esm2020/dialogs/components/scan-profile/scan-profile.component.mjs +36 -17
- package/esm2020/dialogs/components/scan-selfie/scan-selfie.component.mjs +41 -336
- package/esm2020/dialogs/dialogs.core.provider.mjs +12 -1
- package/esm2020/dialogs/dialogs.module.mjs +24 -11
- package/esm2020/forms/types/avatar.type.mjs +26 -21
- package/esm2020/forms/types/profile.image.type.mjs +51 -41
- package/esm2020/forms/types/title.type.mjs +7 -35
- package/esm2020/lib/ngx-scandoc.module.mjs +8 -6
- package/esm2020/providers/auth.provider.mjs +15 -2
- package/esm2020/providers/camera.provider.mjs +37 -4
- package/esm2020/providers/interceptor.provider.mjs +2 -3
- package/esm2020/providers/layout.provider.mjs +7 -5
- package/esm2020/providers/scan.form.mjs +173 -215
- package/esm2020/providers/scan.provider.mjs +264 -7
- package/esm2020/providers/translation.provider.mjs +18 -23
- package/esm2020/public-api.mjs +3 -1
- package/fesm2015/ngx-scandoc.mjs +1733 -1989
- package/fesm2015/ngx-scandoc.mjs.map +1 -1
- package/fesm2020/ngx-scandoc.mjs +1728 -1981
- package/fesm2020/ngx-scandoc.mjs.map +1 -1
- package/forms/types/avatar.type.d.ts +1 -0
- package/forms/types/profile.image.type.d.ts +6 -1
- package/lib/ngx-scandoc.module.d.ts +2 -3
- package/package.json +1 -1
- package/providers/camera.provider.d.ts +17 -1
- package/providers/layout.provider.d.ts +3 -1
- package/providers/scan.form.d.ts +2 -0
- package/providers/scan.provider.d.ts +6 -1
- package/public-api.d.ts +2 -0
- package/src/assets/i18n/en.json +14 -3
|
@@ -1,33 +1,59 @@
|
|
|
1
1
|
import { Component, EventEmitter, Input, Output, } from '@angular/core';
|
|
2
|
+
import { FormGroup } from '@angular/forms';
|
|
3
|
+
import { BaseComponent } from '../base.component';
|
|
2
4
|
import * as i0 from "@angular/core";
|
|
3
5
|
import * as i1 from "../../../providers/camera.provider";
|
|
4
6
|
import * as i2 from "../../../providers/scan.form";
|
|
5
|
-
import * as i3 from "
|
|
6
|
-
import * as i4 from "@angular/
|
|
7
|
-
import * as i5 from "@angular/
|
|
8
|
-
import * as i6 from "@angular/material/
|
|
7
|
+
import * as i3 from "../../../providers/scan.provider";
|
|
8
|
+
import * as i4 from "@angular/common";
|
|
9
|
+
import * as i5 from "@angular/forms";
|
|
10
|
+
import * as i6 from "@angular/material/card";
|
|
9
11
|
import * as i7 from "@ngx-formly/core";
|
|
10
12
|
import * as i8 from "@ngx-translate/core";
|
|
11
|
-
export class ScanResultsComponent {
|
|
12
|
-
constructor(cameraProvider, formProvider) {
|
|
13
|
+
export class ScanResultsComponent extends BaseComponent {
|
|
14
|
+
constructor(cameraProvider, formProvider, provider, cd, zone) {
|
|
15
|
+
super();
|
|
13
16
|
this.cameraProvider = cameraProvider;
|
|
14
17
|
this.formProvider = formProvider;
|
|
18
|
+
this.provider = provider;
|
|
19
|
+
this.cd = cd;
|
|
20
|
+
this.zone = zone;
|
|
15
21
|
this.action = new EventEmitter();
|
|
16
22
|
}
|
|
17
23
|
ngOnInit() {
|
|
24
|
+
console.time('fields');
|
|
18
25
|
this.fields = this.formProvider.document();
|
|
26
|
+
console.timeEnd('fields');
|
|
27
|
+
this.__subs(this.data).subscribe((resp) => {
|
|
28
|
+
this.zone.run(() => {
|
|
29
|
+
switch (resp.type) {
|
|
30
|
+
case 'avatar':
|
|
31
|
+
this.model._avatar = resp.data;
|
|
32
|
+
this.form = new FormGroup({});
|
|
33
|
+
console.log(this.model);
|
|
34
|
+
break;
|
|
35
|
+
case 'model':
|
|
36
|
+
this.model = resp.data;
|
|
37
|
+
break;
|
|
38
|
+
}
|
|
39
|
+
console.timeEnd('results');
|
|
40
|
+
this.cd.detectChanges();
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
ngOnDestroy() {
|
|
45
|
+
this.__destroy();
|
|
19
46
|
}
|
|
20
|
-
ngOnDestroy() { }
|
|
21
47
|
selfie() {
|
|
22
48
|
this.action.emit({ selfie: true });
|
|
23
49
|
}
|
|
24
50
|
}
|
|
25
|
-
ScanResultsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScanResultsComponent, deps: [{ token: i1.NgxScandocCameraProvider }, { token: i2.ScanFieldsProvider }], target: i0.ɵɵFactoryTarget.Component });
|
|
26
|
-
ScanResultsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScanResultsComponent, selector: "ngx-scan-results", inputs: {
|
|
51
|
+
ScanResultsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScanResultsComponent, deps: [{ token: i1.NgxScandocCameraProvider }, { token: i2.ScanFieldsProvider }, { token: i3.ScanProvider }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
52
|
+
ScanResultsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScanResultsComponent, selector: "ngx-scan-results", inputs: { data: "data", images: "images", form: "form" }, outputs: { action: "action" }, usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"model\" class=\"wraper\">\n <div style=\"flex: 1\">\n\n\n <form class=\"px-16 py-0 w-100-p\" [formGroup]=\"form\">\n <formly-form fxFlex [form]=\"form\" [fields]=\"fields\" [model]=\"model\">\n </formly-form>\n </form>\n </div>\n <div style=\"flex: 1\" class=\"pr-16 m-4\">\n <mat-card style=\"margin: 4px; padding: 16px\" class=\"images\">\n <div class=\"card-title\">{{ \"scandoc.result.images\" | translate }}</div>\n <ng-container *ngFor=\"let img of model.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-y:auto;overflow-x:hidden}.images .title{padding:8px 0;font-weight:600}.images img{margin-bottom:16px;width:100%}.wraper{padding:4px;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: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i6.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "component", type: i7.FormlyForm, selector: "formly-form", inputs: ["form", "model", "fields", "options"], outputs: ["modelChange"] }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }] });
|
|
27
53
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScanResultsComponent, decorators: [{
|
|
28
54
|
type: Component,
|
|
29
|
-
args: [{ selector: 'ngx-scan-results', template: "<div class=\"wraper\">\n <div style=\"flex: 1\">\n
|
|
30
|
-
}], ctorParameters: function () { return [{ type: i1.NgxScandocCameraProvider }, { type: i2.ScanFieldsProvider }]; }, propDecorators: {
|
|
55
|
+
args: [{ selector: 'ngx-scan-results', template: "<div *ngIf=\"model\" class=\"wraper\">\n <div style=\"flex: 1\">\n\n\n <form class=\"px-16 py-0 w-100-p\" [formGroup]=\"form\">\n <formly-form fxFlex [form]=\"form\" [fields]=\"fields\" [model]=\"model\">\n </formly-form>\n </form>\n </div>\n <div style=\"flex: 1\" class=\"pr-16 m-4\">\n <mat-card style=\"margin: 4px; padding: 16px\" class=\"images\">\n <div class=\"card-title\">{{ \"scandoc.result.images\" | translate }}</div>\n <ng-container *ngFor=\"let img of model.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-y:auto;overflow-x:hidden}.images .title{padding:8px 0;font-weight:600}.images img{margin-bottom:16px;width:100%}.wraper{padding:4px;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"] }]
|
|
56
|
+
}], ctorParameters: function () { return [{ type: i1.NgxScandocCameraProvider }, { type: i2.ScanFieldsProvider }, { type: i3.ScanProvider }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }]; }, propDecorators: { data: [{
|
|
31
57
|
type: Input
|
|
32
58
|
}], images: [{
|
|
33
59
|
type: Input
|
|
@@ -36,4 +62,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
36
62
|
}], action: [{
|
|
37
63
|
type: Output
|
|
38
64
|
}] } });
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbi1yZXN1bHRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zY2FuZG9jL3NyYy9jb3JlL2NvbXBvbmVudHMvc2Nhbi1yZXN1bHRzL3NjYW4tcmVzdWx0cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvY29yZS9jb21wb25lbnRzL3NjYW4tcmVzdWx0cy9zY2FuLXJlc3VsdHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBR1osS0FBSyxFQUdMLE1BQU0sR0FHUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7Ozs7O0FBU2xELE1BQU0sT0FBTyxvQkFDWCxTQUFRLGFBQWE7SUFXckIsWUFDUyxjQUF3QyxFQUN2QyxZQUFnQyxFQUNoQyxRQUFzQixFQUN0QixFQUFxQixFQUNyQixJQUFZO1FBRXBCLEtBQUssRUFBRSxDQUFDO1FBTkQsbUJBQWMsR0FBZCxjQUFjLENBQTBCO1FBQ3ZDLGlCQUFZLEdBQVosWUFBWSxDQUFvQjtRQUNoQyxhQUFRLEdBQVIsUUFBUSxDQUFjO1FBQ3RCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3JCLFNBQUksR0FBSixJQUFJLENBQVE7UUFQWixXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQVV0QyxDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzNDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO2dCQUNqQixRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUU7b0JBQ2pCLEtBQUssUUFBUTt3QkFDWCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO3dCQUUvQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUM5QixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDeEIsTUFBTTtvQkFDUixLQUFLLE9BQU87d0JBQ1YsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO3dCQUN2QixNQUFNO2lCQUNUO2dCQUVELE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBRTNCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDMUIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNyQyxDQUFDOztpSEF0RFUsb0JBQW9CO3FHQUFwQixvQkFBb0Isd0tDekJqQyxxbkNBZ0NBOzJGRFBhLG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDRSxrQkFBa0I7Z09BU25CLElBQUk7c0JBQVosS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBR0csSUFBSTtzQkFBWixLQUFLO2dCQUNJLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBOZ1pvbmUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd4U2NhbmRvY0NhbWVyYVByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vLi4vcHJvdmlkZXJzL2NhbWVyYS5wcm92aWRlcic7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTY2FuRmllbGRzUHJvdmlkZXIgfSBmcm9tICcuLi8uLi8uLi9wcm92aWRlcnMvc2Nhbi5mb3JtJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTY2FuUHJvdmlkZXIgfSBmcm9tICcuLi8uLi8uLi9wcm92aWRlcnMvc2Nhbi5wcm92aWRlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1zY2FuLXJlc3VsdHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2Nhbi1yZXN1bHRzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2Nhbi1yZXN1bHRzLmNvbXBvbmVudC5zY3NzJ10sXG4gIC8vIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY2FuUmVzdWx0c0NvbXBvbmVudFxuICBleHRlbmRzIEJhc2VDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveVxue1xuICBASW5wdXQoKSBkYXRhITogU3ViamVjdDxhbnk+O1xuICBtb2RlbDogYW55O1xuICBASW5wdXQoKSBpbWFnZXM6IGFueTtcbiAgZmllbGRzOiBhbnk7XG5cbiAgQElucHV0KCkgZm9ybSE6IEZvcm1Hcm91cDtcbiAgQE91dHB1dCgpIGFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY2FtZXJhUHJvdmlkZXI6IE5neFNjYW5kb2NDYW1lcmFQcm92aWRlcixcbiAgICBwcml2YXRlIGZvcm1Qcm92aWRlcjogU2NhbkZpZWxkc1Byb3ZpZGVyLFxuICAgIHByaXZhdGUgcHJvdmlkZXI6IFNjYW5Qcm92aWRlcixcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZVxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc29sZS50aW1lKCdmaWVsZHMnKTtcbiAgICB0aGlzLmZpZWxkcyA9IHRoaXMuZm9ybVByb3ZpZGVyLmRvY3VtZW50KCk7XG4gICAgY29uc29sZS50aW1lRW5kKCdmaWVsZHMnKTtcblxuICAgIHRoaXMuX19zdWJzKHRoaXMuZGF0YSkuc3Vic2NyaWJlKChyZXNwKSA9PiB7XG4gICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgICAgc3dpdGNoIChyZXNwLnR5cGUpIHtcbiAgICAgICAgICBjYXNlICdhdmF0YXInOlxuICAgICAgICAgICAgdGhpcy5tb2RlbC5fYXZhdGFyID0gcmVzcC5kYXRhO1xuXG4gICAgICAgICAgICB0aGlzLmZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMubW9kZWwpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnbW9kZWwnOlxuICAgICAgICAgICAgdGhpcy5tb2RlbCA9IHJlc3AuZGF0YTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS50aW1lRW5kKCdyZXN1bHRzJyk7XG5cbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX19kZXN0cm95KCk7XG4gIH1cblxuICBzZWxmaWUoKSB7XG4gICAgdGhpcy5hY3Rpb24uZW1pdCh7IHNlbGZpZTogdHJ1ZSB9KTtcbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cIm1vZGVsXCIgY2xhc3M9XCJ3cmFwZXJcIj5cbiAgPGRpdiBzdHlsZT1cImZsZXg6IDFcIj5cblxuXG4gICAgPGZvcm0gY2xhc3M9XCJweC0xNiBweS0wIHctMTAwLXBcIiBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAgICAgIDxmb3JtbHktZm9ybSBmeEZsZXggW2Zvcm1dPVwiZm9ybVwiIFtmaWVsZHNdPVwiZmllbGRzXCIgW21vZGVsXT1cIm1vZGVsXCI+XG4gICAgICA8L2Zvcm1seS1mb3JtPlxuICAgIDwvZm9ybT5cbiAgPC9kaXY+XG4gIDxkaXYgc3R5bGU9XCJmbGV4OiAxXCIgY2xhc3M9XCJwci0xNiBtLTRcIj5cbiAgICA8bWF0LWNhcmQgc3R5bGU9XCJtYXJnaW46IDRweDsgcGFkZGluZzogMTZweFwiIGNsYXNzPVwiaW1hZ2VzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZVwiPnt7IFwic2NhbmRvYy5yZXN1bHQuaW1hZ2VzXCIgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGltZyBvZiBtb2RlbC5pbWFnZXNcIj5cbiAgICAgICAgPGRpdiBmeExheW91dD1cImNvbHVtblwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbWcuc2lkZSA9PT0gMFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+XG4gICAgICAgICAgICAgIHt7IFwic2NhbmRvYy5yZXN1bHQuZnJvbnRTaWRlXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbWcuc2lkZSA9PT0gMVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+e3sgXCJzY2FuZG9jLnJlc3VsdC5iYWNrU2lkZVwiIHwgdHJhbnNsYXRlIH19PC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPGltZ1xuICAgICAgICAgICAgY2xhc3M9XCJwcmV2aWV3XCJcbiAgICAgICAgICAgIHN0eWxlPVwibWF4LXdpZHRoOiA0NjBweDsgYm9yZGVyLXJhZGl1czogMXJlbVwiXG4gICAgICAgICAgICBbc3JjXT1cImltZy5kYXRhXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbWF0LWNhcmQ+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -5,7 +5,7 @@ export class WebcamUtil {
|
|
|
5
5
|
* Lists available videoInput devices
|
|
6
6
|
* @returns a list of media device info.
|
|
7
7
|
*/
|
|
8
|
-
static getAvailableVideoInputs() {
|
|
8
|
+
static getAvailableVideoInputs(facingMode = 'environment') {
|
|
9
9
|
return new Observable((observer) => {
|
|
10
10
|
if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) {
|
|
11
11
|
return observer.error(null);
|
|
@@ -13,11 +13,13 @@ export class WebcamUtil {
|
|
|
13
13
|
const _window = window;
|
|
14
14
|
let streams;
|
|
15
15
|
from(navigator.mediaDevices.getUserMedia({
|
|
16
|
-
video: { deviceId: undefined },
|
|
16
|
+
video: { facingMode, deviceId: undefined },
|
|
17
17
|
}))
|
|
18
|
-
.pipe(tap((s) => {
|
|
18
|
+
.pipe(tap((s) => {
|
|
19
|
+
streams = s;
|
|
20
|
+
}), switchMap((s) => from(navigator.mediaDevices.enumerateDevices())))
|
|
19
21
|
.subscribe((devices) => {
|
|
20
|
-
//
|
|
22
|
+
// console.log(devices);
|
|
21
23
|
if (streams) {
|
|
22
24
|
streams.getTracks().forEach((track) => {
|
|
23
25
|
track.stop();
|
|
@@ -45,4 +47,4 @@ export class WebcamUtil {
|
|
|
45
47
|
// });
|
|
46
48
|
}
|
|
47
49
|
}
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViY2FtLnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvY29yZS9jb21wb25lbnRzL3dlYmNhbS91dGlsL3dlYmNhbS51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFNLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEQsTUFBTSxPQUFPLFVBQVU7SUFDckI7OztPQUdHO0lBRUksTUFBTSxDQUFDLHVCQUF1QixDQUNuQyxhQUFxQyxhQUFhO1FBRWxELE9BQU8sSUFBSSxVQUFVLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQ3ZFLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUM3QjtZQUNELE1BQU0sT0FBTyxHQUFRLE1BQU0sQ0FBQztZQUM1QixJQUFJLE9BQVksQ0FBQztZQUNqQixJQUFJLENBQ0YsU0FBUyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUM7Z0JBQ2xDLEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBQyxRQUFRLEVBQUUsU0FBUyxFQUFFO2FBQzFDLENBQUMsQ0FDSDtpQkFDRSxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ1IsT0FBTyxHQUFHLENBQUMsQ0FBQztZQUNkLENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQ2xFO2lCQUNBLFNBQVMsQ0FBQyxDQUFDLE9BQTBCLEVBQUUsRUFBRTtnQkFDdkMsd0JBQXdCO2dCQUV6QixJQUFJLE9BQU8sRUFBRTtvQkFDWCxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUU7d0JBQ3pDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDZixDQUFDLENBQUMsQ0FBQztpQkFDSjtnQkFDRCxRQUFRLENBQUMsSUFBSSxDQUNYLE9BQU8sQ0FBQyxNQUFNLENBQ1osQ0FBQyxNQUF1QixFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FDMUQsQ0FDRixDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztRQUVILDRDQUE0QztRQUM1QywwQ0FBMEM7UUFDMUMsd0JBQXdCO1FBQ3hCLFFBQVE7UUFDUiwyQkFBMkI7UUFDM0IsMEJBQTBCO1FBQzFCLDhDQUE4QztRQUM5QyxpQkFBaUI7UUFDakIsMEJBQTBCO1FBQzFCLHNFQUFzRTtRQUN0RSxZQUFZO1FBQ1osV0FBVztRQUNYLFNBQVM7UUFDVCx3QkFBd0I7UUFDeEIsb0NBQW9DO1FBQ3BDLFVBQVU7UUFDVixNQUFNO0lBQ1IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZnJvbSwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgY2xhc3MgV2ViY2FtVXRpbCB7XG4gIC8qKlxuICAgKiBMaXN0cyBhdmFpbGFibGUgdmlkZW9JbnB1dCBkZXZpY2VzXG4gICAqIEByZXR1cm5zIGEgbGlzdCBvZiBtZWRpYSBkZXZpY2UgaW5mby5cbiAgICovXG5cbiAgcHVibGljIHN0YXRpYyBnZXRBdmFpbGFibGVWaWRlb0lucHV0cyhcbiAgICBmYWNpbmdNb2RlOiAndXNlcicgfCAnZW52aXJvbm1lbnQnID0gJ2Vudmlyb25tZW50J1xuICApOiBPYnNlcnZhYmxlPE1lZGlhRGV2aWNlSW5mb1tdPiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcikgPT4ge1xuICAgICAgaWYgKCFuYXZpZ2F0b3IubWVkaWFEZXZpY2VzIHx8ICFuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmVudW1lcmF0ZURldmljZXMpIHtcbiAgICAgICAgcmV0dXJuIG9ic2VydmVyLmVycm9yKG51bGwpO1xuICAgICAgfVxuICAgICAgY29uc3QgX3dpbmRvdzogYW55ID0gd2luZG93O1xuICAgICAgbGV0IHN0cmVhbXM6IGFueTtcbiAgICAgIGZyb20oXG4gICAgICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHtcbiAgICAgICAgICB2aWRlbzogeyBmYWNpbmdNb2RlLGRldmljZUlkOiB1bmRlZmluZWQgfSxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFwKChzKSA9PiB7XG4gICAgICAgICAgICBzdHJlYW1zID0gcztcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBzd2l0Y2hNYXAoKHMpID0+IGZyb20obmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzKCkpKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKGRldmljZXM6IE1lZGlhRGV2aWNlSW5mb1tdKSA9PiB7XG4gICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGRldmljZXMpO1xuXG4gICAgICAgICAgaWYgKHN0cmVhbXMpIHtcbiAgICAgICAgICAgIHN0cmVhbXMuZ2V0VHJhY2tzKCkuZm9yRWFjaCgodHJhY2s6IGFueSkgPT4ge1xuICAgICAgICAgICAgICB0cmFjay5zdG9wKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb2JzZXJ2ZXIubmV4dChcbiAgICAgICAgICAgIGRldmljZXMuZmlsdGVyKFxuICAgICAgICAgICAgICAoZGV2aWNlOiBNZWRpYURldmljZUluZm8pID0+IGRldmljZS5raW5kID09PSAndmlkZW9pbnB1dCdcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIC8vIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgLy8gICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7XG4gICAgLy8gICAgIHZpZGVvOiB1bmRlZmluZWQsXG4gICAgLy8gICB9KTtcbiAgICAvLyAgIG5hdmlnYXRvci5tZWRpYURldmljZXNcbiAgICAvLyAgICAgLmVudW1lcmF0ZURldmljZXMoKVxuICAgIC8vICAgICAudGhlbigoZGV2aWNlczogTWVkaWFEZXZpY2VJbmZvW10pID0+IHtcbiAgICAvLyAgICAgICByZXNvbHZlKFxuICAgIC8vICAgICAgICAgZGV2aWNlcy5maWx0ZXIoXG4gICAgLy8gICAgICAgICAgIChkZXZpY2U6IE1lZGlhRGV2aWNlSW5mbykgPT4gZGV2aWNlLmtpbmQgPT09ICd2aWRlb2lucHV0J1xuICAgIC8vICAgICAgICAgKVxuICAgIC8vICAgICAgICk7XG4gICAgLy8gICAgIH0pXG4gICAgLy8gICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgLy8gICAgICAgcmVqZWN0KGVyci5tZXNzYWdlIHx8IGVycik7XG4gICAgLy8gICAgIH0pO1xuICAgIC8vIH0pO1xuICB9XG59XG4iXX0=
|