ngx-scandoc 0.0.1 → 1.0.2

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.
Files changed (85) hide show
  1. package/core/app.worker.d.ts +1 -0
  2. package/core/components/base.component.d.ts +6 -0
  3. package/core/components/camera-switch/camera-switch.component.d.ts +11 -0
  4. package/core/components/components.module.d.ts +15 -0
  5. package/core/components/scan/scan.component.d.ts +120 -0
  6. package/core/components/scan-results/scan-results.component.d.ts +20 -0
  7. package/core/components/webcam/domain/webcam-image.d.ts +35 -0
  8. package/core/components/webcam/domain/webcam-init-error.d.ts +4 -0
  9. package/core/components/webcam/domain/webcam-mirror-properties.d.ts +3 -0
  10. package/core/components/webcam/util/webcam.util.d.ts +8 -0
  11. package/core/components/webcam/webcam/webcam.component.d.ts +205 -0
  12. package/core/components/webcam/webcam.module.d.ts +9 -0
  13. package/core/interfaces/config.d.ts +16 -0
  14. package/core/pipes/pipes.module.d.ts +7 -0
  15. package/core/pipes/safeResourceUrl.pipe.d.ts +10 -0
  16. package/core/shared/material.module.d.ts +28 -0
  17. package/dialogs/components/blank/blank.component.d.ts +16 -0
  18. package/dialogs/components/confirm/confirm.component.d.ts +30 -0
  19. package/dialogs/components/loading/loading.component.d.ts +5 -0
  20. package/dialogs/components/scan-profile/scan-profile.component.d.ts +18 -0
  21. package/dialogs/components/scan-selfie/scan-selfie.component.d.ts +83 -0
  22. package/dialogs/components/turn-document/turn-document.component.d.ts +12 -0
  23. package/dialogs/dialogs.core.provider.d.ts +18 -0
  24. package/dialogs/dialogs.module.d.ts +21 -0
  25. package/esm2020/core/app.worker.mjs +236 -0
  26. package/esm2020/core/components/base.component.mjs +15 -0
  27. package/esm2020/core/components/camera-switch/camera-switch.component.mjs +22 -0
  28. package/esm2020/core/components/components.module.mjs +46 -0
  29. package/esm2020/core/components/scan/scan.component.mjs +587 -0
  30. package/esm2020/core/components/scan-results/scan-results.component.mjs +38 -0
  31. package/esm2020/core/components/webcam/domain/webcam-image.mjs +58 -0
  32. package/esm2020/core/components/webcam/domain/webcam-init-error.mjs +3 -0
  33. package/esm2020/core/components/webcam/domain/webcam-mirror-properties.mjs +3 -0
  34. package/esm2020/core/components/webcam/util/webcam.util.mjs +48 -0
  35. package/esm2020/core/components/webcam/webcam/webcam.component.mjs +867 -0
  36. package/esm2020/core/components/webcam/webcam.module.mjs +22 -0
  37. package/esm2020/core/interfaces/config.mjs +2 -0
  38. package/esm2020/core/pipes/pipes.module.mjs +19 -0
  39. package/esm2020/core/pipes/safeResourceUrl.pipe.mjs +20 -0
  40. package/esm2020/core/shared/material.module.mjs +162 -0
  41. package/esm2020/dialogs/components/blank/blank.component.mjs +46 -0
  42. package/esm2020/dialogs/components/confirm/confirm.component.mjs +53 -0
  43. package/esm2020/dialogs/components/loading/loading.component.mjs +12 -0
  44. package/esm2020/dialogs/components/scan-profile/scan-profile.component.mjs +48 -0
  45. package/esm2020/dialogs/components/scan-selfie/scan-selfie.component.mjs +392 -0
  46. package/esm2020/dialogs/components/turn-document/turn-document.component.mjs +32 -0
  47. package/esm2020/dialogs/dialogs.core.provider.mjs +109 -0
  48. package/esm2020/dialogs/dialogs.module.mjs +89 -0
  49. package/esm2020/forms/form.module.mjs +87 -0
  50. package/esm2020/forms/types/avatar.type.mjs +53 -0
  51. package/esm2020/forms/types/profile.image.type.mjs +54 -0
  52. package/esm2020/forms/types/title.type.mjs +60 -0
  53. package/esm2020/lib/ngx-scandoc.module.mjs +28 -11
  54. package/esm2020/providers/auth.provider.mjs +58 -0
  55. package/esm2020/providers/camera.provider.mjs +40 -0
  56. package/esm2020/providers/interceptor.provider.mjs +61 -0
  57. package/esm2020/providers/layout.provider.mjs +28 -0
  58. package/esm2020/providers/scan.form.mjs +386 -0
  59. package/esm2020/providers/scan.provider.mjs +488 -0
  60. package/esm2020/providers/translation.provider.mjs +50 -0
  61. package/esm2020/providers/webrtc.provider.mjs +58 -0
  62. package/esm2020/public-api.mjs +24 -4
  63. package/fesm2015/ngx-scandoc.mjs +4190 -31
  64. package/fesm2015/ngx-scandoc.mjs.map +1 -1
  65. package/fesm2020/ngx-scandoc.mjs +4166 -31
  66. package/fesm2020/ngx-scandoc.mjs.map +1 -1
  67. package/forms/form.module.d.ts +18 -0
  68. package/forms/types/avatar.type.d.ts +14 -0
  69. package/forms/types/profile.image.type.d.ts +14 -0
  70. package/forms/types/title.type.d.ts +12 -0
  71. package/lib/ngx-scandoc.module.d.ts +6 -2
  72. package/package.json +6 -2
  73. package/providers/auth.provider.d.ts +21 -0
  74. package/providers/camera.provider.d.ts +17 -0
  75. package/providers/interceptor.provider.d.ts +13 -0
  76. package/providers/layout.provider.d.ts +11 -0
  77. package/providers/scan.form.d.ts +13 -0
  78. package/providers/scan.provider.d.ts +237 -0
  79. package/providers/translation.provider.d.ts +9 -0
  80. package/providers/webrtc.provider.d.ts +11 -0
  81. package/public-api.d.ts +23 -3
  82. package/esm2020/lib/ngx-scandoc.component.mjs +0 -22
  83. package/esm2020/lib/ngx-scandoc.service.mjs +0 -14
  84. package/lib/ngx-scandoc.component.d.ts +0 -8
  85. package/lib/ngx-scandoc.service.d.ts +0 -6
@@ -0,0 +1,83 @@
1
+ import { EventEmitter, ElementRef, ChangeDetectorRef, AfterViewInit } from '@angular/core';
2
+ import { MatDialogRef } from '@angular/material/dialog';
3
+ import { Subject, Observable } from 'rxjs';
4
+ import { FormGroup } from '@angular/forms';
5
+ import { WebcamImage } from '../../../core/components/webcam/domain/webcam-image';
6
+ import { WebcamInitError } from '../../../core/components/webcam/domain/webcam-init-error';
7
+ import { DialogsCoreProvider } from '../../../dialogs/dialogs.core.provider';
8
+ import { TranslateService } from '@ngx-translate/core';
9
+ import { ScanProvider } from '../../../providers/scan.provider';
10
+ import * as i0 from "@angular/core";
11
+ export interface IWindow extends Window {
12
+ TextDetector: any;
13
+ }
14
+ export declare class ScanSelfieComponent implements AfterViewInit {
15
+ cd: ChangeDetectorRef;
16
+ scanProvider: ScanProvider;
17
+ private dialogs;
18
+ private translate;
19
+ scanBlastData: any;
20
+ type: string;
21
+ actions: EventEmitter<any>;
22
+ mediaDevices: any;
23
+ deviceId?: string;
24
+ videoOptions: MediaTrackConstraints;
25
+ dialogRef?: MatDialogRef<any>;
26
+ data: any;
27
+ multipleWebcamsAvailable: boolean;
28
+ fields: any;
29
+ documentTypeSelected: boolean;
30
+ selectedSide: any;
31
+ images: any;
32
+ preview: any;
33
+ scanType: any;
34
+ width: any;
35
+ height: any;
36
+ videoWidth: any;
37
+ videoHeight: any;
38
+ allowCameraSwitch: boolean;
39
+ error: boolean;
40
+ cameraReady: boolean;
41
+ result: any;
42
+ scaning: boolean;
43
+ defaultDevice: any;
44
+ scanDatas: any;
45
+ scanSide: any;
46
+ webcamImage?: WebcamImage;
47
+ model: any;
48
+ trigger: Subject<number>;
49
+ nextWebcam: Subject<boolean | string>;
50
+ form: FormGroup<{}>;
51
+ wraper?: ElementRef;
52
+ onResize(): void;
53
+ constructor(cd: ChangeDetectorRef, scanProvider: ScanProvider, dialogs: DialogsCoreProvider, translate: TranslateService);
54
+ init(): void;
55
+ handleImage(webcamImage: WebcamImage): void;
56
+ handleInitError(error: WebcamInitError): void;
57
+ get scanBlastCanUpload(): boolean;
58
+ cameraWasSwitched(deviceId: string): void;
59
+ get nextWebcamObservable(): Observable<boolean | string>;
60
+ ngAfterViewInit(): void;
61
+ selectCamera(event: any): void;
62
+ close(): void;
63
+ singleScan(side: any): void;
64
+ getBase64(file: any): Observable<unknown>;
65
+ handleFileInput(target: any, event: any, side: any): void;
66
+ rotateBase64Image(base64data: any): Observable<unknown>;
67
+ sendMobile(): void;
68
+ singleScanRotate(side: any): void;
69
+ singleScanRemove(side: any): void;
70
+ resolutionLimit(file: any): Observable<unknown>;
71
+ private getImgBase64;
72
+ scanBlastFinish(): void;
73
+ cameraOff(ev: any): void;
74
+ continue(): void;
75
+ retry(): void;
76
+ triggerSnapshot(): void;
77
+ scan(): void;
78
+ retake(): void;
79
+ use(): void;
80
+ selfie(): void;
81
+ static ɵfac: i0.ɵɵFactoryDeclaration<ScanSelfieComponent, never>;
82
+ static ɵcmp: i0.ɵɵComponentDeclaration<ScanSelfieComponent, "app-scan-selfie", never, { "type": "type"; }, { "actions": "actions"; }, never, never, false>;
83
+ }
@@ -0,0 +1,12 @@
1
+ import { OnInit } from '@angular/core';
2
+ import { MatDialogRef } from '@angular/material/dialog';
3
+ import * as i0 from "@angular/core";
4
+ export declare class TurnDocumentComponent implements OnInit {
5
+ dialogRef: MatDialogRef<TurnDocumentComponent>;
6
+ data: any;
7
+ constructor(dialogRef: MatDialogRef<TurnDocumentComponent>, data: any);
8
+ ngOnInit(): void;
9
+ close(): void;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<TurnDocumentComponent, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<TurnDocumentComponent, "app-turndocuments", never, {}, {}, never, never, false>;
12
+ }
@@ -0,0 +1,18 @@
1
+ import { MatDialog, MatDialogRef } from '@angular/material/dialog';
2
+ import { BlankComponent } from './components/blank/blank.component';
3
+ import * as i0 from "@angular/core";
4
+ export declare class DialogsCoreProvider {
5
+ private matDialog;
6
+ components: any;
7
+ private blank;
8
+ constructor(matDialog: MatDialog);
9
+ private getComponent;
10
+ open(config: any, withComponent?: boolean): MatDialogRef<BlankComponent, any>;
11
+ scanProfile(data: any): MatDialogRef<BlankComponent, any>;
12
+ loading(title?: string): MatDialogRef<BlankComponent, any>;
13
+ alert(title: string, text: string): MatDialogRef<BlankComponent, any>;
14
+ turnDocument(idScan: any): import("rxjs").Observable<any>;
15
+ scanSelfie(data: any): MatDialogRef<BlankComponent, any>;
16
+ static ɵfac: i0.ɵɵFactoryDeclaration<DialogsCoreProvider, never>;
17
+ static ɵprov: i0.ɵɵInjectableDeclaration<DialogsCoreProvider>;
18
+ }
@@ -0,0 +1,21 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./components/scan-profile/scan-profile.component";
3
+ import * as i2 from "./components/blank/blank.component";
4
+ import * as i3 from "./components/loading/loading.component";
5
+ import * as i4 from "./components/confirm/confirm.component";
6
+ import * as i5 from "./components/turn-document/turn-document.component";
7
+ import * as i6 from "./components/scan-selfie/scan-selfie.component";
8
+ import * as i7 from "angularx-qrcode";
9
+ import * as i8 from "@angular/forms";
10
+ import * as i9 from "@angular/common";
11
+ import * as i10 from "../forms/form.module";
12
+ import * as i11 from "@ngx-translate/core";
13
+ import * as i12 from "../core/shared/material.module";
14
+ import * as i13 from "../core/components/components.module";
15
+ import * as i14 from "../core/pipes/pipes.module";
16
+ import * as i15 from "@angular/flex-layout";
17
+ export declare class DialogsModule {
18
+ static ɵfac: i0.ɵɵFactoryDeclaration<DialogsModule, never>;
19
+ static ɵmod: i0.ɵɵNgModuleDeclaration<DialogsModule, [typeof i1.ScanProfileComponent, typeof i2.BlankComponent, typeof i3.LoadingComponent, typeof i4.ConfirmComponent, typeof i5.TurnDocumentComponent, typeof i6.ScanSelfieComponent], [typeof i7.QRCodeModule, typeof i8.ReactiveFormsModule, typeof i9.CommonModule, typeof i8.FormsModule, typeof i10.AppFormModule, typeof i11.TranslateModule, typeof i12.MaterialModule, typeof i13.CoreComponentsModule, typeof i14.CorePipesModule, typeof i15.FlexModule, typeof i15.FlexLayoutModule], [typeof i1.ScanProfileComponent, typeof i3.LoadingComponent, typeof i2.BlankComponent, typeof i5.TurnDocumentComponent, typeof i12.MaterialModule, typeof i6.ScanSelfieComponent]>;
20
+ static ɵinj: i0.ɵɵInjectorDeclaration<DialogsModule>;
21
+ }
@@ -0,0 +1,236 @@
1
+ export const workertext = `
2
+
3
+
4
+ let readStream = true;
5
+ async function blobToBase64(blob) {
6
+ return new Promise((resolve, _) => {
7
+ const reader = new FileReader();
8
+ reader.onloadend = () => resolve(reader.result);
9
+ reader.readAsDataURL(blob);
10
+ });
11
+ }
12
+ async function delay(ms) {
13
+ return new Promise((resolve) =>
14
+ ms > 0 ? setTimeout(resolve, ms) : resolve(0)
15
+ );
16
+ }
17
+
18
+ function calculateDelay(startTime) {
19
+ const endTime = Date.now();
20
+ // difference in ms
21
+ const dt = endTime - startTime;
22
+ const delay = 100 - dt;
23
+ // console.log('[WORKER TIME]', dt, '[DELAY 100-x]', delay);
24
+ return delay > 4 ? delay : 0;
25
+ }
26
+ async function parseFrame(frameStream, trackSettings) {
27
+ const reader = frameStream.getReader();
28
+
29
+ while (readStream) {
30
+ const time = Date.now();
31
+ const result = await reader.read();
32
+ if (result.done) break;
33
+
34
+ const frameFromCamera = result.value;
35
+
36
+ await parseFrameFromCamera(frameFromCamera, trackSettings);
37
+ // wait
38
+ await delay(calculateDelay(time));
39
+ }
40
+ }
41
+
42
+ async function parseFrameFast(frameStream, trackSettings) {
43
+ console.warn('FAST', performance.now());
44
+ const reader = frameStream.getReader();
45
+ const { width, height } = trackSettings;
46
+ const offscreenSmall = new OffscreenCanvas(384, 384);
47
+ const context = offscreenSmall.getContext('2d');
48
+ let time = 0;
49
+ while (true) {
50
+ // const t0 = performance.now();
51
+ // console.time('result');
52
+ const result = reader.read();
53
+ // console.timeEnd('result');
54
+ if (result.done) break;
55
+
56
+ const frameFromCamera = result.value;
57
+ // console.log(frameFromCamera.timestamp);
58
+
59
+ // const tt = frameFromCamera.timestamp - time;
60
+ // console.log(tt / 1000);
61
+ // time = frameFromCamera.timestamp;
62
+
63
+ // console.time('bitmap');
64
+ const bitmap = await createImageBitmap(frameFromCamera, {
65
+ premultiplyAlpha: 'default',
66
+ });
67
+ console.warn(new Date().getTime());
68
+ // console.timeEnd('bitmap');
69
+
70
+ // context.clearRect(0, 0, 384, 384);
71
+ // console.time('draw');
72
+ // context.drawImage(bitmap, 0, 0, width, height, 0, 0, 384, 384);
73
+ // console.timeEnd('draw');
74
+ // console.time('transfer');
75
+ // const bitmapSmall = offscreenSmall.transferToImageBitmap();
76
+ // console.timeEnd('transfer');
77
+
78
+ frameFromCamera.close();
79
+ // //
80
+ // const t1 = performance.now();
81
+
82
+
83
+ // await parseFrameFromCamera(frameFromCamera, trackSettings);
84
+ }
85
+ }
86
+
87
+ async function parseFrameFromCamera(frameFromCamera, trackSettings) {
88
+ const { width, height } = trackSettings;
89
+ const offscreenSmall = new OffscreenCanvas(384, 384);
90
+ // console.time('bit2');
91
+ const bitmap = await createImageBitmap(frameFromCamera, {
92
+ premultiplyAlpha: 'default',
93
+ });
94
+ // console.timeEnd('bit2');
95
+ const context = offscreenSmall.getContext('2d');
96
+
97
+ // console.time('buffer');
98
+ // const buffer = new Uint8Array(frameFromCamera.allocationSize());
99
+ // let layout = await frameFromCamera.copyTo(buffer);
100
+
101
+ // const base64 = await blobToBase64(new Blob([buffer]));
102
+ // console.log(base64)
103
+ // console.timeEnd('buffer');
104
+
105
+ if (context) {
106
+ context.imageSmoothingEnabled = false;
107
+
108
+ // let videoFrame2 = frameFromCamera.clone();
109
+
110
+ // createImageBitmap();
111
+
112
+ // console.time('clear');
113
+ // context.clearRect(0, 0, width, height);
114
+ // console.timeEnd('clear');
115
+ // console.time('draw');
116
+ context.drawImage(bitmap, 0, 0, width, height, 0, 0, 384, 384);
117
+ // console.timeEnd('draw');
118
+ // context.drawImage(bit, 0, 0);
119
+ // bit2.close();
120
+ // bit.close();
121
+ // console.timeEnd('draw');
122
+ // console.time('capture');
123
+
124
+ // const bitmapsmall = offscreenSmall.transferToImageBitmap();
125
+
126
+ // const imageData = context.getImageData(0, 0, 384, 384);
127
+ // console.timeEnd('capture');
128
+ // console.time('blob');
129
+ const resized = await offscreenSmall.convertToBlob({
130
+ type: 'image/jpeg',
131
+ });
132
+ // console.timeEnd('blob');
133
+ // console.log(resized);
134
+ // console.time('base64');
135
+ const base64 = await blobToBase64(resized);
136
+ //console.timeEnd('base64');
137
+ // console.log(blob);
138
+
139
+ // console.time('convert')
140
+ // await convert(bitmap, trackSettings)
141
+ // console.timeEnd('convert');
142
+ // console.log(
143
+ // '%c ',
144
+ // 'font-size:384px; background:url('+blob+') no-repeat;'
145
+ // );
146
+
147
+ // console.timeEnd('blob');
148
+ postMessage({ base64, bitmap }, [bitmap]);
149
+ // videoFrame2.close();
150
+ }
151
+ frameFromCamera.close();
152
+ }
153
+
154
+ async function convert(image, trackSettings) {
155
+ const { width, height } = trackSettings;
156
+
157
+ const offscreenSmall = new OffscreenCanvas(width, height);
158
+
159
+ const context = offscreenSmall.getContext('2d');
160
+
161
+ // console.time('buffer');
162
+ // const buffer = new Uint8Array(frameFromCamera.allocationSize());
163
+ // let layout = await frameFromCamera.copyTo(buffer);
164
+ // console.timeEnd('buffer');
165
+
166
+ if (context) {
167
+ context.imageSmoothingEnabled = false;
168
+ // let videoFrame2 = frameFromCamera.clone();
169
+ console.warn(image);
170
+ // createImageBitmap();
171
+
172
+ // console.time('clear');
173
+ // context.clearRect(0, 0, width, height);
174
+ // console.timeEnd('clear');
175
+
176
+ context.drawImage(image, 0, 0);
177
+ // context.drawImage(bit, 0, 0);
178
+ // image.close();
179
+ // console.timeEnd('drawB');
180
+ console.time('blob2');
181
+ const resized = await offscreenSmall.convertToBlob({
182
+ type: 'image/jpeg',
183
+ });
184
+ console.timeEnd('blob2');
185
+
186
+ // image.close();
187
+ // console.time('base64');
188
+ const base64 = await blobToBase64(resized);
189
+
190
+ // console.log(blob);
191
+
192
+ // console.log(
193
+ // '%c ',
194
+ // 'font-size:384px; background:url(' + base64 + ') no-repeat;'
195
+ // );
196
+
197
+ // console.timeEnd('base64');
198
+ //postMessage({ type: 'convert', base64 });
199
+ }
200
+ }
201
+ addEventListener('message', ({ data }) => {
202
+ const { type, image, frameStream, trackSettings } = data;
203
+ // console.log(data);
204
+ switch (type) {
205
+ case 'start':
206
+ readStream = true;
207
+ parseFrame(frameStream, trackSettings);
208
+ break;
209
+
210
+ case 'fast':
211
+ readStream = true;
212
+ parseFrameFast(frameStream, trackSettings);
213
+ break;
214
+
215
+ case 'stop':
216
+ console.warn('STOP WORKER');
217
+ readStream = false;
218
+ break;
219
+
220
+ case 'convert':
221
+ convert(image, trackSettings);
222
+ break;
223
+ }
224
+
225
+ // const canvas = document.createElement('canvas');
226
+ // const ctx = canvas.getContext('2d');
227
+
228
+ // if (data.canvas) {
229
+ // postMessage('ok');
230
+ // } else {
231
+
232
+ // postMessage(response);
233
+ // }
234
+ });
235
+ `;
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLndvcmtlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zY2FuZG9jL3NyYy9jb3JlL2FwcC53b3JrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0EwT3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3Qgd29ya2VydGV4dCA9IGBcblxuXG5sZXQgcmVhZFN0cmVhbSA9IHRydWU7XG5hc3luYyBmdW5jdGlvbiBibG9iVG9CYXNlNjQoYmxvYikge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIF8pID0+IHtcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgIHJlYWRlci5vbmxvYWRlbmQgPSAoKSA9PiByZXNvbHZlKHJlYWRlci5yZXN1bHQpO1xuICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGJsb2IpO1xuICB9KTtcbn1cbmFzeW5jIGZ1bmN0aW9uIGRlbGF5KG1zKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT5cbiAgICBtcyA+IDAgPyBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSA6IHJlc29sdmUoMClcbiAgKTtcbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlRGVsYXkoc3RhcnRUaW1lKSB7XG4gIGNvbnN0IGVuZFRpbWUgPSBEYXRlLm5vdygpO1xuICAvLyBkaWZmZXJlbmNlIGluIG1zXG4gIGNvbnN0IGR0ID0gZW5kVGltZSAtIHN0YXJ0VGltZTtcbiAgY29uc3QgZGVsYXkgPSAxMDAgLSBkdDtcbiAvLyBjb25zb2xlLmxvZygnW1dPUktFUiBUSU1FXScsIGR0LCAnW0RFTEFZIDEwMC14XScsIGRlbGF5KTtcbiAgcmV0dXJuIGRlbGF5ID4gNCA/IGRlbGF5IDogMDtcbn1cbmFzeW5jIGZ1bmN0aW9uIHBhcnNlRnJhbWUoZnJhbWVTdHJlYW0sIHRyYWNrU2V0dGluZ3MpIHtcbiAgY29uc3QgcmVhZGVyID0gZnJhbWVTdHJlYW0uZ2V0UmVhZGVyKCk7XG5cbiAgd2hpbGUgKHJlYWRTdHJlYW0pIHtcbiAgICBjb25zdCB0aW1lID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZWFkZXIucmVhZCgpO1xuICAgIGlmIChyZXN1bHQuZG9uZSkgYnJlYWs7XG5cbiAgICBjb25zdCBmcmFtZUZyb21DYW1lcmEgPSByZXN1bHQudmFsdWU7XG5cbiAgICBhd2FpdCBwYXJzZUZyYW1lRnJvbUNhbWVyYShmcmFtZUZyb21DYW1lcmEsIHRyYWNrU2V0dGluZ3MpO1xuICAgIC8vIHdhaXRcbiAgICBhd2FpdCBkZWxheShjYWxjdWxhdGVEZWxheSh0aW1lKSk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gcGFyc2VGcmFtZUZhc3QoZnJhbWVTdHJlYW0sIHRyYWNrU2V0dGluZ3MpIHtcbiAgY29uc29sZS53YXJuKCdGQVNUJywgcGVyZm9ybWFuY2Uubm93KCkpO1xuICBjb25zdCByZWFkZXIgPSBmcmFtZVN0cmVhbS5nZXRSZWFkZXIoKTtcbiAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSB0cmFja1NldHRpbmdzO1xuICBjb25zdCBvZmZzY3JlZW5TbWFsbCA9IG5ldyBPZmZzY3JlZW5DYW52YXMoMzg0LCAzODQpO1xuICBjb25zdCBjb250ZXh0ID0gb2Zmc2NyZWVuU21hbGwuZ2V0Q29udGV4dCgnMmQnKTtcbiAgbGV0IHRpbWUgPSAwO1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIC8vIGNvbnN0IHQwID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgLy8gIGNvbnNvbGUudGltZSgncmVzdWx0Jyk7XG4gICAgY29uc3QgcmVzdWx0ID0gcmVhZGVyLnJlYWQoKTtcbiAgICAvLyAgY29uc29sZS50aW1lRW5kKCdyZXN1bHQnKTtcbiAgICBpZiAocmVzdWx0LmRvbmUpIGJyZWFrO1xuXG4gICAgY29uc3QgZnJhbWVGcm9tQ2FtZXJhID0gcmVzdWx0LnZhbHVlO1xuICAgIC8vIGNvbnNvbGUubG9nKGZyYW1lRnJvbUNhbWVyYS50aW1lc3RhbXApO1xuXG4gICAgLy8gY29uc3QgdHQgPSBmcmFtZUZyb21DYW1lcmEudGltZXN0YW1wIC0gdGltZTtcbiAgICAvLyBjb25zb2xlLmxvZyh0dCAvIDEwMDApO1xuICAgIC8vIHRpbWUgPSBmcmFtZUZyb21DYW1lcmEudGltZXN0YW1wO1xuXG4gICAgLy8gY29uc29sZS50aW1lKCdiaXRtYXAnKTtcbiAgICBjb25zdCBiaXRtYXAgPSBhd2FpdCBjcmVhdGVJbWFnZUJpdG1hcChmcmFtZUZyb21DYW1lcmEsIHtcbiAgICAgIHByZW11bHRpcGx5QWxwaGE6ICdkZWZhdWx0JyxcbiAgICB9KTtcbiAgICBjb25zb2xlLndhcm4obmV3IERhdGUoKS5nZXRUaW1lKCkpO1xuICAgIC8vIGNvbnNvbGUudGltZUVuZCgnYml0bWFwJyk7XG5cbiAgICAvLyBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCAzODQsIDM4NCk7XG4gICAgLy8gY29uc29sZS50aW1lKCdkcmF3Jyk7XG4gICAgLy8gY29udGV4dC5kcmF3SW1hZ2UoYml0bWFwLCAwLCAwLCB3aWR0aCwgaGVpZ2h0LCAwLCAwLCAzODQsIDM4NCk7XG4gICAgLy8gY29uc29sZS50aW1lRW5kKCdkcmF3Jyk7XG4gICAgLy8gY29uc29sZS50aW1lKCd0cmFuc2ZlcicpO1xuICAgIC8vIGNvbnN0IGJpdG1hcFNtYWxsID0gb2Zmc2NyZWVuU21hbGwudHJhbnNmZXJUb0ltYWdlQml0bWFwKCk7XG4gICAgLy8gY29uc29sZS50aW1lRW5kKCd0cmFuc2ZlcicpO1xuXG4gICAgZnJhbWVGcm9tQ2FtZXJhLmNsb3NlKCk7XG4gICAgLy8gLy9cbiAgICAvLyBjb25zdCB0MSA9IHBlcmZvcm1hbmNlLm5vdygpO1xuXG5cbiAgICAvLyBhd2FpdCBwYXJzZUZyYW1lRnJvbUNhbWVyYShmcmFtZUZyb21DYW1lcmEsIHRyYWNrU2V0dGluZ3MpO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHBhcnNlRnJhbWVGcm9tQ2FtZXJhKGZyYW1lRnJvbUNhbWVyYSwgdHJhY2tTZXR0aW5ncykge1xuICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IHRyYWNrU2V0dGluZ3M7XG4gIGNvbnN0IG9mZnNjcmVlblNtYWxsID0gbmV3IE9mZnNjcmVlbkNhbnZhcygzODQsIDM4NCk7XG4gIC8vIGNvbnNvbGUudGltZSgnYml0MicpO1xuICBjb25zdCBiaXRtYXAgPSBhd2FpdCBjcmVhdGVJbWFnZUJpdG1hcChmcmFtZUZyb21DYW1lcmEsIHtcbiAgICBwcmVtdWx0aXBseUFscGhhOiAnZGVmYXVsdCcsXG4gIH0pO1xuICAvLyBjb25zb2xlLnRpbWVFbmQoJ2JpdDInKTtcbiAgY29uc3QgY29udGV4dCA9IG9mZnNjcmVlblNtYWxsLmdldENvbnRleHQoJzJkJyk7XG5cbiAgLy8gICAgICBjb25zb2xlLnRpbWUoJ2J1ZmZlcicpO1xuICAvLyAgICAgIGNvbnN0IGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KGZyYW1lRnJvbUNhbWVyYS5hbGxvY2F0aW9uU2l6ZSgpKTtcbiAgLy8gICAgICBsZXQgbGF5b3V0ID0gYXdhaXQgZnJhbWVGcm9tQ2FtZXJhLmNvcHlUbyhidWZmZXIpO1xuXG4gIC8vICAgICAgIGNvbnN0IGJhc2U2NCA9IGF3YWl0IGJsb2JUb0Jhc2U2NChuZXcgQmxvYihbYnVmZmVyXSkpO1xuICAvLyBjb25zb2xlLmxvZyhiYXNlNjQpXG4gIC8vICAgICAgY29uc29sZS50aW1lRW5kKCdidWZmZXInKTtcblxuICBpZiAoY29udGV4dCkge1xuICAgIGNvbnRleHQuaW1hZ2VTbW9vdGhpbmdFbmFibGVkID0gZmFsc2U7XG5cbiAgICAvLyBsZXQgdmlkZW9GcmFtZTIgPSBmcmFtZUZyb21DYW1lcmEuY2xvbmUoKTtcblxuICAgIC8vICAgY3JlYXRlSW1hZ2VCaXRtYXAoKTtcblxuICAgIC8vIGNvbnNvbGUudGltZSgnY2xlYXInKTtcbiAgICAvLyBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAvLyAgY29uc29sZS50aW1lRW5kKCdjbGVhcicpO1xuICAgIC8vIGNvbnNvbGUudGltZSgnZHJhdycpO1xuICAgIGNvbnRleHQuZHJhd0ltYWdlKGJpdG1hcCwgMCwgMCwgd2lkdGgsIGhlaWdodCwgMCwgMCwgMzg0LCAzODQpO1xuICAgIC8vIGNvbnNvbGUudGltZUVuZCgnZHJhdycpO1xuICAgIC8vIGNvbnRleHQuZHJhd0ltYWdlKGJpdCwgMCwgMCk7XG4gICAgLy8gIGJpdDIuY2xvc2UoKTtcbiAgICAvLyAgYml0LmNsb3NlKCk7XG4gICAgLy8gIGNvbnNvbGUudGltZUVuZCgnZHJhdycpO1xuICAgIC8vIGNvbnNvbGUudGltZSgnY2FwdHVyZScpO1xuXG4gICAgLy8gY29uc3QgYml0bWFwc21hbGwgPSBvZmZzY3JlZW5TbWFsbC50cmFuc2ZlclRvSW1hZ2VCaXRtYXAoKTtcblxuICAgIC8vIGNvbnN0IGltYWdlRGF0YSA9IGNvbnRleHQuZ2V0SW1hZ2VEYXRhKDAsIDAsIDM4NCwgMzg0KTtcbiAgICAvLyAgY29uc29sZS50aW1lRW5kKCdjYXB0dXJlJyk7XG4gICAgLy8gY29uc29sZS50aW1lKCdibG9iJyk7XG4gICAgY29uc3QgcmVzaXplZCA9IGF3YWl0IG9mZnNjcmVlblNtYWxsLmNvbnZlcnRUb0Jsb2Ioe1xuICAgICAgdHlwZTogJ2ltYWdlL2pwZWcnLFxuICAgIH0pO1xuICAgIC8vIGNvbnNvbGUudGltZUVuZCgnYmxvYicpO1xuICAgIC8vICBjb25zb2xlLmxvZyhyZXNpemVkKTtcbiAgICAvLyAgY29uc29sZS50aW1lKCdiYXNlNjQnKTtcbiAgICBjb25zdCBiYXNlNjQgPSBhd2FpdCBibG9iVG9CYXNlNjQocmVzaXplZCk7XG4gICAgLy9jb25zb2xlLnRpbWVFbmQoJ2Jhc2U2NCcpO1xuICAgIC8vIGNvbnNvbGUubG9nKGJsb2IpO1xuXG4gICAgLy8gY29uc29sZS50aW1lKCdjb252ZXJ0JylcbiAgICAvLyBhd2FpdCBjb252ZXJ0KGJpdG1hcCwgdHJhY2tTZXR0aW5ncylcbiAgICAvLyBjb25zb2xlLnRpbWVFbmQoJ2NvbnZlcnQnKTtcbiAgICAvLyBjb25zb2xlLmxvZyhcbiAgICAvLyAgICclYyAnLFxuICAgIC8vICAgJ2ZvbnQtc2l6ZTozODRweDsgYmFja2dyb3VuZDp1cmwoJytibG9iKycpIG5vLXJlcGVhdDsnXG4gICAgLy8gKTtcblxuICAgIC8vICAgY29uc29sZS50aW1lRW5kKCdibG9iJyk7XG4gICAgcG9zdE1lc3NhZ2UoeyBiYXNlNjQsIGJpdG1hcCB9LCBbYml0bWFwXSk7XG4gICAgLy8gdmlkZW9GcmFtZTIuY2xvc2UoKTtcbiAgfVxuICBmcmFtZUZyb21DYW1lcmEuY2xvc2UoKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY29udmVydChpbWFnZSwgdHJhY2tTZXR0aW5ncykge1xuICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IHRyYWNrU2V0dGluZ3M7XG5cbiAgY29uc3Qgb2Zmc2NyZWVuU21hbGwgPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpO1xuXG4gIGNvbnN0IGNvbnRleHQgPSBvZmZzY3JlZW5TbWFsbC5nZXRDb250ZXh0KCcyZCcpO1xuXG4gIC8vIGNvbnNvbGUudGltZSgnYnVmZmVyJyk7XG4gIC8vIGNvbnN0IGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KGZyYW1lRnJvbUNhbWVyYS5hbGxvY2F0aW9uU2l6ZSgpKTtcbiAgLy8gbGV0IGxheW91dCA9IGF3YWl0IGZyYW1lRnJvbUNhbWVyYS5jb3B5VG8oYnVmZmVyKTtcbiAgLy8gY29uc29sZS50aW1lRW5kKCdidWZmZXInKTtcblxuICBpZiAoY29udGV4dCkge1xuICAgIGNvbnRleHQuaW1hZ2VTbW9vdGhpbmdFbmFibGVkID0gZmFsc2U7XG4gICAgLy8gbGV0IHZpZGVvRnJhbWUyID0gZnJhbWVGcm9tQ2FtZXJhLmNsb25lKCk7XG4gICAgY29uc29sZS53YXJuKGltYWdlKTtcbiAgICAvLyAgIGNyZWF0ZUltYWdlQml0bWFwKCk7XG5cbiAgICAvLyBjb25zb2xlLnRpbWUoJ2NsZWFyJyk7XG4gICAgLy8gY29udGV4dC5jbGVhclJlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCk7XG4gICAgLy8gY29uc29sZS50aW1lRW5kKCdjbGVhcicpO1xuXG4gICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDApO1xuICAgIC8vIGNvbnRleHQuZHJhd0ltYWdlKGJpdCwgMCwgMCk7XG4gICAgLy8gaW1hZ2UuY2xvc2UoKTtcbiAgICAvLyBjb25zb2xlLnRpbWVFbmQoJ2RyYXdCJyk7XG4gICAgY29uc29sZS50aW1lKCdibG9iMicpO1xuICAgIGNvbnN0IHJlc2l6ZWQgPSBhd2FpdCBvZmZzY3JlZW5TbWFsbC5jb252ZXJ0VG9CbG9iKHtcbiAgICAgIHR5cGU6ICdpbWFnZS9qcGVnJyxcbiAgICB9KTtcbiAgICBjb25zb2xlLnRpbWVFbmQoJ2Jsb2IyJyk7XG5cbiAgICAvLyBpbWFnZS5jbG9zZSgpO1xuICAgIC8vIGNvbnNvbGUudGltZSgnYmFzZTY0Jyk7XG4gICAgY29uc3QgYmFzZTY0ID0gYXdhaXQgYmxvYlRvQmFzZTY0KHJlc2l6ZWQpO1xuXG4gICAgLy8gY29uc29sZS5sb2coYmxvYik7XG5cbiAgICAvLyBjb25zb2xlLmxvZyhcbiAgICAvLyAgICclYyAnLFxuICAgIC8vICAgJ2ZvbnQtc2l6ZTozODRweDsgYmFja2dyb3VuZDp1cmwoJyArIGJhc2U2NCArICcpIG5vLXJlcGVhdDsnXG4gICAgLy8gKTtcblxuICAgIC8vICBjb25zb2xlLnRpbWVFbmQoJ2Jhc2U2NCcpO1xuICAgIC8vcG9zdE1lc3NhZ2UoeyB0eXBlOiAnY29udmVydCcsIGJhc2U2NCB9KTtcbiAgfVxufVxuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsICh7IGRhdGEgfSkgPT4ge1xuICBjb25zdCB7IHR5cGUsIGltYWdlLCBmcmFtZVN0cmVhbSwgdHJhY2tTZXR0aW5ncyB9ID0gZGF0YTtcbiAgLy8gY29uc29sZS5sb2coZGF0YSk7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgJ3N0YXJ0JzpcbiAgICAgIHJlYWRTdHJlYW0gPSB0cnVlO1xuICAgICAgcGFyc2VGcmFtZShmcmFtZVN0cmVhbSwgdHJhY2tTZXR0aW5ncyk7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ2Zhc3QnOlxuICAgICAgcmVhZFN0cmVhbSA9IHRydWU7XG4gICAgICBwYXJzZUZyYW1lRmFzdChmcmFtZVN0cmVhbSwgdHJhY2tTZXR0aW5ncyk7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJ3N0b3AnOlxuICAgICAgY29uc29sZS53YXJuKCdTVE9QIFdPUktFUicpO1xuICAgICAgcmVhZFN0cmVhbSA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICdjb252ZXJ0JzpcbiAgICAgIGNvbnZlcnQoaW1hZ2UsIHRyYWNrU2V0dGluZ3MpO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICAvLyBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgLy8gY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG5cbiAgLy8gaWYgKGRhdGEuY2FudmFzKSB7XG4gIC8vICAgcG9zdE1lc3NhZ2UoJ29rJyk7XG4gIC8vIH0gZWxzZSB7XG5cbiAgLy8gICBwb3N0TWVzc2FnZShyZXNwb25zZSk7XG4gIC8vIH1cbn0pO1xuYDtcbiJdfQ==
@@ -0,0 +1,15 @@
1
+ import { Subject } from 'rxjs';
2
+ import { takeUntil } from 'rxjs/operators';
3
+ export class BaseComponent {
4
+ constructor() {
5
+ this.$destroy = new Subject();
6
+ }
7
+ __subs(observable) {
8
+ return observable.pipe(takeUntil(this.$destroy));
9
+ }
10
+ __destroy() {
11
+ this.$destroy.next(true);
12
+ this.$destroy.complete();
13
+ }
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvY29yZS9jb21wb25lbnRzL2Jhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE1BQU0sT0FBTyxhQUFhO0lBQTFCO1FBQ0UsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFVM0IsQ0FBQztJQVJDLE1BQU0sQ0FBQyxVQUEyQjtRQUNoQyxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBjbGFzcyBCYXNlQ29tcG9uZW50IHtcbiAgJGRlc3Ryb3kgPSBuZXcgU3ViamVjdCgpO1xuXG4gIF9fc3VicyhvYnNlcnZhYmxlOiBPYnNlcnZhYmxlPGFueT4pIHtcbiAgICByZXR1cm4gb2JzZXJ2YWJsZS5waXBlKHRha2VVbnRpbCh0aGlzLiRkZXN0cm95KSk7XG4gIH1cblxuICBfX2Rlc3Ryb3koKSB7XG4gICAgdGhpcy4kZGVzdHJveS5uZXh0KHRydWUpO1xuICAgIHRoaXMuJGRlc3Ryb3kuY29tcGxldGUoKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,22 @@
1
+ import { Component, } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../../providers/camera.provider";
4
+ import * as i2 from "@angular/common";
5
+ import * as i3 from "@angular/forms";
6
+ import * as i4 from "@angular/material/form-field";
7
+ import * as i5 from "@angular/material/select";
8
+ import * as i6 from "@angular/material/core";
9
+ export class CameraSwitchComponent {
10
+ constructor(cameraProvider) {
11
+ this.cameraProvider = cameraProvider;
12
+ }
13
+ ngAfterViewInit() { }
14
+ ngOnDestroy() { }
15
+ }
16
+ CameraSwitchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CameraSwitchComponent, deps: [{ token: i1.NgxScandocCameraProvider }], target: i0.ɵɵFactoryTarget.Component });
17
+ 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> Camera </mat-label>\n <mat-select (selectionChange)=\"cameraProvider.selectCamera($event)\" [(ngModel)]=\"cameraProvider.deviceId\">\n <mat-option *ngFor=\"let device of cameraProvider.mediaDevices\" [value]=\"device.deviceId\">\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.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "component", type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }] });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CameraSwitchComponent, decorators: [{
19
+ type: Component,
20
+ 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> Camera </mat-label>\n <mat-select (selectionChange)=\"cameraProvider.selectCamera($event)\" [(ngModel)]=\"cameraProvider.deviceId\">\n <mat-option *ngFor=\"let device of cameraProvider.mediaDevices\" [value]=\"device.deviceId\">\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"] }]
21
+ }], ctorParameters: function () { return [{ type: i1.NgxScandocCameraProvider }]; } });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FtZXJhLXN3aXRjaC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvY29yZS9jb21wb25lbnRzL2NhbWVyYS1zd2l0Y2gvY2FtZXJhLXN3aXRjaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvY29yZS9jb21wb25lbnRzL2NhbWVyYS1zd2l0Y2gvY2FtZXJhLXN3aXRjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxHQU1WLE1BQU0sZUFBZSxDQUFDOzs7Ozs7OztBQVN2QixNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLFlBQW1CLGNBQXdDO1FBQXhDLG1CQUFjLEdBQWQsY0FBYyxDQUEwQjtJQUFHLENBQUM7SUFJL0QsZUFBZSxLQUFVLENBQUM7SUFFMUIsV0FBVyxLQUFVLENBQUM7O2tIQVBYLHFCQUFxQjtzR0FBckIscUJBQXFCLDhEQ2hCbEMseWJBV0E7MkZES2EscUJBQXFCO2tCQU5qQyxTQUFTOytCQUNFLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3hTY2FuZG9jQ2FtZXJhUHJvdmlkZXIgfSBmcm9tICcuLi8uLi8uLi9wcm92aWRlcnMvY2FtZXJhLnByb3ZpZGVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LXNjYW4tY2FtZXJhLXN3aXRjaCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYW1lcmEtc3dpdGNoLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FtZXJhLXN3aXRjaC5jb21wb25lbnQuc2NzcyddLFxuLy8gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDYW1lcmFTd2l0Y2hDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgY2FtZXJhUHJvdmlkZXI6IE5neFNjYW5kb2NDYW1lcmFQcm92aWRlcikge31cblxuXG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge31cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHt9XG59XG4iLCI8bWF0LWZvcm0tZmllbGRcbiAgc3R5bGU9XCJmb250LXNpemU6IDE0cHg7IHdpZHRoOiAyMDBweDsgbWFyZ2luLXRvcDogOHB4XCJcbiAgY2xhc3M9XCJ3LTEwMCBtci0xNiBtdC04XCJcbj5cbiAgPG1hdC1sYWJlbD4gQ2FtZXJhIDwvbWF0LWxhYmVsPlxuICA8bWF0LXNlbGVjdCAoc2VsZWN0aW9uQ2hhbmdlKT1cImNhbWVyYVByb3ZpZGVyLnNlbGVjdENhbWVyYSgkZXZlbnQpXCIgWyhuZ01vZGVsKV09XCJjYW1lcmFQcm92aWRlci5kZXZpY2VJZFwiPlxuICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBkZXZpY2Ugb2YgY2FtZXJhUHJvdmlkZXIubWVkaWFEZXZpY2VzXCIgW3ZhbHVlXT1cImRldmljZS5kZXZpY2VJZFwiPlxuICAgICAge3sgZGV2aWNlLmxhYmVsIH19XG4gICAgPC9tYXQtb3B0aW9uPlxuICA8L21hdC1zZWxlY3Q+XG48L21hdC1mb3JtLWZpZWxkPlxuIl19
@@ -0,0 +1,46 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { WebcamModule } from './webcam/webcam.module';
4
+ import { ScanComponent } from './scan/scan.component';
5
+ import { MaterialModule } from '../shared/material.module';
6
+ import { AppFormModule } from '../../forms/form.module';
7
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
8
+ import { TranslateModule } from '@ngx-translate/core';
9
+ import { CameraSwitchComponent } from './camera-switch/camera-switch.component';
10
+ import { ScanResultsComponent } from './scan-results/scan-results.component';
11
+ import * as i0 from "@angular/core";
12
+ export class CoreComponentsModule {
13
+ }
14
+ CoreComponentsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CoreComponentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
15
+ CoreComponentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: CoreComponentsModule, declarations: [ScanComponent, ScanResultsComponent, CameraSwitchComponent], imports: [CommonModule,
16
+ FormsModule,
17
+ TranslateModule,
18
+ WebcamModule,
19
+ MaterialModule,
20
+ AppFormModule,
21
+ ReactiveFormsModule], exports: [WebcamModule, ScanComponent, CameraSwitchComponent] });
22
+ CoreComponentsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CoreComponentsModule, imports: [CommonModule,
23
+ FormsModule,
24
+ TranslateModule,
25
+ WebcamModule,
26
+ MaterialModule,
27
+ AppFormModule,
28
+ ReactiveFormsModule, WebcamModule] });
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CoreComponentsModule, decorators: [{
30
+ type: NgModule,
31
+ args: [{
32
+ imports: [
33
+ CommonModule,
34
+ FormsModule,
35
+ TranslateModule,
36
+ WebcamModule,
37
+ MaterialModule,
38
+ AppFormModule,
39
+ ReactiveFormsModule,
40
+ ],
41
+ declarations: [ScanComponent, ScanResultsComponent, CameraSwitchComponent],
42
+ exports: [WebcamModule, ScanComponent, CameraSwitchComponent],
43
+ providers: [],
44
+ }]
45
+ }] });
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvY29yZS9jb21wb25lbnRzL2NvbXBvbmVudHMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOztBQWtCN0UsTUFBTSxPQUFPLG9CQUFvQjs7aUhBQXBCLG9CQUFvQjtrSEFBcEIsb0JBQW9CLGlCQUpoQixhQUFhLEVBQUUsb0JBQW9CLEVBQUUscUJBQXFCLGFBVnZFLFlBQVk7UUFDWixXQUFXO1FBQ1gsZUFBZTtRQUVmLFlBQVk7UUFDWixjQUFjO1FBRWQsYUFBYTtRQUNiLG1CQUFtQixhQUdYLFlBQVksRUFBRSxhQUFhLEVBQUUscUJBQXFCO2tIQUdqRCxvQkFBb0IsWUFkN0IsWUFBWTtRQUNaLFdBQVc7UUFDWCxlQUFlO1FBRWYsWUFBWTtRQUNaLGNBQWM7UUFFZCxhQUFhO1FBQ2IsbUJBQW1CLEVBR1gsWUFBWTsyRkFHWCxvQkFBb0I7a0JBaEJoQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsZUFBZTt3QkFFZixZQUFZO3dCQUNaLGNBQWM7d0JBRWQsYUFBYTt3QkFDYixtQkFBbUI7cUJBQ3BCO29CQUNELFlBQVksRUFBRSxDQUFDLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxxQkFBcUIsQ0FBQztvQkFDMUUsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxxQkFBcUIsQ0FBQztvQkFDN0QsU0FBUyxFQUFFLEVBQUU7aUJBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQgeyBXZWJjYW1Nb2R1bGUgfSBmcm9tICcuL3dlYmNhbS93ZWJjYW0ubW9kdWxlJztcbmltcG9ydCB7IFNjYW5Db21wb25lbnQgfSBmcm9tICcuL3NjYW4vc2Nhbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0ZXJpYWxNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvbWF0ZXJpYWwubW9kdWxlJztcbmltcG9ydCB7IEFwcEZvcm1Nb2R1bGUgfSBmcm9tICcuLi8uLi9mb3Jtcy9mb3JtLm1vZHVsZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgQ2FtZXJhU3dpdGNoQ29tcG9uZW50IH0gZnJvbSAnLi9jYW1lcmEtc3dpdGNoL2NhbWVyYS1zd2l0Y2guY29tcG9uZW50JztcbmltcG9ydCB7IFNjYW5SZXN1bHRzQ29tcG9uZW50IH0gZnJvbSAnLi9zY2FuLXJlc3VsdHMvc2Nhbi1yZXN1bHRzLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuXG4gICAgV2ViY2FtTW9kdWxlLFxuICAgIE1hdGVyaWFsTW9kdWxlLFxuXG4gICAgQXBwRm9ybU1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtTY2FuQ29tcG9uZW50LCBTY2FuUmVzdWx0c0NvbXBvbmVudCwgQ2FtZXJhU3dpdGNoQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW1dlYmNhbU1vZHVsZSwgU2NhbkNvbXBvbmVudCwgQ2FtZXJhU3dpdGNoQ29tcG9uZW50XSxcbiAgcHJvdmlkZXJzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29yZUNvbXBvbmVudHNNb2R1bGUge31cbiJdfQ==