ngx-scandoc 15.2.3 → 15.2.4

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 (47) hide show
  1. package/core/components/scan/scan.component.d.ts +2 -3
  2. package/core/components/webcam/webcam/webcam.component.d.ts +2 -1
  3. package/core/interfaces/config.d.ts +0 -1
  4. package/esm2020/core/components/camera-switch/camera-switch.component.mjs +4 -4
  5. package/esm2020/core/components/components.module.mjs +5 -5
  6. package/esm2020/core/components/manual-scan/manual-scan.component.mjs +4 -4
  7. package/esm2020/core/components/scan/scan.component.mjs +59 -48
  8. package/esm2020/core/components/scan-results/scan-results.component.mjs +4 -4
  9. package/esm2020/core/components/webcam/webcam/webcam.component.mjs +18 -10
  10. package/esm2020/core/components/webcam/webcam.module.mjs +5 -5
  11. package/esm2020/core/interfaces/config.mjs +1 -1
  12. package/esm2020/core/pipes/pipes.module.mjs +5 -5
  13. package/esm2020/core/pipes/safeResourceUrl.pipe.mjs +4 -4
  14. package/esm2020/core/shared/material.module.mjs +5 -5
  15. package/esm2020/dialogs/components/blank/blank.component.mjs +4 -4
  16. package/esm2020/dialogs/components/confirm/confirm.component.mjs +4 -4
  17. package/esm2020/dialogs/components/loading/loading.component.mjs +4 -4
  18. package/esm2020/dialogs/components/prompt-manual/prompt-manual.component.mjs +4 -4
  19. package/esm2020/dialogs/components/scan-profile/scan-profile.component.mjs +4 -4
  20. package/esm2020/dialogs/components/scan-selfie/scan-selfie.component.mjs +4 -4
  21. package/esm2020/dialogs/components/turn-document/turn-document.component.mjs +4 -4
  22. package/esm2020/dialogs/dialogs.core.provider.mjs +4 -4
  23. package/esm2020/dialogs/dialogs.module.mjs +5 -5
  24. package/esm2020/forms/form.module.mjs +5 -5
  25. package/esm2020/forms/types/avatar.type.mjs +4 -4
  26. package/esm2020/forms/types/profile.image.type.mjs +4 -4
  27. package/esm2020/forms/types/title.type.mjs +4 -4
  28. package/esm2020/lib/ngx-scandoc.module.mjs +5 -5
  29. package/esm2020/providers/auth.provider.mjs +4 -4
  30. package/esm2020/providers/camera.provider.mjs +4 -4
  31. package/esm2020/providers/interceptor.provider.mjs +4 -4
  32. package/esm2020/providers/layout.provider.mjs +4 -4
  33. package/esm2020/providers/scan.form.mjs +4 -4
  34. package/esm2020/providers/scan.provider.mjs +5 -15
  35. package/esm2020/providers/translate-loader.provider.mjs +4 -4
  36. package/esm2020/providers/translation.provider.mjs +4 -4
  37. package/esm2020/providers/webrtc.provider.mjs +4 -4
  38. package/fesm2015/ngx-scandoc.mjs +177 -168
  39. package/fesm2015/ngx-scandoc.mjs.map +1 -1
  40. package/fesm2020/ngx-scandoc.mjs +176 -167
  41. package/fesm2020/ngx-scandoc.mjs.map +1 -1
  42. package/package.json +1 -1
  43. package/providers/scan.provider.d.ts +1 -8
  44. package/src/assets/i18n/de.json +1 -3
  45. package/src/assets/i18n/en.json +2 -3
  46. package/src/assets/i18n/hr.json +1 -3
  47. package/src/assets/i18n/it.json +1 -3
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-scandoc.mjs","sources":["../../../projects/ngx-scandoc/src/core/components/webcam/domain/webcam-image.ts","../../../projects/ngx-scandoc/src/core/components/base.component.ts","../../../projects/ngx-scandoc/src/providers/camera.provider.ts","../../../projects/ngx-scandoc/src/core/components/webcam/webcam/webcam.component.ts","../../../projects/ngx-scandoc/src/core/components/webcam/webcam/webcam.component.html","../../../projects/ngx-scandoc/src/core/components/webcam/webcam.module.ts","../../../projects/ngx-scandoc/src/core/tokens/config.tokens.ts","../../../projects/ngx-scandoc/src/providers/scan.provider.ts","../../../projects/ngx-scandoc/src/providers/layout.provider.ts","../../../projects/ngx-scandoc/src/providers/auth.provider.ts","../../../projects/ngx-scandoc/src/providers/translation.provider.ts","../../../projects/ngx-scandoc/src/providers/scan.form.ts","../../../projects/ngx-scandoc/src/core/components/scan-results/scan-results.component.ts","../../../projects/ngx-scandoc/src/core/components/scan-results/scan-results.component.html","../../../projects/ngx-scandoc/src/core/components/manual-scan/manual-scan.component.ts","../../../projects/ngx-scandoc/src/core/components/manual-scan/manual-scan.component.html","../../../projects/ngx-scandoc/src/core/components/scan/scan.component.ts","../../../projects/ngx-scandoc/src/core/components/scan/scan.component.html","../../../projects/ngx-scandoc/src/core/shared/material.module.ts","../../../projects/ngx-scandoc/src/forms/types/avatar.type.ts","../../../projects/ngx-scandoc/src/forms/types/title.type.ts","../../../projects/ngx-scandoc/src/forms/types/profile.image.type.ts","../../../projects/ngx-scandoc/src/forms/form.module.ts","../../../projects/ngx-scandoc/src/core/components/camera-switch/camera-switch.component.ts","../../../projects/ngx-scandoc/src/core/components/camera-switch/camera-switch.component.html","../../../projects/ngx-scandoc/src/core/components/components.module.ts","../../../projects/ngx-scandoc/src/core/pipes/safeResourceUrl.pipe.ts","../../../projects/ngx-scandoc/src/core/pipes/pipes.module.ts","../../../projects/ngx-scandoc/src/dialogs/components/blank/blank.component.ts","../../../projects/ngx-scandoc/src/dialogs/components/blank/blank.component.html","../../../projects/ngx-scandoc/src/dialogs/components/loading/loading.component.ts","../../../projects/ngx-scandoc/src/dialogs/components/loading/loading.component.html","../../../projects/ngx-scandoc/src/dialogs/components/confirm/confirm.component.ts","../../../projects/ngx-scandoc/src/dialogs/components/confirm/confirm.component.html","../../../projects/ngx-scandoc/src/dialogs/components/scan-selfie/scan-selfie.component.ts","../../../projects/ngx-scandoc/src/dialogs/components/scan-selfie/scan-selfie.component.html","../../../projects/ngx-scandoc/src/dialogs/components/turn-document/turn-document.component.ts","../../../projects/ngx-scandoc/src/dialogs/components/turn-document/turn-document.component.html","../../../projects/ngx-scandoc/src/dialogs/components/prompt-manual/prompt-manual.component.ts","../../../projects/ngx-scandoc/src/dialogs/components/prompt-manual/prompt-manual.component.html","../../../projects/ngx-scandoc/src/dialogs/dialogs.core.provider.ts","../../../projects/ngx-scandoc/src/dialogs/components/scan-profile/scan-profile.component.ts","../../../projects/ngx-scandoc/src/dialogs/components/scan-profile/scan-profile.component.html","../../../projects/ngx-scandoc/src/dialogs/dialogs.module.ts","../../../projects/ngx-scandoc/src/providers/interceptor.provider.ts","../../../projects/ngx-scandoc/src/core/helpers/object-utils.ts","../../../projects/ngx-scandoc/src/providers/translate-loader.provider.ts","../../../projects/ngx-scandoc/src/providers/webrtc.provider.ts","../../../projects/ngx-scandoc/src/lib/ngx-scandoc.module.ts","../../../projects/ngx-scandoc/src/public-api.ts","../../../projects/ngx-scandoc/src/ngx-scandoc.ts"],"sourcesContent":["/**\n * Container class for a captured webcam image\n * @author basst314, davidshen84\n */\nexport class WebcamImage {\n public constructor(\n imageAsDataUrl: string,\n mimeType: string,\n imageData: any,\n resized: any\n ) {\n this._mimeType = mimeType;\n this._imageAsDataUrl = imageAsDataUrl;\n this._imageData = imageData;\n this._imageResized = resized;\n }\n\n private readonly _mimeType: string;\n private _imageAsBase64?: string;\n private readonly _imageAsDataUrl: string;\n private readonly _imageData: ImageData;\n private readonly _imageResized: string;\n\n\n /**\n * Extracts the Base64 data out of the given dataUrl.\n * @param dataUrl the given dataUrl\n * @param mimeType the mimeType of the data\n */\n private static getDataFromDataUrl(dataUrl: string, mimeType: string) {\n return dataUrl.replace(`data:${mimeType};base64,`, '');\n }\n\n /**\n * Get the base64 encoded image data\n * @returns base64 data of the image\n */\n public get imageAsBase64(): string {\n return this._imageAsBase64\n ? this._imageAsBase64\n : (this._imageAsBase64 = WebcamImage.getDataFromDataUrl(\n this._imageAsDataUrl,\n this._mimeType\n ));\n }\n\n /**\n * Get the encoded image as dataUrl\n * @returns the dataUrl of the image\n */\n public get imageAsDataUrl(): string {\n return this._imageAsDataUrl;\n }\n\n /**\n * Get the ImageData object associated with the canvas' 2d context.\n * @returns the ImageData of the canvas's 2d context.\n */\n public get imageData(): ImageData {\n return this._imageData;\n }\n\n public get imageResized(): string {\n return this._imageResized;\n }\n\n public get dataUrl() {\n const canvas = document.createElement('canvas');\n\n const { width, height } = this._imageData;\n canvas.width = width;\n canvas.height = height;\n\n const ctx = canvas.getContext('2d');\n if (ctx) {\n ctx.putImageData(this._imageData, 0, 0);\n }\n\n return canvas.toDataURL(this._mimeType, 1);\n }\n}\n","import { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nexport class BaseComponent {\n $destroy = new Subject();\n\n __subs(observable: Observable<any>) {\n return observable.pipe(takeUntil(this.$destroy));\n }\n\n __destroy() {\n this.$destroy.next(true);\n this.$destroy.complete();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { webSocket } from 'rxjs/webSocket';\nimport { BehaviorSubject, Subject, from, of } from 'rxjs';\nimport { filter, map, switchMap } from 'rxjs/operators';\nimport { WebcamUtil } from '../core/components/webcam/util/webcam.util';\nimport { Platform } from '@angular/cdk/platform';\n@Injectable({\n providedIn: 'root',\n})\nexport class NgxScandocCameraProvider {\n mediaDevices: any;\n\n deviceId: any;\n\n selfie$ = new Subject();\n\n rectPosition = {\n l: 0,\n t: 0,\n h: 0,\n w: 0,\n _w: 0,\n _h: 0,\n };\n switchCamera = new Subject();\n $showSwitchSelfie = new Subject();\n\n cameraReady = false;\n\n $showSwitch = new Subject();\n\n cameraSwitched = new Subject();\n\n devices = new Subject();\n\n multipleWebcamsAvailable = false;\n id = Math.random();\n constructor(private platform: Platform) {\n console.warn('PROVIDER INIT', this.id);\n this.setup();\n }\n\n get hintPosition() {\n return this.rectPosition.t + this.rectPosition.h + 5;\n }\n\n getDevices() {\n if (this.mediaDevices) {\n return of(this.mediaDevices);\n }\n\n return this.devices.asObservable();\n }\n\n private preloadVideo() {\n return from(navigator.mediaDevices.getUserMedia({ video: true })).pipe(\n map((mediaStream) => {\n console.warn(mediaStream);\n if (!this.platform.FIREFOX) {\n mediaStream.getTracks().forEach((track) => {\n track.stop();\n });\n }\n })\n );\n }\n setup() {\n console.warn('SETUP');\n this.$showSwitch.subscribe((s) => {\n console.log(s);\n });\n // console.time('device');\n\n const devices$ = this.preloadVideo().pipe(\n switchMap(() =>\n from(navigator.mediaDevices.enumerateDevices()).pipe(\n map((inputDevices: MediaDeviceInfo[]) =>\n inputDevices.filter((m) => m.kind == 'videoinput')\n )\n )\n )\n );\n\n devices$.subscribe((mediaDevices: MediaDeviceInfo[]) => {\n console.log(\n '[DEVICES]',\n mediaDevices,\n mediaDevices.map((d) => d.label)\n );\n this.mediaDevices = mediaDevices;\n this.multipleWebcamsAvailable = mediaDevices && mediaDevices.length > 1;\n this.devices.next(mediaDevices);\n });\n }\n setDefault() {\n if (this.deviceId) {\n this.switchCamera.next(this.deviceId);\n }\n }\n\n selectCamera(event: any) {\n this.switchCamera.next(event.value);\n }\n\n public cameraWasSwitched(deviceId: string): void {\n console.log('[active device]', deviceId);\n this.deviceId = deviceId;\n this.cameraReady = true;\n }\n get webcamObservable() {\n return this.switchCamera.asObservable();\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostListener,\n Input,\n NgZone,\n OnDestroy,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { WebcamInitError } from '../domain/webcam-init-error';\nimport { WebcamImage } from '../domain/webcam-image';\nimport { from, Observable, of, Subject, Subscription } from 'rxjs';\nimport { WebcamUtil } from '../util/webcam.util';\nimport { WebcamMirrorProperties } from '../domain/webcam-mirror-properties';\nimport {\n BreakpointObserver,\n Breakpoints,\n BreakpointState,\n} from '@angular/cdk/layout';\nimport { Platform } from '@angular/cdk/platform';\nimport { map, switchMap } from 'rxjs/operators';\nimport { workertext } from '../../../app.worker';\nimport { NgxScandocCameraProvider } from '../../../../providers/camera.provider';\nimport { BaseComponent } from '../../base.component';\n\ndeclare var MediaStreamTrackProcessor: any;\n\n@Component({\n selector: 'ngx-scandoc-webcam',\n templateUrl: './webcam.component.html',\n styleUrls: ['./webcam.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WebcamComponent\n extends BaseComponent\n implements AfterViewInit, OnDestroy\n{\n private triggerSubscription?: Subscription;\n canvasSize: any = { width: 0, height: 0 };\n showVideo = false;\n setupAttempt = 0;\n canvasData: any = {\n ctx: null,\n ctxO: null,\n };\n\n mediaStream!: MediaStream;\n @Input() imageHandler!: Subject<any>;\n\n @Input() public type?: 'document' | 'selfie' | 'manual';\n\n @Input() trigger!: Observable<number>;\n // public set trigger(trigger: Observable<number>) {\n // if (this.triggerSubscription) {\n // this.triggerSubscription.unsubscribe();\n // }\n\n // // Subscribe to events from this Observable to take snapshots\n // this.triggerSubscription = trigger.subscribe((time) => {\n // this.takeSnapshot(time);\n // });\n // }\n resizeTimeout: any;\n @HostListener('window:resize', ['$event'])\n onResize() {\n this.cameraProvider.rectPosition.t = 0;\n // this.videoReady.next(false);\n if (this.resizeTimeout) {\n clearTimeout(this.resizeTimeout);\n }\n this.resizeTimeout = setTimeout(() => {\n this.drawRectangle();\n }, 50);\n }\n\n private chunks: any = [];\n @ViewChild('canvas', { static: true }) private canvas: any;\n\n @ViewChild('video', { static: true }) private videoRef: any;\n\n @Output() public cameraSwitched: EventEmitter<string> =\n new EventEmitter<string>();\n @Output() public videoReady: EventEmitter<boolean> =\n new EventEmitter<boolean>();\n @Output() public imageCapture: EventEmitter<WebcamImage> =\n new EventEmitter<WebcamImage>();\n\n @Output() public initError: EventEmitter<WebcamInitError> =\n new EventEmitter<WebcamInitError>();\n constructor(\n public breakpointObserver: BreakpointObserver,\n public platform: Platform,\n private cd: ChangeDetectorRef,\n private zone: NgZone,\n\n private cameraProvider: NgxScandocCameraProvider\n ) {\n super();\n }\n ngAfterViewInit(): void {\n console.warn('[video] start');\n // initial load\n this.__subs(this.cameraProvider.getDevices()).subscribe((resp) => {\n this.init();\n });\n\n // camera switch\n this.__subs(this.cameraProvider.webcamObservable).subscribe((device) => {\n const videoTrackConstraints: any = this.setConstraints();\n this.stopAllTracks();\n this.showVideo = false;\n this.cd.detectChanges();\n videoTrackConstraints.deviceId = device;\n this.setup(videoTrackConstraints);\n });\n\n this.__subs(this.trigger).subscribe((time) => this.takeSnapshot(time));\n }\n\n public get video() {\n return this.videoRef.nativeElement;\n }\n get isMobile() {\n return this.platform.ANDROID || this.platform.IOS;\n }\n private setConstraints() {\n const out: MediaStreamConstraints = {};\n console.warn('MOBILE', this.isMobile);\n switch (this.type) {\n default:\n if (this.isMobile) {\n out.video = { height: { ideal: 1600 }, width: { ideal: 1600 } };\n out.video.facingMode = 'environment';\n } else {\n out.video = {\n width: {\n min: 1280,\n ideal: 1920,\n max: 2900,\n },\n height: {\n min: 720,\n ideal: 1080,\n max: 2900,\n },\n };\n }\n\n break;\n\n case 'selfie':\n if (this.isMobile) {\n out.video = { height: { ideal: 1600 }, width: { ideal: 1600 } };\n out.video.facingMode = 'user';\n } else {\n out.video = {\n frameRate: { min: 10 },\n height: { ideal: 1080 },\n width: { ideal: 1920 },\n };\n }\n\n break;\n }\n\n return out.video;\n }\n\n private get activeTrackSettings() {\n return this.mediaStream.getVideoTracks()[0].getSettings();\n }\n private get activeTrackCapabilities() {\n try {\n return this.mediaStream.getVideoTracks()[0].getCapabilities();\n } catch (e) {\n return {};\n }\n }\n\n private init() {\n this.__subs(this.cameraProvider.getDevices()).subscribe((resp) => {\n console.warn('DEVICES', resp);\n const videoTrackConstraints = this.setConstraints();\n this.setupAttempt = 0;\n this.setup(videoTrackConstraints);\n });\n }\n\n private setDeviceId(stream: MediaStream) {\n this.mediaStream = stream;\n this.cameraProvider.deviceId = this.activeTrackSettings.deviceId;\n this.startVideo();\n }\n private setup(videoTrackConstraints: any) {\n console.warn('videoTrackConstraints', videoTrackConstraints);\n console.time('device');\n this.__subs(\n from(\n navigator.mediaDevices.getUserMedia(<MediaStreamConstraints>{\n video: videoTrackConstraints,\n })\n )\n ).subscribe(\n (stream: MediaStream) => {\n console.timeEnd('device');\n stream.getTracks().forEach((t) => {\n //console.warn(t.getConstraints());\n\n if (!this.isMobile) {\n try {\n if (!t.getCapabilities) {\n this.setDeviceId(stream);\n\n return;\n }\n const settings = t.getSettings();\n const cap = t.getCapabilities();\n const con = t.getConstraints();\n\n console.warn(cap, con);\n console.warn(settings);\n const max = cap.width?.max;\n const min = cap.width?.min;\n const currentWidth = settings.width;\n const currentHeight = settings.height;\n\n const conWidth = con.width;\n const conHeight = con.width;\n console.warn(\n 'CAPS',\n min,\n max,\n 'CURENT',\n currentWidth,\n currentHeight\n );\n\n if (\n max &&\n currentWidth &&\n max > currentWidth &&\n conWidth != max &&\n currentWidth != 1920\n ) {\n console.log('[SET NEW RESOLUTION] ', max, currentWidth);\n this.setupAttempt++;\n if (this.setupAttempt < 4) {\n this.setup(videoTrackConstraints);\n } else {\n this.setDeviceId(stream);\n }\n } else {\n this.setDeviceId(stream);\n }\n } catch (error) {\n console.warn(error);\n }\n } else {\n console.warn('MOBILE VIDEO START');\n this.setDeviceId(stream);\n }\n });\n },\n (er) => {\n this.setupAttempt++;\n console.warn('ERROR', er);\n\n if (this.setupAttempt < 4) {\n if (er instanceof OverconstrainedError) {\n if (!this.isMobile) {\n this.setup(videoTrackConstraints);\n }\n // this.setup({\n // height: 720,\n // width: 1280,\n // });\n //}\n } else {\n this.setup(videoTrackConstraints);\n }\n }\n }\n );\n }\n\n private startVideo() {\n console.log('START VIDEO');\n this.video.srcObject = this.mediaStream;\n\n this.video.onloadedmetadata = (data: any) => {\n console.log(data);\n this.video.play();\n this.showVideo = true;\n this.cd.detectChanges();\n console.log('VIDEO PLAY');\n };\n this.video.onplay = () => {\n this.videoReady.next(true);\n console.log(this.video.videoWidth, this.video.videoHeight);\n this.drawRectangle();\n };\n }\n setCanvas() {\n let _canvas: HTMLCanvasElement = document.createElement('canvas'); //this.canvasSnapshot.nativeElement;\n\n const { videoWidth, videoHeight } = this.video;\n\n const aspect = videoWidth / videoHeight;\n\n const canvasSmalSize = 384;\n const smallSize = {\n w: 0,\n h: 0,\n };\n\n if (videoWidth >= videoHeight) {\n smallSize.w = canvasSmalSize;\n smallSize.h = canvasSmalSize / aspect;\n } else {\n smallSize.h = canvasSmalSize;\n smallSize.h = canvasSmalSize * aspect;\n }\n\n //console.log('SZ', smallSize);\n\n _canvas.width = videoWidth;\n _canvas.height = videoHeight;\n const ctx: any = _canvas.getContext('2d', {\n // alpha: false,\n // powerPreference: 'high-performance',\n // antialias: false,\n // depth: false,\n // desynchronized: true,\n // willReadFrequently: true,\n });\n\n const canvas = document.createElement('canvas'); // needs an initial size\n canvas.height = smallSize.h;\n canvas.width = smallSize.w;\n\n const ctxO: any = canvas.getContext('2d', {\n // alpha: false,\n // powerPreference: 'high-performance',\n // antialias: false,\n // depth: false,\n // desynchronized: true,\n // willReadFrequently: true,\n });\n\n this.canvasData.ctx = ctx;\n this.canvasData.ctxO = ctxO;\n this.canvasData.canvas = canvas;\n this.canvasData._canvas = _canvas;\n this.canvasData.size = smallSize;\n\n // const stream = this.video.captureStream(5);\n\n // const mediaRecorder = new MediaRecorder(stream);\n\n // mediaRecorder.start();\n\n // mediaRecorder.ondataavailable = (e:any) => {\n // console.log(e)\n // this.chunks.push(e.data);\n\n // var url = window.URL.createObjectURL(e.data);\n // var anchor = document.createElement('a');\n // anchor.download = 'myfile.webm';\n // anchor.href = url;\n // anchor.click();\n // };\n }\n\n private takeSelfie() {\n const mimeType: string = 'image/jpeg';\n const { videoWidth, offsetWidth, videoHeight } = this.video;\n\n let _canvas: HTMLCanvasElement = document.createElement('canvas'); //this.canvasSnapshot.nativeElement;\n\n const { w, h } = this.cameraProvider.rectPosition;\n\n const aspect = videoWidth / offsetWidth;\n\n // console.log(videoWidth, offsetWidth, l, t, w, h);\n\n _canvas.width = w * aspect;\n _canvas.height = h * aspect;\n\n const dx = videoWidth - w * aspect;\n const dy = videoHeight - h * aspect;\n const x = dx / 2;\n const y = dy / 2;\n\n const ctx: any = _canvas.getContext('2d', {\n alpha: false,\n powerPreference: 'high-performance',\n antialias: false,\n depth: false,\n desynchronized: true,\n });\n\n if (ctx) {\n ctx.drawImage(\n this.video,\n x,\n y,\n w * aspect,\n h * aspect,\n 0,\n 0,\n w * aspect,\n h * aspect\n );\n\n const imgAsUrl: any = _canvas.toDataURL(mimeType, 1);\n\n this.imageCapture.emit(\n new WebcamImage(imgAsUrl, mimeType, new ImageData(1, 1), null)\n );\n }\n }\n\n humanFileSize(bytes: number, si = false, dp = 1) {\n const thresh = si ? 1000 : 1024;\n\n if (Math.abs(bytes) < thresh) {\n return bytes + ' B';\n }\n\n const units = si\n ? ['kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']\n : ['KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB'];\n let u = -1;\n const r = 10 ** dp;\n\n do {\n bytes /= thresh;\n ++u;\n } while (\n Math.round(Math.abs(bytes) * r) / r >= thresh &&\n u < units.length - 1\n );\n\n return bytes.toFixed(dp) + ' ' + units[u];\n }\n\n takeSnapshot(time: number) {\n if (this.type !== 'document') {\n this.takeSelfie();\n return;\n }\n // console.warn('SNAP', time);\n if (!this.showVideo) {\n return;\n }\n this.zone.runOutsideAngular(() => {\n const canvasSmalSize = 384;\n\n const mimeType: string = 'image/jpeg';\n\n // let _canvas: HTMLCanvasElement = document.createElement('canvas'); //this.canvasSnapshot.nativeElement;\n\n const { videoWidth, videoHeight } = this.video;\n\n // _canvas.width = videoWidth;\n // _canvas.height = videoHeight;\n // console.log(videoWidth, videoHeight);\n\n // const ctx: any = _canvas.getContext('2d', {\n // alpha: false,\n // powerPreference: 'high-performance',\n // antialias: false,\n // depth: false,\n // desynchronized: true,\n // });\n\n // const canvas = document.createElement('canvas'); // needs an initial size\n // canvas.height = canvasSmalSize;\n // canvas.width = canvasSmalSize;\n\n // const ctxO: any = canvas.getContext('2d', {\n // alpha: false,\n // powerPreference: 'high-performance',\n // antialias: false,\n // depth: false,\n // desynchronized: true,\n // });\n\n const { ctx, ctxO, canvas, _canvas, size } = this.canvasData;\n\n if (ctx && ctxO) {\n ctx.imageSmoothingEnabled = false;\n const drawStart = Date.now();\n ctx.clearRect(0, 0, videoWidth, videoHeight);\n ctxO.clearRect(0, 0, size.w, size.h);\n\n ctx.drawImage(this.video, 0, 0);\n //console.time('drawVideo');\n ctxO.drawImage(_canvas, 0, 0, size.w, size.h);\n //console.timeEnd('drawVideo');\n //console.time('DRAW');\n\n // const imData: any = ctx.getImageData(0, 0, videoWidth, videoHeight);\n\n console.log(canvas.width, _canvas.width);\n //console.timeEnd('DRAW');\n\n //console.time('CTX');\n\n const resize = canvas.toDataURL('image/jpeg');\n\n const canvasData = _canvas.toDataURL(mimeType, 1);\n\n console.log(this.humanFileSize(canvasData.length));\n console.log(this.humanFileSize(resize.length));\n console.log(new Date().toISOString());\n //console.timeEnd('CTX');\n const currentTime = new Date().getTime();\n const diff = currentTime - time;\n\n // total time for pack one image\n const drawTime = Date.now() - drawStart;\n\n //console.warn('DRAW TIME', drawTime);\n const delayMax = drawTime < 60 ? 100 : 200;\n\n const delay = diff > delayMax ? 0 : delayMax - diff;\n\n const timeout = setTimeout(() => {\n this.imageCapture.emit(\n new WebcamImage(canvasData, mimeType, '', resize)\n );\n clearTimeout(timeout);\n }, delay);\n }\n });\n }\n\n private stopAllTracks() {\n this.showVideo = false;\n if (this.mediaStream && this.mediaStream.getTracks) {\n // getTracks() returns all media tracks (video+audio)\n\n this.mediaStream.getTracks().forEach((track: MediaStreamTrack) => {\n // console.log(track);\n track.enabled = false;\n this.cd.detectChanges();\n track.stop();\n\n this.video.srcObject.removeTrack(track);\n this.mediaStream.removeTrack(track);\n\n this.cd.detectChanges();\n });\n this.video.srcObject = null;\n // this.video.src = null;\n\n this.video.load();\n }\n // this.__subs(this.stopVideoTracks()).subscribe()\n }\n\n private drawRectangle() {\n this.zone.run(() => {\n const _canvas = this.canvas.nativeElement;\n let padding = 10;\n if (!this.isMobile && _canvas.width !== _canvas.height) {\n padding = 40;\n }\n const ctx = _canvas.getContext('2d');\n\n ctx.clearRect(0, 0, _canvas.width, _canvas.height);\n\n const { width, height } = _canvas;\n\n console.log('CANVAS', width, height);\n\n let { videoWidth, videoHeight } = this.video;\n\n // video will be scaled to max canvas height\n const aspect = videoWidth / videoHeight;\n\n // if (videoHeight < height) {\n // videoHeight = height;\n // videoWidth = height*aspect;\n // }\n\n console.log('VIDEO', videoWidth, videoHeight);\n\n const docSize = this.type === 'selfie' ? 1 : 86 / 55;\n\n let _height;\n let _width;\n\n if (videoWidth >= videoHeight) {\n _width = width;\n\n _height = _width / aspect;\n\n if (_height > height) {\n _height = height;\n _width = aspect * _height;\n }\n } else {\n _height = height;\n _width = aspect * _height;\n if (_width > width) {\n _width = width;\n _height = _width / aspect;\n }\n }\n\n console.log('CALC', _width, _height);\n let w, h;\n\n if (_width <= _height) {\n w = _width - 2 * padding;\n h = w / docSize;\n } else {\n h = _height - 2 * padding;\n w = docSize * h;\n }\n if (w > _width) {\n w = _width - 2 * padding;\n h = w / docSize;\n }\n\n h = Math.floor(h);\n w = Math.floor(w);\n console.log(w, h);\n\n const left = Math.floor((width - w) / 2);\n const top = Math.floor((height - h) / 2);\n\n ctx.strokeStyle = 'white';\n\n // ctx.strokeRect(left, top, _width, _height);\n ctx.fillStyle = 'rgba(255, 255, 255, 0.2)';\n // ctx.shadowColor = 'white';\n ctx.shadowBlur = 15;\n ctx.beginPath();\n\n // Draw using 5px for border radius on all sides\n // stroke it but no fill\n const radius = this.isMobile ? 10 : 30;\n\n ctx.roundRect(left, top, w, h, radius);\n ctx.stroke();\n ctx.fill();\n\n this.cameraProvider.rectPosition = {\n l: left,\n t: top,\n w,\n h,\n _w: _width,\n _h: _height,\n };\n\n this.setCanvas();\n // ctx.stroke();\n });\n }\n ngOnDestroy(): void {\n this.video.pause();\n\n // this.video.getTracks().forEach((track: any) => {\n // track.stop();\n // this.video.srcObject.removeTrack(track);\n // });\n\n this.stopAllTracks();\n\n if (this.triggerSubscription) {\n this.triggerSubscription.unsubscribe();\n }\n this.__destroy();\n\n console.warn('[VIDEO] destroyed');\n }\n}\n","<div class=\"webcam-wrapper\">\n <video #video autoplay muted style=\"display: block\" playsinline></video>\n\n <div class=\"rectangle\">\n <canvas\n #canvas\n [ngStyle]=\"{ visibility: showVideo ? 'visible' : 'hidden' }\"\n [width]=\"video.offsetWidth\"\n [height]=\"video.offsetHeight\"\n ></canvas>\n </div>\n</div>\n","import {ModuleWithProviders, NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {WebcamComponent} from './webcam/webcam.component';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { NgxScandocCameraProvider } from '../../../providers/camera.provider';\nconst COMPONENTS = [\n WebcamComponent\n];\n\n@NgModule({\n imports: [CommonModule, PlatformModule],\n declarations: [COMPONENTS],\n exports: [COMPONENTS],\n providers: [],\n})\nexport class WebcamModule {\n static forRoot(): ModuleWithProviders<WebcamModule> {\n return {\n ngModule: WebcamModule,\n providers: [],\n };\n }\n}\n","import { InjectionToken } from \"@angular/core\";\nimport { AuthConfig, ScanConfig } from \"../interfaces/config\";\n\nexport const AUTH_CONFIG_TOKEN = new InjectionToken<AuthConfig>('configAuth');\n\nexport const SCAN_CONFIG_TOKEN = new InjectionToken<ScanConfig>('scanConfig');\n","import { Inject, Injectable, Injector } from '@angular/core';\n\nimport { Observable, of } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport moment from 'moment';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { ScanConfig } from '../core/interfaces/config';\nimport { GuestData } from '../core/interfaces/guest.data';\nimport { SCAN_CONFIG_TOKEN } from '../core/tokens/config.tokens';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ScanProvider {\n countriesData: any;\n // enableVerification = true;\n\n public config: ScanConfig = this.injector.get(SCAN_CONFIG_TOKEN);\n canStoreImages = this.config.canStoreImages;\n constructor(private http: HttpClient, private injector: Injector) {}\n genderList() {\n return {\n M: 'MALE',\n 'M/M': 'MALE',\n F: 'FEMALE',\n 'F/F': 'FEMALE',\n };\n }\n\n get enableVerification() {\n return this.config.enableVerification;\n }\n addGuest(guestData: GuestData) {\n const data = {\n AcceptTermsAndConditions: true,\n DataFields: {\n GuestImageType: 'base64',\n ...guestData,\n },\n Settings: {},\n };\n const $request = this.http.put(this.config.guestAddPath, data);\n return $request;\n }\n\n stateless(DocumentFaceImage: any, LiveFaceImage: any) {\n const data = {\n AcceptTermsAndConditions: true,\n DataFields: {\n DocumentFaceImageType: 'base64',\n DocumentFaceImage,\n LiveFaceImageType: 'base64',\n LiveFaceImage,\n },\n };\n const $request = this.http.post(this.config.stateLessPath, data);\n return $request;\n }\n\n sendErrorLog(data: any) {\n return this.http.post(this.config.errorLoggingPath, data);\n }\n\n /**\n *\n * @param data\n * @returns\n * @deprecated\n */\n sendLog(data: any) {\n const { TransactionID } = data.Response;\n const $request = this.http.post(this.config.errorLoggingPath, data, {\n headers: new HttpHeaders({\n TransactionID,\n }),\n });\n return $request;\n }\n\n burst(Images: string[], BlurValues: any[]) {\n const data = {\n AcceptTermsAndConditions: true,\n DataFields: {\n Images,\n BlurValues,\n },\n };\n\n const $request = this.http.post(this.config.validationPath, data);\n return $request;\n }\n\n countries() {\n if (this.countryNames) {\n return of(this.countryNames);\n }\n return this.http.get('/assets/data/countries2.json').pipe(\n map((data: any) => {\n this.countriesData = data.data;\n return this.countriesData;\n })\n );\n }\n\n get countryNames() {\n return [\n { label: 'Aruba', value: 'AW' },\n { label: 'Afghanistan', value: 'AF' },\n { label: 'Angola', value: 'AO' },\n { label: 'Anguilla', value: 'AI' },\n { label: 'Åland Islands', value: 'AX' },\n { label: 'Albania', value: 'AL' },\n { label: 'Andorra', value: 'AD' },\n { label: 'United Arab Emirates', value: 'AE' },\n { label: 'Argentina', value: 'AR' },\n { label: 'Armenia', value: 'AM' },\n { label: 'American Samoa', value: 'AS' },\n { label: 'Antarctica', value: 'AQ' },\n { label: 'French Southern and Antarctic Lands', value: 'TF' },\n { label: 'Antigua and Barbuda', value: 'AG' },\n { label: 'Australia', value: 'AU' },\n { label: 'Austria', value: 'AT' },\n { label: 'Azerbaijan', value: 'AZ' },\n { label: 'Burundi', value: 'BI' },\n { label: 'Belgium', value: 'BE' },\n { label: 'Benin', value: 'BJ' },\n { label: 'Burkina Faso', value: 'BF' },\n { label: 'Bangladesh', value: 'BD' },\n { label: 'Bulgaria', value: 'BG' },\n { label: 'Bahrain', value: 'BH' },\n { label: 'Bahamas', value: 'BS' },\n { label: 'Bosnia and Herzegovina', value: 'BA' },\n { label: 'Saint Barthélemy', value: 'BL' },\n { label: 'Saint Helena, Ascension and Tristan da Cunha', value: 'SH' },\n { label: 'Belarus', value: 'BY' },\n { label: 'Belize', value: 'BZ' },\n { label: 'Bermuda', value: 'BM' },\n { label: 'Bolivia', value: 'BO' },\n { label: 'Caribbean Netherlands', value: 'BQ' },\n { label: 'Brazil', value: 'BR' },\n { label: 'Barbados', value: 'BB' },\n { label: 'Brunei', value: 'BN' },\n { label: 'Bhutan', value: 'BT' },\n { label: 'Bouvet Island', value: 'BV' },\n { label: 'Botswana', value: 'BW' },\n { label: 'Central African Republic', value: 'CF' },\n { label: 'Canada', value: 'CA' },\n { label: 'Cocos (Keeling) Islands', value: 'CC' },\n { label: 'Switzerland', value: 'CH' },\n { label: 'Chile', value: 'CL' },\n { label: 'China', value: 'CN' },\n { label: 'Ivory Coast', value: 'CI' },\n { label: 'Cameroon', value: 'CM' },\n { label: 'DR Congo', value: 'CD' },\n { label: 'Republic of the Congo', value: 'CG' },\n { label: 'Cook Islands', value: 'CK' },\n { label: 'Colombia', value: 'CO' },\n { label: 'Comoros', value: 'KM' },\n { label: 'Cape Verde', value: 'CV' },\n { label: 'Costa Rica', value: 'CR' },\n { label: 'Cuba', value: 'CU' },\n { label: 'Curaçao', value: 'CW' },\n { label: 'Christmas Island', value: 'CX' },\n { label: 'Cayman Islands', value: 'KY' },\n { label: 'Cyprus', value: 'CY' },\n { label: 'Czechia', value: 'CZ' },\n { label: 'Germany', value: 'DE' },\n { label: 'Djibouti', value: 'DJ' },\n { label: 'Dominica', value: 'DM' },\n { label: 'Denmark', value: 'DK' },\n { label: 'Dominican Republic', value: 'DO' },\n { label: 'Algeria', value: 'DZ' },\n { label: 'Ecuador', value: 'EC' },\n { label: 'Egypt', value: 'EG' },\n { label: 'Eritrea', value: 'ER' },\n { label: 'Western Sahara', value: 'EH' },\n { label: 'Spain', value: 'ES' },\n { label: 'Estonia', value: 'EE' },\n { label: 'Ethiopia', value: 'ET' },\n { label: 'Finland', value: 'FI' },\n { label: 'Fiji', value: 'FJ' },\n { label: 'Falkland Islands', value: 'FK' },\n { label: 'France', value: 'FR' },\n { label: 'Faroe Islands', value: 'FO' },\n { label: 'Micronesia', value: 'FM' },\n { label: 'Gabon', value: 'GA' },\n { label: 'United Kingdom', value: 'GB' },\n { label: 'Georgia', value: 'GE' },\n { label: 'Guernsey', value: 'GG' },\n { label: 'Ghana', value: 'GH' },\n { label: 'Gibraltar', value: 'GI' },\n { label: 'Guinea', value: 'GN' },\n { label: 'Guadeloupe', value: 'GP' },\n { label: 'Gambia', value: 'GM' },\n { label: 'Guinea-Bissau', value: 'GW' },\n { label: 'Equatorial Guinea', value: 'GQ' },\n { label: 'Greece', value: 'GR' },\n { label: 'Grenada', value: 'GD' },\n { label: 'Greenland', value: 'GL' },\n { label: 'Guatemala', value: 'GT' },\n { label: 'French Guiana', value: 'GF' },\n { label: 'Guam', value: 'GU' },\n { label: 'Guyana', value: 'GY' },\n { label: 'Hong Kong', value: 'HK' },\n { label: 'Heard Island and McDonald Islands', value: 'HM' },\n { label: 'Honduras', value: 'HN' },\n { label: 'Croatia', value: 'HR' },\n { label: 'Haiti', value: 'HT' },\n { label: 'Hungary', value: 'HU' },\n { label: 'Indonesia', value: 'ID' },\n { label: 'Isle of Man', value: 'IM' },\n { label: 'India', value: 'IN' },\n { label: 'British Indian Ocean Territory', value: 'IO' },\n { label: 'Ireland', value: 'IE' },\n { label: 'Iran', value: 'IR' },\n { label: 'Iraq', value: 'IQ' },\n { label: 'Iceland', value: 'IS' },\n { label: 'Israel', value: 'IL' },\n { label: 'Italy', value: 'IT' },\n { label: 'Jamaica', value: 'JM' },\n { label: 'Jersey', value: 'JE' },\n { label: 'Jordan', value: 'JO' },\n { label: 'Japan', value: 'JP' },\n { label: 'Kazakhstan', value: 'KZ' },\n { label: 'Kenya', value: 'KE' },\n { label: 'Kyrgyzstan', value: 'KG' },\n { label: 'Cambodia', value: 'KH' },\n { label: 'Kiribati', value: 'KI' },\n { label: 'Saint Kitts and Nevis', value: 'KN' },\n { label: 'South Korea', value: 'KR' },\n { label: 'Kuwait', value: 'KW' },\n { label: 'Laos', value: 'LA' },\n { label: 'Lebanon', value: 'LB' },\n { label: 'Liberia', value: 'LR' },\n { label: 'Libya', value: 'LY' },\n { label: 'Saint Lucia', value: 'LC' },\n { label: 'Liechtenstein', value: 'LI' },\n { label: 'Sri Lanka', value: 'LK' },\n { label: 'Lesotho', value: 'LS' },\n { label: 'Lithuania', value: 'LT' },\n { label: 'Luxembourg', value: 'LU' },\n { label: 'Latvia', value: 'LV' },\n { label: 'Macau', value: 'MO' },\n { label: 'Saint Martin', value: 'MF' },\n { label: 'Morocco', value: 'MA' },\n { label: 'Monaco', value: 'MC' },\n { label: 'Moldova', value: 'MD' },\n { label: 'Madagascar', value: 'MG' },\n { label: 'Maldives', value: 'MV' },\n { label: 'Mexico', value: 'MX' },\n { label: 'Marshall Islands', value: 'MH' },\n { label: 'Macedonia', value: 'MK' },\n { label: 'Mali', value: 'ML' },\n { label: 'Malta', value: 'MT' },\n { label: 'Myanmar', value: 'MM' },\n { label: 'Montenegro', value: 'ME' },\n { label: 'Mongolia', value: 'MN' },\n { label: 'Northern Mariana Islands', value: 'MP' },\n { label: 'Mozambique', value: 'MZ' },\n { label: 'Mauritania', value: 'MR' },\n { label: 'Montserrat', value: 'MS' },\n { label: 'Martinique', value: 'MQ' },\n { label: 'Mauritius', value: 'MU' },\n { label: 'Malawi', value: 'MW' },\n { label: 'Malaysia', value: 'MY' },\n { label: 'Mayotte', value: 'YT' },\n { label: 'Namibia', value: 'NA' },\n { label: 'New Caledonia', value: 'NC' },\n { label: 'Niger', value: 'NE' },\n { label: 'Norfolk Island', value: 'NF' },\n { label: 'Nigeria', value: 'NG' },\n { label: 'Nicaragua', value: 'NI' },\n { label: 'Niue', value: 'NU' },\n { label: 'Netherlands', value: 'NL' },\n { label: 'Norway', value: 'NO' },\n { label: 'Nepal', value: 'NP' },\n { label: 'Nauru', value: 'NR' },\n { label: 'New Zealand', value: 'NZ' },\n { label: 'Oman', value: 'OM' },\n { label: 'Pakistan', value: 'PK' },\n { label: 'Panama', value: 'PA' },\n { label: 'Pitcairn Islands', value: 'PN' },\n { label: 'Peru', value: 'PE' },\n { label: 'Philippines', value: 'PH' },\n { label: 'Palau', value: 'PW' },\n { label: 'Papua New Guinea', value: 'PG' },\n { label: 'Poland', value: 'PL' },\n { label: 'Puerto Rico', value: 'PR' },\n { label: 'North Korea', value: 'KP' },\n { label: 'Portugal', value: 'PT' },\n { label: 'Paraguay', value: 'PY' },\n { label: 'Palestine', value: 'PS' },\n { label: 'French Polynesia', value: 'PF' },\n { label: 'Qatar', value: 'QA' },\n { label: 'Réunion', value: 'RE' },\n { label: 'Romania', value: 'RO' },\n { label: 'Russia', value: 'RU' },\n { label: 'Rwanda', value: 'RW' },\n { label: 'Saudi Arabia', value: 'SA' },\n { label: 'Sudan', value: 'SD' },\n { label: 'Senegal', value: 'SN' },\n { label: 'Singapore', value: 'SG' },\n { label: 'South Georgia', value: 'GS' },\n { label: 'Svalbard and Jan Mayen', value: 'SJ' },\n { label: 'Solomon Islands', value: 'SB' },\n { label: 'Sierra Leone', value: 'SL' },\n { label: 'El Salvador', value: 'SV' },\n { label: 'San Marino', value: 'SM' },\n { label: 'Somalia', value: 'SO' },\n { label: 'Saint Pierre and Miquelon', value: 'PM' },\n { label: 'Serbia', value: 'RS' },\n { label: 'South Sudan', value: 'SS' },\n { label: 'São Tomé and Príncipe', value: 'ST' },\n { label: 'Suriname', value: 'SR' },\n { label: 'Slovakia', value: 'SK' },\n { label: 'Slovenia', value: 'SI' },\n { label: 'Sweden', value: 'SE' },\n { label: 'Swaziland', value: 'SZ' },\n { label: 'Seychelles', value: 'SC' },\n { label: 'Syria', value: 'SY' },\n { label: 'Turks and Caicos Islands', value: 'TC' },\n { label: 'Chad', value: 'TD' },\n { label: 'Togo', value: 'TG' },\n { label: 'Thailand', value: 'TH' },\n { label: 'Tajikistan', value: 'TJ' },\n { label: 'Tokelau', value: 'TK' },\n { label: 'Turkmenistan', value: 'TM' },\n { label: 'Timor-Leste', value: 'TL' },\n { label: 'Tonga', value: 'TO' },\n { label: 'Trinidad and Tobago', value: 'TT' },\n { label: 'Tunisia', value: 'TN' },\n { label: 'Turkey', value: 'TR' },\n { label: 'Tuvalu', value: 'TV' },\n { label: 'Taiwan', value: 'TW' },\n { label: 'Tanzania', value: 'TZ' },\n { label: 'Uganda', value: 'UG' },\n { label: 'Ukraine', value: 'UA' },\n { label: 'United States Minor Outlying Islands', value: 'UM' },\n { label: 'Uruguay', value: 'UY' },\n { label: 'United States', value: 'US' },\n { label: 'Uzbekistan', value: 'UZ' },\n { label: 'Vatican City', value: 'VA' },\n { label: 'Saint Vincent and the Grenadines', value: 'VC' },\n { label: 'Venezuela', value: 'VE' },\n { label: 'British Virgin Islands', value: 'VG' },\n { label: 'United States Virgin Islands', value: 'VI' },\n { label: 'Vietnam', value: 'VN' },\n { label: 'Vanuatu', value: 'VU' },\n { label: 'Wallis and Futuna', value: 'WF' },\n { label: 'Samoa', value: 'WS' },\n { label: 'Yemen', value: 'YE' },\n { label: 'South Africa', value: 'ZA' },\n { label: 'Zambia', value: 'ZM' },\n { label: 'Zimbabwe', value: 'ZW' },\n ];\n }\n countryList() {\n return {\n AFG: 'AF',\n ALB: 'AL',\n DZA: 'DZ',\n ASM: 'AS',\n AND: 'AD',\n AGO: 'AO',\n AIA: 'AI',\n ATG: 'AG',\n ARG: 'AR',\n ARM: 'AM',\n ABW: 'AW',\n AUS: 'AU',\n AUT: 'AT',\n AZE: 'AZ',\n BHS: 'BS',\n BHR: 'BH',\n BGD: 'BD',\n BRB: 'BB',\n BLR: 'BY',\n BEL: 'BE',\n BLZ: 'BZ',\n BEN: 'BJ',\n BMU: 'BM',\n BTN: 'BT',\n BOL: 'BO',\n BIH: 'BA',\n BWA: 'BW',\n BRA: 'BR',\n VGB: 'VG',\n BRN: 'BN',\n BGR: 'BG',\n BFA: 'BF',\n BDI: 'BI',\n KHM: 'KH',\n CMR: 'CM',\n CAN: 'CA',\n CPV: 'CV',\n CAF: 'CF',\n TCD: 'TD',\n CHL: 'CL',\n CHN: 'CN',\n HKG: 'HK',\n MAC: 'MO',\n COL: 'CO',\n COM: 'KM',\n COG: 'CG',\n CRI: 'CR',\n CIV: 'CI',\n HRV: 'HR',\n CUB: 'CU',\n CYP: 'CY',\n CZE: 'CZ',\n DNK: 'DK',\n DJI: 'DJ',\n DMA: 'DM',\n DOM: 'DO',\n ECU: 'EC',\n EGY: 'EG',\n SLV: 'SV',\n GNQ: 'GQ',\n ERI: 'ER',\n EST: 'EE',\n ETH: 'ET',\n FRO: 'FO',\n FJI: 'FJ',\n FIN: 'FI',\n FRA: 'FR',\n GUF: 'GF',\n PYF: 'PF',\n GAB: 'GA',\n GMB: 'GM',\n GEO: 'GE',\n DEU: 'DE',\n GHA: 'GH',\n GRC: 'GR',\n GRL: 'GL',\n GRD: 'GD',\n GLP: 'GP',\n GUM: 'GU',\n GTM: 'GT',\n GNB: 'GW',\n HTI: 'HT',\n HND: 'HN',\n ISL: 'IS',\n IDN: 'ID',\n IRQ: 'IQ',\n ITA: 'IT',\n JPN: 'JP',\n JOR: 'JO',\n KAZ: 'KZ',\n KEN: 'KE',\n KIR: 'KI',\n PRK: 'KP',\n KOR: 'KR',\n KWT: 'KW',\n KGZ: 'KG',\n LAO: 'LA',\n LVA: 'LV',\n LBN: 'LB',\n LSO: 'LS',\n LBR: 'LR',\n LBY: 'LY',\n LIE: 'LI',\n LTU: 'LT',\n LUX: 'LU',\n MDG: 'MG',\n MWI: 'MW',\n MYS: 'MY',\n MDV: 'MV',\n MLI: 'ML',\n MLT: 'MT',\n MHL: 'MH',\n MTQ: 'MQ',\n MRT: 'MR',\n MUS: 'MU',\n MEX: 'MX',\n FSM: 'FM',\n MDA: 'MD',\n MCO: 'MC',\n MNG: 'MN',\n MNE: 'ME',\n MSR: 'MS',\n MAR: 'MA',\n MOZ: 'MZ',\n MMR: 'MM',\n NAM: 'NA',\n NRU: 'NR',\n NPL: 'NP',\n NLD: 'NL',\n ANT: 'AN',\n NCL: 'NC',\n NZL: 'NZ',\n NIC: 'NI',\n NER: 'NE',\n NGA: 'NG',\n MNP: 'MP',\n NOR: 'NO',\n OMN: 'OM',\n PAK: 'PK',\n PLW: 'PW',\n PSE: 'PS',\n PAN: 'PA',\n PNG: 'PG',\n PRY: 'PY',\n PER: 'PE',\n PHL: 'PH',\n PCN: 'PN',\n POL: 'PL',\n PRT: 'PT',\n PRI: 'PR',\n QAT: 'QA',\n REU: 'RE',\n ROU: 'RO',\n RUS: 'RU',\n RWA: 'RW',\n KNA: 'KN',\n LCA: 'LC',\n VCT: 'VC',\n WSM: 'WS',\n SMR: 'SM',\n STP: 'ST',\n SAU: 'SA',\n SEN: 'SN',\n SRB: 'RS',\n SYC: 'SC',\n SLE: 'SL',\n SGP: 'SG',\n SVK: 'SK',\n SVN: 'SI',\n SLB: 'SB',\n SOM: 'SO',\n ZAF: 'ZA',\n ESP: 'ES',\n LKA: 'LK',\n SDN: 'SD',\n SUR: 'SR',\n SWZ: 'SZ',\n SWE: 'SE',\n CHE: 'CH',\n SYR: 'SY',\n TJK: 'TJ',\n TZA: 'TZ',\n THA: 'TH',\n TLS: 'TL',\n TGO: 'TG',\n TON: 'TO',\n TTO: 'TT',\n TUN: 'TN',\n TUR: 'TR',\n TKM: 'TM',\n TUV: 'TV',\n UGA: 'UG',\n UKR: 'UA',\n ARE: 'AE',\n GBR: 'GB',\n USA: 'US',\n URY: 'UY',\n UZB: 'UZ',\n VUT: 'VU',\n VEN: 'VE',\n VNM: 'VN',\n VIR: 'VI',\n YEM: 'YE',\n ZMB: 'ZM',\n ZWE: 'ZW',\n };\n }\n\n get fields(): any {\n return [\n {\n key: 'Birth Date',\n form: 'birthDate',\n type: 'date',\n main: false,\n blastKey: 'BirthDate',\n },\n\n {\n key: 'Given Name',\n form: 'firstName',\n ucFirst: true,\n type: 'string',\n main: true,\n blastKey: 'Name',\n },\n {\n key: 'Surname',\n form: 'lastName',\n ucFirst: true,\n type: 'string',\n main: true,\n blastKey: 'Surname',\n },\n\n {\n key: 'Sex',\n form: 'gender',\n type: 'gender',\n main: false,\n blastKey: 'Gender',\n },\n {\n key: 'Document Class Name',\n type: 'string',\n form: 'documentType',\n main: false,\n blastKey: 'docType',\n },\n {\n key: 'Document Number',\n type: 'string',\n form: 'documentNumber',\n main: false,\n blastKey: 'DocumentNumber',\n },\n {\n key: 'Issuing State Code',\n type: 'country',\n form: 'issueStateCode',\n blastKey: 'CountryOfIssue',\n main: false,\n },\n {\n key: 'Expiration Date',\n type: 'date',\n form: 'expirationDate',\n blastKey: 'ExpiryDate',\n main: false,\n },\n {\n key: 'Issue Date',\n type: 'date',\n form: 'issueDate',\n blastKey: 'IssuedDate',\n main: false,\n },\n {\n key: 'Birth Place',\n type: 'string',\n form: 'birthPlace',\n blastKey: 'PlaceOfBirth',\n main: false,\n },\n {\n key: 'Issuing Authority',\n type: 'string',\n form: 'issuingPlace',\n blastKey: 'IssuingAuthority',\n main: false,\n },\n {\n key: 'Nationality Code',\n type: 'country',\n form: 'nationality',\n main: false,\n blastKey: 'Nationality',\n },\n {\n key: 'street1',\n type: 'string',\n form: 'street1',\n main: false,\n blastKey: 'AddressStreet',\n },\n {\n key: 'city',\n type: 'string',\n form: 'city',\n main: false,\n blastKey: 'AddressCity',\n },\n {\n key: 'country',\n type: 'country',\n form: 'country',\n main: false,\n blastKey: 'Country',\n },\n {\n key: 'zip',\n type: 'string',\n form: 'zip',\n main: false,\n blastKey: 'AddressZip',\n },\n ];\n }\n parseBlast(results: any) {\n const countries: any = this.countryList();\n const genders: any = this.genderList();\n const data: any = this.fields;\n\n const validatedAddressFields = [\n 'AddressCity',\n 'AddressZip',\n 'AddressCounty',\n 'AddressStreet',\n ].filter((key) => results[key].Validated);\n\n // if no address is validated\n if (validatedAddressFields.length === 0) {\n if (results.Address.Validated) {\n results.AddressStreet = results.Address;\n }\n }\n\n const out = data.map((itm: any) => {\n const res = results[itm.blastKey];\n if (res) {\n const value = res.RecommendedValue || '';\n\n switch (itm.type) {\n case 'string':\n itm.value = value;\n if (itm.ucFirst) {\n const name = value.toLowerCase();\n itm.value = name.charAt(0).toUpperCase() + name.slice(1);\n }\n break;\n case 'date':\n itm.value = value ? moment(value, 'DD.MM.YYYY').toDate() : null;\n // if (value.indexOf('/Date') >= 0) {\n // console.log(value);\n // const timestamp = value.replace(/\\D/gm, '');\n // //itm.value = moment.unix(timestamp / 1000).toDate();\n // itm.value = moment(\n // timestamp - moment(timestamp, 'x').utcOffset() * 60 * 1000,\n // 'x',\n // ).toDate();\n // }\n\n break;\n case 'country':\n itm.value = countries[value] || null;\n break;\n case 'gender':\n itm.value = genders[value] || null;\n }\n }\n return itm;\n });\n\n const model: any = {};\n\n out.forEach((element: any) => {\n console.log(element);\n model[element.form] = element.value;\n });\n\n model.documentType = results.Metadata.DocumentType;\n\n console.log(model);\n\n return {\n fields: out,\n model,\n };\n }\n\n blastPost(data: any) {\n // const $request = this.api.http.get('/assets/json/blastscan.json');\n\n const $request = this.http.post(this.config.extractionPath, data);\n\n return $request.pipe(\n map((m: any) => {\n if (m.Metadata && m.Metadata.length > 0) {\n const metadata = m.Metadata[0];\n m.Data.Country = {\n RecommendedValue: metadata.Country,\n };\n m.Data.Metadata = metadata;\n }\n return m;\n })\n );\n }\n\n blobToDataUrl(file: any): Observable<string> {\n return Observable.create((obs: any) => {\n const reader = new FileReader();\n reader.onerror = (err) => obs.error(err);\n reader.onabort = (err) => obs.error(err);\n reader.onload = () => {\n obs.next(reader.result);\n };\n reader.onloadend = () => obs.complete();\n return reader.readAsDataURL(file);\n });\n }\n}\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { Platform } from '@angular/cdk/platform';\nimport { Injectable } from '@angular/core';\nimport { distinctUntilChanged, tap } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LayoutProvider {\n isMobile = false;\n readonly breakpoint$ = this.breakpointObserver\n .observe(['(min-width: 768px)'])\n .pipe(\n tap((value) => console.log(value)),\n distinctUntilChanged()\n );\n constructor(private breakpointObserver: BreakpointObserver,private platform:Platform) {}\n\n init() {\n\n\n this.breakpoint$.subscribe((v: any) => {\n this.isMobile = !v.matches || this.platform.IOS || this.platform.ANDROID;\n\n document.body.className = this.isMobile ? 'mobile' : 'desktop';\n });\n }\n}\n","import { Inject, Injectable, Injector } from '@angular/core';\nimport jwt_decode from 'jwt-decode';\nimport { Observable, of } from 'rxjs';\nimport { map, switchMap, tap } from 'rxjs/operators';\nimport moment from 'moment';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { AuthConfig } from '../core/interfaces/config';\nimport { Buffer } from 'buffer';\nimport { AUTH_CONFIG_TOKEN } from '../core/tokens/config.tokens';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgxScandocAuthProvider {\n subClient!: string;\n config: AuthConfig= this.injector.get(AUTH_CONFIG_TOKEN)\n constructor(\n private http: HttpClient,\n private injector: Injector\n\n ) {}\n\n setSubClient(name: string) {\n this.subClient = name;\n }\n setConfig() {}\n\n token: string = '';\n\n refresh_token: string = '';\n\n tokenTimestamps: any = {\n Time: 0,\n Client: 0,\n SubClient: 0,\n };\n\n private get tokenExpired(): boolean {\n\n if (this.token == '' || this.tokenTimestamps.Time === 0) {\n console.log('EXPIRED');\n return true;\n }\n\n const { Time } = this.tokenTimestamps;\n const tokenDate = moment(Time);\n const isValid = moment(tokenDate).isBefore(moment().add(5, 'minutes'));\n\n return !isValid;\n }\n\n resetToken() {\n // this.token = '';\n }\n get accesToken(): Observable<any> {\n\n return this.tokenExpired ? this.fetchToken() : of(this.token);\n }\n\n fetchToken() {\n if (this.token && this.refresh_token) {\n return this.refreshToken();\n }\n return this.getToken();\n }\n\n refreshToken(): Observable<any> {\n const { path, refresh } = this.config;\n return this.http\n .post(`${path}${refresh}`, {\n refresh_token: this.refresh_token,\n })\n .pipe(\n tap((token: any) => {\n // console.log(this.token);\n this.token = token.access_token;\n this.updateToken();\n // this.token = token.access_token;\n // console.log('TOKEN', this.token);\n // this.refresh_token = token.refresh_token;\n // const decoded: any = jwt_decode(this.token);\n // console.log(decoded);\n // const { Time, Client, SubClient } = decoded;\n // this.tokenTimestamps = { Time, Client, SubClient };\n }),\n map((data: any) => data.access_token)\n );\n }\n\n private get user_key() {\n return this.config.clientId;\n }\n private get sub_client() {\n return this.config.tokenName ? this.config.tokenName : this.subClient;\n }\n private updateToken() {\n const decoded: any = jwt_decode(this.token);\n\n const { Time, Client, SubClient } = decoded;\n this.tokenTimestamps = { Time, Client, SubClient };\n }\n private getToken(): Observable<any> {\n\n\n const { path, login, version, clientId, tokenName } = this.config;\n\n if (version == 'v1') {\n return this.http\n .post(`${path}`, {\n clientId: clientId,\n token: tokenName,\n })\n .pipe(\n map((data: any) => data.accessToken),\n tap((token: any) => {\n this.token = token;\n const decoded: any = jwt_decode(this.token);\n const { iat, exp } = decoded;\n this.tokenTimestamps = { iat, exp, Time: 0 };\n })\n );\n }\n\n return this.http\n .post(`${path}${login}`, {\n user_key: this.user_key,\n sub_client: this.sub_client,\n })\n .pipe(\n tap((token: any) => {\n\n this.token = token.access_token;\n\n this.refresh_token = token.refresh_token;\n this.updateToken();\n }),\n map((data: any) => data.access_token)\n );\n }\n}\n","import { PlatformLocation } from '@angular/common';\nimport {\n Inject,\n Injectable,\n InjectionToken,\n Injector,\n Optional,\n} from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Observable } from 'rxjs';\nimport { TranslateLoaderProvider } from './translate-loader.provider';\n\nimport { switchMap, catchError } from 'rxjs/operators';\nimport { ScanConfig } from '../core/interfaces/config';\nimport { SCAN_CONFIG_TOKEN } from '../core/tokens/config.tokens';\nconst TRANSLATION_PROVIDER = new InjectionToken(\n 'Injection token for translation providers.'\n);\n\ninterface TranslationProvider {\n name: string;\n source: string;\n}\n@Injectable({\n providedIn: 'root',\n})\nexport class NgxScanDocTranslationProvider {\n public defaultLang!: string;\n public userLang!: string;\n private customLoader!: TranslateLoaderProvider;\n\n constructor(\n public translate: TranslateService,\n private injector: Injector,\n //@Optional() @Inject(SCAN_CONFIG_TOKEN) config: ScanConfig,\n @Optional() @Inject(TRANSLATION_PROVIDER) providers: TranslationProvider[],\n private platformLocation: PlatformLocation\n ) {\n console.log('MM', Math.random());\n this.customLoader = this.translate.currentLoader as TranslateLoaderProvider;\n //console.log('config',config)\n\n // console.log(this.translate)\n\n if (providers && providers.length > 0) {\n for (const provider of providers) {\n this.addTranslationFolder(provider.name, provider.source);\n }\n }\n }\n private path(path: any) {\n return path;\n // const baseHref = this.platformLocation\n // .getBaseHrefFromDOM()\n // .split('/')\n // .join('');\n\n // return baseHref != '' ? `/${baseHref}${path}` : path;\n }\n\n public setDefaultLang(lang: string) {\n this.defaultLang = lang;\n this.translate.setDefaultLang(this.defaultLang);\n }\n\n public registerTranslationFolder(name: string = '', path: string = '') {\n console.log(name, path, this.userLang, this.defaultLang);\n\n if (!this.customLoader.providerRegistered(name)) {\n this.customLoader.registerProvider(name, this.path(path));\n }\n }\n\n public addTranslationFolder(name: string = '', path: string = '') {\n console.log(name, path, this.userLang, this.defaultLang);\n\n if (!this.customLoader.providerRegistered(name)) {\n this.customLoader.registerProvider(name, this.path(path));\n\n if (this.userLang) {\n const existCurrentLang = this.translate.currentLang ? true : false;\n\n this.loadTranslation(\n this.userLang,\n this.defaultLang,\n !existCurrentLang\n );\n } else {\n this.loadTranslation(this.defaultLang);\n }\n }\n }\n\n public loadTranslation(lang: string, fallback?: string, useLang = true) {\n this.translate.getTranslation(lang).subscribe(\n (resp) => {\n this.onTranslationChanged(lang);\n\n if (useLang) {\n setTimeout(() => {\n this.translate.use(lang);\n }, 20);\n }\n // this.translate.reloadLang(lang)\n },\n () => {\n if (fallback && fallback !== lang) {\n this.loadTranslation(fallback);\n }\n }\n );\n }\n\n private updateTranslation(lang: string, fallback?: string): any {\n return this.translate.getTranslation(lang).pipe(\n catchError(() => {\n if (fallback && fallback !== lang) {\n return this.updateTranslation(fallback);\n }\n\n return this.translate.use(lang);\n }),\n switchMap(() => {\n this.onTranslationChanged(lang);\n\n return this.translate.use(lang);\n })\n );\n }\n\n private onTranslationChanged(lang: string): void {\n this.translate.onTranslationChange.next({\n lang,\n translations: this.customLoader.getFullTranslationJSON(lang),\n });\n }\n\n public use(lang: string): Observable<any> {\n this.customLoader.init(lang);\n\n return this.updateTranslation(lang);\n }\n forms(item: any, namespace = null) {\n if (item.fieldGroup) {\n item.fieldGroup = item.fieldGroup.map((field: any) => this.forms(field));\n }\n\n const prefix = namespace ? namespace + '.' : '';\n\n if (\n item.props &&\n (item.props.label || item.props.placeholder || item.props.options)\n ) {\n if (!item.expressions) {\n item.expressions = {};\n }\n if (item.props.label) {\n item.expressions['props.label'] = this.translate.stream(\n prefix + item.props.label\n );\n }\n if (item.props.placeholder) {\n item.expressions['props.placeholder'] = this.translate.stream(\n prefix + item.props.placeholder\n );\n }\n if (Array.isArray(item.props.options)) {\n item.expressions['props.options'] = item.props.options.map((m: any) => {\n // console.log(m);\n if (m.label) {\n m.label = this.translate.instant(prefix + m.label);\n }\n return m;\n });\n }\n }\n\n return item;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MatOption } from '@angular/material/core';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\n\nimport { Subject } from 'rxjs';\nimport { ScanProvider } from './scan.provider';\nimport { NgxScanDocTranslationProvider } from './translation.provider';\n@Injectable({\n providedIn: 'root',\n})\nexport class NgxScandocFieldsProvider {\n selfie$ = new Subject();\n customFields:any;\n constructor(\n private translate: NgxScanDocTranslationProvider,\n private provider: ScanProvider,\n\n\n ) {}\n\n update(): FormlyFieldConfig[] {\n return [\n {\n fieldGroupClassName: 'px-16',\n fieldGroup: [\n {\n wrappers: [],\n type: 'checkbox',\n key: 'profile',\n class: 'checkbox ',\n defaultValue: true,\n props: {\n label: 'scandoc.form.scan.document.update.profile',\n },\n },\n {\n wrappers: [],\n type: 'checkbox',\n class: 'checkbox ',\n key: 'document',\n defaultValue: true,\n props: {\n label: 'scandoc.form.scan.document.update.document',\n },\n },\n {\n wrappers: [],\n type: 'checkbox',\n class: 'checkbox ',\n key: 'attachment',\n defaultValue: true,\n props: {\n label: 'scandoc.form.scan.document.update.attachment',\n },\n },\n ].map((item) => this.translate.forms(item)),\n },\n ];\n }\n document(): FormlyFieldConfig[] {\n\n if(this.customFields){\n return this.customFields;\n }\n return [\n {\n className: 'w-100-p',\n fieldGroupClassName: 'form-flex-row profile-details',\n fieldGroup: [\n {\n className: 'w-100-p ',\n fieldGroupClassName: 'card-group',\n fieldGroup: [\n {\n type: 'title',\n props: {\n label: 'scandoc.form.scan.document.guestDetailsTitle',\n },\n },\n {\n type: 'profile-image',\n key: '_avatar',\n props: {\n label: 'scandoc.form.scan.document.firstName',\n },\n },\n {\n type: 'input',\n key: 'firstName',\n className: 'small',\n props: {\n label: 'scandoc.form.scan.document.firstName',\n required: true,\n },\n },\n {\n type: 'input',\n key: 'lastName',\n className: 'small',\n props: {\n label: 'scandoc.form.scan.document.lastName',\n required: true,\n },\n },\n {\n className: 'small',\n key: 'secondName',\n type: 'input',\n props: {\n label: 'scandoc.form.scan.document.secondLastName',\n },\n\n hideExpression: 'model.hideSecondLastName',\n },\n {\n type: 'input',\n key: 'middleName',\n className: 'small',\n props: {\n label: 'scandoc.form.scan.document.middleName',\n },\n },\n {\n className: '',\n fieldGroupClassName: 'form-flex-row space-between',\n fieldGroup: [\n {\n type: 'datepicker',\n key: 'birthDate',\n className: 'w-100-p small mr-8',\n props: {\n label: 'scandoc.form.scan.document.birthDate',\n },\n },\n {\n type: 'select',\n key: 'gender',\n className: 'w-100-p small ml-8',\n props: {\n label: 'scandoc.form.scan.document.gender',\n options: [\n { value: 'MALE', label: 'MALE' },\n { value: 'FEMALE', label: 'FEMALE' },\n { value: 'NA', label: 'N/A' },\n ],\n },\n },\n ],\n },\n {\n className: '',\n fieldGroupClassName: 'form-flex-row space-between',\n fieldGroup: [\n {\n type: 'input',\n key: 'birthPlace',\n className: 'small w-100-p mr-8',\n props: {\n label: 'scandoc.form.scan.document.birthPlace',\n },\n },\n {\n type: 'select',\n key: 'birthCountry',\n className: 'small w-100-p ml-8',\n props: {\n label: 'scandoc.form.scan.document.birthCountry',\n\n options: this.provider.countries(),\n },\n },\n ],\n },\n {\n className: 'small',\n key: 'nationality',\n type: 'select',\n props: {\n label: 'scandoc.form.scan.document.nationality',\n // appearance: 'outline',\n // options: this.profileProvider.nationalities(),\n options: this.provider.countries(),\n },\n },\n ],\n },\n {\n className: 'w-100-p',\n fieldGroupClassName: 'form-flex-column',\n fieldGroup: [\n {\n className: 'w-100-p',\n fieldGroupClassName: 'card-group',\n fieldGroup: [\n {\n type: 'title',\n props: {\n label: 'scandoc.form.scan.document.documentTitle',\n },\n },\n {\n type: 'select',\n key: 'documentType',\n props: {\n label: 'scandoc.form.scan.document.documentType',\n options: [\n { value: 'ID', label: 'Identity Document' },\n { value: 'PASS', label: 'Passport' },\n { value: 'DL', label: 'Driver Licence' },\n ],\n // valueProp: 'id',\n // labelProp: 'value',\n required: true,\n },\n },\n {\n type: 'input',\n key: 'documentNumber',\n props: {\n label: 'scandoc.form.scan.document.documentNumber',\n required: true,\n },\n },\n {\n className: '',\n fieldGroupClassName: 'form-flex-row space-between',\n fieldGroup: [\n {\n type: 'datepicker',\n key: 'issueDate',\n className: 'small mr-8',\n props: {\n label: 'scandoc.form.scan.document.issueDate',\n },\n },\n {\n type: 'datepicker',\n key: 'expirationDate',\n className: 'small ml-8',\n props: {\n label: 'scandoc.form.scan.document.expirationDate',\n },\n },\n ],\n },\n {\n type: 'select',\n key: 'issueStateCode',\n props: {\n label: 'scandoc.form.scan.document.issuingStateCode',\n\n options: this.provider.countries(),\n },\n },\n {\n type: 'input',\n key: 'issuingPlace',\n props: {\n label: 'scandoc.form.scan.document.issuingPlace',\n required: false,\n },\n },\n ],\n },\n {\n className: 'w-100-p',\n fieldGroupClassName: 'card-group',\n fieldGroup: [\n {\n type: 'title',\n props: {\n label: 'scandoc.form.scan.document.addressTitle',\n badge: 'communications',\n },\n },\n {\n className: 'small',\n key: 'country',\n type: 'select',\n props: {\n required: true,\n label: 'scandoc.form.profile.address.country',\n options: this.provider.countries(),\n },\n // expressionProperties: {\n // 'props.disabled': (model: any) => !model.newAddress,\n // },\n hooks: {\n onInit: (model: any) => {\n console.log(model);\n },\n },\n },\n {\n className: '',\n fieldGroupClassName: 'form-flex-row space-between',\n fieldGroup: [\n {\n className: 'mr-8 w-100-p',\n key: 'zip',\n type: 'input',\n props: {\n label: 'scandoc.form.profile.address.zip',\n labelProp: (item: any) => {\n return `${item.zip} (${item.city})`;\n },\n\n set: (field: any, option: MatOption) => {\n // console.log(option, field);\n field.formControl.setValue(option.value.zip);\n // set CITY\n field.form.get('city').setValue(option.value.city);\n },\n filter: (key: string, field: any) => {\n // return this.profileProvider.zipCodes({\n // countryCode: field.form.get('country').value,\n // zip: key,\n // });\n },\n },\n // expressionProperties: {\n // 'props.disabled': (model: any) =>\n // !model.newAddress,\n // },\n },\n {\n className: 'small w-100-p ml-8',\n key: 'city',\n type: 'input',\n props: {\n label: 'scandoc.form.profile.address.city',\n },\n },\n ],\n },\n\n {\n className: 'small w-100-p',\n key: 'street1',\n type: 'input',\n props: {\n label: 'scandoc.form.profile.address.street',\n },\n },\n ],\n },\n ],\n },\n ],\n },\n ].map((item) => this.translate.forms(item));\n }\n}\n","import {\n Component,\n EventEmitter,\n AfterViewInit,\n ChangeDetectionStrategy,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ChangeDetectorRef,\n NgZone,\n} from '@angular/core';\nimport { NgxScandocCameraProvider } from '../../../providers/camera.provider';\nimport { FormGroup } from '@angular/forms';\nimport { NgxScandocFieldsProvider } from '../../../providers/scan.form';\nimport { Subject } from 'rxjs';\nimport { BaseComponent } from '../base.component';\nimport { ScanProvider } from '../../../providers/scan.provider';\n\n@Component({\n selector: 'ngx-scan-results',\n templateUrl: './scan-results.component.html',\n styleUrls: ['./scan-results.component.scss'],\n // changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScanResultsComponent\n extends BaseComponent\n implements OnInit, OnDestroy\n{\n @Input() data!: Subject<any>;\n model: any;\n @Input() images: any;\n fields: any;\n\n @Input() form!: FormGroup;\n @Output() action = new EventEmitter();\n\n constructor(\n public cameraProvider: NgxScandocCameraProvider,\n private formProvider: NgxScandocFieldsProvider,\n private provider: ScanProvider,\n private cd: ChangeDetectorRef,\n private zone: NgZone\n ) {\n super();\n }\n\n ngOnInit(): void {\n console.time('fields');\n this.fields = this.formProvider.document();\n console.timeEnd('fields');\n\n this.__subs(this.data).subscribe((resp) => {\n this.zone.run(() => {\n switch (resp.type) {\n case 'avatar':\n this.model._avatar = resp.data;\n\n this.form = new FormGroup({});\n console.log(this.model);\n break;\n case 'model':\n this.model = resp.data;\n break;\n }\n\n console.timeEnd('results');\n\n this.cd.detectChanges();\n });\n });\n }\n\n ngOnDestroy(): void {\n this.__destroy();\n }\n\n selfie() {\n this.action.emit({ selfie: true });\n }\n}\n","<div *ngIf=\"model\" class=\"wraper\">\n <div style=\"flex: 1\">\n\n\n <form class=\"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\" >\n <mat-card appearance=\"outlined\" style=\"margin:0px 4px; padding: 16px\" class=\"images\">\n <h3>{{ \"scandoc.result.images\" | translate }}</h3>\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","import {\n Component,\n EventEmitter,\n AfterViewInit,\n ChangeDetectionStrategy,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ChangeDetectorRef,\n HostListener,\n ViewChild,\n ElementRef,\n HostBinding,\n NgZone,\n} from '@angular/core';\nimport { NgxScandocCameraProvider } from '../../../providers/camera.provider';\nimport { FormGroup } from '@angular/forms';\nimport { NgxScandocFieldsProvider } from '../../../providers/scan.form';\nimport { Observable, Subject, of, switchMap } from 'rxjs';\nimport { BaseComponent } from '../base.component';\nimport { LayoutProvider } from '../../../providers/layout.provider';\n\n@Component({\n selector: 'ngx-manual-scan',\n templateUrl: './manual-scan.component.html',\n styleUrls: ['./manual-scan.component.scss'],\n // changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ManualScanComponent\n extends BaseComponent\n implements OnInit, OnDestroy\n{\n @Output() action = new EventEmitter();\n\n public videoOptions: MediaTrackConstraints = {\n width: 1920,\n height: 1080,\n facingMode: 'environment',\n };\n cameraReady = false;\n scanBlastData: any = [\n {\n title: 'scandoc.front',\n description: 'scandoc.frontDescription',\n side: 'FRONT',\n },\n {\n title: 'scandoc.back',\n description: 'scandoc.backDescription',\n disabled: true,\n side: 'BACK',\n },\n ];\n error = false;\n scaning = false;\n documentTypeSelected = false;\n\n selectedSide: any;\n preview: any = null;\n scanType: any;\n width: any;\n height: any;\n videoWidth: any;\n videoHeight: any;\n scanDatas: any = [];\n scanSide: any;\n\n result: any;\n webcamImage: any;\n public trigger: Subject<number> = new Subject<number>();\n // switch to next / previous / specific webcam; true/false: forward/backwards, string: deviceId\n public nextWebcam: Subject<boolean | string> = new Subject<\n boolean | string\n >();\n\n isMobile = false;\n @ViewChild('wraper') wraper?: ElementRef;\n @HostBinding('class.mobile') get class() {\n return this.isMobile;\n }\n @HostListener('window:resize', ['$event'])\n onResize() {\n if (this.wraper) {\n this.width = this.wraper.nativeElement.clientWidth;\n this.height = this.wraper.nativeElement.clientHeight;\n\n setTimeout(() => {\n const video = this.wraper?.nativeElement.querySelector('video');\n if (video) {\n // console.log(video.clientWidth, video.clientHeight);\n this.videoWidth = video.clientWidth;\n this.videoHeight = video.clientHeight;\n }\n this.cd.detectChanges();\n }, 100);\n this.cd.detectChanges();\n }\n }\n\n constructor(\n public cameraProvider: NgxScandocCameraProvider,\n private cd: ChangeDetectorRef,\n private layoutProvider: LayoutProvider,\n private zone: NgZone\n ) {\n super();\n }\n\n ngOnInit(): void {\n this.__subs(this.layoutProvider.breakpoint$).subscribe((v: any) => {\n this.zone.run(() => {\n this.isMobile = !v.matches;\n\n setTimeout(() => {\n console.log('WTF');\n this.cd.detectChanges();\n }, 200);\n });\n\n console.log('MNOBILE', this.isMobile);\n });\n }\n\n public get nextWebcamObservable(): Observable<boolean | string> {\n return this.nextWebcam.asObservable();\n }\n public cameraWasSwitched(deviceId: string): void {\n console.log('[active device]', deviceId);\n // this.deviceId = deviceId;\n // this.cameraReady = true;\n // this.defaultDevice = deviceId;\n\n setTimeout(() => {\n this.onResize();\n // this.scan();\n }, 300);\n }\n public handleInitError(error: any): void {\n console.log(error);\n }\n resolutionLimit(file: any) {\n const minWidth = 1280;\n const minHeight = 720;\n return new Observable((observer) => {\n const img = new Image();\n img.src = window.URL.createObjectURL(file);\n img.onload = () => {\n const width = img.naturalWidth;\n const height = img.naturalHeight;\n\n let valid = false;\n if (width > height) {\n valid = width >= minWidth && height >= minHeight;\n } else {\n valid = width >= minHeight && height >= minWidth;\n }\n\n observer.next(valid);\n };\n img.onerror = (error) => {\n observer.error(error);\n };\n });\n }\n private getImgBase64(num: any) {\n return this.scanBlastData[num].image.dataUrl.split(',')[1];\n }\n getBase64(file: any) {\n return new Observable((observer) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => {\n observer.next(reader.result);\n };\n reader.onerror = (error) => {\n observer.error(error);\n };\n });\n }\n handleFileInput(target: any, event: any, side: any) {\n const files: FileList = target.files;\n this.selectedSide = side;\n console.log(files);\n const file = files.item(0);\n\n this.resolutionLimit(file)\n .pipe(\n switchMap((valid: any) => {\n return valid ? this.getBase64(file) : of(false);\n })\n )\n .subscribe((imageAsDataUrl) => {\n // console.log(imageAsDataUrl);\n event.target.value = null;\n if (!imageAsDataUrl) {\n console.warn('MIN RES');\n // this.dialogs.alert(\n // 'core.page.error',\n // this.translate.instant(\n // 'pms.dialogs.components.scanProfile.minResolution'\n // )\n // );\n } else {\n side.image = {\n _imageAsDataUrl: imageAsDataUrl,\n imageAsDataUrl: imageAsDataUrl,\n };\n if (this.selectedSide.side === 'FRONT') {\n this.scanBlastData[1].disabled = false;\n }\n }\n this.cd.detectChanges();\n });\n }\n\n cameraOff(ev: any) {}\n\n ngOnDestroy(): void {}\n singleScan(side: any) {\n this.scanType = side.side;\n this.preview = null;\n this.selectedSide = side;\n\n this.selectedSide.image = null;\n this.documentTypeSelected = true;\n this.scanBlastData[1].disabled = false;\n this.cameraProvider.$showSwitch.next(true);\n this.cd.detectChanges();\n setTimeout(() => {\n this.onResize();\n }, 10);\n }\n\n scanBlastFinish() {\n this.action.emit(this.scanBlastData);\n }\n get scanBlastCanUpload() {\n return this.scanBlastData[0].image ? true : false;\n }\n public handleImage(webcamImage: any): void {\n console.log('[received webcam image]', webcamImage);\n\n this.webcamImage = webcamImage;\n this.preview = webcamImage.imageAsDataUrl;\n this.cameraProvider.$showSwitch.next(false);\n this.cd.detectChanges();\n }\n\n continue() {\n this.documentTypeSelected = false;\n\n setTimeout(() => {\n this.selectedSide.image = this.webcamImage;\n if (this.selectedSide.side === 'FRONT') {\n this.scanBlastData[1].disabled = false;\n }\n this.cd.detectChanges();\n }, 200);\n }\n retry() {\n this.preview = false;\n this.cameraProvider.$showSwitch.next(true);\n\n // this.result = false;\n if (this.error) {\n this.documentTypeSelected = false;\n this.scanBlastData.forEach((element: any) => {\n element.image = null;\n });\n }\n this.error = false;\n }\n public triggerSnapshot(): void {\n this.trigger.next(0);\n }\n scan() {\n console.log('SCAN');\n this.triggerSnapshot();\n this.scanDatas[0] = true;\n console.log(this.cameraProvider);\n\n this.cd.detectChanges();\n }\n rotateBase64Image(base64data: any) {\n return new Observable((observer) => {\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n var image = new Image();\n image.src = base64data;\n image.onload = () => {\n console.log(canvas);\n canvas.width = image.height;\n canvas.height = image.width;\n if (ctx) {\n ctx.rotate((90 * Math.PI) / 180);\n ctx.translate(0, -canvas.width);\n ctx.drawImage(image, 0, 0);\n observer.next(canvas.toDataURL());\n } else {\n observer.error({ type: 'generic error' });\n }\n };\n image.onerror = (e) => {\n observer.error(e);\n };\n });\n }\n singleScanRotate(side: any) {\n console.log(side);\n this.rotateBase64Image(side.image.imageAsDataUrl).subscribe((data) => {\n side.image = { imageAsDataUrl: data };\n this.cd.detectChanges();\n });\n }\n videoReady(event: boolean) {\n console.log('READY', event);\n this.cameraReady = event;\n\n }\n singleScanRemove(side: any) {\n side.image = null;\n if (side.side === 'FRONT') {\n this.scanBlastData[1].disabled = true;\n }\n\n this.cd.detectChanges();\n }\n}\n","\n\n<ng-container *ngIf=\"!result\">\n\n<ng-container *ngIf=\"!documentTypeSelected\">\n <section\n class=\"scanBlastWraper\"\n ngClass.lt-md=\"mobile\"\n fxFlex\n fxLayout=\"column\"\n >\n <div class=\"scanBlast\" fxFlex fxLayout.lt-md=\"column\" fxLayout=\"row\">\n <mat-card\n appearance=\"outlined\"\n style=\"display: flex; flex-direction: column\"\n fxLayout=\"column\"\n *ngFor=\"let side of scanBlastData\"\n >\n <div ngClass.lt-sm=\"small\" class=\"head\">\n <div class=\"title\" fxFlex>{{ side.title | translate }}</div>\n </div>\n <div class=\"actions\" style=\"display: flex; flex-direction: row\">\n <button\n (click)=\"singleScan(side)\"\n [disabled]=\"side.disabled\"\n style=\"margin-right: 4px\"\n mat-raised-button\n >\n <div class=\"buttonWrap\">\n <mat-icon>camera</mat-icon>\n <div>\n {{ \"scandoc.scanCamera\" | translate }}\n </div>\n </div>\n </button>\n <button\n (click)=\"file.click()\"\n [disabled]=\"side.disabled\"\n style=\"margin-left: 4px\"\n mat-raised-button\n >\n <input\n accept=\"image/*\"\n type=\"file\"\n style=\"display: none\"\n (change)=\"handleFileInput($event.target, $event, side)\"\n #file\n />\n <div class=\"buttonWrap\">\n <mat-icon>file_upload</mat-icon>\n <div>\n {{ \"scandoc.useFromDisk\" | translate }}\n </div>\n </div>\n </button>\n </div>\n <div class=\"content\" style=\"display: flex\">\n <div style=\"flex: 1\" class=\"previewPlaceholder\">\n <div class=\"description\">\n <ng-container *ngIf=\"side.image\">\n <div class=\"imgWrap\">\n <div\n style=\"flex: 1\"\n class=\"image\"\n [style.background-image]=\"\n 'url(' + side.image.imageAsDataUrl + ')'\n \"\n ></div>\n\n <div\n class=\"btnActions\"\n fxLayout.lt-md=\"column\"\n fxLayout=\"row\"\n style=\"display: flex; flex-direction: row\"\n >\n <button\n (click)=\"singleScanRemove(side)\"\n class=\"mr-4 remButton flex\"\n mat-raised-button\n >\n <div class=\"buttonWrap\">\n <mat-icon>delete</mat-icon>\n <div class=\"label\">\n {{ \"scandoc.remove\" | translate }}\n </div>\n </div>\n </button>\n <button\n class=\"ml-4 rotateButton flex\"\n mat-raised-button\n (click)=\"singleScanRotate(side)\"\n >\n <div class=\"buttonWrap\">\n <mat-icon>rotate_90_degrees_cw</mat-icon>\n <div class=\"label\">\n {{ \"scandoc.rotate\" | translate }}\n </div>\n </div>\n </button>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!side.image\">\n <div class=\"empty\">\n {{ side.description | translate }}\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n </mat-card>\n </div>\n <footer>\n <div\n class=\"px-8 pb-8\"\n style=\"padding: 0px 8px 8px 8px; display: flex; flex-direction: row\"\n >\n <button\n (click)=\"scanBlastFinish()\"\n [disabled]=\"!scanBlastCanUpload\"\n style=\"flex: 1\"\n mat-raised-button\n >\n {{ \"scandoc.upload\" | translate }}\n </button>\n </div>\n </footer>\n </section>\n</ng-container>\n\n<div\n style=\"position: relative; display: flex; flex-direction: column; flex: 1\"\n *ngIf=\"documentTypeSelected\"\n>\n <div\n style=\"display: flex; flex-direction: row; flex: 1\"\n #wraper\n class=\"wraper\"\n >\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 <ngx-scandoc-webcam\n *ngIf=\"!preview && !scaning\"\n class=\"main flex\"\n\n #webcam\n [trigger]=\"trigger\"\n (imageCapture)=\"handleImage($event)\"\n(videoReady)=\"videoReady($event)\"\n (cameraSwitched)=\"cameraWasSwitched($event)\"\n (initError)=\"handleInitError($event)\"\n type=\"manual\"\n\n (destroyed)=\"cameraOff($event)\"\n >\n </ngx-scandoc-webcam>\n </ng-container>\n <div\n class=\"previewData\"\n *ngIf=\"preview\"\n style=\"\n display: flex;\n flex-direction: row;\n flex: 1;\n z-index: 20;\n position: absolute;\n width: 100%;\n height: 100%;\n \"\n >\n <div class=\"p-16 error\" *ngIf=\"error\">\n <div>\n <div class=\"title\" fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <mat-icon>error_outline</mat-icon\n ><span class=\"ml-8\">{{\n \"pms.dialogs.components.scanProfile.unableToDetectId\" | translate\n }}</span>\n </div>\n\n <ul>\n <li>\n {{\n \"pms.dialogs.components.scanProfile.placeIdCloseToDevice\"\n | translate\n }}\n </li>\n <li>\n {{\n \"pms.dialogs.components.scanProfile.ensureSufficientLight\"\n | translate\n }}\n </li>\n <li>\n {{\n \"pms.dialogs.components.scanProfile.holdDocumentSteady\"\n | translate\n }}\n </li>\n <li>\n {{\n \"pms.dialogs.components.scanProfile.makeSureAllEdgesOfTheIdAreVisible\"\n | translate\n }}\n </li>\n <li>\n {{\n \"pms.dialogs.components.scanProfile.makeSureThereAreNoGlareAndShadowsOnTheId\"\n | translate\n }}\n </li>\n </ul>\n </div>\n </div>\n\n <div\n class=\"scanPreview\"\n style=\"display: flex; flex-direction: column; flex: 1\"\n *ngIf=\"!error && !scaning\"\n >\n <!-- <div class=\"py-16\" style=\"font-size: 16px\">\n {{\n \"pms.dialogs.components.scanProfile.ensureAllTextsAreVisible\"\n | translate\n }}\n </div> -->\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 fxLayout=\"row\" class=\"p-8\">\n <!-- <div class=\"displayInfo\" *ngIf=\"!preview && cameraReady\">\n {{ displayInfo }}\n </div>\n <div style=\"height: 26px;\">\n <div style=\"text-align: center; font-size: 18px;\" *ngIf=\"idScan && !preview && cameraReady\">\n <ng-container *ngIf=\"idScan === 'BACK'\">\n Turn document and:\n {{ \"pms.dialogs.components.scanProfile.captureBack\" | translate }}\n </ng-container>\n <ng-container *ngIf=\"idScan === 'FRONT'\">\n Turn document and:\n {{ \"pms.dialogs.components.scanProfile.captureFront\" | translate }}\n </ng-container>\n </div>\n </div> -->\n\n <button\n [disabled]=\"!cameraReady\"\n class=\"w-100-p\"\n *ngIf=\"!preview\"\n mat-raised-button\n (click)=\"scan()\"\n >\n <ng-container>\n <ng-container *ngIf=\"scanType === 'FRONT'\">{{\n \"scandoc.captureFront\" | translate\n }}</ng-container>\n <ng-container *ngIf=\"scanType === 'BACK'\">{{\n \"scandoc.captureBack\" | translate\n }}</ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"scanSide === 1\">{{\n \"pms.dialogs.components.scanProfile.captureBackOfId\" | translate\n }}</ng-container>\n </button>\n\n <div\n class=\"w-100-p\"\n *ngIf=\"preview\"\n style=\"display: flex; flex-direction: row; align-items: center; flex: 1\"\n >\n <button class=\"flex mr-4\" mat-raised-button (click)=\"retry()\">\n {{ \"scandoc.retry\" | translate }}\n </button>\n\n <button\n [disabled]=\"error\"\n class=\"ml-4 flex\"\n mat-raised-button\n (click)=\"continue()\"\n >\n {{ \"scandoc.continueWithSelectedImage\" | translate }}\n </button>\n </div>\n </footer>\n</div>\n</ng-container>\n","import {\n Component,\n ViewChild,\n EventEmitter,\n Output,\n HostListener,\n ElementRef,\n ChangeDetectorRef,\n AfterViewInit,\n ChangeDetectionStrategy,\n Input,\n OnDestroy,\n NgZone,\n Injector,\n HostBinding,\n ViewRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { Subject, Observable, of, forkJoin, from, Subscription } from 'rxjs';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { FormGroup } from '@angular/forms';\n\nimport { switchMap, map, delay, catchError } from 'rxjs/operators';\n\nimport { TranslateService } from '@ngx-translate/core';\nimport { ScanProvider } from '../../../providers/scan.provider';\nimport { WebcamImage } from '../../../core/components/webcam/domain/webcam-image';\nimport { WebcamInitError } from '../../../core/components/webcam/domain/webcam-init-error';\nimport { NgxScandocAuthProvider } from '../../../providers/auth.provider';\nimport { NgxScandocCameraProvider } from '../../../providers/camera.provider';\nimport { LayoutProvider } from '../../../providers/layout.provider';\nimport { BaseComponent } from '../base.component';\nimport { Platform } from '@angular/cdk/platform';\n\nimport { DeviceDetectorService } from 'ngx-device-detector';\n\nexport interface IWindow extends Window {\n TextDetector: any;\n}\n\ninterface Troubleshooting {\n Request: any;\n Response: any;\n ExpectedOutput: any;\n AcceptTermsAndConditions: boolean;\n}\n\ninterface Timestamps {\n time: number;\n load: number;\n}\n\n@Component({\n selector: 'ngx-scan',\n templateUrl: './scan.component.html',\n styleUrls: ['./scan.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScanComponent\n extends BaseComponent\n implements AfterViewInit, OnDestroy\n{\n scanBlastData: any = [\n {\n title: 'pms.dialogs.components.scanProfile.front',\n description: 'pms.dialogs.components.scanProfile.frontDescription',\n side: 'FRONT',\n },\n {\n title: 'pms.dialogs.components.scanProfile.back',\n description: 'pms.dialogs.components.scanProfile.backDescription',\n disabled: true,\n side: 'BACK',\n },\n ];\n @Input() type = 'desktop';\n @Input() dialogs: any;\n @Output() actions = new EventEmitter();\n\n public deviceId?: string;\n\n scanResults = new Subject();\n scanSecondSide = false;\n startTime: number = 0;\n\n scanInProgress = false;\n\n // webcam snapshot trigger\n documentTypeSelected = false;\n imageHandlerSubscription!: Subscription;\n selectedSide: any;\n images: any;\n scanTimeout: any;\n preview: any = null;\n scanType: any;\n\n errorCode = '1000';\n displayInfo: any = 'scandoc.info.position';\n\n verificationErrorSent = false;\n error = false;\n cameraReady = false;\n result: any;\n scaning = false;\n\n promptManual = false;\n\n frontImage: any;\n backImage: any;\n\n imageHandler = new Subject();\n manualDataSet = false;\n logData: Troubleshooting = {\n AcceptTermsAndConditions: true,\n Request: null,\n Response: null,\n ExpectedOutput: null,\n };\n blurValues: any = [];\n scanDatas: any = [];\n scanSide: any;\n idScan: any = null;\n webcamImage?: WebcamImage;\n model: any;\n validation = false;\n scannedImages: any[] = [];\n scanDelay: any = 0;\n public trigger: Subject<number> = new Subject<number>();\n // switch to next / previous / specific webcam; true/false: forward/backwards, string: deviceId\n public nextWebcam: Subject<boolean | string> = new Subject<\n boolean | string\n >();\n imageVerified = false;\n form = new FormGroup({});\n manual = false;\n isMobile = this.platform.IOS || this.platform.ANDROID;\n @Input() showDialog = false;\n scanImageTimestamps: Timestamps = {\n time: 0,\n load: 0,\n };\n numberOfValidations = 0;\n validationDebug: any = [];\n\n @HostBinding('class.mobile') get class() {\n return this.isMobile;\n }\n\n @HostListener('window:resize', ['$event'])\n onResize() {\n if (this.result) {\n this.cd.detectChanges();\n }\n }\n\n scanProvider!: ScanProvider;\n\n constructor(\n public cd: ChangeDetectorRef,\n private zone: NgZone,\n public cameraProvider: NgxScandocCameraProvider,\n private injector: Injector,\n private layoutProvider: LayoutProvider,\n private platform: Platform,\n private deviceService: DeviceDetectorService,\n private auth: NgxScandocAuthProvider // private api: ServerProvider\n ) {\n super();\n this.scanProvider = this.injector.get(ScanProvider);\n\n if (!this.scanProvider.config.development) {\n // console = {\n // log: (...args: any) => {},\n // time: (...args: any) => {},\n // timeEnd: (...args: any) => {},\n // warn: (...args: any) => {},\n // error: (...args: any) => {},\n // };\n }\n }\n\n private resetLogData() {\n this.logData = {\n Request: null,\n Response: null,\n ExpectedOutput: null,\n AcceptTermsAndConditions: true,\n };\n }\n\n init() {\n this.auth.accesToken.subscribe();\n this.resetLogData();\n // this.result=true;\n // this.result ={};\n\n console.log('INIT SCAN');\n }\n\n continue() {\n this.documentTypeSelected = false;\n\n setTimeout(() => {\n this.selectedSide.image = this.webcamImage;\n if (this.selectedSide.side === 'FRONT') {\n this.scanBlastData[1].disabled = false;\n }\n this.cd.detectChanges();\n }, 200);\n }\n\n scan() {\n this.trigger.next(new Date().getTime());\n }\n\n public handleImage(webcamImage: WebcamImage): void {\n if (this.startTime === 0) {\n this.startTime = Date.now();\n }\n // console.log('[received webcam image]', webcamImage);\n this.zone.runOutsideAngular(() => {\n const time = new Date().getTime();\n\n if (this.scanImageTimestamps.load > 0) {\n const { load } = this.scanImageTimestamps;\n const diff = time - load;\n // console.log('time:', diff);\n this.scanDelay = diff;\n }\n\n this.scanImageTimestamps.load = time;\n\n if (webcamImage.imageAsDataUrl) {\n this.scannedImages.push(webcamImage);\n }\n\n this.cd.detectChanges();\n if (this.scannedImages.length > 0 && !this.validation) {\n // if (this.scanProvider.config.development) {\n // this.scannedImages.forEach((img) => {\n // const consoleBackground =\n // \"font-size:100px;background-image: url('\" +\n // img.imageResized +\n // \"');background-size: contain; background-repeat: no-repeat;\";\n // console.log('%c ', consoleBackground);\n // });\n // }\n // this.frontImage = webcamImage.imageResized;\n\n // console.timeEnd('scan');\n // console.time('scan');\n // get last 10\n // console.log('CAPTURED:', this.scannedImages.length);\n const images = this.scannedImages.slice(-5);\n // set images to 0\n this.scannedImages = [];\n const imagesArray = images.map((m) => m.imageResized.split(',')[1]);\n this.validation = true;\n // console.log('BURST');\n this.handleBurstData(imagesArray, images);\n } else {\n if (this.cameraReady) {\n this.scan();\n }\n }\n });\n }\n\n private handleBurstData(\n imagesArray: any,\n images: any,\n type: 'worker' | 'plain' = 'plain'\n ) {\n this.__subs(\n this.scanProvider.burst(imagesArray, this.blurValues)\n ).subscribe((resp: any) => {\n this.displayInfo = 'scandoc.info.c' + resp.InfoCode;\n // console.timeEnd('validationPOST');\n // console.log('AnalysisTime', resp.AnalysisTime);\n const { DocType, Series, Side, InfoCode, TransactionID } = resp;\n\n this.handleLongValidationError(TransactionID, images[0].imageAsDataUrl.split(',')[1]);\n // if (InfoCode === '1006' && this.idScan) {\n // this.handleLongVaylidationError(image);\n // }\n // console.warn(resp.Validated, this.numberOfValidations);\n if (resp.DetectedBlurValue) {\n this.blurValues.push(resp.DetectedBlurValue);\n } else {\n this.blurValues = [];\n }\n\n console.log();\n if (resp.Validated) {\n this.numberOfValidations++;\n this.validationDebug.push(resp);\n } else {\n this.numberOfValidations = 0;\n this.validationDebug = [];\n }\n if (resp.Validated) {\n this.displayInfo = '';\n // console.log('[SCANNED INDEX]', resp.Index);\n const selectedImage = images[resp.Index];\n\n // this.preview = this.webcamImage.imageAsDataUrl;\n this.cd.detectChanges();\n\n let image = selectedImage;\n console.warn(type);\n if (type == 'worker') {\n //const dataUrl = this.handleBitmapImage(selectedImage.bitmap);\n image = selectedImage.imageAsDataUrl;\n }\n\n if (InfoCode === '1007') {\n // For ID ask for other side\n if (Side === 'FRONT') {\n this.scanBlastData[0].image = image;\n } else {\n this.scanBlastData[1].image = image;\n }\n\n if (this.scanBlastData[0].image && this.scanBlastData[1].image) {\n // console.warn('UPLOAD');\n if (type == 'worker') {\n this.imageHandler.next({ type: 'stop' });\n }\n //console.warn('DEBUG', Side, this.validationDebug);\n this.scanBlastFinish();\n } else {\n this.blurValues = [];\n this.numberOfValidations = 0;\n // console.warn('DEBUG',Side,this.validationDebug)\n this.validationDebug = [];\n const num = Side === 'FRONT' ? 1 : 0;\n this.scanSecondSide = true;\n\n this.singleScan(this.scanBlastData[num]);\n\n this.idScan = this.scanBlastData[num].side;\n\n if (!this.showDialog) {\n this.showDialog = true;\n this.cd.detectChanges();\n }\n // reset manual scan popup interval\n this.verificationErrorSent = false;\n this.startTime = Date.now();\n\n this.displayInfo = 'scandoc.info.turn';\n }\n } else {\n // console.warn('DEBUG', Side, this.validationDebug);\n this.scanBlastData[0].image = image;\n // console.warn('UPLOAD');\n if (type == 'worker') {\n this.imageHandler.next({ type: 'stop' });\n }\n this.scanBlastFinish();\n }\n\n this.scannedImages = [];\n\n // this.scanBlastData[0].image = selectedImage;\n\n //this.scanBlastFinish();\n } else {\n this.validation = false;\n this.scan();\n }\n });\n }\n\n closeDialog() {\n this.showDialog = false;\n this.validation = false;\n\n this.scan();\n }\n\n public handleInitError(error: WebcamInitError): void {\n console.log(error);\n }\n\n get scanBlastCanUpload() {\n return this.scanBlastData[0].image ? true : false;\n }\n\n private manualMode(type: 'worker' | 'plain' = 'plain') {\n this.manual = true;\n this.promptManual = false;\n this.scanInProgress = false;\n this.cameraProvider.$showSwitch.next(false);\n\n this.cd.detectChanges();\n }\n\n private handleExtractionError(data: any) {\n this.logData.ExpectedOutput = {};\n // if (this.logData.ExpectedOutput?._avatar) {\n // delete this.logData.ExpectedOutput._avatar;\n // }\n // this.scanProvider.sendLog(this.logData).subscribe();\n\n // console.log('LOG DATA', this.logData);\n // this.__subs(this.scanProvider.sendLog(this.logData)).subscribe();\n }\n\n private sendErrorLog(TransactionID: string, image: string) {\n\n\n const { browser, os, device } = this.deviceService;\n\n const FrontImage = this.scanBlastData[0]?.image ? this.getImgBase64(0) : null;\n\n const out = {\n OS: os,\n Device: device,\n Browser: browser,\n TransactionID,\n AcceptTermsAndConditions: true,\n FrontImage: FrontImage || image,\n BackImage: FrontImage ? image : '',\n };\n console.log(out);\n this.__subs(\n this.scanProvider.sendErrorLog(out)).subscribe()\n }\n private handleLongValidationError(TransactionID: string, image: string) {\n // save current image after 10sec\n let MANUAL_INTERVAL = this.scanProvider.config.manualScanDelay;\n const diff = (Date.now() - this.startTime) / 1000;\n\n const showDialog = diff > MANUAL_INTERVAL;\n\n if (showDialog && !this.verificationErrorSent) {\n this.verificationErrorSent = true;\n console.warn('[HANDLE ERROR]');\n\n this.zone.run(() => {\n // if (!this.scanSecondSide) {\n if (this.scanProvider.config.manualModeEnabled) {\n this.promptManual = true;\n }\n if (this.scanProvider.config.errorLogging) {\n this.sendErrorLog(TransactionID, image);\n }\n\n // }\n this.startTime = Date.now();\n });\n // this.verificationErrorSent = true;\n // const dataUrl = this.handleBitmapImage(img.bitmap);\n\n // console.warn('SENT');\n // // this.displayInfo = 'Cant detect document!';\n // this.logData.Request = this.__subs(\n // this.scanProvider.sendLog({\n // AcceptTermsAndConditions: true,\n // ExpectedOutput: {},\n // Request: {\n // verification: dataUrl.split(',')[1],\n // },\n // Response: {\n // TransactionID: uuidv4(),\n // },\n // })\n // ).subscribe();\n }\n }\n ngAfterViewInit() {\n // this.result = true;\n\n this.cameraProvider.$showSwitch.next(true);\n this.cd.detectChanges();\n\n // this.scanResults.next({ type: 'model', data: {} });\n\n this.__subs(this.cameraProvider.webcamObservable).subscribe((resp) => {\n this.cameraReady = false;\n this.scanInProgress = false;\n this.scannedImages = [];\n });\n this.__subs(this.cameraProvider.selfie$).subscribe((resp) => {\n this.selfie();\n });\n\n this.autoScan();\n\n this.__subs(this.layoutProvider.breakpoint$).subscribe((v: any) => {\n this.isMobile = !v.matches || this.platform.IOS || this.platform.ANDROID;\n console.log('MNOBILE', this.isMobile);\n });\n }\n\n handleBitmapImage(bitmap: any) {\n const { width, height } = bitmap;\n\n const offscreenSmall = document.createElement('canvas');\n offscreenSmall.width = width;\n offscreenSmall.height = height;\n const ctx: any = offscreenSmall.getContext('bitmaprenderer');\n\n if (ctx) {\n ctx.imageSmoothingEnabled = false;\n ctx.transferFromImageBitmap(bitmap);\n bitmap.close();\n const data = ctx.canvas.toDataURL('image/jpeg');\n return data;\n }\n return null;\n }\n\n autoScan() {\n const side = this.scanBlastData[0];\n this.idScan = null;\n this.singleScan(side);\n }\n\n singleScan(side: any) {\n this.scanType = side.side;\n this.preview = null;\n this.selectedSide = side;\n\n this.selectedSide.image = null;\n this.documentTypeSelected = true;\n this.scanBlastData[1].disabled = false;\n this.cd.detectChanges();\n }\n\n manualScanData(data: any) {\n console.log(data);\n this.scanBlastData = data;\n this.manual = false;\n this.manualDataSet = true;\n this.scanBlastFinish();\n }\n\n private getImgBase64(num: any) {\n console.log('GET 64');\n\n // if (this.manualDataSet) {\n return this.scanBlastData[num].image._imageAsDataUrl.split(',')[1];\n // }\n // return this.scanBlastData[num].image.dataUrl.split(',')[1];\n }\n scanBlastFinish() {\n const { browser, os, device } = this.deviceService;\n\n this.zone.run(() => {\n this.cameraProvider.$showSwitch.next(false);\n });\n console.time('upload');\n if (this.type === 'mobile') {\n this.actions.emit({ data: this.scanBlastData });\n this.retake();\n return;\n }\n this.idScan = null;\n // const loading = this.dialogs.loading();\n this.scaning = true;\n this.cd.detectChanges();\n console.time('payload');\n const payload: any = {\n AcceptTermsAndConditions: true,\n DataFields: {\n DeviceInfo: {\n OS: os,\n Device: device,\n Browser: browser,\n },\n FrontImageType: 'base64',\n FrontImageCropped: false,\n BackImageType: 'base64',\n BackImageCropped: false,\n FrontImage: this.getImgBase64(0),\n BackImage: this.scanBlastData[1].image ? this.getImgBase64(1) : null,\n },\n Settings: {\n ShouldValidate: true,\n ShouldReturnDocumentImage: true,\n ShouldReturnFaceIfDetected: true,\n SkipImageSizeCheck: true,\n CanStoreImages: this.scanProvider.canStoreImages,\n },\n // CallBackUrl: 'http://demo:5000/report/extracted/',\n };\n this.frontImage = 'data:image/jpeg;base64,' + payload.DataFields.FrontImage;\n this.backImage = 'data:image/jpeg;base64,' + payload.DataFields.BackImage;\n if (!this.scanBlastData[1].image) {\n payload.Settings.IgnoreBackImage = true;\n }\n this.logData.Request = JSON.parse(JSON.stringify(payload));\n\n console.timeEnd('payload');\n this.__subs(\n this.scanProvider.blastPost(payload).pipe(\n catchError((e: any) => {\n if (this.manualDataSet) {\n // console.warn('MANUAL DATA SET',e);\n this.logData.Response = JSON.parse(JSON.stringify(e.error));\n\n this.handleExtractionError({});\n }\n\n this.zone.run(() => {\n this.error = true;\n this.preview = true;\n this.cd.detectChanges();\n });\n // console.log('EEE', e);\n return e;\n })\n )\n ).subscribe(\n (data: any) => {\n //console.log(data);\n const results = data.Data;\n console.timeEnd('upload');\n console.time('parse');\n // data.InfoCode = '1001';\n console.time('p');\n this.logData.Response = JSON.parse(JSON.stringify(data));\n console.timeEnd('p');\n //loading.close();\n this.documentTypeSelected = true;\n this.scaning = false;\n\n if (data.InfoCode === '1001') {\n this.error = true;\n console.log('[ERROR] 1001');\n this.errorCode = '1001';\n // this.scanSide = 0;\n\n this.preview = true;\n this.cd.detectChanges();\n return;\n }\n if (data.InfoCode === '1002') {\n this.error = true;\n console.log('[ERROR] 1002');\n this.errorCode = '1002';\n // this.scanSide = 0;\n\n this.preview = true;\n this.cd.detectChanges();\n return;\n }\n if (results && data.Metadata.length > 0 && data.InfoCode === '1000') {\n // console.log('Extraction time', data.AnalysisTime);\n\n // this.zone.run(() => {\n\n // console.time('parseblast');\n const result = this.scanProvider.parseBlast(results);\n // console.timeEnd('parseblast');\n // console.log('RES', this.result);\n // this.cd.detectChanges();\n\n const model = result.model;\n\n if (data.ImageData?.FaceImage) {\n model._avatar =\n 'data:image/jpeg;base64,' + data.ImageData?.FaceImage;\n }\n\n if (data.ImageData?.Documents) {\n const { Documents } = data.ImageData;\n model.images = Documents.map((image: any, i: number) => {\n return { data: 'data:image/jpeg;base64,' + Documents[i] };\n });\n }\n this.model = model;\n // console.log('MODEL', this.model);\n this.actions.emit({\n type: 'scanFinish',\n data: {\n model: this.model,\n images: this.images,\n results,\n },\n });\n\n if (!this.scanProvider.config.hideResults) {\n this.zone.run(() => {\n this.result = true;\n // console.time('ff');\n this.cd.detectChanges();\n\n this.scanResults.next({ type: 'model', data: model });\n // this.cd.detectChanges();\n // });\n // console.timeEnd('ff');\n });\n }\n } else {\n console.log('ERROR');\n if (this.manualDataSet) {\n this.handleExtractionError(data);\n }\n // this.scanSide = 0;\n this.zone.run(() => {\n this.error = true;\n this.preview = true;\n this.cd.detectChanges();\n });\n // this.documentTypeSelected = false;\n\n // this.retry();\n }\n\n // this.cd.detectChanges();\n console.timeEnd('parse');\n },\n (err) => {\n // loading.close();\n // this.scanSide = 0;\n this.error = true;\n this.preview = true;\n this.documentTypeSelected = true;\n this.scaning = false;\n }\n );\n }\n\n retry() {\n this.preview = false;\n this.validation = false;\n this.errorCode = '1000';\n this.result = false;\n this.idScan = null;\n this.cameraProvider.$showSwitch.next(true);\n if (this.error) {\n this.documentTypeSelected = false;\n this.scanBlastData.forEach((element: any) => {\n element.image = null;\n });\n }\n this.error = false;\n this.startTime = Date.now();\n this.autoScan();\n this.scan();\n this.cd.detectChanges();\n }\n\n public retake() {\n this.validation = false;\n this.preview = false;\n this.error = false;\n this.result = false;\n this.scanSide = 0;\n this.cameraProvider.$showSwitch.next(true);\n this.imageVerified = false;\n this.scanDatas = [];\n this.scaning = false;\n this.images = [];\n this.scanInProgress = false;\n this.startTime = Date.now();\n this.idScan = null;\n this.documentTypeSelected = false;\n this.scanBlastData.forEach((m: any) => {\n m.image = null;\n });\n\n this.scanSecondSide = false;\n\n this.autoScan();\n\n this.cd.detectChanges();\n }\n\n use() {\n // save images??\n\n // if (this.scanProvider.config.sendLog) {\n // this.logData.ExpectedOutput = JSON.parse(JSON.stringify(this.model));\n // if (this.logData.ExpectedOutput?._avatar) {\n // delete this.logData.ExpectedOutput._avatar;\n // }\n // // this.__subs(this.scanProvider.sendLog(this.logData)).subscribe();\n // console.log(this.logData);\n // }\n\n this.actions.emit({\n type: 'scanDataClose',\n data: {\n model: this.model,\n images: this.images,\n },\n });\n }\n selfie() {\n const avatar = this.model?._avatar;\n this.dialogs\n .scanSelfie({ avatar })\n .afterClosed()\n .subscribe((resp: any) => {\n if (resp) {\n console.log(resp);\n if (this.scanProvider.enableVerification) {\n this.imageVerified = true;\n }\n this.scanResults.next({\n type: 'avatar',\n data: resp.imageAsDataUrl,\n });\n // this.model._avatar = resp.imageAsDataUrl;\n this.cd.detectChanges();\n }\n });\n }\n\n cameraOff(ev: any) {\n this.cameraReady = false;\n this.cd.detectChanges();\n }\n\n videoReady(event: boolean) {\n console.log('READY', event);\n this.cameraReady = event;\n if (this.cameraReady && !this.scanInProgress && !this.manual) {\n this.scanInProgress = true;\n setTimeout(() => {\n this.scan();\n }, 20);\n }\n }\n\n manualSet(key: boolean) {\n if (key) {\n if (this.scanProvider.config.showManualMode) {\n this.manualMode();\n } else {\n this.actions.emit({\n type: 'manualMode',\n data: {},\n });\n }\n } else {\n this.promptManual = false;\n }\n }\n\n ngOnDestroy(): void {\n if (this.scanTimeout) {\n clearTimeout(this.scanTimeout);\n }\n if (this.imageHandlerSubscription) {\n this.imageHandlerSubscription.unsubscribe();\n }\n\n console.log('DESTROXY');\n\n this.__destroy();\n }\n}\n","<ng-container\n *ngIf=\"cameraProvider.rectPosition.t > 0 && displayInfo && !result && !manual\"\n>\n <div class=\"hint\" [ngStyle]=\"{ top: cameraProvider.hintPosition + 'px' }\">\n <span class=\"text\">\n {{ displayInfo | translate }}\n </span>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"showDialog\">\n <div class=\"pageTurn\">\n <div class=\"content\">\n <div class=\"inner\">\n <mat-icon>360</mat-icon>\n <div class=\"text\">\n <ng-container *ngIf=\"idScan === 'BACK'\">\n {{ \"scandoc.turnAndCapture.back\" | translate }}\n </ng-container>\n <ng-container *ngIf=\"idScan === 'FRONT'\">\n {{ \"scandoc.turnAndCapture.front\" | translate }}\n </ng-container>\n </div>\n </div>\n <footer>\n <button (click)=\"closeDialog()\" mat-raised-button>Ok</button>\n </footer>\n </div>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"promptManual\">\n <div class=\"manualMode\">\n <div class=\"content\">\n <div class=\"inner\">\n <mat-icon>screenshot</mat-icon>\n <div class=\"text\">\n {{ \"scandoc.manual\" | translate }}\n </div>\n </div>\n <footer>\n <button\n style=\"margin-right: 8px\"\n (click)=\"manualSet(true)\"\n mat-raised-button\n >\n {{ \"scandoc.yes\" | translate }}\n </button>\n <button\n style=\"margin-left: 8px\"\n (click)=\"manualSet(false)\"\n mat-raised-button\n >\n {{ \"scandoc.no\" | translate }}\n </button>\n </footer>\n </div>\n </div>\n</ng-container>\n<ng-container *ngIf=\"result\">\n <section>\n <ngx-scan-results\n (action)=\"selfie()\"\n [form]=\"form\"\n [data]=\"scanResults\"\n ></ngx-scan-results>\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</ng-container>\n\n<ng-container *ngIf=\"manual\">\n <section>\n <ngx-manual-scan (action)=\"manualScanData($event)\"></ngx-manual-scan>\n </section>\n</ng-container>\n<ng-container *ngIf=\"!result && documentTypeSelected && !manual\">\n <section>\n <div #wraper class=\"wraper\">\n <div class=\"loading\" *ngIf=\"(!cameraReady && !preview) || scaning\">\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 #webcam\n type=\"document\"\n [trigger]=\"trigger\"\n [imageHandler]=\"imageHandler\"\n (imageCapture)=\"handleImage($event)\"\n (initError)=\"handleInitError($event)\"\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=\"\n z-index: 20;\n display: flex;\n position: absolute;\n width: 100%;\n height: 100%;\n \"\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 *ngIf=\"preview\">\n <!-- <div class=\"displayInfo\" *ngIf=\"!preview && cameraReady\">\n <ng-container *ngIf=\"displayInfo\">\n {{ displayInfo | translate }}\n </ng-container>\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</ng-container>\n","import { NgModule } from '@angular/core';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTabsModule } from '@angular/material/tabs';\n\n@NgModule({\n imports: [\n MatNativeDateModule,\n MatDatepickerModule,\n MatCardModule,\n MatMenuModule,\n MatIconModule,\n MatButtonModule,\n MatDialogModule,\n MatInputModule,\n MatSnackBarModule,\n MatProgressBarModule,\n MatTableModule,\n MatProgressSpinnerModule,\n MatPaginatorModule,\n MatSelectModule,\n MatCheckboxModule,\n MatChipsModule,\n MatBadgeModule,\n MatListModule,\n MatTabsModule,\n MatSliderModule,\n MatSlideToggleModule,\n ],\n exports: [\n MatNativeDateModule,\n MatDatepickerModule,\n MatSelectModule,\n MatCardModule,\n MatMenuModule,\n MatIconModule,\n MatButtonModule,\n MatDialogModule,\n MatInputModule,\n MatSnackBarModule,\n MatProgressBarModule,\n MatProgressSpinnerModule,\n MatTableModule,\n MatPaginatorModule,\n MatChipsModule,\n MatBadgeModule,\n MatCheckboxModule,\n MatListModule,\n MatTabsModule,\n MatSlideToggleModule,\n MatAutocompleteModule,\n ],\n providers: [],\n})\nexport class MaterialModule {}\n","import {\n Component,\n OnInit,\n AfterViewInit,\n ChangeDetectorRef,\n} from '@angular/core';\nimport { FieldType } from '@ngx-formly/material';\n\n@Component({\n selector: 'app-formly-avatar-type',\n template: `\n <mat-card appearance=\"outlined\" style=\"margin: 4px; padding:16px\">\n <div class=\"card-title\">{{ 'scandoc.result.avatar' | translate }}</div>\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 styleUrls: ['./scss/avatar.type.scss'],\n})\nexport class AvatarTypeComponent\n extends FieldType<any>\n implements AfterViewInit\n{\n width = 'w-120';\n padding = 'px-32 pt-8 pb-8';\n name: any;\n constructor(private cd: ChangeDetectorRef) {\n super();\n }\n ngOnChange() {}\n\n selfie(){};\n\n ngAfterViewInit() {\n if (this.to.width) {\n this.width = this.to.width;\n }\n if (this.to.padding) {\n this.padding = this.to.padding;\n }\n\n this.cd.detectChanges();\n }\n}\n","import {\n Component,\n OnInit,\n AfterViewInit,\n ChangeDetectorRef,\n} from '@angular/core';\nimport { FieldType } from '@ngx-formly/material';\n\n@Component({\n selector: 'app-formly-title-type',\n template: `\n <div class=\"card-title\">\n {{ to.label }}\n </div>\n `,\n styleUrls: ['./scss/title.type.scss'],\n})\nexport class TitleTypeComponent\n extends FieldType<any>\n implements OnInit, AfterViewInit\n{\n opt: any;\n constructor(private cd: ChangeDetectorRef) {\n super();\n }\n ngOnInit() {\n this.opt = {\n badge: this.to.badge,\n };\n }\n\n ngAfterViewInit() {\n this.cd.detectChanges();\n }\n}\n","import {\n Component,\n OnInit,\n AfterViewInit,\n ChangeDetectorRef,\n} from '@angular/core';\nimport { FieldType } from '@ngx-formly/material';\nimport { NgxScandocCameraProvider } from '../../providers/camera.provider';\nimport { ScanProvider } from '../../providers/scan.provider';\n\n@Component({\n selector: 'app-formly-profile-image-type',\n template: `\n <mat-form-field>\n <mat-label>{{ 'scandoc.result.avatar' | translate }} </mat-label>\n <input matInput style=\"display:none\" />\n <div class=\"selfieContainer\">\n <div class=\"selfie\">\n <img *ngIf=\"model?._avatar\" class=\"preview\" [src]=\"model._avatar\" />\n </div>\n <button\n *ngIf=\"scanProvider.enableVerification\"\n (click)=\"selfie()\"\n mat-raised-button\n >\n {{ 'scandoc.result.takeSelfie' | translate }}\n </button>\n </div>\n </mat-form-field>\n `,\n styleUrls: ['./scss/profile.image.type.scss'],\n})\nexport class ProfileImageTypeComponent\n extends FieldType<any>\n implements AfterViewInit\n{\n name: any;\n width: any;\n padding: any;\n constructor(\n private cd: ChangeDetectorRef,\n private cameraProvider: NgxScandocCameraProvider,\n public scanProvider: ScanProvider\n ) {\n super();\n }\n selfie() {\n this.cameraProvider.selfie$.next(true);\n }\n ngOnChange() {}\n\n ngAfterViewInit() {}\n}\n","import { NgModule } from '@angular/core';\nimport { FormlyModule, ConfigOption } from '@ngx-formly/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { FormlyMaterialModule } from '@ngx-formly/material';\nimport { CommonModule } from '@angular/common';\n\nimport { AvatarTypeComponent } from './types/avatar.type';\n\nimport { TitleTypeComponent } from './types/title.type';\nimport { FormlySelectModule } from '@ngx-formly/core/select';\nimport { AvatarModule } from 'ngx-avatars';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MaterialModule } from '../core/shared/material.module';\nimport { ProfileImageTypeComponent } from './types/profile.image.type';\nimport { FormlyMatDatepickerModule } from '@ngx-formly/material/datepicker';\n\n\n@NgModule({\n declarations: [\n TitleTypeComponent,\n AvatarTypeComponent,\n ProfileImageTypeComponent,\n ],\n imports: [\n CommonModule,\n FormsModule,\n FormlyMatDatepickerModule,\n FormlySelectModule,\n MaterialModule,\n AvatarModule,\n TranslateModule,\n\n FormlyMaterialModule,\n FormlyModule.forChild({\n types: [\n {\n name: 'title',\n component: TitleTypeComponent,\n wrappers: [],\n },\n {\n name: 'profile-image',\n component: ProfileImageTypeComponent,\n wrappers: [],\n },\n ],\n }),\n ],\n\n providers: [],\n exports: [FormlyModule],\n})\nexport class AppFormModule {}\n","import {\n Component,\n EventEmitter,\n AfterViewInit,\n ChangeDetectionStrategy,\n Input,\n OnDestroy,\n} from '@angular/core';\nimport { NgxScandocCameraProvider } from '../../../providers/camera.provider';\n\n@Component({\n selector: 'ngx-scan-camera-switch',\n templateUrl: './camera-switch.component.html',\n styleUrls: ['./camera-switch.component.scss'],\n // changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CameraSwitchComponent implements AfterViewInit, OnDestroy {\n constructor(public cameraProvider: NgxScandocCameraProvider) {}\n\n\n\n ngAfterViewInit(): void {\n\n // this.cameraProvider.setDefault();\n }\n\n ngOnDestroy(): void {}\n}\n","<mat-form-field\n style=\"font-size: 14px; margin-top: 8px\"\n class=\"w-100-p mr-16 mt-8\"\n\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","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\n\nimport { WebcamModule } from './webcam/webcam.module';\nimport { ScanComponent } from './scan/scan.component';\nimport { MaterialModule } from '../shared/material.module';\nimport { AppFormModule } from '../../forms/form.module';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CameraSwitchComponent } from './camera-switch/camera-switch.component';\nimport { ScanResultsComponent } from './scan-results/scan-results.component';\nimport { ManualScanComponent } from './manual-scan/manual-scan.component';\n//import { NgxScandocCameraProvider } from '../../providers/camera.provider';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n TranslateModule,\n WebcamModule.forRoot(),\n MaterialModule,\n AppFormModule,\n ReactiveFormsModule,\n ],\n declarations: [\n ScanComponent,\n ScanResultsComponent,\n CameraSwitchComponent,\n ManualScanComponent,\n ],\n exports: [\n WebcamModule,\n ScanComponent,\n CameraSwitchComponent,\n ManualScanComponent,\n ],\n providers: [],\n})\nexport class CoreComponentsModule {\n static forRoot(): ModuleWithProviders<CoreComponentsModule> {\n return {\n ngModule: CoreComponentsModule,\n providers: [],\n };\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({ name: 'safeResourceUrl' })\nexport class SafeResourceUrlPipe implements PipeTransform {\n constructor(private sanitizer: DomSanitizer) {}\n\n transform(style:any) {\n return this.sanitizer.bypassSecurityTrustResourceUrl(style);\n // return this.sanitizer.bypassSecurityTrustStyle(style);\n // return this.sanitizer.bypassSecurityTrustXxx(style); - see docs\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { SafeResourceUrlPipe } from './safeResourceUrl.pipe';\n\n@NgModule({\n declarations: [SafeResourceUrlPipe],\n imports: [],\n exports: [\n\n\n SafeResourceUrlPipe,\n\n ],\n})\nexport class CorePipesModule {}\n","import {\n Component,\n OnInit,\n Inject,\n\n ViewChild,\n ViewContainerRef,\n AfterViewInit,\n ChangeDetectorRef,\n OnChanges,\n} from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n\n@Component({\n selector: 'ngx-scandoc-blank',\n templateUrl: './blank.component.html',\n styleUrls: ['./blank.component.scss'],\n // changeDetection:ChangeDetectionStrategy.OnPush\n})\nexport class BlankComponent implements AfterViewInit {\n @ViewChild('body', { read: ViewContainerRef, static: true })\n body?: ViewContainerRef;\n initSet = false;\n constructor(\n public dialogRef: MatDialogRef<BlankComponent>,\n @Inject(MAT_DIALOG_DATA) public data:any,\n\n\n public cd: ChangeDetectorRef\n ) {}\n\n\n setModel(model:any) {\n this.data.data.model = model;\n this.init();\n }\n\n\n init() {\n\n this.initSet = true;\n\n this.body?.clear();\n\n const componentRef: any = this.body?.createComponent(this.data.component);\n\n componentRef.instance.data = this.data.data;\n // componentRef.instance.dialogs = this.dialogs;\n componentRef.instance.dialogRef = this.dialogRef;\n\n if (componentRef.instance.init) {\n componentRef.instance.init();\n }\n this.cd.detectChanges();\n }\n ngAfterViewInit() {\n if (!this.initSet) {\n this.init();\n }\n }\n}\n","<ng-template #body></ng-template>\n","import { Component, OnInit, Input, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n selector: 'ngx-scandoc-loading',\n templateUrl: './loading.component.html',\n styleUrls: ['./loading.component.scss'],\n})\nexport class LoadingComponent {}\n","<div style=\"width:240px;\">\n\n <div class=\"pb-16\" style=\"font-size: 18px;padding-bottom:16px;\">\n Loading...\n </div>\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n</div>\n","import { Component, OnInit, Inject, HostListener } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\ninterface options {\n hideOkButton?: boolean;\n hideCancelButton?: boolean;\n hideNoButton?: boolean;\n type?: string;\n}\n@Component({\n selector: 'ngx-scandoc-confirm',\n templateUrl: './confirm.component.html',\n styleUrls: ['./confirm.component.scss', './../../scss/dialog.scss'],\n})\nexport class ConfirmComponent implements OnInit {\n showDetails=false;\n images = {\n alert: 'page-lost.svg',\n prompt: 'bedroom.svg',\n dirty: 'opps.svg',\n };\n type:any;\n options: options = {};\n\n @HostListener('document:keyup.enter', ['$event'])\n onEnterPress(e: KeyboardEvent) {\n this.action(true);\n }\n @HostListener('document:keyup.escape', ['$event'])\n onEscapePress(e: KeyboardEvent) {\n this.action(false);\n }\n\n constructor(\n public dialogRef: MatDialogRef<ConfirmComponent>,\n @Inject(MAT_DIALOG_DATA) public data:any,\n ) {}\n\n ngOnInit() {\n console.log(this.data);\n this.options = this.data.options || {};\n this.type = this.options.type || this.data.type || 'prompt';\n }\n action(key:any) {\n this.dialogRef.close(key);\n }\n close() {}\n}\n","<header class=\"page-header\" fxLayout=\"row\" fxLayoutAlign=\"start center\">\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 <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 || \"scandoc.cancel\" | translate }}\n </button>\n\n <button\n *ngIf=\"data.no && !options?.hideNoButton\"\n (click)=\"action('no')\"\n mat-raised-button\n >\n {{ data.no }}\n </button>\n <button\n *ngIf=\"!data.hideOkButton && !options?.hideOkButton\"\n (click)=\"action(true)\"\n mat-raised-button\n >\n <ng-container *ngIf=\"!data.alert\">\n {{ data.ok || \"scandoc.confirm\" | translate }}\n </ng-container>\n\n <ng-container *ngIf=\"data.alert\">\n {{ data.ok || \"scandoc.ok\" | translate }}\n </ng-container>\n </button>\n </div>\n</footer>\n","import {\n Component,\n EventEmitter,\n Output,\n ChangeDetectorRef,\n AfterViewInit,\n ChangeDetectionStrategy,\n OnInit,\n OnDestroy,\n} from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { Subject } from 'rxjs';\nimport { FormGroup } from '@angular/forms';\nimport { WebcamImage } from '../../../core/components/webcam/domain/webcam-image';\nimport { WebcamInitError } from '../../../core/components/webcam/domain/webcam-init-error';\nimport { NgxScandocCameraProvider } from '../../../providers/camera.provider';\nimport { NgxScandocDialogsCoreProvider } from '../../../dialogs/dialogs.core.provider';\n\nimport { ScanProvider } from '../../../providers/scan.provider';\nimport { BaseComponent } from '../../../core/components/base.component';\n@Component({\n selector: 'ngx-scandoc-selfie',\n templateUrl: './scan-selfie.component.html',\n styleUrls: ['./scan-selfie.component.scss', '../../scss/dialog.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScanSelfieComponent\n extends BaseComponent\n implements AfterViewInit, OnDestroy\n{\n @Output() actions = new EventEmitter();\n data: any;\n cameraReady = false;\n preview: any = null;\n\n public trigger: Subject<number> = new Subject<number>();\n\n\n form = new FormGroup({});\n webcamImage: any;\n constructor(\n public cd: ChangeDetectorRef,\n\n public dialogRef: MatDialogRef<ScanSelfieComponent>,\n\n public cameraProvider: NgxScandocCameraProvider,\n public scanProvider: ScanProvider,\n private dialogs: NgxScandocDialogsCoreProvider\n ) {\n super();\n }\n\n public handleImage(webcamImage: WebcamImage): void {\n // console.log('[received webcam image]', webcamImage);\n this.cameraProvider.$showSwitchSelfie.next(false);\n\n this.webcamImage = webcamImage;\n this.preview = webcamImage.imageAsDataUrl;\n this.cd.detectChanges();\n }\n public handleInitError(error: WebcamInitError): void {\n console.log(error);\n }\n videoReady(ev: any) {\n this.cameraReady = ev;\n }\n ngAfterViewInit(): void {\n this.cameraProvider.$showSwitchSelfie.next(true);\n this.cd.detectChanges();\n }\n ngOnDestroy(): void {\n this.__destroy();\n }\n retry() {\n this.preview = false;\n this.cameraProvider.$showSwitchSelfie.next(true);\n this.cd.detectChanges()\n }\n scan() {\n this.trigger.next(new Date().getTime());\n }\n\n continue() {\n console.log(this.data);\n if (this.scanProvider.enableVerification && this.data.avatar) {\n const loading = this.dialogs.loading();\n console.log(this.data.avatar);\n\n this.__subs(\n this.scanProvider.stateless(\n this.data.avatar.split(',')[1],\n this.webcamImage?.imageAsDataUrl.split(',')[1]\n )\n ).subscribe(\n (resp: any) => {\n loading.close();\n if (resp.Data?.Verified) {\n this.dialogRef?.close(this.webcamImage);\n } else {\n this.dialogs.alert(\n 'Verification failed!',\n \"We can't verify that your selfie is same as image on document.\"\n );\n }\n console.log(resp);\n },\n (err) => {\n loading.close();\n this.dialogRef?.close(this.webcamImage);\n }\n );\n } else {\n this.dialogRef?.close(this.webcamImage);\n }\n // this.dialogRef.close(this.webcamImage)\n }\n\n close() {\n this.dialogRef.close(null);\n }\n}\n","<header class=\"page-header\">\n <div class=\"title\">\n {{ \"scandoc.result.takeSelfie\" | translate }}\n </div>\n\n <span style=\"flex: 1\"></span>\n\n <ng-container *ngIf=\"cameraProvider.$showSwitchSelfie | async\">\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>\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\n<div 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>\n <ngx-scandoc-webcam\n *ngIf=\"!preview\"\n class=\"main flex\"\n #webcam\n [trigger]=\"trigger\"\n (imageCapture)=\"handleImage($event)\"\n (initError)=\"handleInitError($event)\"\n (videoReady)=\"videoReady($event)\"\n type=\"selfie\"\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 >\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> {{ \"scandoc.result.takeSelfie\" | translate }} </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 {{ \"scandoc.retry\" | translate }}\n </button>\n\n <button\n style=\"flex: 1\"\n class=\"ml-4\"\n mat-raised-button\n (click)=\"continue()\"\n >\n {{ \"scandoc.continueWithSelectedImage\" | translate }}\n </button>\n </div>\n </footer>\n</div>\n","import { Component, OnInit, Inject, HostListener } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n selector: 'ngx-scandoc-turn-document',\n templateUrl: './turn-document.component.html',\n styleUrls: ['./turn-document.component.scss'],\n})\nexport class TurnDocumentComponent implements OnInit {\n\n\n constructor(\n public dialogRef: MatDialogRef<TurnDocumentComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any\n ) {}\n\n ngOnInit() {\n console.log(this.data)\n }\n\n close() {\n console.log(this.dialogRef);\n this.dialogRef.close();\n }\n}\n","<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","import { Component, OnInit, Inject, HostListener } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n selector: 'ngx-scandoc-prompt-manual',\n templateUrl: './prompt-manual.component.html',\n styleUrls: ['./prompt-manual.component.scss'],\n})\nexport class PromptManualComponent implements OnInit {\n constructor(\n public dialogRef: MatDialogRef<PromptManualComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any\n ) {}\n\n ngOnInit() {\n console.log(this.data);\n }\n\n close(key: boolean) {\n console.log(this.dialogRef);\n this.dialogRef.close(key);\n }\n}\n","<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>screenshot_keyboard</mat-icon>\n <div class=\"text\">\n {{ \"scandoc.manual\" | translate }}\n </div>\n</div>\n\n<!-- -->\n\n<footer>\n <button style=\"margin-right: 8px\" (click)=\"close(true)\" mat-raised-button>\n {{ \"scandoc.yes\" | translate }}\n </button>\n <button style=\"margin-left: 8px\" (click)=\"close(false)\" mat-raised-button>\n {{ \"scandoc.no\" | translate }}\n </button>\n</footer>\n","import {\n DialogPosition,\n MatDialog,\n MatDialogRef,\n} from '@angular/material/dialog';\nimport { Injectable, EventEmitter } from '@angular/core';\n\nimport { BlankComponent } from './components/blank/blank.component';\nimport { ScanProfileComponent } from './components/scan-profile/scan-profile.component';\nimport { LoadingComponent } from './components/loading/loading.component';\nimport { ConfirmComponent } from './components/confirm/confirm.component';\nimport { ScanSelfieComponent } from './components/scan-selfie/scan-selfie.component';\nimport { TurnDocumentComponent } from './components/turn-document/turn-document.component';\nimport { PromptManualComponent } from './components/prompt-manual/prompt-manual.component';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgxScandocDialogsCoreProvider {\n components: any = {\n ScanProfile: { component: ScanProfileComponent },\n Loading: { component: LoadingComponent },\n ConfirmComponent: { component: ConfirmComponent },\n TurnDocumentComponent: { component: TurnDocumentComponent },\n ScanSelfie: { component: ScanSelfieComponent },\n PromptManual: { component: PromptManualComponent },\n };\n private blank = BlankComponent;\n\n constructor(private matDialog: MatDialog) {}\n private getComponent(name: any) {\n if (!this.components[name]) {\n console.warn('Component missing', name, this.components);\n }\n return this.components[name].component;\n }\n public open(config: any, withComponent = true) {\n // console.log(config);\n const panelClass = config.panelClass ? config.panelClass : config.name;\n\n const component = this.getComponent(config.name);\n\n const dialogRef = this.matDialog.open(this.blank, {\n panelClass,\n data: {\n data: config.data,\n withComponent,\n component,\n },\n autoFocus: false,\n width: config.width || '',\n height: config.height || '',\n maxWidth: config.maxWidth || '',\n minWidth: config.minWidth || '',\n maxHeight: config.maxHeight || '',\n minHeight: config.minHeight || '',\n position: config.position || {},\n hasBackdrop: config.hasBackdrop === undefined ? true : config.hasBackdrop,\n disableClose:\n config.disableClose === undefined ? true : config.disableClose,\n });\n\n return dialogRef;\n }\n public scanProfile(data: any) {\n return this.open({\n name: 'ScanProfile',\n panelClass: 'ScanProfileComponent',\n data,\n });\n }\n\n // Generic loading dialog\n public loading(title: string = '') {\n return this.open({\n name: 'Loading',\n data: { title },\n });\n }\n public alert(title: string, text: string) {\n return this.open({\n name: 'ConfirmComponent',\n maxWidth: '600px',\n panelClass: 'DialogNoPadding',\n\n minWidth: '440px',\n data: { title, text, alert: true },\n });\n }\n\n public turnDocument(idScan: any) {\n return this.open({\n name: 'TurnDocumentComponent',\n maxWidth: '400px',\n panelClass: 'DialogNoPadding',\n minWidth: '300px',\n data: { idScan },\n }).afterClosed();\n }\n public promptManual() {\n return this.open({\n name: 'PromptManual',\n maxWidth: '400px',\n panelClass: 'DialogNoPadding',\n minWidth: '300px',\n data: { },\n }).afterClosed();\n }\n // public scanMobile(data: any) {\n // return this.open({\n // name: 'ScanMobileComponent',\n // maxWidth: '600px',\n // panelClass: 'DialogNoPadding',\n\n // minWidth: '440px',\n // data,\n // });\n // }\n public scanSelfie(data: any) {\n return this.open({\n name: 'ScanSelfie',\n panelClass: 'ScanProfileComponent',\n data,\n });\n }\n}\n","import {\n Component,\n ViewChild,\n EventEmitter,\n Output,\n HostListener,\n ElementRef,\n ChangeDetectorRef,\n AfterViewInit,\n ChangeDetectionStrategy,\n Input,\n OnDestroy,\n} from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { BaseComponent } from '../../../core/components/base.component';\nimport { NgxScandocDialogsCoreProvider } from '../../../dialogs/dialogs.core.provider';\nimport { NgxScandocCameraProvider } from '../../../providers/camera.provider';\nimport { Platform } from '@angular/cdk/platform';\nimport { ScanProvider } from '../../../providers/scan.provider';\n\n@Component({\n selector: 'ngx-scandoc-profile',\n templateUrl: './scan-profile.component.html',\n styleUrls: ['./scan-profile.component.scss', '../../scss/dialog.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScanProfileComponent\n extends BaseComponent\n implements AfterViewInit, OnDestroy\n{\n @Input() type = 'desktop';\n\n showDialog = false;\n @HostListener('touchmove', ['$event'])\n handleTouchMove(event: any) {\n // console.log(event);\n if (event.touches.length > 1) {\n event.preventDefault();\n }\n // console.log(document.body.style.zoom);\n\n if (event.scale !== 1) {\n // event.preventDefault();\n // event.stopImmediatePropagation();\n }\n }\n\n constructor(\n public dialogs: NgxScandocDialogsCoreProvider,\n public cameraProvider: NgxScandocCameraProvider,\n private scanProvider: ScanProvider,\n public dialogRef: MatDialogRef<ScanProfileComponent>,\n private platform: Platform\n ) {\n super();\n }\n ngAfterViewInit(): void {\n // console.log(this.cameraProvider)\n }\n ngOnDestroy(): void {\n this.__destroy();\n console.log('DES');\n }\n\n actions(event: any) {\n switch (event.type) {\n case 'scanFinish':\n if (this.scanProvider.config.hideResults) {\n this.dialogRef?.close(event.data);\n }\n break;\n\n case 'manualMode':\n this.dialogRef?.close({ manual: true });\n break;\n case 'scanDataClose':\n this.dialogRef?.close(event.data);\n break;\n case 'turnDocumentOver':\n this.__subs(this.dialogs.turnDocument(event.side)).subscribe(() => {\n this.showDialog = false;\n });\n break;\n }\n }\n\n close() {\n this.dialogRef?.close();\n }\n}\n","<header class=\"page-header\">\n <div class=\"title\" >\n {{ \"scandoc.title\" | translate }}\n </div>\n\n <span style=\"flex: 1\"></span>\n\n <ng-container *ngIf=\"cameraProvider.$showSwitch| async\">\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","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { ScanProfileComponent } from './components/scan-profile/scan-profile.component';\nimport { BlankComponent } from './components/blank/blank.component';\nimport { NgxScandocDialogsCoreProvider } from './dialogs.core.provider';\n\nimport { MaterialModule } from '../core/shared/material.module';\nimport { CoreComponentsModule } from '../core/components/components.module';\n//import { FlexLayoutModule, FlexModule } from '@angular/flex-layout';\nimport { CorePipesModule } from '../core/pipes/pipes.module';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { LoadingComponent } from './components/loading/loading.component';\nimport { AppFormModule } from '../forms/form.module';\nimport { ConfirmComponent } from './components/confirm/confirm.component';\n\n//import { QRCodeModule } from 'angularx-qrcode';\nimport { ScanSelfieComponent } from './components/scan-selfie/scan-selfie.component';\nimport { TurnDocumentComponent } from './components/turn-document/turn-document.component';\nimport { PromptManualComponent } from './components/prompt-manual/prompt-manual.component';\n//import { NgxScandocCameraProvider } from '../providers/camera.provider';\n//import { NgxScandocCameraProvider } from '../providers/camera.provider';\n\n@NgModule({\n declarations: [\n ScanProfileComponent,\n BlankComponent,\n LoadingComponent,\n ConfirmComponent,\n TurnDocumentComponent,\n ScanSelfieComponent,\n PromptManualComponent,\n ],\n exports: [\n ScanProfileComponent,\n LoadingComponent,\n BlankComponent,\n TurnDocumentComponent,\n MaterialModule,\n ScanSelfieComponent,\n PromptManualComponent,\n CoreComponentsModule,\n ],\n imports: [\n // QRCodeModule,\n ReactiveFormsModule,\n CommonModule,\n FormsModule,\n AppFormModule,\n\n TranslateModule,\n MaterialModule,\n CoreComponentsModule.forRoot(),\n CorePipesModule,\n // FlexModule,\n // FlexLayoutModule,\n ],\n providers: [],\n})\nexport class DialogsModule {\n static forRoot(): ModuleWithProviders<DialogsModule> {\n return {\n ngModule: DialogsModule,\n providers: [ NgxScandocDialogsCoreProvider],\n };\n }\n}\n","import {\n HttpEvent,\n HttpHandler,\n HttpHeaders,\n HttpInterceptor,\n HttpRequest,\n} from '@angular/common/http';\nimport { Injectable, Injector } from '@angular/core';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError, share, switchMap } from 'rxjs/operators';\nimport { NgxScandocAuthProvider } from './auth.provider';\n\n@Injectable()\nexport class HttpErrorInterceptor implements HttpInterceptor {\n inflightAuthRequest!: Observable<any> | null;\n\n authProvider:NgxScandocAuthProvider=this.injector.get(NgxScandocAuthProvider);\n constructor(private injector: Injector) {}\n\n intercept(\n req: HttpRequest<any>,\n next: HttpHandler\n ): Observable<HttpEvent<any>> {\n //console.log(req.url);\n if (req.url.indexOf('/ks/') >= 0 || req.url.indexOf('/assets/') >= 0) {\n return next.handle(req);\n }\n\n // const authProvider = this.injector.get(AuthProvider);\n\n if (this.authProvider.config.validDomains) {\n const valid =\n this.authProvider.config.validDomains\n .map((domain) => {\n return req.url.indexOf(domain) >= 0;\n })\n .filter((m) => m).length > 0;\n if (!valid) {\n return next.handle(req);\n }\n }\n\n\n this.inflightAuthRequest = this.authProvider.accesToken;\n\n return this.inflightAuthRequest.pipe(\n share(),\n switchMap((token: string) => {\n // unset request inflight\n this.inflightAuthRequest = null;\n\n const transaction = req.headers.get('TransactionID');\n const authReq = req.clone({\n headers: this.getHeaders(token, transaction || ''),\n });\n\n return next.handle(authReq);\n }),\n catchError((err: any) => {\n let tokenExpired = false;\n if (err.errors) {\n const find = err.erros.find(\n (es: string) => es.indexOf('Invalid token') > -1\n );\n tokenExpired = find ? true : false;\n }\n console.log(err);\n\n if (err.status === 401 || err.status === 403 || tokenExpired) {\n return this.authProvider.refreshToken().pipe(\n switchMap((token) => {\n const transaction = req.headers.get('TransactionID');\n const authReq = req.clone({\n headers: this.getHeaders(token, transaction || ''),\n });\n\n return next.handle(authReq);\n })\n );\n } else {\n return throwError(() => err);\n }\n })\n );\n }\n\n private getHeaders(token: string, TransactionID: string) {\n if (TransactionID) {\n return new HttpHeaders({\n 'Content-Type': 'application/json',\n Authorization: token,\n TransactionID,\n });\n }\n return new HttpHeaders({\n 'Content-Type': 'application/json',\n Authorization: token,\n });\n }\n}\n","export class Iso11649Reference {\n FORMAT_RF = /^RF[0-9]{2}[A-Z0-9]{1,21}$/;\n CHARCODE_A = 'A'.charCodeAt(0);\n CHARCODE_0 = '0'.charCodeAt(0);\n constructor() {}\n validate(rawValue: any) {\n const value = rawValue.replace(/ /g, '');\n\n // console.log(value);\n if (!value.match(this.FORMAT_RF)) {\n return false;\n // throw new Error('Invalid Creditor Reference format; expecting: \\'' + this.FORMAT_RF + '\\', found: \\'' + value + '\\'');\n }\n\n return (\n this.computeWithoutCheck(\n value.substring(4, value.length) + value.substring(0, 4)\n ) === 1\n );\n }\n\n computeWithoutCheck(rawValue:any) {\n return this.mod97(rawValue);\n }\n\n mod97(value:any) {\n let buffer = 0;\n let charCode;\n\n for (let i = 0; i < value.length; ++i) {\n charCode = value.charCodeAt(i);\n buffer =\n charCode +\n (charCode >= this.CHARCODE_A\n ? buffer * 100 - this.CHARCODE_A + 10\n : buffer * 10 - this.CHARCODE_0);\n\n if (buffer > 1000000) {\n buffer %= 97;\n }\n }\n\n return buffer % 97;\n }\n}\nexport class ObjectUtils {\n static getValue(target: any, key: string): any {\n if (!target) {\n return undefined;\n }\n\n const keys = key.split('.');\n\n key = '';\n\n do {\n key += keys.shift();\n\n const value = target[key];\n\n if (value !== undefined && (typeof value === 'object' || !keys.length)) {\n target = value;\n key = '';\n } else if (!keys.length) {\n target = undefined;\n } else {\n key += '.';\n }\n } while (keys.length);\n\n return target;\n }\n\n static deepCopy(inputObj: any) {\n let newObj = inputObj;\n\n if (inputObj && typeof inputObj === 'object') {\n newObj =\n Object.prototype.toString.call(inputObj) === '[object Array]' ? [] : {};\n\n for (const i of Object.keys(inputObj)) {\n newObj[i] = this.deepCopy(inputObj[i]);\n }\n\n if (Object.prototype.toString.call(inputObj) === '[object Map]') {\n newObj = new Map();\n inputObj.forEach((v:any, k:any) => {\n newObj.set(k, this.deepCopy(v));\n });\n }\n }\n\n return newObj;\n }\n\n static copy(item: any): any {\n return JSON.parse(JSON.stringify(item));\n }\n\n static compare(\n a: number | string | Date,\n b: number | string | Date,\n isAsc: boolean\n ) {\n return (a < b ? -1 : 1) * (isAsc ? 1 : -1);\n }\n\n static merge(...objects: any[]): any {\n const result: any = {};\n\n objects.forEach((source: any) => {\n Object.keys(source).forEach((prop: any) => {\n if (prop in result && Array.isArray(result[prop])) {\n result[prop] = result[prop].concat(source[prop]);\n } else if (prop in result && typeof result[prop] === 'object') {\n result[prop] = ObjectUtils.merge(result[prop], source[prop]);\n } else {\n result[prop] = source[prop];\n }\n });\n });\n\n return result;\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { TranslateLoader } from '@ngx-translate/core';\nimport { forkJoin, Observable, of, throwError } from 'rxjs';\nimport { catchError, map, retry } from 'rxjs/operators';\nimport { ObjectUtils } from '../core/helpers/object-utils';\nexport class ComponentTranslationModel {\n name: string;\n path: string;\n json: string[];\n\n constructor(obj?: any) {\n this.name = obj && obj.name;\n this.path = obj && obj.path;\n this.json = (obj && obj.json) || [];\n }\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TranslateLoaderProvider implements TranslateLoader, OnDestroy {\n // private prefix = null;\n private suffix = '.json';\n private providers: ComponentTranslationModel[] = [];\n private queue: any[][] = [];\n\n constructor(private http: HttpClient) {}\n\n ngOnDestroy(): void {\n console.log('TRANSLATE DESTROY');\n }\n\n registerProvider(name: string, path: string) {\n const registered = this.providers.find(\n (provider) => provider.name === name\n );\n\n if (registered) {\n registered.path = path;\n } else {\n this.providers.push(\n new ComponentTranslationModel({ name: name, path: path })\n );\n }\n }\n\n providerRegistered(name: string): boolean {\n return this.providers.find((x) => x.name === name) ? true : false;\n }\n\n getComponentToFetch(lang: any): Array<Observable<any>> {\n const observableBatch: any = [];\n\n if (!this.queue[lang]) {\n this.queue[lang] = [];\n }\n\n this.providers.forEach((component:any) => {\n if (!this.isComponentInQueue(lang, component.name)) {\n this.queue[lang].push(component.name);\n\n const translationUrl = `${component.path}/${lang}${\n this.suffix\n }?v=${Date.now()}`;\n\n observableBatch.push(\n this.http.get(translationUrl).pipe(\n map((res) => {\n component.json[lang] = res;\n }),\n retry(3),\n catchError(() => throwError(`Failed to load ${translationUrl}`))\n )\n );\n }\n });\n\n return observableBatch;\n }\n\n init(lang: any) {\n if (this.queue[lang] === undefined) {\n this.queue[lang] = [];\n }\n }\n\n isComponentInQueue(lang: any, name: string) {\n return (this.queue[lang] || []).find((x) => x === name) ? true : false;\n }\n\n getFullTranslationJSON(lang: any): any {\n let result = {};\n\n this.providers\n .slice(0)\n .sort((a, b) => {\n if (a.name === 'app') {\n return 1;\n }\n\n if (b.name === 'app') {\n return -1;\n }\n\n return a.name.localeCompare(b.name);\n })\n .forEach((model) => {\n if (model.json && model.json[lang]) {\n result = ObjectUtils.merge(result, model.json[lang]);\n }\n });\n\n return result;\n }\n\n getTranslation(lang: string): Observable<any> {\n let hasFailures = false;\n const batch = [\n ...this.getComponentToFetch(lang).map((observable) => {\n return observable.pipe(\n catchError((error) => {\n hasFailures = true;\n\n return of(error);\n })\n );\n }),\n ];\n\n return new Observable((observer) => {\n if (batch.length > 0) {\n forkJoin(batch).subscribe(\n () => {\n const fullTranslation = this.getFullTranslationJSON(lang);\n\n if (fullTranslation) {\n observer.next(fullTranslation);\n }\n\n if (hasFailures) {\n observer.error('Failed to load some resources');\n } else {\n observer.complete();\n }\n },\n (err) => {\n observer.error('Failed to load some resources');\n }\n );\n } else {\n const fullTranslation = this.getFullTranslationJSON(lang);\n\n if (fullTranslation) {\n observer.next(fullTranslation);\n observer.complete();\n }\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { webSocket } from 'rxjs/webSocket';\nimport { from } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\n@Injectable({\n providedIn: 'root',\n})\nexport class webRtcProvider {\n pc: RTCPeerConnection = new RTCPeerConnection();\n subject: any;\n constructor() {}\n\n connect(id = 1) {\n this.subject = webSocket('wss://localhost:3000?id=' + id);\n }\n\n setup() {\n\n this.connect(1)\n\n // try {\n // this.pc = new RTCPeerConnection({\n // iceServers: [\n // { urls: 'stun:stun.services.mozilla.com' },\n // { urls: 'stun:stun.l.google.com:19302' },\n // ],\n // });\n // } catch (error) {\n // console.log(error);\n // this.pc = new RTCPeerConnection({\n // iceServers: [\n // { urls: 'stun:stun.services.mozilla.com' },\n // { urls: 'stun:stun.l.google.com:19302' },\n // ],\n // });\n // }\n\n // this.pc.onicecandidate = (event) => {\n // event.candidate\n // ? this.sendMessage({ ice: event.candidate })\n // : console.log('Sent All Ice');\n // };\n\n // if (this.pc) {\n // from(this.pc.createOffer())\n // .pipe(switchMap((offer) => from(this.pc.setLocalDescription(offer))))\n // .subscribe((data: any) => {\n // this.sendMessage({\n // type: 'offer',\n // sdp: this.pc.localDescription,\n // });\n // });\n // }\n }\n sendMessage(data: any) {\n console.log(data);\n this.subject.next(JSON.stringify(data));\n }\n}\n","import { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { DialogsModule } from '../dialogs/dialogs.module';\nimport { HttpErrorInterceptor } from '../providers/interceptor.provider';\nimport { NgxScandocAuthProvider } from '../providers/auth.provider';\nimport { ScanProvider } from '../providers/scan.provider';\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { AuthConfig, ScanConfig, ScanDataConfig } from '../core/interfaces/config';\nimport { NgxScandocCameraProvider } from '../providers/camera.provider';\nimport { AUTH_CONFIG_TOKEN, SCAN_CONFIG_TOKEN } from '../core/tokens/config.tokens';\nimport { NgxScanDocTranslationProvider } from '../providers/translation.provider';\n\n\n@NgModule({\n declarations: [],\n imports: [DialogsModule.forRoot()],\n exports: [DialogsModule],\n})\nexport class NgxScandocModule {\n static forRoot(\n config: ScanDataConfig\n ): ModuleWithProviders<NgxScandocModule> {\n return {\n ngModule: NgxScandocModule,\n providers: [\n\n { provide: AUTH_CONFIG_TOKEN, useValue: config.auth },\n ScanProvider,\n { provide:SCAN_CONFIG_TOKEN, useValue: config.scan },\n\n {\n provide: HTTP_INTERCEPTORS,\n useClass: HttpErrorInterceptor,\n multi: true,\n },\n NgxScanDocTranslationProvider,\n NgxScandocCameraProvider,\n // NgxScandocAuthProvider,\n ],\n };\n }\n\n constructor(){\n\n }\n}\n","/*\n * Public API Surface of ngx-scandoc\n */\nexport { CoreComponentsModule } from './core/components/components.module';\nexport { CorePipesModule } from './core/pipes/pipes.module';\nexport { MaterialModule } from './core/shared/material.module';\nexport { DialogsModule } from './dialogs/dialogs.module';\nexport { NgxScandocDialogsCoreProvider } from './dialogs/dialogs.core.provider';\nexport { AppFormModule } from './forms/form.module';\nexport { NgxScandocAuthProvider } from './providers/auth.provider';\nexport { HttpErrorInterceptor } from './providers/interceptor.provider';\nexport { NgxScandocFieldsProvider } from './providers/scan.form';\nexport { ScanProvider } from './providers/scan.provider';\nexport { NgxScanDocTranslationProvider } from './providers/translation.provider';\nexport { TranslateLoaderProvider } from './providers/translate-loader.provider';\nexport { webRtcProvider } from './providers/webrtc.provider';\nexport { WebcamComponent } from './core/components/webcam/webcam/webcam.component';\nexport { SafeResourceUrlPipe } from './core/pipes/safeResourceUrl.pipe';\nexport { BlankComponent } from './dialogs/components/blank/blank.component';\nexport { LoadingComponent } from './dialogs/components/loading/loading.component';\nexport { ScanProfileComponent } from './dialogs/components/scan-profile/scan-profile.component';\nexport { ScanSelfieComponent } from './dialogs/components/scan-selfie/scan-selfie.component';\nexport { TurnDocumentComponent } from './dialogs/components/turn-document/turn-document.component';\nexport { WebcamModule } from './core/components/webcam/webcam.module';\n\nexport { NgxScandocModule } from './lib/ngx-scandoc.module';\nexport { ScanComponent } from './core/components/scan/scan.component';\nexport { CameraSwitchComponent } from './core/components/camera-switch/camera-switch.component';\nexport { PromptManualComponent } from './dialogs/components/prompt-manual/prompt-manual.component';\nexport { ManualScanComponent } from './core/components/manual-scan/manual-scan.component';\n// export {NgxScandocCameraProvider} from './providers/camera.provider'\nexport {SCAN_CONFIG_TOKEN,AUTH_CONFIG_TOKEN} from './core/tokens/config.tokens'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3.NgxScandocCameraProvider","i4","tap","i2","i1.NgxScanDocTranslationProvider","i2.ScanProvider","i1.NgxScandocCameraProvider","i2.NgxScandocFieldsProvider","i3.ScanProvider","i8","switchMap","i2.LayoutProvider","i3","i4.WebcamComponent","i5","i6","i7","i9","i5.NgxScandocAuthProvider","i7.WebcamComponent","i10","i11.ScanResultsComponent","i12.ManualScanComponent","i13","i2.NgxScandocCameraProvider","i4.NgxScandocDialogsCoreProvider","i9.WebcamComponent","i10.CameraSwitchComponent","i11","i1.NgxScandocDialogsCoreProvider","i9.ScanComponent","i1.CoreComponentsModule"],"mappings":"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YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,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"}
1
+ {"version":3,"file":"ngx-scandoc.mjs","sources":["../../../projects/ngx-scandoc/src/core/components/webcam/domain/webcam-image.ts","../../../projects/ngx-scandoc/src/core/components/base.component.ts","../../../projects/ngx-scandoc/src/providers/camera.provider.ts","../../../projects/ngx-scandoc/src/core/components/webcam/webcam/webcam.component.ts","../../../projects/ngx-scandoc/src/core/components/webcam/webcam/webcam.component.html","../../../projects/ngx-scandoc/src/core/components/webcam/webcam.module.ts","../../../projects/ngx-scandoc/src/core/tokens/config.tokens.ts","../../../projects/ngx-scandoc/src/providers/scan.provider.ts","../../../projects/ngx-scandoc/src/providers/layout.provider.ts","../../../projects/ngx-scandoc/src/providers/auth.provider.ts","../../../projects/ngx-scandoc/src/providers/translation.provider.ts","../../../projects/ngx-scandoc/src/providers/scan.form.ts","../../../projects/ngx-scandoc/src/core/components/scan-results/scan-results.component.ts","../../../projects/ngx-scandoc/src/core/components/scan-results/scan-results.component.html","../../../projects/ngx-scandoc/src/core/components/manual-scan/manual-scan.component.ts","../../../projects/ngx-scandoc/src/core/components/manual-scan/manual-scan.component.html","../../../projects/ngx-scandoc/src/core/components/scan/scan.component.ts","../../../projects/ngx-scandoc/src/core/components/scan/scan.component.html","../../../projects/ngx-scandoc/src/core/shared/material.module.ts","../../../projects/ngx-scandoc/src/forms/types/avatar.type.ts","../../../projects/ngx-scandoc/src/forms/types/title.type.ts","../../../projects/ngx-scandoc/src/forms/types/profile.image.type.ts","../../../projects/ngx-scandoc/src/forms/form.module.ts","../../../projects/ngx-scandoc/src/core/components/camera-switch/camera-switch.component.ts","../../../projects/ngx-scandoc/src/core/components/camera-switch/camera-switch.component.html","../../../projects/ngx-scandoc/src/core/components/components.module.ts","../../../projects/ngx-scandoc/src/core/pipes/safeResourceUrl.pipe.ts","../../../projects/ngx-scandoc/src/core/pipes/pipes.module.ts","../../../projects/ngx-scandoc/src/dialogs/components/blank/blank.component.ts","../../../projects/ngx-scandoc/src/dialogs/components/blank/blank.component.html","../../../projects/ngx-scandoc/src/dialogs/components/loading/loading.component.ts","../../../projects/ngx-scandoc/src/dialogs/components/loading/loading.component.html","../../../projects/ngx-scandoc/src/dialogs/components/confirm/confirm.component.ts","../../../projects/ngx-scandoc/src/dialogs/components/confirm/confirm.component.html","../../../projects/ngx-scandoc/src/dialogs/components/scan-selfie/scan-selfie.component.ts","../../../projects/ngx-scandoc/src/dialogs/components/scan-selfie/scan-selfie.component.html","../../../projects/ngx-scandoc/src/dialogs/components/turn-document/turn-document.component.ts","../../../projects/ngx-scandoc/src/dialogs/components/turn-document/turn-document.component.html","../../../projects/ngx-scandoc/src/dialogs/components/prompt-manual/prompt-manual.component.ts","../../../projects/ngx-scandoc/src/dialogs/components/prompt-manual/prompt-manual.component.html","../../../projects/ngx-scandoc/src/dialogs/dialogs.core.provider.ts","../../../projects/ngx-scandoc/src/dialogs/components/scan-profile/scan-profile.component.ts","../../../projects/ngx-scandoc/src/dialogs/components/scan-profile/scan-profile.component.html","../../../projects/ngx-scandoc/src/dialogs/dialogs.module.ts","../../../projects/ngx-scandoc/src/providers/interceptor.provider.ts","../../../projects/ngx-scandoc/src/core/helpers/object-utils.ts","../../../projects/ngx-scandoc/src/providers/translate-loader.provider.ts","../../../projects/ngx-scandoc/src/providers/webrtc.provider.ts","../../../projects/ngx-scandoc/src/lib/ngx-scandoc.module.ts","../../../projects/ngx-scandoc/src/public-api.ts","../../../projects/ngx-scandoc/src/ngx-scandoc.ts"],"sourcesContent":["/**\n * Container class for a captured webcam image\n * @author basst314, davidshen84\n */\nexport class WebcamImage {\n public constructor(\n imageAsDataUrl: string,\n mimeType: string,\n imageData: any,\n resized: any\n ) {\n this._mimeType = mimeType;\n this._imageAsDataUrl = imageAsDataUrl;\n this._imageData = imageData;\n this._imageResized = resized;\n }\n\n private readonly _mimeType: string;\n private _imageAsBase64?: string;\n private readonly _imageAsDataUrl: string;\n private readonly _imageData: ImageData;\n private readonly _imageResized: string;\n\n\n /**\n * Extracts the Base64 data out of the given dataUrl.\n * @param dataUrl the given dataUrl\n * @param mimeType the mimeType of the data\n */\n private static getDataFromDataUrl(dataUrl: string, mimeType: string) {\n return dataUrl.replace(`data:${mimeType};base64,`, '');\n }\n\n /**\n * Get the base64 encoded image data\n * @returns base64 data of the image\n */\n public get imageAsBase64(): string {\n return this._imageAsBase64\n ? this._imageAsBase64\n : (this._imageAsBase64 = WebcamImage.getDataFromDataUrl(\n this._imageAsDataUrl,\n this._mimeType\n ));\n }\n\n /**\n * Get the encoded image as dataUrl\n * @returns the dataUrl of the image\n */\n public get imageAsDataUrl(): string {\n return this._imageAsDataUrl;\n }\n\n /**\n * Get the ImageData object associated with the canvas' 2d context.\n * @returns the ImageData of the canvas's 2d context.\n */\n public get imageData(): ImageData {\n return this._imageData;\n }\n\n public get imageResized(): string {\n return this._imageResized;\n }\n\n public get dataUrl() {\n const canvas = document.createElement('canvas');\n\n const { width, height } = this._imageData;\n canvas.width = width;\n canvas.height = height;\n\n const ctx = canvas.getContext('2d');\n if (ctx) {\n ctx.putImageData(this._imageData, 0, 0);\n }\n\n return canvas.toDataURL(this._mimeType, 1);\n }\n}\n","import { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nexport class BaseComponent {\n $destroy = new Subject();\n\n __subs(observable: Observable<any>) {\n return observable.pipe(takeUntil(this.$destroy));\n }\n\n __destroy() {\n this.$destroy.next(true);\n this.$destroy.complete();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { webSocket } from 'rxjs/webSocket';\nimport { BehaviorSubject, Subject, from, of } from 'rxjs';\nimport { filter, map, switchMap } from 'rxjs/operators';\nimport { WebcamUtil } from '../core/components/webcam/util/webcam.util';\nimport { Platform } from '@angular/cdk/platform';\n@Injectable({\n providedIn: 'root',\n})\nexport class NgxScandocCameraProvider {\n mediaDevices: any;\n\n deviceId: any;\n\n selfie$ = new Subject();\n\n rectPosition = {\n l: 0,\n t: 0,\n h: 0,\n w: 0,\n _w: 0,\n _h: 0,\n };\n switchCamera = new Subject();\n $showSwitchSelfie = new Subject();\n\n cameraReady = false;\n\n $showSwitch = new Subject();\n\n cameraSwitched = new Subject();\n\n devices = new Subject();\n\n multipleWebcamsAvailable = false;\n id = Math.random();\n constructor(private platform: Platform) {\n console.warn('PROVIDER INIT', this.id);\n this.setup();\n }\n\n get hintPosition() {\n return this.rectPosition.t + this.rectPosition.h + 5;\n }\n\n getDevices() {\n if (this.mediaDevices) {\n return of(this.mediaDevices);\n }\n\n return this.devices.asObservable();\n }\n\n private preloadVideo() {\n return from(navigator.mediaDevices.getUserMedia({ video: true })).pipe(\n map((mediaStream) => {\n console.warn(mediaStream);\n if (!this.platform.FIREFOX) {\n mediaStream.getTracks().forEach((track) => {\n track.stop();\n });\n }\n })\n );\n }\n setup() {\n console.warn('SETUP');\n this.$showSwitch.subscribe((s) => {\n console.log(s);\n });\n // console.time('device');\n\n const devices$ = this.preloadVideo().pipe(\n switchMap(() =>\n from(navigator.mediaDevices.enumerateDevices()).pipe(\n map((inputDevices: MediaDeviceInfo[]) =>\n inputDevices.filter((m) => m.kind == 'videoinput')\n )\n )\n )\n );\n\n devices$.subscribe((mediaDevices: MediaDeviceInfo[]) => {\n console.log(\n '[DEVICES]',\n mediaDevices,\n mediaDevices.map((d) => d.label)\n );\n this.mediaDevices = mediaDevices;\n this.multipleWebcamsAvailable = mediaDevices && mediaDevices.length > 1;\n this.devices.next(mediaDevices);\n });\n }\n setDefault() {\n if (this.deviceId) {\n this.switchCamera.next(this.deviceId);\n }\n }\n\n selectCamera(event: any) {\n this.switchCamera.next(event.value);\n }\n\n public cameraWasSwitched(deviceId: string): void {\n console.log('[active device]', deviceId);\n this.deviceId = deviceId;\n this.cameraReady = true;\n }\n get webcamObservable() {\n return this.switchCamera.asObservable();\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostListener,\n Input,\n NgZone,\n OnDestroy,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { WebcamInitError } from '../domain/webcam-init-error';\nimport { WebcamImage } from '../domain/webcam-image';\nimport { from, Observable, of, Subject, Subscription } from 'rxjs';\nimport { WebcamUtil } from '../util/webcam.util';\nimport { WebcamMirrorProperties } from '../domain/webcam-mirror-properties';\nimport {\n BreakpointObserver,\n Breakpoints,\n BreakpointState,\n} from '@angular/cdk/layout';\nimport { Platform } from '@angular/cdk/platform';\nimport { map, switchMap } from 'rxjs/operators';\nimport { workertext } from '../../../app.worker';\nimport { NgxScandocCameraProvider } from '../../../../providers/camera.provider';\nimport { BaseComponent } from '../../base.component';\n\ndeclare var MediaStreamTrackProcessor: any;\n\n@Component({\n selector: 'ngx-scandoc-webcam',\n templateUrl: './webcam.component.html',\n styleUrls: ['./webcam.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WebcamComponent\n extends BaseComponent\n implements AfterViewInit, OnDestroy\n{\n private triggerSubscription?: Subscription;\n canvasSize: any = { width: 0, height: 0 };\n showVideo = false;\n setupAttempt = 0;\n canvasData: any = {\n ctx: null,\n ctxO: null,\n };\n\n mediaStream!: MediaStream;\n @Input() imageHandler!: Subject<any>;\n\n @Input() public type?: 'document' | 'selfie' | 'manual';\n\n @Input() trigger!: Observable<number>;\n\n @Input() refresh!: Subject<boolean>;\n // public set trigger(trigger: Observable<number>) {\n // if (this.triggerSubscription) {\n // this.triggerSubscription.unsubscribe();\n // }\n\n // // Subscribe to events from this Observable to take snapshots\n // this.triggerSubscription = trigger.subscribe((time) => {\n // this.takeSnapshot(time);\n // });\n // }\n resizeTimeout: any;\n @HostListener('window:resize', ['$event'])\n onResize() {\n this.cameraProvider.rectPosition.t = 0;\n // this.videoReady.next(false);\n if (this.resizeTimeout) {\n clearTimeout(this.resizeTimeout);\n }\n this.resizeTimeout = setTimeout(() => {\n this.drawRectangle();\n }, 50);\n }\n\n private chunks: any = [];\n @ViewChild('canvas', { static: true }) private canvas: any;\n\n @ViewChild('video', { static: true }) private videoRef: any;\n\n @Output() public cameraSwitched: EventEmitter<string> =\n new EventEmitter<string>();\n @Output() public videoReady: EventEmitter<boolean> =\n new EventEmitter<boolean>();\n @Output() public imageCapture: EventEmitter<WebcamImage> =\n new EventEmitter<WebcamImage>();\n\n @Output() public initError: EventEmitter<WebcamInitError> =\n new EventEmitter<WebcamInitError>();\n constructor(\n public breakpointObserver: BreakpointObserver,\n public platform: Platform,\n private cd: ChangeDetectorRef,\n private zone: NgZone,\n\n private cameraProvider: NgxScandocCameraProvider\n ) {\n super();\n }\n ngAfterViewInit(): void {\n console.warn('[video] start');\n // initial load\n this.__subs(this.cameraProvider.getDevices()).subscribe((resp) => {\n this.init();\n });\n if(this.refresh){\n this.__subs(this.refresh).subscribe(()=>{\n if (this.resizeTimeout) {\n clearTimeout(this.resizeTimeout);\n }\n this.resizeTimeout = setTimeout(() => {\n this.drawRectangle();\n }, 50);\n })\n }\n\n // camera switch\n this.__subs(this.cameraProvider.webcamObservable).subscribe((device) => {\n const videoTrackConstraints: any = this.setConstraints();\n this.stopAllTracks();\n this.showVideo = false;\n this.cd.detectChanges();\n videoTrackConstraints.deviceId = device;\n this.setup(videoTrackConstraints);\n });\n\n this.__subs(this.trigger).subscribe((time) => this.takeSnapshot(time));\n }\n\n public get video() {\n return this.videoRef.nativeElement;\n }\n get isMobile() {\n return this.platform.ANDROID || this.platform.IOS;\n }\n private setConstraints() {\n const out: MediaStreamConstraints = {};\n console.warn('MOBILE', this.isMobile);\n switch (this.type) {\n default:\n if (this.isMobile) {\n out.video = { height: { ideal: 1600 }, width: { ideal: 1600 } };\n out.video.facingMode = 'environment';\n } else {\n out.video = {\n width: {\n min: 1280,\n ideal: 1920,\n max: 2900,\n },\n height: {\n min: 720,\n ideal: 1080,\n max: 2900,\n },\n };\n }\n\n break;\n\n case 'selfie':\n if (this.isMobile) {\n out.video = { height: { ideal: 1600 }, width: { ideal: 1600 } };\n out.video.facingMode = 'user';\n } else {\n out.video = {\n frameRate: { min: 10 },\n height: { ideal: 1080 },\n width: { ideal: 1920 },\n };\n }\n\n break;\n }\n\n return out.video;\n }\n\n private get activeTrackSettings() {\n return this.mediaStream.getVideoTracks()[0].getSettings();\n }\n private get activeTrackCapabilities() {\n try {\n return this.mediaStream.getVideoTracks()[0].getCapabilities();\n } catch (e) {\n return {};\n }\n }\n\n private init() {\n this.__subs(this.cameraProvider.getDevices()).subscribe((resp) => {\n console.warn('DEVICES', resp);\n const videoTrackConstraints = this.setConstraints();\n this.setupAttempt = 0;\n this.setup(videoTrackConstraints);\n });\n }\n\n private setDeviceId(stream: MediaStream) {\n this.mediaStream = stream;\n this.cameraProvider.deviceId = this.activeTrackSettings.deviceId;\n this.startVideo();\n }\n private setup(videoTrackConstraints: any) {\n console.warn('videoTrackConstraints', videoTrackConstraints);\n console.time('device');\n this.__subs(\n from(\n navigator.mediaDevices.getUserMedia(<MediaStreamConstraints>{\n video: videoTrackConstraints,\n })\n )\n ).subscribe(\n (stream: MediaStream) => {\n console.timeEnd('device');\n stream.getTracks().forEach((t) => {\n //console.warn(t.getConstraints());\n\n if (!this.isMobile) {\n try {\n if (!t.getCapabilities) {\n this.setDeviceId(stream);\n\n return;\n }\n const settings = t.getSettings();\n const cap = t.getCapabilities();\n const con = t.getConstraints();\n\n console.warn(cap, con);\n console.warn(settings);\n const max = cap.width?.max;\n const min = cap.width?.min;\n const currentWidth = settings.width;\n const currentHeight = settings.height;\n\n const conWidth = con.width;\n const conHeight = con.width;\n console.warn(\n 'CAPS',\n min,\n max,\n 'CURENT',\n currentWidth,\n currentHeight\n );\n\n if (\n max &&\n currentWidth &&\n max > currentWidth &&\n conWidth != max\n ) {\n console.log('[SET NEW RESOLUTION]');\n this.setupAttempt++;\n if (this.setupAttempt < 4) {\n this.setup(videoTrackConstraints);\n }\n } else {\n this.setDeviceId(stream);\n }\n } catch (error) {\n console.warn(error);\n }\n } else {\n console.warn('MOBILE VIDEO START');\n this.setDeviceId(stream);\n }\n });\n },\n (er) => {\n this.setupAttempt++;\n console.warn('ERROR', er);\n\n if (this.setupAttempt < 4) {\n if (er instanceof OverconstrainedError) {\n if (!this.isMobile) {\n this.setup(videoTrackConstraints);\n }\n // this.setup({\n // height: 720,\n // width: 1280,\n // });\n //}\n } else {\n this.setup(videoTrackConstraints);\n }\n }\n }\n );\n }\n\n private startVideo() {\n console.log('START VIDEO');\n this.video.srcObject = this.mediaStream;\n\n this.video.onloadedmetadata = (data: any) => {\n console.log(data);\n this.video.play();\n this.showVideo = true;\n this.cd.detectChanges();\n console.log('VIDEO PLAY');\n };\n this.video.onplay = () => {\n this.videoReady.next(true);\n console.log(this.video.videoWidth, this.video.videoHeight);\n this.drawRectangle();\n };\n }\n setCanvas() {\n let _canvas: HTMLCanvasElement = document.createElement('canvas'); //this.canvasSnapshot.nativeElement;\n\n const { videoWidth, videoHeight } = this.video;\n\n const aspect = videoWidth / videoHeight;\n\n const canvasSmalSize = 384;\n const smallSize = {\n w: 0,\n h: 0,\n };\n\n if (videoWidth >= videoHeight) {\n smallSize.w = canvasSmalSize;\n smallSize.h = canvasSmalSize / aspect;\n } else {\n smallSize.h = canvasSmalSize;\n smallSize.h = canvasSmalSize * aspect;\n }\n\n //console.log('SZ', smallSize);\n\n _canvas.width = videoWidth;\n _canvas.height = videoHeight;\n const ctx: any = _canvas.getContext('2d', {\n // alpha: false,\n // powerPreference: 'high-performance',\n // antialias: false,\n // depth: false,\n // desynchronized: true,\n // willReadFrequently: true,\n });\n\n const canvas = document.createElement('canvas'); // needs an initial size\n canvas.height = smallSize.h;\n canvas.width = smallSize.w;\n\n const ctxO: any = canvas.getContext('2d', {\n // alpha: false,\n // powerPreference: 'high-performance',\n // antialias: false,\n // depth: false,\n // desynchronized: true,\n // willReadFrequently: true,\n });\n\n this.canvasData.ctx = ctx;\n this.canvasData.ctxO = ctxO;\n this.canvasData.canvas = canvas;\n this.canvasData._canvas = _canvas;\n this.canvasData.size = smallSize;\n\n // const stream = this.video.captureStream(5);\n\n // const mediaRecorder = new MediaRecorder(stream);\n\n // mediaRecorder.start();\n\n // mediaRecorder.ondataavailable = (e:any) => {\n // console.log(e)\n // this.chunks.push(e.data);\n\n // var url = window.URL.createObjectURL(e.data);\n // var anchor = document.createElement('a');\n // anchor.download = 'myfile.webm';\n // anchor.href = url;\n // anchor.click();\n // };\n }\n\n private takeSelfie() {\n const mimeType: string = 'image/jpeg';\n const { videoWidth, offsetWidth, videoHeight } = this.video;\n\n let _canvas: HTMLCanvasElement = document.createElement('canvas'); //this.canvasSnapshot.nativeElement;\n\n const { w, h } = this.cameraProvider.rectPosition;\n\n const aspect = videoWidth / offsetWidth;\n\n // console.log(videoWidth, offsetWidth, l, t, w, h);\n\n _canvas.width = w * aspect;\n _canvas.height = h * aspect;\n\n const dx = videoWidth - w * aspect;\n const dy = videoHeight - h * aspect;\n const x = dx / 2;\n const y = dy / 2;\n\n const ctx: any = _canvas.getContext('2d', {\n alpha: false,\n powerPreference: 'high-performance',\n antialias: false,\n depth: false,\n desynchronized: true,\n });\n\n if (ctx) {\n ctx.drawImage(\n this.video,\n x,\n y,\n w * aspect,\n h * aspect,\n 0,\n 0,\n w * aspect,\n h * aspect\n );\n\n const imgAsUrl: any = _canvas.toDataURL(mimeType, 1);\n\n this.imageCapture.emit(\n new WebcamImage(imgAsUrl, mimeType, new ImageData(1, 1), null)\n );\n }\n }\n\n humanFileSize(bytes: number, si = false, dp = 1) {\n const thresh = si ? 1000 : 1024;\n\n if (Math.abs(bytes) < thresh) {\n return bytes + ' B';\n }\n\n const units = si\n ? ['kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']\n : ['KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB'];\n let u = -1;\n const r = 10 ** dp;\n\n do {\n bytes /= thresh;\n ++u;\n } while (\n Math.round(Math.abs(bytes) * r) / r >= thresh &&\n u < units.length - 1\n );\n\n return bytes.toFixed(dp) + ' ' + units[u];\n }\n\n takeSnapshot(time: number) {\n if (this.type !== 'document') {\n this.takeSelfie();\n return;\n }\n // console.warn('SNAP', time);\n if (!this.showVideo) {\n return;\n }\n this.zone.runOutsideAngular(() => {\n const canvasSmalSize = 384;\n\n const mimeType: string = 'image/jpeg';\n\n // let _canvas: HTMLCanvasElement = document.createElement('canvas'); //this.canvasSnapshot.nativeElement;\n\n const { videoWidth, videoHeight } = this.video;\n\n // _canvas.width = videoWidth;\n // _canvas.height = videoHeight;\n // console.log(videoWidth, videoHeight);\n\n // const ctx: any = _canvas.getContext('2d', {\n // alpha: false,\n // powerPreference: 'high-performance',\n // antialias: false,\n // depth: false,\n // desynchronized: true,\n // });\n\n // const canvas = document.createElement('canvas'); // needs an initial size\n // canvas.height = canvasSmalSize;\n // canvas.width = canvasSmalSize;\n\n // const ctxO: any = canvas.getContext('2d', {\n // alpha: false,\n // powerPreference: 'high-performance',\n // antialias: false,\n // depth: false,\n // desynchronized: true,\n // });\n\n const { ctx, ctxO, canvas, _canvas, size } = this.canvasData;\n\n if (ctx && ctxO) {\n ctx.imageSmoothingEnabled = false;\n const drawStart = Date.now();\n ctx.clearRect(0, 0, videoWidth, videoHeight);\n ctxO.clearRect(0, 0, size.w, size.h);\n\n ctx.drawImage(this.video, 0, 0);\n //console.time('drawVideo');\n ctxO.drawImage(_canvas, 0, 0, size.w, size.h);\n //console.timeEnd('drawVideo');\n //console.time('DRAW');\n\n // const imData: any = ctx.getImageData(0, 0, videoWidth, videoHeight);\n\n console.log(canvas.width, _canvas.width);\n //console.timeEnd('DRAW');\n\n //console.time('CTX');\n\n const resize = canvas.toDataURL('image/jpeg');\n\n const canvasData = _canvas.toDataURL(mimeType, 1);\n\n console.log(this.humanFileSize(canvasData.length));\n console.log(this.humanFileSize(resize.length));\n console.log(new Date().toISOString());\n //console.timeEnd('CTX');\n const currentTime = new Date().getTime();\n const diff = currentTime - time;\n\n // total time for pack one image\n const drawTime = Date.now() - drawStart;\n\n //console.warn('DRAW TIME', drawTime);\n const delayMax = drawTime < 60 ? 100 : 200;\n\n const delay = diff > delayMax ? 0 : delayMax - diff;\n\n const timeout = setTimeout(() => {\n this.imageCapture.emit(\n new WebcamImage(canvasData, mimeType, '', resize)\n );\n clearTimeout(timeout);\n }, delay);\n }\n });\n }\n\n private stopAllTracks() {\n this.showVideo = false;\n if (this.mediaStream && this.mediaStream.getTracks) {\n // getTracks() returns all media tracks (video+audio)\n\n this.mediaStream.getTracks().forEach((track: MediaStreamTrack) => {\n // console.log(track);\n track.enabled = false;\n this.cd.detectChanges();\n track.stop();\n\n this.video.srcObject.removeTrack(track);\n this.mediaStream.removeTrack(track);\n\n this.cd.detectChanges();\n });\n this.video.srcObject = null;\n // this.video.src = null;\n\n this.video.load();\n }\n // this.__subs(this.stopVideoTracks()).subscribe()\n }\n\n private drawRectangle() {\n this.zone.run(() => {\n const _canvas = this.canvas.nativeElement;\n let padding = 10;\n if (!this.isMobile && _canvas.width !== _canvas.height) {\n padding = 40;\n }\n const ctx = _canvas.getContext('2d');\n\n ctx.clearRect(0, 0, _canvas.width, _canvas.height);\n\n const { width, height } = _canvas;\n\n console.log('CANVAS', width, height);\n\n let { videoWidth, videoHeight } = this.video;\n\n // video will be scaled to max canvas height\n const aspect = videoWidth / videoHeight;\n\n // if (videoHeight < height) {\n // videoHeight = height;\n // videoWidth = height*aspect;\n // }\n\n console.log('VIDEO', videoWidth, videoHeight);\n\n const docSize = this.type === 'selfie' ? 1 : 86 / 55;\n\n let _height;\n let _width;\n\n if (videoWidth >= videoHeight) {\n _width = width;\n\n _height = _width / aspect;\n\n if (_height > height) {\n _height = height;\n _width = aspect * _height;\n }\n } else {\n _height = height;\n _width = aspect * _height;\n if (_width > width) {\n _width = width;\n _height = _width / aspect;\n }\n }\n\n console.log('CALC', _width, _height);\n let w, h;\n\n if (_width <= _height) {\n w = _width - 2 * padding;\n h = w / docSize;\n } else {\n h = _height - 2 * padding;\n w = docSize * h;\n }\n if (w > _width) {\n w = _width - 2 * padding;\n h = w / docSize;\n }\n\n h = Math.floor(h);\n w = Math.floor(w);\n console.log(w, h);\n\n const left = Math.floor((width - w) / 2);\n const top = Math.floor((height - h) / 2);\n\n ctx.strokeStyle = 'white';\n\n // ctx.strokeRect(left, top, _width, _height);\n ctx.fillStyle = 'rgba(255, 255, 255, 0.2)';\n // ctx.shadowColor = 'white';\n ctx.shadowBlur = 15;\n ctx.beginPath();\n\n // Draw using 5px for border radius on all sides\n // stroke it but no fill\n const radius = this.isMobile ? 10 : 30;\n\n ctx.roundRect(left, top, w, h, radius);\n ctx.stroke();\n ctx.fill();\n\n this.cameraProvider.rectPosition = {\n l: left,\n t: top,\n w,\n h,\n _w: _width,\n _h: _height,\n };\n\n this.setCanvas();\n // ctx.stroke();\n });\n }\n ngOnDestroy(): void {\n this.video.pause();\n\n // this.video.getTracks().forEach((track: any) => {\n // track.stop();\n // this.video.srcObject.removeTrack(track);\n // });\n\n this.stopAllTracks();\n\n if (this.triggerSubscription) {\n this.triggerSubscription.unsubscribe();\n }\n this.__destroy();\n\n console.warn('[VIDEO] destroyed');\n }\n}\n","<div class=\"webcam-wrapper\">\n <video #video autoplay muted style=\"display: block\" playsinline></video>\n\n <div class=\"rectangle\">\n <canvas\n #canvas\n [ngStyle]=\"{ visibility: showVideo ? 'visible' : 'hidden' }\"\n [width]=\"video.offsetWidth\"\n [height]=\"video.offsetHeight\"\n ></canvas>\n </div>\n</div>\n","import {ModuleWithProviders, NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {WebcamComponent} from './webcam/webcam.component';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { NgxScandocCameraProvider } from '../../../providers/camera.provider';\nconst COMPONENTS = [\n WebcamComponent\n];\n\n@NgModule({\n imports: [CommonModule, PlatformModule],\n declarations: [COMPONENTS],\n exports: [COMPONENTS],\n providers: [],\n})\nexport class WebcamModule {\n static forRoot(): ModuleWithProviders<WebcamModule> {\n return {\n ngModule: WebcamModule,\n providers: [],\n };\n }\n}\n","import { InjectionToken } from \"@angular/core\";\nimport { AuthConfig, ScanConfig } from \"../interfaces/config\";\n\nexport const AUTH_CONFIG_TOKEN = new InjectionToken<AuthConfig>('configAuth');\n\nexport const SCAN_CONFIG_TOKEN = new InjectionToken<ScanConfig>('scanConfig');\n","import { Inject, Injectable, Injector } from '@angular/core';\n\nimport { Observable, of } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport moment from 'moment';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { ScanConfig } from '../core/interfaces/config';\nimport { GuestData } from '../core/interfaces/guest.data';\nimport { SCAN_CONFIG_TOKEN } from '../core/tokens/config.tokens';\n\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ScanProvider {\n countriesData: any;\n // enableVerification = true;\n\n public config: ScanConfig = this.injector.get(SCAN_CONFIG_TOKEN);\n canStoreImages = this.config.canStoreImages;\n constructor(private http: HttpClient, private injector: Injector) {}\n genderList() {\n return {\n M: 'MALE',\n 'M/M': 'MALE',\n F: 'FEMALE',\n 'F/F': 'FEMALE',\n };\n }\n\n get enableVerification() {\n return this.config.enableVerification;\n }\n addGuest(guestData: GuestData) {\n const data = {\n AcceptTermsAndConditions: true,\n DataFields: {\n GuestImageType: 'base64',\n ...guestData,\n },\n Settings: {},\n };\n const $request = this.http.put(this.config.guestAddPath, data);\n return $request;\n }\n\n stateless(DocumentFaceImage: any, LiveFaceImage: any) {\n const data = {\n AcceptTermsAndConditions: true,\n DataFields: {\n DocumentFaceImageType: 'base64',\n DocumentFaceImage,\n LiveFaceImageType: 'base64',\n LiveFaceImage,\n },\n };\n const $request = this.http.post(this.config.stateLessPath, data);\n return $request;\n }\n\n sendLog(data: any) {\n const { TransactionID } = data.Response;\n const $request = this.http.post(this.config.errorLoggingPath, data, {\n headers: new HttpHeaders({\n TransactionID,\n }),\n });\n return $request;\n }\n\n burst(Images: string[]) {\n const data = {\n AcceptTermsAndConditions: true,\n DataFields: {\n Images,\n },\n };\n\n const $request = this.http.post(this.config.validationPath, data);\n return $request;\n }\n\n countries() {\n if (this.countryNames) {\n return of(this.countryNames);\n }\n return this.http.get('/assets/data/countries2.json').pipe(\n map((data: any) => {\n this.countriesData = data.data;\n return this.countriesData;\n })\n );\n }\n\n get countryNames() {\n return [\n { label: 'Aruba', value: 'AW' },\n { label: 'Afghanistan', value: 'AF' },\n { label: 'Angola', value: 'AO' },\n { label: 'Anguilla', value: 'AI' },\n { label: 'Åland Islands', value: 'AX' },\n { label: 'Albania', value: 'AL' },\n { label: 'Andorra', value: 'AD' },\n { label: 'United Arab Emirates', value: 'AE' },\n { label: 'Argentina', value: 'AR' },\n { label: 'Armenia', value: 'AM' },\n { label: 'American Samoa', value: 'AS' },\n { label: 'Antarctica', value: 'AQ' },\n { label: 'French Southern and Antarctic Lands', value: 'TF' },\n { label: 'Antigua and Barbuda', value: 'AG' },\n { label: 'Australia', value: 'AU' },\n { label: 'Austria', value: 'AT' },\n { label: 'Azerbaijan', value: 'AZ' },\n { label: 'Burundi', value: 'BI' },\n { label: 'Belgium', value: 'BE' },\n { label: 'Benin', value: 'BJ' },\n { label: 'Burkina Faso', value: 'BF' },\n { label: 'Bangladesh', value: 'BD' },\n { label: 'Bulgaria', value: 'BG' },\n { label: 'Bahrain', value: 'BH' },\n { label: 'Bahamas', value: 'BS' },\n { label: 'Bosnia and Herzegovina', value: 'BA' },\n { label: 'Saint Barthélemy', value: 'BL' },\n { label: 'Saint Helena, Ascension and Tristan da Cunha', value: 'SH' },\n { label: 'Belarus', value: 'BY' },\n { label: 'Belize', value: 'BZ' },\n { label: 'Bermuda', value: 'BM' },\n { label: 'Bolivia', value: 'BO' },\n { label: 'Caribbean Netherlands', value: 'BQ' },\n { label: 'Brazil', value: 'BR' },\n { label: 'Barbados', value: 'BB' },\n { label: 'Brunei', value: 'BN' },\n { label: 'Bhutan', value: 'BT' },\n { label: 'Bouvet Island', value: 'BV' },\n { label: 'Botswana', value: 'BW' },\n { label: 'Central African Republic', value: 'CF' },\n { label: 'Canada', value: 'CA' },\n { label: 'Cocos (Keeling) Islands', value: 'CC' },\n { label: 'Switzerland', value: 'CH' },\n { label: 'Chile', value: 'CL' },\n { label: 'China', value: 'CN' },\n { label: 'Ivory Coast', value: 'CI' },\n { label: 'Cameroon', value: 'CM' },\n { label: 'DR Congo', value: 'CD' },\n { label: 'Republic of the Congo', value: 'CG' },\n { label: 'Cook Islands', value: 'CK' },\n { label: 'Colombia', value: 'CO' },\n { label: 'Comoros', value: 'KM' },\n { label: 'Cape Verde', value: 'CV' },\n { label: 'Costa Rica', value: 'CR' },\n { label: 'Cuba', value: 'CU' },\n { label: 'Curaçao', value: 'CW' },\n { label: 'Christmas Island', value: 'CX' },\n { label: 'Cayman Islands', value: 'KY' },\n { label: 'Cyprus', value: 'CY' },\n { label: 'Czechia', value: 'CZ' },\n { label: 'Germany', value: 'DE' },\n { label: 'Djibouti', value: 'DJ' },\n { label: 'Dominica', value: 'DM' },\n { label: 'Denmark', value: 'DK' },\n { label: 'Dominican Republic', value: 'DO' },\n { label: 'Algeria', value: 'DZ' },\n { label: 'Ecuador', value: 'EC' },\n { label: 'Egypt', value: 'EG' },\n { label: 'Eritrea', value: 'ER' },\n { label: 'Western Sahara', value: 'EH' },\n { label: 'Spain', value: 'ES' },\n { label: 'Estonia', value: 'EE' },\n { label: 'Ethiopia', value: 'ET' },\n { label: 'Finland', value: 'FI' },\n { label: 'Fiji', value: 'FJ' },\n { label: 'Falkland Islands', value: 'FK' },\n { label: 'France', value: 'FR' },\n { label: 'Faroe Islands', value: 'FO' },\n { label: 'Micronesia', value: 'FM' },\n { label: 'Gabon', value: 'GA' },\n { label: 'United Kingdom', value: 'GB' },\n { label: 'Georgia', value: 'GE' },\n { label: 'Guernsey', value: 'GG' },\n { label: 'Ghana', value: 'GH' },\n { label: 'Gibraltar', value: 'GI' },\n { label: 'Guinea', value: 'GN' },\n { label: 'Guadeloupe', value: 'GP' },\n { label: 'Gambia', value: 'GM' },\n { label: 'Guinea-Bissau', value: 'GW' },\n { label: 'Equatorial Guinea', value: 'GQ' },\n { label: 'Greece', value: 'GR' },\n { label: 'Grenada', value: 'GD' },\n { label: 'Greenland', value: 'GL' },\n { label: 'Guatemala', value: 'GT' },\n { label: 'French Guiana', value: 'GF' },\n { label: 'Guam', value: 'GU' },\n { label: 'Guyana', value: 'GY' },\n { label: 'Hong Kong', value: 'HK' },\n { label: 'Heard Island and McDonald Islands', value: 'HM' },\n { label: 'Honduras', value: 'HN' },\n { label: 'Croatia', value: 'HR' },\n { label: 'Haiti', value: 'HT' },\n { label: 'Hungary', value: 'HU' },\n { label: 'Indonesia', value: 'ID' },\n { label: 'Isle of Man', value: 'IM' },\n { label: 'India', value: 'IN' },\n { label: 'British Indian Ocean Territory', value: 'IO' },\n { label: 'Ireland', value: 'IE' },\n { label: 'Iran', value: 'IR' },\n { label: 'Iraq', value: 'IQ' },\n { label: 'Iceland', value: 'IS' },\n { label: 'Israel', value: 'IL' },\n { label: 'Italy', value: 'IT' },\n { label: 'Jamaica', value: 'JM' },\n { label: 'Jersey', value: 'JE' },\n { label: 'Jordan', value: 'JO' },\n { label: 'Japan', value: 'JP' },\n { label: 'Kazakhstan', value: 'KZ' },\n { label: 'Kenya', value: 'KE' },\n { label: 'Kyrgyzstan', value: 'KG' },\n { label: 'Cambodia', value: 'KH' },\n { label: 'Kiribati', value: 'KI' },\n { label: 'Saint Kitts and Nevis', value: 'KN' },\n { label: 'South Korea', value: 'KR' },\n { label: 'Kuwait', value: 'KW' },\n { label: 'Laos', value: 'LA' },\n { label: 'Lebanon', value: 'LB' },\n { label: 'Liberia', value: 'LR' },\n { label: 'Libya', value: 'LY' },\n { label: 'Saint Lucia', value: 'LC' },\n { label: 'Liechtenstein', value: 'LI' },\n { label: 'Sri Lanka', value: 'LK' },\n { label: 'Lesotho', value: 'LS' },\n { label: 'Lithuania', value: 'LT' },\n { label: 'Luxembourg', value: 'LU' },\n { label: 'Latvia', value: 'LV' },\n { label: 'Macau', value: 'MO' },\n { label: 'Saint Martin', value: 'MF' },\n { label: 'Morocco', value: 'MA' },\n { label: 'Monaco', value: 'MC' },\n { label: 'Moldova', value: 'MD' },\n { label: 'Madagascar', value: 'MG' },\n { label: 'Maldives', value: 'MV' },\n { label: 'Mexico', value: 'MX' },\n { label: 'Marshall Islands', value: 'MH' },\n { label: 'Macedonia', value: 'MK' },\n { label: 'Mali', value: 'ML' },\n { label: 'Malta', value: 'MT' },\n { label: 'Myanmar', value: 'MM' },\n { label: 'Montenegro', value: 'ME' },\n { label: 'Mongolia', value: 'MN' },\n { label: 'Northern Mariana Islands', value: 'MP' },\n { label: 'Mozambique', value: 'MZ' },\n { label: 'Mauritania', value: 'MR' },\n { label: 'Montserrat', value: 'MS' },\n { label: 'Martinique', value: 'MQ' },\n { label: 'Mauritius', value: 'MU' },\n { label: 'Malawi', value: 'MW' },\n { label: 'Malaysia', value: 'MY' },\n { label: 'Mayotte', value: 'YT' },\n { label: 'Namibia', value: 'NA' },\n { label: 'New Caledonia', value: 'NC' },\n { label: 'Niger', value: 'NE' },\n { label: 'Norfolk Island', value: 'NF' },\n { label: 'Nigeria', value: 'NG' },\n { label: 'Nicaragua', value: 'NI' },\n { label: 'Niue', value: 'NU' },\n { label: 'Netherlands', value: 'NL' },\n { label: 'Norway', value: 'NO' },\n { label: 'Nepal', value: 'NP' },\n { label: 'Nauru', value: 'NR' },\n { label: 'New Zealand', value: 'NZ' },\n { label: 'Oman', value: 'OM' },\n { label: 'Pakistan', value: 'PK' },\n { label: 'Panama', value: 'PA' },\n { label: 'Pitcairn Islands', value: 'PN' },\n { label: 'Peru', value: 'PE' },\n { label: 'Philippines', value: 'PH' },\n { label: 'Palau', value: 'PW' },\n { label: 'Papua New Guinea', value: 'PG' },\n { label: 'Poland', value: 'PL' },\n { label: 'Puerto Rico', value: 'PR' },\n { label: 'North Korea', value: 'KP' },\n { label: 'Portugal', value: 'PT' },\n { label: 'Paraguay', value: 'PY' },\n { label: 'Palestine', value: 'PS' },\n { label: 'French Polynesia', value: 'PF' },\n { label: 'Qatar', value: 'QA' },\n { label: 'Réunion', value: 'RE' },\n { label: 'Romania', value: 'RO' },\n { label: 'Russia', value: 'RU' },\n { label: 'Rwanda', value: 'RW' },\n { label: 'Saudi Arabia', value: 'SA' },\n { label: 'Sudan', value: 'SD' },\n { label: 'Senegal', value: 'SN' },\n { label: 'Singapore', value: 'SG' },\n { label: 'South Georgia', value: 'GS' },\n { label: 'Svalbard and Jan Mayen', value: 'SJ' },\n { label: 'Solomon Islands', value: 'SB' },\n { label: 'Sierra Leone', value: 'SL' },\n { label: 'El Salvador', value: 'SV' },\n { label: 'San Marino', value: 'SM' },\n { label: 'Somalia', value: 'SO' },\n { label: 'Saint Pierre and Miquelon', value: 'PM' },\n { label: 'Serbia', value: 'RS' },\n { label: 'South Sudan', value: 'SS' },\n { label: 'São Tomé and Príncipe', value: 'ST' },\n { label: 'Suriname', value: 'SR' },\n { label: 'Slovakia', value: 'SK' },\n { label: 'Slovenia', value: 'SI' },\n { label: 'Sweden', value: 'SE' },\n { label: 'Swaziland', value: 'SZ' },\n { label: 'Seychelles', value: 'SC' },\n { label: 'Syria', value: 'SY' },\n { label: 'Turks and Caicos Islands', value: 'TC' },\n { label: 'Chad', value: 'TD' },\n { label: 'Togo', value: 'TG' },\n { label: 'Thailand', value: 'TH' },\n { label: 'Tajikistan', value: 'TJ' },\n { label: 'Tokelau', value: 'TK' },\n { label: 'Turkmenistan', value: 'TM' },\n { label: 'Timor-Leste', value: 'TL' },\n { label: 'Tonga', value: 'TO' },\n { label: 'Trinidad and Tobago', value: 'TT' },\n { label: 'Tunisia', value: 'TN' },\n { label: 'Turkey', value: 'TR' },\n { label: 'Tuvalu', value: 'TV' },\n { label: 'Taiwan', value: 'TW' },\n { label: 'Tanzania', value: 'TZ' },\n { label: 'Uganda', value: 'UG' },\n { label: 'Ukraine', value: 'UA' },\n { label: 'United States Minor Outlying Islands', value: 'UM' },\n { label: 'Uruguay', value: 'UY' },\n { label: 'United States', value: 'US' },\n { label: 'Uzbekistan', value: 'UZ' },\n { label: 'Vatican City', value: 'VA' },\n { label: 'Saint Vincent and the Grenadines', value: 'VC' },\n { label: 'Venezuela', value: 'VE' },\n { label: 'British Virgin Islands', value: 'VG' },\n { label: 'United States Virgin Islands', value: 'VI' },\n { label: 'Vietnam', value: 'VN' },\n { label: 'Vanuatu', value: 'VU' },\n { label: 'Wallis and Futuna', value: 'WF' },\n { label: 'Samoa', value: 'WS' },\n { label: 'Yemen', value: 'YE' },\n { label: 'South Africa', value: 'ZA' },\n { label: 'Zambia', value: 'ZM' },\n { label: 'Zimbabwe', value: 'ZW' },\n ];\n }\n countryList() {\n return {\n AFG: 'AF',\n ALB: 'AL',\n DZA: 'DZ',\n ASM: 'AS',\n AND: 'AD',\n AGO: 'AO',\n AIA: 'AI',\n ATG: 'AG',\n ARG: 'AR',\n ARM: 'AM',\n ABW: 'AW',\n AUS: 'AU',\n AUT: 'AT',\n AZE: 'AZ',\n BHS: 'BS',\n BHR: 'BH',\n BGD: 'BD',\n BRB: 'BB',\n BLR: 'BY',\n BEL: 'BE',\n BLZ: 'BZ',\n BEN: 'BJ',\n BMU: 'BM',\n BTN: 'BT',\n BOL: 'BO',\n BIH: 'BA',\n BWA: 'BW',\n BRA: 'BR',\n VGB: 'VG',\n BRN: 'BN',\n BGR: 'BG',\n BFA: 'BF',\n BDI: 'BI',\n KHM: 'KH',\n CMR: 'CM',\n CAN: 'CA',\n CPV: 'CV',\n CAF: 'CF',\n TCD: 'TD',\n CHL: 'CL',\n CHN: 'CN',\n HKG: 'HK',\n MAC: 'MO',\n COL: 'CO',\n COM: 'KM',\n COG: 'CG',\n CRI: 'CR',\n CIV: 'CI',\n HRV: 'HR',\n CUB: 'CU',\n CYP: 'CY',\n CZE: 'CZ',\n DNK: 'DK',\n DJI: 'DJ',\n DMA: 'DM',\n DOM: 'DO',\n ECU: 'EC',\n EGY: 'EG',\n SLV: 'SV',\n GNQ: 'GQ',\n ERI: 'ER',\n EST: 'EE',\n ETH: 'ET',\n FRO: 'FO',\n FJI: 'FJ',\n FIN: 'FI',\n FRA: 'FR',\n GUF: 'GF',\n PYF: 'PF',\n GAB: 'GA',\n GMB: 'GM',\n GEO: 'GE',\n DEU: 'DE',\n GHA: 'GH',\n GRC: 'GR',\n GRL: 'GL',\n GRD: 'GD',\n GLP: 'GP',\n GUM: 'GU',\n GTM: 'GT',\n GNB: 'GW',\n HTI: 'HT',\n HND: 'HN',\n ISL: 'IS',\n IDN: 'ID',\n IRQ: 'IQ',\n ITA: 'IT',\n JPN: 'JP',\n JOR: 'JO',\n KAZ: 'KZ',\n KEN: 'KE',\n KIR: 'KI',\n PRK: 'KP',\n KOR: 'KR',\n KWT: 'KW',\n KGZ: 'KG',\n LAO: 'LA',\n LVA: 'LV',\n LBN: 'LB',\n LSO: 'LS',\n LBR: 'LR',\n LBY: 'LY',\n LIE: 'LI',\n LTU: 'LT',\n LUX: 'LU',\n MDG: 'MG',\n MWI: 'MW',\n MYS: 'MY',\n MDV: 'MV',\n MLI: 'ML',\n MLT: 'MT',\n MHL: 'MH',\n MTQ: 'MQ',\n MRT: 'MR',\n MUS: 'MU',\n MEX: 'MX',\n FSM: 'FM',\n MDA: 'MD',\n MCO: 'MC',\n MNG: 'MN',\n MNE: 'ME',\n MSR: 'MS',\n MAR: 'MA',\n MOZ: 'MZ',\n MMR: 'MM',\n NAM: 'NA',\n NRU: 'NR',\n NPL: 'NP',\n NLD: 'NL',\n ANT: 'AN',\n NCL: 'NC',\n NZL: 'NZ',\n NIC: 'NI',\n NER: 'NE',\n NGA: 'NG',\n MNP: 'MP',\n NOR: 'NO',\n OMN: 'OM',\n PAK: 'PK',\n PLW: 'PW',\n PSE: 'PS',\n PAN: 'PA',\n PNG: 'PG',\n PRY: 'PY',\n PER: 'PE',\n PHL: 'PH',\n PCN: 'PN',\n POL: 'PL',\n PRT: 'PT',\n PRI: 'PR',\n QAT: 'QA',\n REU: 'RE',\n ROU: 'RO',\n RUS: 'RU',\n RWA: 'RW',\n KNA: 'KN',\n LCA: 'LC',\n VCT: 'VC',\n WSM: 'WS',\n SMR: 'SM',\n STP: 'ST',\n SAU: 'SA',\n SEN: 'SN',\n SRB: 'RS',\n SYC: 'SC',\n SLE: 'SL',\n SGP: 'SG',\n SVK: 'SK',\n SVN: 'SI',\n SLB: 'SB',\n SOM: 'SO',\n ZAF: 'ZA',\n ESP: 'ES',\n LKA: 'LK',\n SDN: 'SD',\n SUR: 'SR',\n SWZ: 'SZ',\n SWE: 'SE',\n CHE: 'CH',\n SYR: 'SY',\n TJK: 'TJ',\n TZA: 'TZ',\n THA: 'TH',\n TLS: 'TL',\n TGO: 'TG',\n TON: 'TO',\n TTO: 'TT',\n TUN: 'TN',\n TUR: 'TR',\n TKM: 'TM',\n TUV: 'TV',\n UGA: 'UG',\n UKR: 'UA',\n ARE: 'AE',\n GBR: 'GB',\n USA: 'US',\n URY: 'UY',\n UZB: 'UZ',\n VUT: 'VU',\n VEN: 'VE',\n VNM: 'VN',\n VIR: 'VI',\n YEM: 'YE',\n ZMB: 'ZM',\n ZWE: 'ZW',\n };\n }\n\n get fields(): any {\n return [\n {\n key: 'Birth Date',\n form: 'birthDate',\n type: 'date',\n main: false,\n blastKey: 'BirthDate',\n },\n\n {\n key: 'Given Name',\n form: 'firstName',\n ucFirst: true,\n type: 'string',\n main: true,\n blastKey: 'Name',\n },\n {\n key: 'Surname',\n form: 'lastName',\n ucFirst: true,\n type: 'string',\n main: true,\n blastKey: 'Surname',\n },\n\n {\n key: 'Sex',\n form: 'gender',\n type: 'gender',\n main: false,\n blastKey: 'Gender',\n },\n {\n key: 'Document Class Name',\n type: 'string',\n form: 'documentType',\n main: false,\n blastKey: 'docType',\n },\n {\n key: 'Document Number',\n type: 'string',\n form: 'documentNumber',\n main: false,\n blastKey: 'DocumentNumber',\n },\n {\n key: 'Issuing State Code',\n type: 'country',\n form: 'issueStateCode',\n blastKey: 'CountryOfIssue',\n main: false,\n },\n {\n key: 'Expiration Date',\n type: 'date',\n form: 'expirationDate',\n blastKey: 'ExpiryDate',\n main: false,\n },\n {\n key: 'Issue Date',\n type: 'date',\n form: 'issueDate',\n blastKey: 'IssuedDate',\n main: false,\n },\n {\n key: 'Birth Place',\n type: 'string',\n form: 'birthPlace',\n blastKey: 'PlaceOfBirth',\n main: false,\n },\n {\n key: 'Issuing Authority',\n type: 'string',\n form: 'issuingPlace',\n blastKey: 'IssuingAuthority',\n main: false,\n },\n {\n key: 'Nationality Code',\n type: 'country',\n form: 'nationality',\n main: false,\n blastKey: 'Nationality',\n },\n {\n key: 'street1',\n type: 'string',\n form: 'street1',\n main: false,\n blastKey: 'AddressStreet',\n },\n {\n key: 'city',\n type: 'string',\n form: 'city',\n main: false,\n blastKey: 'AddressCity',\n },\n {\n key: 'country',\n type: 'country',\n form: 'country',\n main: false,\n blastKey: 'Country',\n },\n {\n key: 'zip',\n type: 'string',\n form: 'zip',\n main: false,\n blastKey: 'AddressZip',\n },\n ];\n }\n parseBlast(results: any) {\n const countries: any = this.countryList();\n const genders: any = this.genderList();\n const data: any = this.fields;\n\n const validatedAddressFields = [\n 'AddressCity',\n 'AddressZip',\n 'AddressCounty',\n 'AddressStreet',\n ].filter((key) => results[key].Validated);\n\n // if no address is validated\n if (validatedAddressFields.length === 0) {\n if (results.Address.Validated) {\n results.AddressStreet = results.Address;\n }\n }\n\n const out = data.map((itm: any) => {\n const res = results[itm.blastKey];\n if (res) {\n const value = res.RecommendedValue || '';\n\n switch (itm.type) {\n case 'string':\n itm.value = value;\n if (itm.ucFirst) {\n const name = value.toLowerCase();\n itm.value = name.charAt(0).toUpperCase() + name.slice(1);\n }\n break;\n case 'date':\n itm.value = value ? moment(value, 'DD.MM.YYYY').toDate() : null;\n // if (value.indexOf('/Date') >= 0) {\n // console.log(value);\n // const timestamp = value.replace(/\\D/gm, '');\n // //itm.value = moment.unix(timestamp / 1000).toDate();\n // itm.value = moment(\n // timestamp - moment(timestamp, 'x').utcOffset() * 60 * 1000,\n // 'x',\n // ).toDate();\n // }\n\n break;\n case 'country':\n itm.value = countries[value] || null;\n break;\n case 'gender':\n itm.value = genders[value] || null;\n }\n }\n return itm;\n });\n\n const model: any = {};\n\n out.forEach((element: any) => {\n console.log(element);\n model[element.form] = element.value;\n });\n\n model.documentType = results.Metadata.DocumentType;\n\n console.log(model);\n\n return {\n fields: out,\n model,\n };\n }\n\n blastPost(data: any) {\n // const $request = this.api.http.get('/assets/json/blastscan.json');\n\n const $request = this.http.post(this.config.extractionPath, data);\n\n return $request.pipe(\n map((m: any) => {\n if (m.Metadata && m.Metadata.length > 0) {\n const metadata = m.Metadata[0];\n m.Data.Country = {\n RecommendedValue: metadata.Country,\n };\n m.Data.Metadata = metadata;\n }\n return m;\n })\n );\n }\n\n blobToDataUrl(file: any): Observable<string> {\n return Observable.create((obs: any) => {\n const reader = new FileReader();\n reader.onerror = (err) => obs.error(err);\n reader.onabort = (err) => obs.error(err);\n reader.onload = () => {\n obs.next(reader.result);\n };\n reader.onloadend = () => obs.complete();\n return reader.readAsDataURL(file);\n });\n }\n}\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport { Platform } from '@angular/cdk/platform';\nimport { Injectable } from '@angular/core';\nimport { distinctUntilChanged, tap } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LayoutProvider {\n isMobile = false;\n readonly breakpoint$ = this.breakpointObserver\n .observe(['(min-width: 768px)'])\n .pipe(\n tap((value) => console.log(value)),\n distinctUntilChanged()\n );\n constructor(private breakpointObserver: BreakpointObserver,private platform:Platform) {}\n\n init() {\n\n\n this.breakpoint$.subscribe((v: any) => {\n this.isMobile = !v.matches || this.platform.IOS || this.platform.ANDROID;\n\n document.body.className = this.isMobile ? 'mobile' : 'desktop';\n });\n }\n}\n","import { Inject, Injectable, Injector } from '@angular/core';\nimport jwt_decode from 'jwt-decode';\nimport { Observable, of } from 'rxjs';\nimport { map, switchMap, tap } from 'rxjs/operators';\nimport moment from 'moment';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { AuthConfig } from '../core/interfaces/config';\nimport { Buffer } from 'buffer';\nimport { AUTH_CONFIG_TOKEN } from '../core/tokens/config.tokens';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgxScandocAuthProvider {\n subClient!: string;\n config: AuthConfig= this.injector.get(AUTH_CONFIG_TOKEN)\n constructor(\n private http: HttpClient,\n private injector: Injector\n\n ) {}\n\n setSubClient(name: string) {\n this.subClient = name;\n }\n setConfig() {}\n\n token: string = '';\n\n refresh_token: string = '';\n\n tokenTimestamps: any = {\n Time: 0,\n Client: 0,\n SubClient: 0,\n };\n\n private get tokenExpired(): boolean {\n\n if (this.token == '' || this.tokenTimestamps.Time === 0) {\n console.log('EXPIRED');\n return true;\n }\n\n const { Time } = this.tokenTimestamps;\n const tokenDate = moment(Time);\n const isValid = moment(tokenDate).isBefore(moment().add(5, 'minutes'));\n\n return !isValid;\n }\n\n resetToken() {\n // this.token = '';\n }\n get accesToken(): Observable<any> {\n\n return this.tokenExpired ? this.fetchToken() : of(this.token);\n }\n\n fetchToken() {\n if (this.token && this.refresh_token) {\n return this.refreshToken();\n }\n return this.getToken();\n }\n\n refreshToken(): Observable<any> {\n const { path, refresh } = this.config;\n return this.http\n .post(`${path}${refresh}`, {\n refresh_token: this.refresh_token,\n })\n .pipe(\n tap((token: any) => {\n // console.log(this.token);\n this.token = token.access_token;\n this.updateToken();\n // this.token = token.access_token;\n // console.log('TOKEN', this.token);\n // this.refresh_token = token.refresh_token;\n // const decoded: any = jwt_decode(this.token);\n // console.log(decoded);\n // const { Time, Client, SubClient } = decoded;\n // this.tokenTimestamps = { Time, Client, SubClient };\n }),\n map((data: any) => data.access_token)\n );\n }\n\n private get user_key() {\n return this.config.clientId;\n }\n private get sub_client() {\n return this.config.tokenName ? this.config.tokenName : this.subClient;\n }\n private updateToken() {\n const decoded: any = jwt_decode(this.token);\n\n const { Time, Client, SubClient } = decoded;\n this.tokenTimestamps = { Time, Client, SubClient };\n }\n private getToken(): Observable<any> {\n\n\n const { path, login, version, clientId, tokenName } = this.config;\n\n if (version == 'v1') {\n return this.http\n .post(`${path}`, {\n clientId: clientId,\n token: tokenName,\n })\n .pipe(\n map((data: any) => data.accessToken),\n tap((token: any) => {\n this.token = token;\n const decoded: any = jwt_decode(this.token);\n const { iat, exp } = decoded;\n this.tokenTimestamps = { iat, exp, Time: 0 };\n })\n );\n }\n\n return this.http\n .post(`${path}${login}`, {\n user_key: this.user_key,\n sub_client: this.sub_client,\n })\n .pipe(\n tap((token: any) => {\n\n this.token = token.access_token;\n\n this.refresh_token = token.refresh_token;\n this.updateToken();\n }),\n map((data: any) => data.access_token)\n );\n }\n}\n","import { PlatformLocation } from '@angular/common';\nimport {\n Inject,\n Injectable,\n InjectionToken,\n Injector,\n Optional,\n} from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Observable } from 'rxjs';\nimport { TranslateLoaderProvider } from './translate-loader.provider';\n\nimport { switchMap, catchError } from 'rxjs/operators';\nimport { ScanConfig } from '../core/interfaces/config';\nimport { SCAN_CONFIG_TOKEN } from '../core/tokens/config.tokens';\nconst TRANSLATION_PROVIDER = new InjectionToken(\n 'Injection token for translation providers.'\n);\n\ninterface TranslationProvider {\n name: string;\n source: string;\n}\n@Injectable({\n providedIn: 'root',\n})\nexport class NgxScanDocTranslationProvider {\n public defaultLang!: string;\n public userLang!: string;\n private customLoader!: TranslateLoaderProvider;\n\n constructor(\n public translate: TranslateService,\n private injector: Injector,\n //@Optional() @Inject(SCAN_CONFIG_TOKEN) config: ScanConfig,\n @Optional() @Inject(TRANSLATION_PROVIDER) providers: TranslationProvider[],\n private platformLocation: PlatformLocation\n ) {\n console.log('MM', Math.random());\n this.customLoader = this.translate.currentLoader as TranslateLoaderProvider;\n //console.log('config',config)\n\n // console.log(this.translate)\n\n if (providers && providers.length > 0) {\n for (const provider of providers) {\n this.addTranslationFolder(provider.name, provider.source);\n }\n }\n }\n private path(path: any) {\n return path;\n // const baseHref = this.platformLocation\n // .getBaseHrefFromDOM()\n // .split('/')\n // .join('');\n\n // return baseHref != '' ? `/${baseHref}${path}` : path;\n }\n\n public setDefaultLang(lang: string) {\n this.defaultLang = lang;\n this.translate.setDefaultLang(this.defaultLang);\n }\n\n public registerTranslationFolder(name: string = '', path: string = '') {\n console.log(name, path, this.userLang, this.defaultLang);\n\n if (!this.customLoader.providerRegistered(name)) {\n this.customLoader.registerProvider(name, this.path(path));\n }\n }\n\n public addTranslationFolder(name: string = '', path: string = '') {\n console.log(name, path, this.userLang, this.defaultLang);\n\n if (!this.customLoader.providerRegistered(name)) {\n this.customLoader.registerProvider(name, this.path(path));\n\n if (this.userLang) {\n const existCurrentLang = this.translate.currentLang ? true : false;\n\n this.loadTranslation(\n this.userLang,\n this.defaultLang,\n !existCurrentLang\n );\n } else {\n this.loadTranslation(this.defaultLang);\n }\n }\n }\n\n public loadTranslation(lang: string, fallback?: string, useLang = true) {\n this.translate.getTranslation(lang).subscribe(\n (resp) => {\n this.onTranslationChanged(lang);\n\n if (useLang) {\n setTimeout(() => {\n this.translate.use(lang);\n }, 20);\n }\n // this.translate.reloadLang(lang)\n },\n () => {\n if (fallback && fallback !== lang) {\n this.loadTranslation(fallback);\n }\n }\n );\n }\n\n private updateTranslation(lang: string, fallback?: string): any {\n return this.translate.getTranslation(lang).pipe(\n catchError(() => {\n if (fallback && fallback !== lang) {\n return this.updateTranslation(fallback);\n }\n\n return this.translate.use(lang);\n }),\n switchMap(() => {\n this.onTranslationChanged(lang);\n\n return this.translate.use(lang);\n })\n );\n }\n\n private onTranslationChanged(lang: string): void {\n this.translate.onTranslationChange.next({\n lang,\n translations: this.customLoader.getFullTranslationJSON(lang),\n });\n }\n\n public use(lang: string): Observable<any> {\n this.customLoader.init(lang);\n\n return this.updateTranslation(lang);\n }\n forms(item: any, namespace = null) {\n if (item.fieldGroup) {\n item.fieldGroup = item.fieldGroup.map((field: any) => this.forms(field));\n }\n\n const prefix = namespace ? namespace + '.' : '';\n\n if (\n item.props &&\n (item.props.label || item.props.placeholder || item.props.options)\n ) {\n if (!item.expressions) {\n item.expressions = {};\n }\n if (item.props.label) {\n item.expressions['props.label'] = this.translate.stream(\n prefix + item.props.label\n );\n }\n if (item.props.placeholder) {\n item.expressions['props.placeholder'] = this.translate.stream(\n prefix + item.props.placeholder\n );\n }\n if (Array.isArray(item.props.options)) {\n item.expressions['props.options'] = item.props.options.map((m: any) => {\n // console.log(m);\n if (m.label) {\n m.label = this.translate.instant(prefix + m.label);\n }\n return m;\n });\n }\n }\n\n return item;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MatOption } from '@angular/material/core';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\n\nimport { Subject } from 'rxjs';\nimport { ScanProvider } from './scan.provider';\nimport { NgxScanDocTranslationProvider } from './translation.provider';\n@Injectable({\n providedIn: 'root',\n})\nexport class NgxScandocFieldsProvider {\n selfie$ = new Subject();\n customFields:any;\n constructor(\n private translate: NgxScanDocTranslationProvider,\n private provider: ScanProvider,\n\n\n ) {}\n\n update(): FormlyFieldConfig[] {\n return [\n {\n fieldGroupClassName: 'px-16',\n fieldGroup: [\n {\n wrappers: [],\n type: 'checkbox',\n key: 'profile',\n class: 'checkbox ',\n defaultValue: true,\n props: {\n label: 'scandoc.form.scan.document.update.profile',\n },\n },\n {\n wrappers: [],\n type: 'checkbox',\n class: 'checkbox ',\n key: 'document',\n defaultValue: true,\n props: {\n label: 'scandoc.form.scan.document.update.document',\n },\n },\n {\n wrappers: [],\n type: 'checkbox',\n class: 'checkbox ',\n key: 'attachment',\n defaultValue: true,\n props: {\n label: 'scandoc.form.scan.document.update.attachment',\n },\n },\n ].map((item) => this.translate.forms(item)),\n },\n ];\n }\n document(): FormlyFieldConfig[] {\n\n if(this.customFields){\n return this.customFields;\n }\n return [\n {\n className: 'w-100-p',\n fieldGroupClassName: 'form-flex-row profile-details',\n fieldGroup: [\n {\n className: 'w-100-p ',\n fieldGroupClassName: 'card-group',\n fieldGroup: [\n {\n type: 'title',\n props: {\n label: 'scandoc.form.scan.document.guestDetailsTitle',\n },\n },\n {\n type: 'profile-image',\n key: '_avatar',\n props: {\n label: 'scandoc.form.scan.document.firstName',\n },\n },\n {\n type: 'input',\n key: 'firstName',\n className: 'small',\n props: {\n label: 'scandoc.form.scan.document.firstName',\n required: true,\n },\n },\n {\n type: 'input',\n key: 'lastName',\n className: 'small',\n props: {\n label: 'scandoc.form.scan.document.lastName',\n required: true,\n },\n },\n {\n className: 'small',\n key: 'secondName',\n type: 'input',\n props: {\n label: 'scandoc.form.scan.document.secondLastName',\n },\n\n hideExpression: 'model.hideSecondLastName',\n },\n {\n type: 'input',\n key: 'middleName',\n className: 'small',\n props: {\n label: 'scandoc.form.scan.document.middleName',\n },\n },\n {\n className: '',\n fieldGroupClassName: 'form-flex-row space-between',\n fieldGroup: [\n {\n type: 'datepicker',\n key: 'birthDate',\n className: 'w-100-p small mr-8',\n props: {\n label: 'scandoc.form.scan.document.birthDate',\n },\n },\n {\n type: 'select',\n key: 'gender',\n className: 'w-100-p small ml-8',\n props: {\n label: 'scandoc.form.scan.document.gender',\n options: [\n { value: 'MALE', label: 'MALE' },\n { value: 'FEMALE', label: 'FEMALE' },\n { value: 'NA', label: 'N/A' },\n ],\n },\n },\n ],\n },\n {\n className: '',\n fieldGroupClassName: 'form-flex-row space-between',\n fieldGroup: [\n {\n type: 'input',\n key: 'birthPlace',\n className: 'small w-100-p mr-8',\n props: {\n label: 'scandoc.form.scan.document.birthPlace',\n },\n },\n {\n type: 'select',\n key: 'birthCountry',\n className: 'small w-100-p ml-8',\n props: {\n label: 'scandoc.form.scan.document.birthCountry',\n\n options: this.provider.countries(),\n },\n },\n ],\n },\n {\n className: 'small',\n key: 'nationality',\n type: 'select',\n props: {\n label: 'scandoc.form.scan.document.nationality',\n // appearance: 'outline',\n // options: this.profileProvider.nationalities(),\n options: this.provider.countries(),\n },\n },\n ],\n },\n {\n className: 'w-100-p',\n fieldGroupClassName: 'form-flex-column',\n fieldGroup: [\n {\n className: 'w-100-p',\n fieldGroupClassName: 'card-group',\n fieldGroup: [\n {\n type: 'title',\n props: {\n label: 'scandoc.form.scan.document.documentTitle',\n },\n },\n {\n type: 'select',\n key: 'documentType',\n props: {\n label: 'scandoc.form.scan.document.documentType',\n options: [\n { value: 'ID', label: 'Identity Document' },\n { value: 'PASS', label: 'Passport' },\n { value: 'DL', label: 'Driver Licence' },\n ],\n // valueProp: 'id',\n // labelProp: 'value',\n required: true,\n },\n },\n {\n type: 'input',\n key: 'documentNumber',\n props: {\n label: 'scandoc.form.scan.document.documentNumber',\n required: true,\n },\n },\n {\n className: '',\n fieldGroupClassName: 'form-flex-row space-between',\n fieldGroup: [\n {\n type: 'datepicker',\n key: 'issueDate',\n className: 'small mr-8',\n props: {\n label: 'scandoc.form.scan.document.issueDate',\n },\n },\n {\n type: 'datepicker',\n key: 'expirationDate',\n className: 'small ml-8',\n props: {\n label: 'scandoc.form.scan.document.expirationDate',\n },\n },\n ],\n },\n {\n type: 'select',\n key: 'issueStateCode',\n props: {\n label: 'scandoc.form.scan.document.issuingStateCode',\n\n options: this.provider.countries(),\n },\n },\n {\n type: 'input',\n key: 'issuingPlace',\n props: {\n label: 'scandoc.form.scan.document.issuingPlace',\n required: false,\n },\n },\n ],\n },\n {\n className: 'w-100-p',\n fieldGroupClassName: 'card-group',\n fieldGroup: [\n {\n type: 'title',\n props: {\n label: 'scandoc.form.scan.document.addressTitle',\n badge: 'communications',\n },\n },\n {\n className: 'small',\n key: 'country',\n type: 'select',\n props: {\n required: true,\n label: 'scandoc.form.profile.address.country',\n options: this.provider.countries(),\n },\n // expressionProperties: {\n // 'props.disabled': (model: any) => !model.newAddress,\n // },\n hooks: {\n onInit: (model: any) => {\n console.log(model);\n },\n },\n },\n {\n className: '',\n fieldGroupClassName: 'form-flex-row space-between',\n fieldGroup: [\n {\n className: 'mr-8 w-100-p',\n key: 'zip',\n type: 'input',\n props: {\n label: 'scandoc.form.profile.address.zip',\n labelProp: (item: any) => {\n return `${item.zip} (${item.city})`;\n },\n\n set: (field: any, option: MatOption) => {\n // console.log(option, field);\n field.formControl.setValue(option.value.zip);\n // set CITY\n field.form.get('city').setValue(option.value.city);\n },\n filter: (key: string, field: any) => {\n // return this.profileProvider.zipCodes({\n // countryCode: field.form.get('country').value,\n // zip: key,\n // });\n },\n },\n // expressionProperties: {\n // 'props.disabled': (model: any) =>\n // !model.newAddress,\n // },\n },\n {\n className: 'small w-100-p ml-8',\n key: 'city',\n type: 'input',\n props: {\n label: 'scandoc.form.profile.address.city',\n },\n },\n ],\n },\n\n {\n className: 'small w-100-p',\n key: 'street1',\n type: 'input',\n props: {\n label: 'scandoc.form.profile.address.street',\n },\n },\n ],\n },\n ],\n },\n ],\n },\n ].map((item) => this.translate.forms(item));\n }\n}\n","import {\n Component,\n EventEmitter,\n AfterViewInit,\n ChangeDetectionStrategy,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ChangeDetectorRef,\n NgZone,\n} from '@angular/core';\nimport { NgxScandocCameraProvider } from '../../../providers/camera.provider';\nimport { FormGroup } from '@angular/forms';\nimport { NgxScandocFieldsProvider } from '../../../providers/scan.form';\nimport { Subject } from 'rxjs';\nimport { BaseComponent } from '../base.component';\nimport { ScanProvider } from '../../../providers/scan.provider';\n\n@Component({\n selector: 'ngx-scan-results',\n templateUrl: './scan-results.component.html',\n styleUrls: ['./scan-results.component.scss'],\n // changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScanResultsComponent\n extends BaseComponent\n implements OnInit, OnDestroy\n{\n @Input() data!: Subject<any>;\n model: any;\n @Input() images: any;\n fields: any;\n\n @Input() form!: FormGroup;\n @Output() action = new EventEmitter();\n\n constructor(\n public cameraProvider: NgxScandocCameraProvider,\n private formProvider: NgxScandocFieldsProvider,\n private provider: ScanProvider,\n private cd: ChangeDetectorRef,\n private zone: NgZone\n ) {\n super();\n }\n\n ngOnInit(): void {\n console.time('fields');\n this.fields = this.formProvider.document();\n console.timeEnd('fields');\n\n this.__subs(this.data).subscribe((resp) => {\n this.zone.run(() => {\n switch (resp.type) {\n case 'avatar':\n this.model._avatar = resp.data;\n\n this.form = new FormGroup({});\n console.log(this.model);\n break;\n case 'model':\n this.model = resp.data;\n break;\n }\n\n console.timeEnd('results');\n\n this.cd.detectChanges();\n });\n });\n }\n\n ngOnDestroy(): void {\n this.__destroy();\n }\n\n selfie() {\n this.action.emit({ selfie: true });\n }\n}\n","<div *ngIf=\"model\" class=\"wraper\">\n <div style=\"flex: 1\">\n\n\n <form class=\"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\" >\n <mat-card appearance=\"outlined\" style=\"margin:0px 4px; padding: 16px\" class=\"images\">\n <h3>{{ \"scandoc.result.images\" | translate }}</h3>\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","import {\n Component,\n EventEmitter,\n AfterViewInit,\n ChangeDetectionStrategy,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ChangeDetectorRef,\n HostListener,\n ViewChild,\n ElementRef,\n HostBinding,\n NgZone,\n} from '@angular/core';\nimport { NgxScandocCameraProvider } from '../../../providers/camera.provider';\nimport { FormGroup } from '@angular/forms';\nimport { NgxScandocFieldsProvider } from '../../../providers/scan.form';\nimport { Observable, Subject, of, switchMap } from 'rxjs';\nimport { BaseComponent } from '../base.component';\nimport { LayoutProvider } from '../../../providers/layout.provider';\n\n@Component({\n selector: 'ngx-manual-scan',\n templateUrl: './manual-scan.component.html',\n styleUrls: ['./manual-scan.component.scss'],\n // changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ManualScanComponent\n extends BaseComponent\n implements OnInit, OnDestroy\n{\n @Output() action = new EventEmitter();\n\n public videoOptions: MediaTrackConstraints = {\n width: 1920,\n height: 1080,\n facingMode: 'environment',\n };\n cameraReady = false;\n scanBlastData: any = [\n {\n title: 'scandoc.front',\n description: 'scandoc.frontDescription',\n side: 'FRONT',\n },\n {\n title: 'scandoc.back',\n description: 'scandoc.backDescription',\n disabled: true,\n side: 'BACK',\n },\n ];\n error = false;\n scaning = false;\n documentTypeSelected = false;\n\n selectedSide: any;\n preview: any = null;\n scanType: any;\n width: any;\n height: any;\n videoWidth: any;\n videoHeight: any;\n scanDatas: any = [];\n scanSide: any;\n\n result: any;\n webcamImage: any;\n public trigger: Subject<number> = new Subject<number>();\n // switch to next / previous / specific webcam; true/false: forward/backwards, string: deviceId\n public nextWebcam: Subject<boolean | string> = new Subject<\n boolean | string\n >();\n\n isMobile = false;\n @ViewChild('wraper') wraper?: ElementRef;\n @HostBinding('class.mobile') get class() {\n return this.isMobile;\n }\n @HostListener('window:resize', ['$event'])\n onResize() {\n if (this.wraper) {\n this.width = this.wraper.nativeElement.clientWidth;\n this.height = this.wraper.nativeElement.clientHeight;\n\n setTimeout(() => {\n const video = this.wraper?.nativeElement.querySelector('video');\n if (video) {\n // console.log(video.clientWidth, video.clientHeight);\n this.videoWidth = video.clientWidth;\n this.videoHeight = video.clientHeight;\n }\n this.cd.detectChanges();\n }, 100);\n this.cd.detectChanges();\n }\n }\n\n constructor(\n public cameraProvider: NgxScandocCameraProvider,\n private cd: ChangeDetectorRef,\n private layoutProvider: LayoutProvider,\n private zone: NgZone\n ) {\n super();\n }\n\n ngOnInit(): void {\n this.__subs(this.layoutProvider.breakpoint$).subscribe((v: any) => {\n this.zone.run(() => {\n this.isMobile = !v.matches;\n\n setTimeout(() => {\n console.log('WTF');\n this.cd.detectChanges();\n }, 200);\n });\n\n console.log('MNOBILE', this.isMobile);\n });\n }\n\n public get nextWebcamObservable(): Observable<boolean | string> {\n return this.nextWebcam.asObservable();\n }\n public cameraWasSwitched(deviceId: string): void {\n console.log('[active device]', deviceId);\n // this.deviceId = deviceId;\n // this.cameraReady = true;\n // this.defaultDevice = deviceId;\n\n setTimeout(() => {\n this.onResize();\n // this.scan();\n }, 300);\n }\n public handleInitError(error: any): void {\n console.log(error);\n }\n resolutionLimit(file: any) {\n const minWidth = 1280;\n const minHeight = 720;\n return new Observable((observer) => {\n const img = new Image();\n img.src = window.URL.createObjectURL(file);\n img.onload = () => {\n const width = img.naturalWidth;\n const height = img.naturalHeight;\n\n let valid = false;\n if (width > height) {\n valid = width >= minWidth && height >= minHeight;\n } else {\n valid = width >= minHeight && height >= minWidth;\n }\n\n observer.next(valid);\n };\n img.onerror = (error) => {\n observer.error(error);\n };\n });\n }\n private getImgBase64(num: any) {\n return this.scanBlastData[num].image.dataUrl.split(',')[1];\n }\n getBase64(file: any) {\n return new Observable((observer) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => {\n observer.next(reader.result);\n };\n reader.onerror = (error) => {\n observer.error(error);\n };\n });\n }\n handleFileInput(target: any, event: any, side: any) {\n const files: FileList = target.files;\n this.selectedSide = side;\n console.log(files);\n const file = files.item(0);\n\n this.resolutionLimit(file)\n .pipe(\n switchMap((valid: any) => {\n return valid ? this.getBase64(file) : of(false);\n })\n )\n .subscribe((imageAsDataUrl) => {\n // console.log(imageAsDataUrl);\n event.target.value = null;\n if (!imageAsDataUrl) {\n console.warn('MIN RES');\n // this.dialogs.alert(\n // 'core.page.error',\n // this.translate.instant(\n // 'pms.dialogs.components.scanProfile.minResolution'\n // )\n // );\n } else {\n side.image = {\n _imageAsDataUrl: imageAsDataUrl,\n imageAsDataUrl: imageAsDataUrl,\n };\n if (this.selectedSide.side === 'FRONT') {\n this.scanBlastData[1].disabled = false;\n }\n }\n this.cd.detectChanges();\n });\n }\n\n cameraOff(ev: any) {}\n\n ngOnDestroy(): void {}\n singleScan(side: any) {\n this.scanType = side.side;\n this.preview = null;\n this.selectedSide = side;\n\n this.selectedSide.image = null;\n this.documentTypeSelected = true;\n this.scanBlastData[1].disabled = false;\n this.cameraProvider.$showSwitch.next(true);\n this.cd.detectChanges();\n setTimeout(() => {\n this.onResize();\n }, 10);\n }\n\n scanBlastFinish() {\n this.action.emit(this.scanBlastData);\n }\n get scanBlastCanUpload() {\n return this.scanBlastData[0].image ? true : false;\n }\n public handleImage(webcamImage: any): void {\n console.log('[received webcam image]', webcamImage);\n\n this.webcamImage = webcamImage;\n this.preview = webcamImage.imageAsDataUrl;\n this.cameraProvider.$showSwitch.next(false);\n this.cd.detectChanges();\n }\n\n continue() {\n this.documentTypeSelected = false;\n\n setTimeout(() => {\n this.selectedSide.image = this.webcamImage;\n if (this.selectedSide.side === 'FRONT') {\n this.scanBlastData[1].disabled = false;\n }\n this.cd.detectChanges();\n }, 200);\n }\n retry() {\n this.preview = false;\n this.cameraProvider.$showSwitch.next(true);\n\n // this.result = false;\n if (this.error) {\n this.documentTypeSelected = false;\n this.scanBlastData.forEach((element: any) => {\n element.image = null;\n });\n }\n this.error = false;\n }\n public triggerSnapshot(): void {\n this.trigger.next(0);\n }\n scan() {\n console.log('SCAN');\n this.triggerSnapshot();\n this.scanDatas[0] = true;\n console.log(this.cameraProvider);\n\n this.cd.detectChanges();\n }\n rotateBase64Image(base64data: any) {\n return new Observable((observer) => {\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n var image = new Image();\n image.src = base64data;\n image.onload = () => {\n console.log(canvas);\n canvas.width = image.height;\n canvas.height = image.width;\n if (ctx) {\n ctx.rotate((90 * Math.PI) / 180);\n ctx.translate(0, -canvas.width);\n ctx.drawImage(image, 0, 0);\n observer.next(canvas.toDataURL());\n } else {\n observer.error({ type: 'generic error' });\n }\n };\n image.onerror = (e) => {\n observer.error(e);\n };\n });\n }\n singleScanRotate(side: any) {\n console.log(side);\n this.rotateBase64Image(side.image.imageAsDataUrl).subscribe((data) => {\n side.image = { imageAsDataUrl: data };\n this.cd.detectChanges();\n });\n }\n videoReady(event: boolean) {\n console.log('READY', event);\n this.cameraReady = event;\n\n }\n singleScanRemove(side: any) {\n side.image = null;\n if (side.side === 'FRONT') {\n this.scanBlastData[1].disabled = true;\n }\n\n this.cd.detectChanges();\n }\n}\n","\n\n<ng-container *ngIf=\"!result\">\n\n<ng-container *ngIf=\"!documentTypeSelected\">\n <section\n class=\"scanBlastWraper\"\n ngClass.lt-md=\"mobile\"\n fxFlex\n fxLayout=\"column\"\n >\n <div class=\"scanBlast\" fxFlex fxLayout.lt-md=\"column\" fxLayout=\"row\">\n <mat-card\n appearance=\"outlined\"\n style=\"display: flex; flex-direction: column\"\n fxLayout=\"column\"\n *ngFor=\"let side of scanBlastData\"\n >\n <div ngClass.lt-sm=\"small\" class=\"head\">\n <div class=\"title\" fxFlex>{{ side.title | translate }}</div>\n </div>\n <div class=\"actions\" style=\"display: flex; flex-direction: row\">\n <button\n (click)=\"singleScan(side)\"\n [disabled]=\"side.disabled\"\n style=\"margin-right: 4px\"\n mat-raised-button\n >\n <div class=\"buttonWrap\">\n <mat-icon>camera</mat-icon>\n <div>\n {{ \"scandoc.scanCamera\" | translate }}\n </div>\n </div>\n </button>\n <button\n (click)=\"file.click()\"\n [disabled]=\"side.disabled\"\n style=\"margin-left: 4px\"\n mat-raised-button\n >\n <input\n accept=\"image/*\"\n type=\"file\"\n style=\"display: none\"\n (change)=\"handleFileInput($event.target, $event, side)\"\n #file\n />\n <div class=\"buttonWrap\">\n <mat-icon>file_upload</mat-icon>\n <div>\n {{ \"scandoc.useFromDisk\" | translate }}\n </div>\n </div>\n </button>\n </div>\n <div class=\"content\" style=\"display: flex\">\n <div style=\"flex: 1\" class=\"previewPlaceholder\">\n <div class=\"description\">\n <ng-container *ngIf=\"side.image\">\n <div class=\"imgWrap\">\n <div\n style=\"flex: 1\"\n class=\"image\"\n [style.background-image]=\"\n 'url(' + side.image.imageAsDataUrl + ')'\n \"\n ></div>\n\n <div\n class=\"btnActions\"\n fxLayout.lt-md=\"column\"\n fxLayout=\"row\"\n style=\"display: flex; flex-direction: row\"\n >\n <button\n (click)=\"singleScanRemove(side)\"\n class=\"mr-4 remButton flex\"\n mat-raised-button\n >\n <div class=\"buttonWrap\">\n <mat-icon>delete</mat-icon>\n <div class=\"label\">\n {{ \"scandoc.remove\" | translate }}\n </div>\n </div>\n </button>\n <button\n class=\"ml-4 rotateButton flex\"\n mat-raised-button\n (click)=\"singleScanRotate(side)\"\n >\n <div class=\"buttonWrap\">\n <mat-icon>rotate_90_degrees_cw</mat-icon>\n <div class=\"label\">\n {{ \"scandoc.rotate\" | translate }}\n </div>\n </div>\n </button>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!side.image\">\n <div class=\"empty\">\n {{ side.description | translate }}\n </div>\n </ng-container>\n </div>\n </div>\n </div>\n </mat-card>\n </div>\n <footer>\n <div\n class=\"px-8 pb-8\"\n style=\"padding: 0px 8px 8px 8px; display: flex; flex-direction: row\"\n >\n <button\n (click)=\"scanBlastFinish()\"\n [disabled]=\"!scanBlastCanUpload\"\n style=\"flex: 1\"\n mat-raised-button\n >\n {{ \"scandoc.upload\" | translate }}\n </button>\n </div>\n </footer>\n </section>\n</ng-container>\n\n<div\n style=\"position: relative; display: flex; flex-direction: column; flex: 1\"\n *ngIf=\"documentTypeSelected\"\n>\n <div\n style=\"display: flex; flex-direction: row; flex: 1\"\n #wraper\n class=\"wraper\"\n >\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 <ngx-scandoc-webcam\n *ngIf=\"!preview && !scaning\"\n class=\"main flex\"\n\n #webcam\n [trigger]=\"trigger\"\n (imageCapture)=\"handleImage($event)\"\n(videoReady)=\"videoReady($event)\"\n (cameraSwitched)=\"cameraWasSwitched($event)\"\n (initError)=\"handleInitError($event)\"\n type=\"manual\"\n\n (destroyed)=\"cameraOff($event)\"\n >\n </ngx-scandoc-webcam>\n </ng-container>\n <div\n class=\"previewData\"\n *ngIf=\"preview\"\n style=\"\n display: flex;\n flex-direction: row;\n flex: 1;\n z-index: 20;\n position: absolute;\n width: 100%;\n height: 100%;\n \"\n >\n <div class=\"p-16 error\" *ngIf=\"error\">\n <div>\n <div class=\"title\" fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <mat-icon>error_outline</mat-icon\n ><span class=\"ml-8\">{{\n \"pms.dialogs.components.scanProfile.unableToDetectId\" | translate\n }}</span>\n </div>\n\n <ul>\n <li>\n {{\n \"pms.dialogs.components.scanProfile.placeIdCloseToDevice\"\n | translate\n }}\n </li>\n <li>\n {{\n \"pms.dialogs.components.scanProfile.ensureSufficientLight\"\n | translate\n }}\n </li>\n <li>\n {{\n \"pms.dialogs.components.scanProfile.holdDocumentSteady\"\n | translate\n }}\n </li>\n <li>\n {{\n \"pms.dialogs.components.scanProfile.makeSureAllEdgesOfTheIdAreVisible\"\n | translate\n }}\n </li>\n <li>\n {{\n \"pms.dialogs.components.scanProfile.makeSureThereAreNoGlareAndShadowsOnTheId\"\n | translate\n }}\n </li>\n </ul>\n </div>\n </div>\n\n <div\n class=\"scanPreview\"\n style=\"display: flex; flex-direction: column; flex: 1\"\n *ngIf=\"!error && !scaning\"\n >\n <!-- <div class=\"py-16\" style=\"font-size: 16px\">\n {{\n \"pms.dialogs.components.scanProfile.ensureAllTextsAreVisible\"\n | translate\n }}\n </div> -->\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 fxLayout=\"row\" class=\"p-8\">\n <!-- <div class=\"displayInfo\" *ngIf=\"!preview && cameraReady\">\n {{ displayInfo }}\n </div>\n <div style=\"height: 26px;\">\n <div style=\"text-align: center; font-size: 18px;\" *ngIf=\"idScan && !preview && cameraReady\">\n <ng-container *ngIf=\"idScan === 'BACK'\">\n Turn document and:\n {{ \"pms.dialogs.components.scanProfile.captureBack\" | translate }}\n </ng-container>\n <ng-container *ngIf=\"idScan === 'FRONT'\">\n Turn document and:\n {{ \"pms.dialogs.components.scanProfile.captureFront\" | translate }}\n </ng-container>\n </div>\n </div> -->\n\n <button\n [disabled]=\"!cameraReady\"\n class=\"w-100-p\"\n *ngIf=\"!preview\"\n mat-raised-button\n (click)=\"scan()\"\n >\n <ng-container>\n <ng-container *ngIf=\"scanType === 'FRONT'\">{{\n \"scandoc.captureFront\" | translate\n }}</ng-container>\n <ng-container *ngIf=\"scanType === 'BACK'\">{{\n \"scandoc.captureBack\" | translate\n }}</ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"scanSide === 1\">{{\n \"pms.dialogs.components.scanProfile.captureBackOfId\" | translate\n }}</ng-container>\n </button>\n\n <div\n class=\"w-100-p\"\n *ngIf=\"preview\"\n style=\"display: flex; flex-direction: row; align-items: center; flex: 1\"\n >\n <button class=\"flex mr-4\" mat-raised-button (click)=\"retry()\">\n {{ \"scandoc.retry\" | translate }}\n </button>\n\n <button\n [disabled]=\"error\"\n class=\"ml-4 flex\"\n mat-raised-button\n (click)=\"continue()\"\n >\n {{ \"scandoc.continueWithSelectedImage\" | translate }}\n </button>\n </div>\n </footer>\n</div>\n</ng-container>\n","import {\n Component,\n ViewChild,\n EventEmitter,\n Output,\n HostListener,\n ElementRef,\n ChangeDetectorRef,\n AfterViewInit,\n ChangeDetectionStrategy,\n Input,\n OnDestroy,\n NgZone,\n Injector,\n HostBinding,\n ViewRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { Subject, Observable, of, forkJoin, from, Subscription } from 'rxjs';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { FormGroup } from '@angular/forms';\n\nimport { switchMap, map, delay, catchError } from 'rxjs/operators';\n\nimport { TranslateService } from '@ngx-translate/core';\nimport { ScanProvider } from '../../../providers/scan.provider';\nimport { WebcamImage } from '../../../core/components/webcam/domain/webcam-image';\nimport { WebcamInitError } from '../../../core/components/webcam/domain/webcam-init-error';\nimport { NgxScandocAuthProvider } from '../../../providers/auth.provider';\nimport { NgxScandocCameraProvider } from '../../../providers/camera.provider';\nimport { LayoutProvider } from '../../../providers/layout.provider';\nimport { BaseComponent } from '../base.component';\nimport { Platform } from '@angular/cdk/platform';\n\nimport { DeviceDetectorService } from 'ngx-device-detector';\n\nexport interface IWindow extends Window {\n TextDetector: any;\n}\n\ninterface Troubleshooting {\n Request: any;\n Response: any;\n ExpectedOutput: any;\n AcceptTermsAndConditions: boolean;\n}\n\ninterface Timestamps {\n time: number;\n load: number;\n}\n\n@Component({\n selector: 'ngx-scan',\n templateUrl: './scan.component.html',\n styleUrls: ['./scan.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScanComponent\n extends BaseComponent\n implements AfterViewInit, OnDestroy\n{\n scanBlastData: any = [\n {\n title: 'pms.dialogs.components.scanProfile.front',\n description: 'pms.dialogs.components.scanProfile.frontDescription',\n side: 'FRONT',\n },\n {\n title: 'pms.dialogs.components.scanProfile.back',\n description: 'pms.dialogs.components.scanProfile.backDescription',\n disabled: true,\n side: 'BACK',\n },\n ];\n @Input() type = 'desktop';\n @Input() dialogs: any;\n\n @Input() refresh!: Subject<boolean>;\n\n @Output() actions = new EventEmitter();\n\n public deviceId?: string;\n\n scanResults = new Subject();\n scanSecondSide = false;\n startTime: number = 0;\n\n scanInProgress = false;\n\n // webcam snapshot trigger\n documentTypeSelected = false;\n imageHandlerSubscription!: Subscription;\n selectedSide: any;\n images: any;\n scanTimeout: any;\n preview: any = null;\n scanType: any;\n\n errorCode = '1000';\n displayInfo: any = 'scandoc.info.position';\n\n verificationErrorSent = false;\n error = false;\n cameraReady = false;\n result: any;\n scaning = false;\n\n promptManual = false;\n\n frontImage: any;\n backImage: any;\n\n imageHandler = new Subject();\n manualDataSet = false;\n logData: Troubleshooting = {\n AcceptTermsAndConditions: true,\n Request: null,\n Response: null,\n ExpectedOutput: null,\n };\n\n scanDatas: any = [];\n scanSide: any;\n idScan: any = null;\n webcamImage?: WebcamImage;\n model: any;\n validation = false;\n scannedImages: any[] = [];\n scanDelay: any = 0;\n public trigger: Subject<number> = new Subject<number>();\n // switch to next / previous / specific webcam; true/false: forward/backwards, string: deviceId\n public nextWebcam: Subject<boolean | string> = new Subject<\n boolean | string\n >();\n imageVerified = false;\n form = new FormGroup({});\n manual = false;\n isMobile = this.platform.IOS || this.platform.ANDROID;\n @Input() showDialog = false;\n scanImageTimestamps: Timestamps = {\n time: 0,\n load: 0,\n };\n numberOfValidations = 0;\n validationDebug: any = [];\n\n @HostBinding('class.mobile') get class() {\n return this.isMobile;\n }\n\n @HostListener('window:resize', ['$event'])\n onResize() {\n if (this.result) {\n this.cd.detectChanges();\n }\n }\n\n scanProvider!: ScanProvider;\n\n constructor(\n public cd: ChangeDetectorRef,\n private zone: NgZone,\n public cameraProvider: NgxScandocCameraProvider,\n private injector: Injector,\n private layoutProvider: LayoutProvider,\n private platform: Platform,\n private deviceService: DeviceDetectorService,\n private auth: NgxScandocAuthProvider // private api: ServerProvider\n ) {\n super();\n this.scanProvider = this.injector.get(ScanProvider);\n\n if (!this.scanProvider.config.development) {\n // console = {\n // log: (...args: any) => {},\n // time: (...args: any) => {},\n // timeEnd: (...args: any) => {},\n // warn: (...args: any) => {},\n // error: (...args: any) => {},\n // };\n }\n }\n\n private resetLogData() {\n this.logData = {\n Request: null,\n Response: null,\n ExpectedOutput: null,\n AcceptTermsAndConditions: true,\n };\n }\n\n init() {\n this.auth.accesToken.subscribe();\n this.resetLogData();\n // this.result=true;\n // this.result ={};\n\n console.log('INIT SCAN');\n }\n\n continue() {\n this.documentTypeSelected = false;\n\n setTimeout(() => {\n this.selectedSide.image = this.webcamImage;\n if (this.selectedSide.side === 'FRONT') {\n this.scanBlastData[1].disabled = false;\n }\n this.cd.detectChanges();\n }, 200);\n }\n\n scan() {\n this.trigger.next(new Date().getTime());\n }\n\n public handleImage(webcamImage: WebcamImage): void {\n if (this.startTime === 0) {\n this.startTime = Date.now();\n }\n // console.log('[received webcam image]', webcamImage);\n this.zone.runOutsideAngular(() => {\n const time = new Date().getTime();\n\n if (this.scanImageTimestamps.load > 0) {\n const { load } = this.scanImageTimestamps;\n const diff = time - load;\n // console.log('time:', diff);\n this.scanDelay = diff;\n }\n\n this.scanImageTimestamps.load = time;\n\n if (webcamImage.imageAsDataUrl) {\n this.scannedImages.push(webcamImage);\n this.handleLongValidationError(webcamImage, 'worker');\n }\n\n this.cd.detectChanges();\n if (this.scannedImages.length > 0 && !this.validation) {\n // if (this.scanProvider.config.development) {\n // this.scannedImages.forEach((img) => {\n // const consoleBackground =\n // \"font-size:100px;background-image: url('\" +\n // img.imageResized +\n // \"');background-size: contain; background-repeat: no-repeat;\";\n // console.log('%c ', consoleBackground);\n // });\n // }\n // this.frontImage = webcamImage.imageResized;\n\n // console.timeEnd('scan');\n // console.time('scan');\n // get last 10\n // console.log('CAPTURED:', this.scannedImages.length);\n const images = this.scannedImages.slice(-5);\n // set images to 0\n this.scannedImages = [];\n const imagesArray = images.map((m) => m.imageResized.split(',')[1]);\n this.validation = true;\n\n this.handleBurstData(imagesArray, images);\n } else {\n if (this.cameraReady) {\n this.scan();\n }\n }\n });\n }\n\n private handleBurstData(\n imagesArray: any,\n images: any,\n type: 'worker' | 'plain' = 'plain'\n ) {\n this.__subs(this.scanProvider.burst(imagesArray)).subscribe((resp: any) => {\n this.displayInfo = 'scandoc.info.c' + resp.InfoCode;\n // console.timeEnd('validationPOST');\n // console.log('AnalysisTime', resp.AnalysisTime);\n const { DocType, Series, Side, InfoCode } = resp;\n\n // if (InfoCode === '1006' && this.idScan) {\n // this.handleLongValidationError(image);\n // }\n // console.warn(resp.Validated, this.numberOfValidations);\n\n if (resp.Validated) {\n this.numberOfValidations++;\n this.validationDebug.push(resp);\n } else {\n this.numberOfValidations = 0;\n this.validationDebug = [];\n }\n if (this.numberOfValidations >= 3) {\n this.displayInfo = '';\n // console.log('[SCANNED INDEX]', resp.Index);\n const selectedImage = images[resp.Index];\n\n // this.preview = this.webcamImage.imageAsDataUrl;\n this.cd.detectChanges();\n\n let image = selectedImage;\n console.warn(type);\n if (type == 'worker') {\n //const dataUrl = this.handleBitmapImage(selectedImage.bitmap);\n image = selectedImage.imageAsDataUrl;\n }\n\n if (InfoCode === '1007') {\n // For ID ask for other side\n if (Side === 'FRONT') {\n this.scanBlastData[0].image = image;\n } else {\n this.scanBlastData[1].image = image;\n }\n\n if (this.scanBlastData[0].image && this.scanBlastData[1].image) {\n // console.warn('UPLOAD');\n if (type == 'worker') {\n this.imageHandler.next({ type: 'stop' });\n }\n //console.warn('DEBUG', Side, this.validationDebug);\n this.scanBlastFinish();\n } else {\n this.numberOfValidations = 0;\n // console.warn('DEBUG',Side,this.validationDebug)\n this.validationDebug = [];\n const num = Side === 'FRONT' ? 1 : 0;\n this.scanSecondSide = true;\n\n this.singleScan(this.scanBlastData[num]);\n\n this.idScan = this.scanBlastData[num].side;\n\n if (!this.showDialog) {\n this.showDialog = true;\n this.cd.detectChanges();\n }\n // reset manual scan popup interval\n this.verificationErrorSent = false;\n this.startTime = Date.now();\n\n this.displayInfo = 'scandoc.info.turn';\n }\n } else {\n // console.warn('DEBUG', Side, this.validationDebug);\n this.scanBlastData[0].image = image;\n // console.warn('UPLOAD');\n if (type == 'worker') {\n this.imageHandler.next({ type: 'stop' });\n }\n this.scanBlastFinish();\n }\n\n this.scannedImages = [];\n\n // this.scanBlastData[0].image = selectedImage;\n\n //this.scanBlastFinish();\n } else {\n this.validation = false;\n this.scan();\n }\n });\n }\n\n closeDialog() {\n this.showDialog = false;\n this.validation = false;\n\n this.scan();\n }\n\n public handleInitError(error: WebcamInitError): void {\n console.log(error);\n }\n\n get scanBlastCanUpload() {\n return this.scanBlastData[0].image ? true : false;\n }\n\n private manualMode(type: 'worker' | 'plain' = 'plain') {\n this.manual = true;\n this.promptManual = false;\n this.scanInProgress = false;\n this.cameraProvider.$showSwitch.next(false);\n\n this.cd.detectChanges();\n }\n\n private handleExtractionError(data: any) {\n this.logData.ExpectedOutput = {};\n // if (this.logData.ExpectedOutput?._avatar) {\n // delete this.logData.ExpectedOutput._avatar;\n // }\n // this.scanProvider.sendLog(this.logData).subscribe();\n\n // console.log('LOG DATA', this.logData);\n this.__subs(this.scanProvider.sendLog(this.logData)).subscribe();\n }\n private handleLongValidationError(\n img: any,\n type: 'worker' | 'plain' = 'plain'\n ) {\n // save current image after 10sec\n let MANUAL_INTERVAL = this.scanProvider.config.manualScanDelay;\n const diff = (Date.now() - this.startTime) / 1000;\n\n const showDialog = diff > MANUAL_INTERVAL;\n\n if (showDialog && !this.verificationErrorSent) {\n this.verificationErrorSent = true;\n console.warn('[HANDLE ERROR]');\n\n this.zone.run(() => {\n // if (!this.scanSecondSide) {\n if (this.scanProvider.config.manualModeEnabled) {\n this.promptManual = true;\n }\n // }\n this.startTime = Date.now();\n });\n // this.verificationErrorSent = true;\n // const dataUrl = this.handleBitmapImage(img.bitmap);\n\n // console.warn('SENT');\n // // this.displayInfo = 'Cant detect document!';\n // this.logData.Request = this.__subs(\n // this.scanProvider.sendLog({\n // AcceptTermsAndConditions: true,\n // ExpectedOutput: {},\n // Request: {\n // verification: dataUrl.split(',')[1],\n // },\n // Response: {\n // TransactionID: uuidv4(),\n // },\n // })\n // ).subscribe();\n }\n }\n ngAfterViewInit() {\n // this.result = true;\n\n this.cameraProvider.$showSwitch.next(true);\n this.cd.detectChanges();\n\n // this.scanResults.next({ type: 'model', data: {} });\n\n this.__subs(this.cameraProvider.webcamObservable).subscribe((resp) => {\n this.cameraReady = false;\n this.scanInProgress = false;\n this.scannedImages = [];\n });\n this.__subs(this.cameraProvider.selfie$).subscribe((resp) => {\n this.selfie();\n });\n\n this.autoScan();\n\n this.__subs(this.layoutProvider.breakpoint$).subscribe((v: any) => {\n this.isMobile = !v.matches || this.platform.IOS || this.platform.ANDROID;\n console.log('MNOBILE', this.isMobile);\n });\n\n // this.imageHandlerSubscription = this.imageHandler.subscribe(\n // (webcamImage: any) => {\n // // return;\n // if (this.startTime === 0) {\n // this.startTime = Date.now();\n // }\n\n // this.zone.runOutsideAngular(() => {\n // if (webcamImage.base64) {\n // const time = new Date().getTime();\n\n // if (this.scanImageTimestamps.load > 0) {\n // const { load } = this.scanImageTimestamps;\n // const diff = time - load;\n // // console.warn('TIME', diff);\n // this.scanDelay = diff;\n // }\n\n // this.scanImageTimestamps.load = time;\n\n // this.scannedImages.push(webcamImage);\n // this.handleLongValidationError(webcamImage, 'worker');\n // }\n\n // // this.cd.detectChanges();\n // if (this.scannedImages.length > 4 && !this.validation) {\n // // get last 10\n // console.timeEnd('validationTOTAL_UI');\n // console.time('validationTOTAL_UI');\n // const images = this.scannedImages.slice(-5);\n // // set images to 0\n // this.scannedImages = [];\n // console.log(images);\n\n // const imagesArray = images.map((m) => m.base64.split(',')[1]);\n // this.validation = true;\n\n // // this.handleBurstData(imagesArray, images, 'worker');\n\n // console.time('validationPOST');\n // }\n // this.cd.detectChanges();\n // });\n // }\n // );\n }\n\n handleBitmapImage(bitmap: any) {\n const { width, height } = bitmap;\n\n const offscreenSmall = document.createElement('canvas');\n offscreenSmall.width = width;\n offscreenSmall.height = height;\n const ctx: any = offscreenSmall.getContext('bitmaprenderer');\n\n if (ctx) {\n ctx.imageSmoothingEnabled = false;\n ctx.transferFromImageBitmap(bitmap);\n bitmap.close();\n const data = ctx.canvas.toDataURL('image/jpeg');\n return data;\n }\n return null;\n }\n\n autoScan() {\n const side = this.scanBlastData[0];\n this.idScan = null;\n this.singleScan(side);\n }\n\n singleScan(side: any) {\n this.scanType = side.side;\n this.preview = null;\n this.selectedSide = side;\n\n this.selectedSide.image = null;\n this.documentTypeSelected = true;\n this.scanBlastData[1].disabled = false;\n this.cd.detectChanges();\n }\n\n manualScanData(data: any) {\n console.log(data);\n this.scanBlastData = data;\n this.manual = false;\n this.manualDataSet = true;\n this.scanBlastFinish();\n }\n\n private getImgBase64(num: any) {\n console.log('GET 64');\n\n // if (this.manualDataSet) {\n return this.scanBlastData[num].image._imageAsDataUrl.split(',')[1];\n // }\n // return this.scanBlastData[num].image.dataUrl.split(',')[1];\n }\n scanBlastFinish() {\n const { browser, os, device } = this.deviceService;\n\n this.zone.run(() => {\n this.cameraProvider.$showSwitch.next(false);\n });\n console.time('upload');\n if (this.type === 'mobile') {\n this.actions.emit({ data: this.scanBlastData });\n this.retake();\n return;\n }\n this.idScan = null;\n // const loading = this.dialogs.loading();\n this.scaning = true;\n this.cd.detectChanges();\n console.time('payload');\n const payload: any = {\n AcceptTermsAndConditions: true,\n DataFields: {\n DeviceInfo: {\n OS: os,\n Device: device,\n Browser: browser,\n },\n FrontImageType: 'base64',\n FrontImageCropped: false,\n BackImageType: 'base64',\n BackImageCropped: false,\n FrontImage: this.getImgBase64(0),\n BackImage: this.scanBlastData[1].image ? this.getImgBase64(1) : null,\n },\n Settings: {\n ShouldValidate: true,\n ShouldReturnDocumentImage: true,\n ShouldReturnFaceIfDetected: true,\n SkipImageSizeCheck: true,\n CanStoreImages: this.scanProvider.canStoreImages,\n },\n // CallBackUrl: 'http://demo:5000/report/extracted/',\n };\n this.frontImage = 'data:image/jpeg;base64,' + payload.DataFields.FrontImage;\n this.backImage = 'data:image/jpeg;base64,' + payload.DataFields.BackImage;\n if (!this.scanBlastData[1].image) {\n payload.Settings.IgnoreBackImage = true;\n }\n this.logData.Request = JSON.parse(JSON.stringify(payload));\n\n console.timeEnd('payload');\n this.__subs(\n this.scanProvider.blastPost(payload).pipe(\n catchError((e: any) => {\n if (this.manualDataSet) {\n // console.warn('MANUAL DATA SET',e);\n this.logData.Response = JSON.parse(JSON.stringify(e.error));\n\n this.handleExtractionError({});\n }\n\n this.zone.run(() => {\n this.error = true;\n this.preview = true;\n this.cd.detectChanges();\n });\n // console.log('EEE', e);\n return e;\n })\n )\n ).subscribe(\n (data: any) => {\n //console.log(data);\n const results = data.Data;\n console.timeEnd('upload');\n console.time('parse');\n // data.InfoCode = '1001';\n console.time('p');\n this.logData.Response = JSON.parse(JSON.stringify(data));\n console.timeEnd('p');\n //loading.close();\n this.documentTypeSelected = true;\n this.scaning = false;\n\n if (data.InfoCode === '1001') {\n this.error = true;\n console.log('[ERROR] 1001');\n this.errorCode = '1001';\n // this.scanSide = 0;\n\n this.preview = true;\n this.cd.detectChanges();\n return;\n }\n if (data.InfoCode === '1002') {\n this.error = true;\n console.log('[ERROR] 1002');\n this.errorCode = '1002';\n // this.scanSide = 0;\n\n this.preview = true;\n this.cd.detectChanges();\n return;\n }\n if (results && data.Metadata.length > 0 && data.InfoCode === '1000') {\n // console.log('Extraction time', data.AnalysisTime);\n\n // this.zone.run(() => {\n\n // console.time('parseblast');\n const result = this.scanProvider.parseBlast(results);\n // console.timeEnd('parseblast');\n // console.log('RES', this.result);\n // this.cd.detectChanges();\n\n const model = result.model;\n\n if (data.ImageData?.FaceImage) {\n model._avatar =\n 'data:image/jpeg;base64,' + data.ImageData?.FaceImage;\n }\n\n if (data.ImageData?.Documents) {\n const { Documents } = data.ImageData;\n model.images = Documents.map((image: any, i: number) => {\n return { data: 'data:image/jpeg;base64,' + Documents[i] };\n });\n }\n this.model = model;\n // console.log('MODEL', this.model);\n this.actions.emit({\n type: 'scanFinish',\n data: {\n model: this.model,\n images: this.images,\n results,\n },\n });\n\n if (!this.scanProvider.config.hideResults) {\n this.zone.run(() => {\n this.result = true;\n // console.time('ff');\n this.cd.detectChanges();\n\n this.scanResults.next({ type: 'model', data: model });\n // this.cd.detectChanges();\n // });\n // console.timeEnd('ff');\n });\n }\n } else {\n console.log('ERROR');\n if (this.manualDataSet) {\n this.handleExtractionError(data);\n }\n // this.scanSide = 0;\n this.zone.run(() => {\n this.error = true;\n this.preview = true;\n this.cd.detectChanges();\n });\n // this.documentTypeSelected = false;\n\n // this.retry();\n }\n\n // this.cd.detectChanges();\n console.timeEnd('parse');\n },\n (err) => {\n // loading.close();\n // this.scanSide = 0;\n this.error = true;\n this.preview = true;\n this.documentTypeSelected = true;\n this.scaning = false;\n }\n );\n }\n\n retry() {\n this.preview = false;\n this.validation = false;\n this.errorCode = '1000';\n this.result = false;\n this.idScan = null;\n this.cameraProvider.$showSwitch.next(true);\n if (this.error) {\n this.documentTypeSelected = false;\n this.scanBlastData.forEach((element: any) => {\n element.image = null;\n });\n }\n this.error = false;\n this.startTime = Date.now();\n this.autoScan();\n this.scan();\n this.cd.detectChanges();\n }\n\n public retake() {\n this.validation = false;\n this.preview = false;\n this.error = false;\n this.result = false;\n this.scanSide = 0;\n this.cameraProvider.$showSwitch.next(true);\n this.imageVerified = false;\n this.scanDatas = [];\n this.scaning = false;\n this.images = [];\n this.scanInProgress = false;\n this.startTime = Date.now();\n this.idScan = null;\n this.documentTypeSelected = false;\n this.scanBlastData.forEach((m: any) => {\n m.image = null;\n });\n\n this.scanSecondSide = false;\n\n this.autoScan();\n\n this.cd.detectChanges();\n }\n\n use() {\n // save images??\n\n if (this.scanProvider.config.sendLog) {\n this.logData.ExpectedOutput = JSON.parse(JSON.stringify(this.model));\n if (this.logData.ExpectedOutput?._avatar) {\n delete this.logData.ExpectedOutput._avatar;\n }\n this.__subs(this.scanProvider.sendLog(this.logData)).subscribe();\n console.log(this.logData);\n }\n\n this.actions.emit({\n type: 'scanDataClose',\n data: {\n model: this.model,\n images: this.images,\n },\n });\n }\n selfie() {\n const avatar = this.model?._avatar;\n this.dialogs\n .scanSelfie({ avatar })\n .afterClosed()\n .subscribe((resp: any) => {\n if (resp) {\n console.log(resp);\n if (this.scanProvider.enableVerification) {\n this.imageVerified = true;\n }\n this.scanResults.next({\n type: 'avatar',\n data: resp.imageAsDataUrl,\n });\n // this.model._avatar = resp.imageAsDataUrl;\n this.cd.detectChanges();\n }\n });\n }\n\n cameraOff(ev: any) {\n this.cameraReady = false;\n this.cd.detectChanges();\n }\n\n videoReady(event: boolean) {\n console.log('READY', event);\n this.cameraReady = event;\n if (this.cameraReady && !this.scanInProgress && !this.manual) {\n this.scanInProgress = true;\n setTimeout(() => {\n this.scan();\n }, 20);\n }\n }\n\n manualSet(key: boolean) {\n if (key) {\n if (this.scanProvider.config.showManualMode) {\n this.manualMode();\n } else {\n this.actions.emit({\n type: 'manualMode',\n data: {},\n });\n }\n } else {\n this.promptManual = false;\n }\n }\n\n ngOnDestroy(): void {\n if (this.scanTimeout) {\n clearTimeout(this.scanTimeout);\n }\n if (this.imageHandlerSubscription) {\n this.imageHandlerSubscription.unsubscribe();\n }\n\n console.log('DESTROXY');\n\n this.__destroy();\n }\n}\n","<ng-container\n *ngIf=\"cameraProvider.rectPosition.t > 0 && displayInfo && !result && !manual\"\n>\n <div class=\"hint\" [ngStyle]=\"{ top: cameraProvider.hintPosition + 'px' }\">\n <span class=\"text\">\n {{ displayInfo | translate }}\n </span>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"showDialog\">\n <div class=\"pageTurn\">\n <div class=\"content\">\n <div class=\"inner\">\n <mat-icon>360</mat-icon>\n <div class=\"text\">\n <ng-container *ngIf=\"idScan === 'BACK'\">\n {{ \"scandoc.turnAndCapture.back\" | translate }}\n </ng-container>\n <ng-container *ngIf=\"idScan === 'FRONT'\">\n {{ \"scandoc.turnAndCapture.front\" | translate }}\n </ng-container>\n </div>\n </div>\n <footer>\n <button (click)=\"closeDialog()\" mat-raised-button>Ok</button>\n </footer>\n </div>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"promptManual\">\n <div class=\"manualMode\">\n <div class=\"content\">\n <div class=\"inner\">\n <mat-icon>screenshot</mat-icon>\n <div class=\"text\">\n {{ \"scandoc.manual\" | translate }}\n </div>\n </div>\n <footer>\n <button\n style=\"margin-right: 8px\"\n (click)=\"manualSet(true)\"\n mat-raised-button\n >\n {{ \"scandoc.yes\" | translate }}\n </button>\n <button\n style=\"margin-left: 8px\"\n (click)=\"manualSet(false)\"\n mat-raised-button\n >\n {{ \"scandoc.no\" | translate }}\n </button>\n </footer>\n </div>\n </div>\n</ng-container>\n<ng-container *ngIf=\"result\">\n <section>\n <ngx-scan-results\n (action)=\"selfie()\"\n [form]=\"form\"\n [data]=\"scanResults\"\n ></ngx-scan-results>\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</ng-container>\n\n<ng-container *ngIf=\"manual\">\n <section>\n <ngx-manual-scan (action)=\"manualScanData($event)\"></ngx-manual-scan>\n </section>\n</ng-container>\n<ng-container *ngIf=\"!result && documentTypeSelected && !manual\">\n <section>\n <div #wraper class=\"wraper\">\n <div class=\"loading\" *ngIf=\"(!cameraReady && !preview) || scaning\">\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 #webcam\n type=\"document\"\n [trigger]=\"trigger\"\n [imageHandler]=\"imageHandler\"\n (imageCapture)=\"handleImage($event)\"\n (initError)=\"handleInitError($event)\"\n (destroyed)=\"cameraOff($event)\"\n (videoReady)=\"videoReady($event)\"\n [refresh]=\"refresh\"\n >\n </ngx-scandoc-webcam>\n </ng-container>\n <div\n class=\"previewData\"\n *ngIf=\"preview\"\n style=\"\n z-index: 20;\n display: flex;\n position: absolute;\n width: 100%;\n height: 100%;\n \"\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 *ngIf=\"preview\">\n <!-- <div class=\"displayInfo\" *ngIf=\"!preview && cameraReady\">\n <ng-container *ngIf=\"displayInfo\">\n {{ displayInfo | translate }}\n </ng-container>\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</ng-container>\n","import { NgModule } from '@angular/core';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTabsModule } from '@angular/material/tabs';\n\n@NgModule({\n imports: [\n MatNativeDateModule,\n MatDatepickerModule,\n MatCardModule,\n MatMenuModule,\n MatIconModule,\n MatButtonModule,\n MatDialogModule,\n MatInputModule,\n MatSnackBarModule,\n MatProgressBarModule,\n MatTableModule,\n MatProgressSpinnerModule,\n MatPaginatorModule,\n MatSelectModule,\n MatCheckboxModule,\n MatChipsModule,\n MatBadgeModule,\n MatListModule,\n MatTabsModule,\n MatSliderModule,\n MatSlideToggleModule,\n ],\n exports: [\n MatNativeDateModule,\n MatDatepickerModule,\n MatSelectModule,\n MatCardModule,\n MatMenuModule,\n MatIconModule,\n MatButtonModule,\n MatDialogModule,\n MatInputModule,\n MatSnackBarModule,\n MatProgressBarModule,\n MatProgressSpinnerModule,\n MatTableModule,\n MatPaginatorModule,\n MatChipsModule,\n MatBadgeModule,\n MatCheckboxModule,\n MatListModule,\n MatTabsModule,\n MatSlideToggleModule,\n MatAutocompleteModule,\n ],\n providers: [],\n})\nexport class MaterialModule {}\n","import {\n Component,\n OnInit,\n AfterViewInit,\n ChangeDetectorRef,\n} from '@angular/core';\nimport { FieldType } from '@ngx-formly/material';\n\n@Component({\n selector: 'app-formly-avatar-type',\n template: `\n <mat-card appearance=\"outlined\" style=\"margin: 4px; padding:16px\">\n <div class=\"card-title\">{{ 'scandoc.result.avatar' | translate }}</div>\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 styleUrls: ['./scss/avatar.type.scss'],\n})\nexport class AvatarTypeComponent\n extends FieldType<any>\n implements AfterViewInit\n{\n width = 'w-120';\n padding = 'px-32 pt-8 pb-8';\n name: any;\n constructor(private cd: ChangeDetectorRef) {\n super();\n }\n ngOnChange() {}\n\n selfie(){};\n\n ngAfterViewInit() {\n if (this.to.width) {\n this.width = this.to.width;\n }\n if (this.to.padding) {\n this.padding = this.to.padding;\n }\n\n this.cd.detectChanges();\n }\n}\n","import {\n Component,\n OnInit,\n AfterViewInit,\n ChangeDetectorRef,\n} from '@angular/core';\nimport { FieldType } from '@ngx-formly/material';\n\n@Component({\n selector: 'app-formly-title-type',\n template: `\n <div class=\"card-title\">\n {{ to.label }}\n </div>\n `,\n styleUrls: ['./scss/title.type.scss'],\n})\nexport class TitleTypeComponent\n extends FieldType<any>\n implements OnInit, AfterViewInit\n{\n opt: any;\n constructor(private cd: ChangeDetectorRef) {\n super();\n }\n ngOnInit() {\n this.opt = {\n badge: this.to.badge,\n };\n }\n\n ngAfterViewInit() {\n this.cd.detectChanges();\n }\n}\n","import {\n Component,\n OnInit,\n AfterViewInit,\n ChangeDetectorRef,\n} from '@angular/core';\nimport { FieldType } from '@ngx-formly/material';\nimport { NgxScandocCameraProvider } from '../../providers/camera.provider';\nimport { ScanProvider } from '../../providers/scan.provider';\n\n@Component({\n selector: 'app-formly-profile-image-type',\n template: `\n <mat-form-field>\n <mat-label>{{ 'scandoc.result.avatar' | translate }} </mat-label>\n <input matInput style=\"display:none\" />\n <div class=\"selfieContainer\">\n <div class=\"selfie\">\n <img *ngIf=\"model?._avatar\" class=\"preview\" [src]=\"model._avatar\" />\n </div>\n <button\n *ngIf=\"scanProvider.enableVerification\"\n (click)=\"selfie()\"\n mat-raised-button\n >\n {{ 'scandoc.result.takeSelfie' | translate }}\n </button>\n </div>\n </mat-form-field>\n `,\n styleUrls: ['./scss/profile.image.type.scss'],\n})\nexport class ProfileImageTypeComponent\n extends FieldType<any>\n implements AfterViewInit\n{\n name: any;\n width: any;\n padding: any;\n constructor(\n private cd: ChangeDetectorRef,\n private cameraProvider: NgxScandocCameraProvider,\n public scanProvider: ScanProvider\n ) {\n super();\n }\n selfie() {\n this.cameraProvider.selfie$.next(true);\n }\n ngOnChange() {}\n\n ngAfterViewInit() {}\n}\n","import { NgModule } from '@angular/core';\nimport { FormlyModule, ConfigOption } from '@ngx-formly/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { FormlyMaterialModule } from '@ngx-formly/material';\nimport { CommonModule } from '@angular/common';\n\nimport { AvatarTypeComponent } from './types/avatar.type';\n\nimport { TitleTypeComponent } from './types/title.type';\nimport { FormlySelectModule } from '@ngx-formly/core/select';\nimport { AvatarModule } from 'ngx-avatars';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MaterialModule } from '../core/shared/material.module';\nimport { ProfileImageTypeComponent } from './types/profile.image.type';\nimport { FormlyMatDatepickerModule } from '@ngx-formly/material/datepicker';\n\n\n@NgModule({\n declarations: [\n TitleTypeComponent,\n AvatarTypeComponent,\n ProfileImageTypeComponent,\n ],\n imports: [\n CommonModule,\n FormsModule,\n FormlyMatDatepickerModule,\n FormlySelectModule,\n MaterialModule,\n AvatarModule,\n TranslateModule,\n\n FormlyMaterialModule,\n FormlyModule.forChild({\n types: [\n {\n name: 'title',\n component: TitleTypeComponent,\n wrappers: [],\n },\n {\n name: 'profile-image',\n component: ProfileImageTypeComponent,\n wrappers: [],\n },\n ],\n }),\n ],\n\n providers: [],\n exports: [FormlyModule],\n})\nexport class AppFormModule {}\n","import {\n Component,\n EventEmitter,\n AfterViewInit,\n ChangeDetectionStrategy,\n Input,\n OnDestroy,\n} from '@angular/core';\nimport { NgxScandocCameraProvider } from '../../../providers/camera.provider';\n\n@Component({\n selector: 'ngx-scan-camera-switch',\n templateUrl: './camera-switch.component.html',\n styleUrls: ['./camera-switch.component.scss'],\n // changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CameraSwitchComponent implements AfterViewInit, OnDestroy {\n constructor(public cameraProvider: NgxScandocCameraProvider) {}\n\n\n\n ngAfterViewInit(): void {\n\n // this.cameraProvider.setDefault();\n }\n\n ngOnDestroy(): void {}\n}\n","<mat-form-field\n style=\"font-size: 14px; margin-top: 8px\"\n class=\"w-100-p mr-16 mt-8\"\n\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","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { CommonModule } from '@angular/common';\n\nimport { WebcamModule } from './webcam/webcam.module';\nimport { ScanComponent } from './scan/scan.component';\nimport { MaterialModule } from '../shared/material.module';\nimport { AppFormModule } from '../../forms/form.module';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CameraSwitchComponent } from './camera-switch/camera-switch.component';\nimport { ScanResultsComponent } from './scan-results/scan-results.component';\nimport { ManualScanComponent } from './manual-scan/manual-scan.component';\n//import { NgxScandocCameraProvider } from '../../providers/camera.provider';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n TranslateModule,\n WebcamModule.forRoot(),\n MaterialModule,\n AppFormModule,\n ReactiveFormsModule,\n ],\n declarations: [\n ScanComponent,\n ScanResultsComponent,\n CameraSwitchComponent,\n ManualScanComponent,\n ],\n exports: [\n WebcamModule,\n ScanComponent,\n CameraSwitchComponent,\n ManualScanComponent,\n ],\n providers: [],\n})\nexport class CoreComponentsModule {\n static forRoot(): ModuleWithProviders<CoreComponentsModule> {\n return {\n ngModule: CoreComponentsModule,\n providers: [],\n };\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({ name: 'safeResourceUrl' })\nexport class SafeResourceUrlPipe implements PipeTransform {\n constructor(private sanitizer: DomSanitizer) {}\n\n transform(style:any) {\n return this.sanitizer.bypassSecurityTrustResourceUrl(style);\n // return this.sanitizer.bypassSecurityTrustStyle(style);\n // return this.sanitizer.bypassSecurityTrustXxx(style); - see docs\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { SafeResourceUrlPipe } from './safeResourceUrl.pipe';\n\n@NgModule({\n declarations: [SafeResourceUrlPipe],\n imports: [],\n exports: [\n\n\n SafeResourceUrlPipe,\n\n ],\n})\nexport class CorePipesModule {}\n","import {\n Component,\n OnInit,\n Inject,\n\n ViewChild,\n ViewContainerRef,\n AfterViewInit,\n ChangeDetectorRef,\n OnChanges,\n} from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n\n@Component({\n selector: 'ngx-scandoc-blank',\n templateUrl: './blank.component.html',\n styleUrls: ['./blank.component.scss'],\n // changeDetection:ChangeDetectionStrategy.OnPush\n})\nexport class BlankComponent implements AfterViewInit {\n @ViewChild('body', { read: ViewContainerRef, static: true })\n body?: ViewContainerRef;\n initSet = false;\n constructor(\n public dialogRef: MatDialogRef<BlankComponent>,\n @Inject(MAT_DIALOG_DATA) public data:any,\n\n\n public cd: ChangeDetectorRef\n ) {}\n\n\n setModel(model:any) {\n this.data.data.model = model;\n this.init();\n }\n\n\n init() {\n\n this.initSet = true;\n\n this.body?.clear();\n\n const componentRef: any = this.body?.createComponent(this.data.component);\n\n componentRef.instance.data = this.data.data;\n // componentRef.instance.dialogs = this.dialogs;\n componentRef.instance.dialogRef = this.dialogRef;\n\n if (componentRef.instance.init) {\n componentRef.instance.init();\n }\n this.cd.detectChanges();\n }\n ngAfterViewInit() {\n if (!this.initSet) {\n this.init();\n }\n }\n}\n","<ng-template #body></ng-template>\n","import { Component, OnInit, Input, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n selector: 'ngx-scandoc-loading',\n templateUrl: './loading.component.html',\n styleUrls: ['./loading.component.scss'],\n})\nexport class LoadingComponent {}\n","<div style=\"width:240px;\">\n\n <div class=\"pb-16\" style=\"font-size: 18px;padding-bottom:16px;\">\n Loading...\n </div>\n <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n</div>\n","import { Component, OnInit, Inject, HostListener } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\ninterface options {\n hideOkButton?: boolean;\n hideCancelButton?: boolean;\n hideNoButton?: boolean;\n type?: string;\n}\n@Component({\n selector: 'ngx-scandoc-confirm',\n templateUrl: './confirm.component.html',\n styleUrls: ['./confirm.component.scss', './../../scss/dialog.scss'],\n})\nexport class ConfirmComponent implements OnInit {\n showDetails=false;\n images = {\n alert: 'page-lost.svg',\n prompt: 'bedroom.svg',\n dirty: 'opps.svg',\n };\n type:any;\n options: options = {};\n\n @HostListener('document:keyup.enter', ['$event'])\n onEnterPress(e: KeyboardEvent) {\n this.action(true);\n }\n @HostListener('document:keyup.escape', ['$event'])\n onEscapePress(e: KeyboardEvent) {\n this.action(false);\n }\n\n constructor(\n public dialogRef: MatDialogRef<ConfirmComponent>,\n @Inject(MAT_DIALOG_DATA) public data:any,\n ) {}\n\n ngOnInit() {\n console.log(this.data);\n this.options = this.data.options || {};\n this.type = this.options.type || this.data.type || 'prompt';\n }\n action(key:any) {\n this.dialogRef.close(key);\n }\n close() {}\n}\n","<header class=\"page-header\" fxLayout=\"row\" fxLayoutAlign=\"start center\">\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 <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 || \"scandoc.cancel\" | translate }}\n </button>\n\n <button\n *ngIf=\"data.no && !options?.hideNoButton\"\n (click)=\"action('no')\"\n mat-raised-button\n >\n {{ data.no }}\n </button>\n <button\n *ngIf=\"!data.hideOkButton && !options?.hideOkButton\"\n (click)=\"action(true)\"\n mat-raised-button\n >\n <ng-container *ngIf=\"!data.alert\">\n {{ data.ok || \"scandoc.confirm\" | translate }}\n </ng-container>\n\n <ng-container *ngIf=\"data.alert\">\n {{ data.ok || \"scandoc.ok\" | translate }}\n </ng-container>\n </button>\n </div>\n</footer>\n","import {\n Component,\n EventEmitter,\n Output,\n ChangeDetectorRef,\n AfterViewInit,\n ChangeDetectionStrategy,\n OnInit,\n OnDestroy,\n} from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { Subject } from 'rxjs';\nimport { FormGroup } from '@angular/forms';\nimport { WebcamImage } from '../../../core/components/webcam/domain/webcam-image';\nimport { WebcamInitError } from '../../../core/components/webcam/domain/webcam-init-error';\nimport { NgxScandocCameraProvider } from '../../../providers/camera.provider';\nimport { NgxScandocDialogsCoreProvider } from '../../../dialogs/dialogs.core.provider';\n\nimport { ScanProvider } from '../../../providers/scan.provider';\nimport { BaseComponent } from '../../../core/components/base.component';\n@Component({\n selector: 'ngx-scandoc-selfie',\n templateUrl: './scan-selfie.component.html',\n styleUrls: ['./scan-selfie.component.scss', '../../scss/dialog.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScanSelfieComponent\n extends BaseComponent\n implements AfterViewInit, OnDestroy\n{\n @Output() actions = new EventEmitter();\n data: any;\n cameraReady = false;\n preview: any = null;\n\n public trigger: Subject<number> = new Subject<number>();\n\n\n form = new FormGroup({});\n webcamImage: any;\n constructor(\n public cd: ChangeDetectorRef,\n\n public dialogRef: MatDialogRef<ScanSelfieComponent>,\n\n public cameraProvider: NgxScandocCameraProvider,\n public scanProvider: ScanProvider,\n private dialogs: NgxScandocDialogsCoreProvider\n ) {\n super();\n }\n\n public handleImage(webcamImage: WebcamImage): void {\n // console.log('[received webcam image]', webcamImage);\n this.cameraProvider.$showSwitchSelfie.next(false);\n\n this.webcamImage = webcamImage;\n this.preview = webcamImage.imageAsDataUrl;\n this.cd.detectChanges();\n }\n public handleInitError(error: WebcamInitError): void {\n console.log(error);\n }\n videoReady(ev: any) {\n this.cameraReady = ev;\n }\n ngAfterViewInit(): void {\n this.cameraProvider.$showSwitchSelfie.next(true);\n this.cd.detectChanges();\n }\n ngOnDestroy(): void {\n this.__destroy();\n }\n retry() {\n this.preview = false;\n this.cameraProvider.$showSwitchSelfie.next(true);\n this.cd.detectChanges()\n }\n scan() {\n this.trigger.next(new Date().getTime());\n }\n\n continue() {\n console.log(this.data);\n if (this.scanProvider.enableVerification && this.data.avatar) {\n const loading = this.dialogs.loading();\n console.log(this.data.avatar);\n\n this.__subs(\n this.scanProvider.stateless(\n this.data.avatar.split(',')[1],\n this.webcamImage?.imageAsDataUrl.split(',')[1]\n )\n ).subscribe(\n (resp: any) => {\n loading.close();\n if (resp.Data?.Verified) {\n this.dialogRef?.close(this.webcamImage);\n } else {\n this.dialogs.alert(\n 'Verification failed!',\n \"We can't verify that your selfie is same as image on document.\"\n );\n }\n console.log(resp);\n },\n (err) => {\n loading.close();\n this.dialogRef?.close(this.webcamImage);\n }\n );\n } else {\n this.dialogRef?.close(this.webcamImage);\n }\n // this.dialogRef.close(this.webcamImage)\n }\n\n close() {\n this.dialogRef.close(null);\n }\n}\n","<header class=\"page-header\">\n <div class=\"title\">\n {{ \"scandoc.result.takeSelfie\" | translate }}\n </div>\n\n <span style=\"flex: 1\"></span>\n\n <ng-container *ngIf=\"cameraProvider.$showSwitchSelfie | async\">\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>\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\n<div 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>\n <ngx-scandoc-webcam\n *ngIf=\"!preview\"\n class=\"main flex\"\n #webcam\n [trigger]=\"trigger\"\n (imageCapture)=\"handleImage($event)\"\n (initError)=\"handleInitError($event)\"\n (videoReady)=\"videoReady($event)\"\n type=\"selfie\"\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 >\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> {{ \"scandoc.result.takeSelfie\" | translate }} </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 {{ \"scandoc.retry\" | translate }}\n </button>\n\n <button\n style=\"flex: 1\"\n class=\"ml-4\"\n mat-raised-button\n (click)=\"continue()\"\n >\n {{ \"scandoc.continueWithSelectedImage\" | translate }}\n </button>\n </div>\n </footer>\n</div>\n","import { Component, OnInit, Inject, HostListener } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n selector: 'ngx-scandoc-turn-document',\n templateUrl: './turn-document.component.html',\n styleUrls: ['./turn-document.component.scss'],\n})\nexport class TurnDocumentComponent implements OnInit {\n\n\n constructor(\n public dialogRef: MatDialogRef<TurnDocumentComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any\n ) {}\n\n ngOnInit() {\n console.log(this.data)\n }\n\n close() {\n console.log(this.dialogRef);\n this.dialogRef.close();\n }\n}\n","<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","import { Component, OnInit, Inject, HostListener } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n selector: 'ngx-scandoc-prompt-manual',\n templateUrl: './prompt-manual.component.html',\n styleUrls: ['./prompt-manual.component.scss'],\n})\nexport class PromptManualComponent implements OnInit {\n constructor(\n public dialogRef: MatDialogRef<PromptManualComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any\n ) {}\n\n ngOnInit() {\n console.log(this.data);\n }\n\n close(key: boolean) {\n console.log(this.dialogRef);\n this.dialogRef.close(key);\n }\n}\n","<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>screenshot_keyboard</mat-icon>\n <div class=\"text\">\n {{ \"scandoc.manual\" | translate }}\n </div>\n</div>\n\n<!-- -->\n\n<footer>\n <button style=\"margin-right: 8px\" (click)=\"close(true)\" mat-raised-button>\n {{ \"scandoc.yes\" | translate }}\n </button>\n <button style=\"margin-left: 8px\" (click)=\"close(false)\" mat-raised-button>\n {{ \"scandoc.no\" | translate }}\n </button>\n</footer>\n","import {\n DialogPosition,\n MatDialog,\n MatDialogRef,\n} from '@angular/material/dialog';\nimport { Injectable, EventEmitter } from '@angular/core';\n\nimport { BlankComponent } from './components/blank/blank.component';\nimport { ScanProfileComponent } from './components/scan-profile/scan-profile.component';\nimport { LoadingComponent } from './components/loading/loading.component';\nimport { ConfirmComponent } from './components/confirm/confirm.component';\nimport { ScanSelfieComponent } from './components/scan-selfie/scan-selfie.component';\nimport { TurnDocumentComponent } from './components/turn-document/turn-document.component';\nimport { PromptManualComponent } from './components/prompt-manual/prompt-manual.component';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NgxScandocDialogsCoreProvider {\n components: any = {\n ScanProfile: { component: ScanProfileComponent },\n Loading: { component: LoadingComponent },\n ConfirmComponent: { component: ConfirmComponent },\n TurnDocumentComponent: { component: TurnDocumentComponent },\n ScanSelfie: { component: ScanSelfieComponent },\n PromptManual: { component: PromptManualComponent },\n };\n private blank = BlankComponent;\n\n constructor(private matDialog: MatDialog) {}\n private getComponent(name: any) {\n if (!this.components[name]) {\n console.warn('Component missing', name, this.components);\n }\n return this.components[name].component;\n }\n public open(config: any, withComponent = true) {\n // console.log(config);\n const panelClass = config.panelClass ? config.panelClass : config.name;\n\n const component = this.getComponent(config.name);\n\n const dialogRef = this.matDialog.open(this.blank, {\n panelClass,\n data: {\n data: config.data,\n withComponent,\n component,\n },\n autoFocus: false,\n width: config.width || '',\n height: config.height || '',\n maxWidth: config.maxWidth || '',\n minWidth: config.minWidth || '',\n maxHeight: config.maxHeight || '',\n minHeight: config.minHeight || '',\n position: config.position || {},\n hasBackdrop: config.hasBackdrop === undefined ? true : config.hasBackdrop,\n disableClose:\n config.disableClose === undefined ? true : config.disableClose,\n });\n\n return dialogRef;\n }\n public scanProfile(data: any) {\n return this.open({\n name: 'ScanProfile',\n panelClass: 'ScanProfileComponent',\n data,\n });\n }\n\n // Generic loading dialog\n public loading(title: string = '') {\n return this.open({\n name: 'Loading',\n data: { title },\n });\n }\n public alert(title: string, text: string) {\n return this.open({\n name: 'ConfirmComponent',\n maxWidth: '600px',\n panelClass: 'DialogNoPadding',\n\n minWidth: '440px',\n data: { title, text, alert: true },\n });\n }\n\n public turnDocument(idScan: any) {\n return this.open({\n name: 'TurnDocumentComponent',\n maxWidth: '400px',\n panelClass: 'DialogNoPadding',\n minWidth: '300px',\n data: { idScan },\n }).afterClosed();\n }\n public promptManual() {\n return this.open({\n name: 'PromptManual',\n maxWidth: '400px',\n panelClass: 'DialogNoPadding',\n minWidth: '300px',\n data: { },\n }).afterClosed();\n }\n // public scanMobile(data: any) {\n // return this.open({\n // name: 'ScanMobileComponent',\n // maxWidth: '600px',\n // panelClass: 'DialogNoPadding',\n\n // minWidth: '440px',\n // data,\n // });\n // }\n public scanSelfie(data: any) {\n return this.open({\n name: 'ScanSelfie',\n panelClass: 'ScanProfileComponent',\n data,\n });\n }\n}\n","import {\n Component,\n ViewChild,\n EventEmitter,\n Output,\n HostListener,\n ElementRef,\n ChangeDetectorRef,\n AfterViewInit,\n ChangeDetectionStrategy,\n Input,\n OnDestroy,\n} from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { BaseComponent } from '../../../core/components/base.component';\nimport { NgxScandocDialogsCoreProvider } from '../../../dialogs/dialogs.core.provider';\nimport { NgxScandocCameraProvider } from '../../../providers/camera.provider';\nimport { Platform } from '@angular/cdk/platform';\nimport { ScanProvider } from '../../../providers/scan.provider';\n\n@Component({\n selector: 'ngx-scandoc-profile',\n templateUrl: './scan-profile.component.html',\n styleUrls: ['./scan-profile.component.scss', '../../scss/dialog.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ScanProfileComponent\n extends BaseComponent\n implements AfterViewInit, OnDestroy\n{\n @Input() type = 'desktop';\n\n showDialog = false;\n @HostListener('touchmove', ['$event'])\n handleTouchMove(event: any) {\n // console.log(event);\n if (event.touches.length > 1) {\n event.preventDefault();\n }\n // console.log(document.body.style.zoom);\n\n if (event.scale !== 1) {\n // event.preventDefault();\n // event.stopImmediatePropagation();\n }\n }\n\n constructor(\n public dialogs: NgxScandocDialogsCoreProvider,\n public cameraProvider: NgxScandocCameraProvider,\n private scanProvider: ScanProvider,\n public dialogRef: MatDialogRef<ScanProfileComponent>,\n private platform: Platform\n ) {\n super();\n }\n ngAfterViewInit(): void {\n // console.log(this.cameraProvider)\n }\n ngOnDestroy(): void {\n this.__destroy();\n console.log('DES');\n }\n\n actions(event: any) {\n switch (event.type) {\n case 'scanFinish':\n if (this.scanProvider.config.hideResults) {\n this.dialogRef?.close(event.data);\n }\n break;\n\n case 'manualMode':\n this.dialogRef?.close({ manual: true });\n break;\n case 'scanDataClose':\n this.dialogRef?.close(event.data);\n break;\n case 'turnDocumentOver':\n this.__subs(this.dialogs.turnDocument(event.side)).subscribe(() => {\n this.showDialog = false;\n });\n break;\n }\n }\n\n close() {\n this.dialogRef?.close();\n }\n}\n","<header class=\"page-header\">\n <div class=\"title\" >\n {{ \"scandoc.title\" | translate }}\n </div>\n\n <span style=\"flex: 1\"></span>\n\n <ng-container *ngIf=\"cameraProvider.$showSwitch| async\">\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","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { ScanProfileComponent } from './components/scan-profile/scan-profile.component';\nimport { BlankComponent } from './components/blank/blank.component';\nimport { NgxScandocDialogsCoreProvider } from './dialogs.core.provider';\n\nimport { MaterialModule } from '../core/shared/material.module';\nimport { CoreComponentsModule } from '../core/components/components.module';\n//import { FlexLayoutModule, FlexModule } from '@angular/flex-layout';\nimport { CorePipesModule } from '../core/pipes/pipes.module';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { LoadingComponent } from './components/loading/loading.component';\nimport { AppFormModule } from '../forms/form.module';\nimport { ConfirmComponent } from './components/confirm/confirm.component';\n\n//import { QRCodeModule } from 'angularx-qrcode';\nimport { ScanSelfieComponent } from './components/scan-selfie/scan-selfie.component';\nimport { TurnDocumentComponent } from './components/turn-document/turn-document.component';\nimport { PromptManualComponent } from './components/prompt-manual/prompt-manual.component';\n//import { NgxScandocCameraProvider } from '../providers/camera.provider';\n//import { NgxScandocCameraProvider } from '../providers/camera.provider';\n\n@NgModule({\n declarations: [\n ScanProfileComponent,\n BlankComponent,\n LoadingComponent,\n ConfirmComponent,\n TurnDocumentComponent,\n ScanSelfieComponent,\n PromptManualComponent,\n ],\n exports: [\n ScanProfileComponent,\n LoadingComponent,\n BlankComponent,\n TurnDocumentComponent,\n MaterialModule,\n ScanSelfieComponent,\n PromptManualComponent,\n CoreComponentsModule,\n ],\n imports: [\n // QRCodeModule,\n ReactiveFormsModule,\n CommonModule,\n FormsModule,\n AppFormModule,\n\n TranslateModule,\n MaterialModule,\n CoreComponentsModule.forRoot(),\n CorePipesModule,\n // FlexModule,\n // FlexLayoutModule,\n ],\n providers: [],\n})\nexport class DialogsModule {\n static forRoot(): ModuleWithProviders<DialogsModule> {\n return {\n ngModule: DialogsModule,\n providers: [ NgxScandocDialogsCoreProvider],\n };\n }\n}\n","import {\n HttpEvent,\n HttpHandler,\n HttpHeaders,\n HttpInterceptor,\n HttpRequest,\n} from '@angular/common/http';\nimport { Injectable, Injector } from '@angular/core';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError, share, switchMap } from 'rxjs/operators';\nimport { NgxScandocAuthProvider } from './auth.provider';\n\n@Injectable()\nexport class HttpErrorInterceptor implements HttpInterceptor {\n inflightAuthRequest!: Observable<any> | null;\n\n authProvider:NgxScandocAuthProvider=this.injector.get(NgxScandocAuthProvider);\n constructor(private injector: Injector) {}\n\n intercept(\n req: HttpRequest<any>,\n next: HttpHandler\n ): Observable<HttpEvent<any>> {\n //console.log(req.url);\n if (req.url.indexOf('/ks/') >= 0 || req.url.indexOf('/assets/') >= 0) {\n return next.handle(req);\n }\n\n // const authProvider = this.injector.get(AuthProvider);\n\n if (this.authProvider.config.validDomains) {\n const valid =\n this.authProvider.config.validDomains\n .map((domain) => {\n return req.url.indexOf(domain) >= 0;\n })\n .filter((m) => m).length > 0;\n if (!valid) {\n return next.handle(req);\n }\n }\n\n\n this.inflightAuthRequest = this.authProvider.accesToken;\n\n return this.inflightAuthRequest.pipe(\n share(),\n switchMap((token: string) => {\n // unset request inflight\n this.inflightAuthRequest = null;\n\n const transaction = req.headers.get('TransactionID');\n const authReq = req.clone({\n headers: this.getHeaders(token, transaction || ''),\n });\n\n return next.handle(authReq);\n }),\n catchError((err: any) => {\n let tokenExpired = false;\n if (err.errors) {\n const find = err.erros.find(\n (es: string) => es.indexOf('Invalid token') > -1\n );\n tokenExpired = find ? true : false;\n }\n console.log(err);\n\n if (err.status === 401 || err.status === 403 || tokenExpired) {\n return this.authProvider.refreshToken().pipe(\n switchMap((token) => {\n const transaction = req.headers.get('TransactionID');\n const authReq = req.clone({\n headers: this.getHeaders(token, transaction || ''),\n });\n\n return next.handle(authReq);\n })\n );\n } else {\n return throwError(() => err);\n }\n })\n );\n }\n\n private getHeaders(token: string, TransactionID: string) {\n if (TransactionID) {\n return new HttpHeaders({\n 'Content-Type': 'application/json',\n Authorization: token,\n TransactionID,\n });\n }\n return new HttpHeaders({\n 'Content-Type': 'application/json',\n Authorization: token,\n });\n }\n}\n","export class Iso11649Reference {\n FORMAT_RF = /^RF[0-9]{2}[A-Z0-9]{1,21}$/;\n CHARCODE_A = 'A'.charCodeAt(0);\n CHARCODE_0 = '0'.charCodeAt(0);\n constructor() {}\n validate(rawValue: any) {\n const value = rawValue.replace(/ /g, '');\n\n // console.log(value);\n if (!value.match(this.FORMAT_RF)) {\n return false;\n // throw new Error('Invalid Creditor Reference format; expecting: \\'' + this.FORMAT_RF + '\\', found: \\'' + value + '\\'');\n }\n\n return (\n this.computeWithoutCheck(\n value.substring(4, value.length) + value.substring(0, 4)\n ) === 1\n );\n }\n\n computeWithoutCheck(rawValue:any) {\n return this.mod97(rawValue);\n }\n\n mod97(value:any) {\n let buffer = 0;\n let charCode;\n\n for (let i = 0; i < value.length; ++i) {\n charCode = value.charCodeAt(i);\n buffer =\n charCode +\n (charCode >= this.CHARCODE_A\n ? buffer * 100 - this.CHARCODE_A + 10\n : buffer * 10 - this.CHARCODE_0);\n\n if (buffer > 1000000) {\n buffer %= 97;\n }\n }\n\n return buffer % 97;\n }\n}\nexport class ObjectUtils {\n static getValue(target: any, key: string): any {\n if (!target) {\n return undefined;\n }\n\n const keys = key.split('.');\n\n key = '';\n\n do {\n key += keys.shift();\n\n const value = target[key];\n\n if (value !== undefined && (typeof value === 'object' || !keys.length)) {\n target = value;\n key = '';\n } else if (!keys.length) {\n target = undefined;\n } else {\n key += '.';\n }\n } while (keys.length);\n\n return target;\n }\n\n static deepCopy(inputObj: any) {\n let newObj = inputObj;\n\n if (inputObj && typeof inputObj === 'object') {\n newObj =\n Object.prototype.toString.call(inputObj) === '[object Array]' ? [] : {};\n\n for (const i of Object.keys(inputObj)) {\n newObj[i] = this.deepCopy(inputObj[i]);\n }\n\n if (Object.prototype.toString.call(inputObj) === '[object Map]') {\n newObj = new Map();\n inputObj.forEach((v:any, k:any) => {\n newObj.set(k, this.deepCopy(v));\n });\n }\n }\n\n return newObj;\n }\n\n static copy(item: any): any {\n return JSON.parse(JSON.stringify(item));\n }\n\n static compare(\n a: number | string | Date,\n b: number | string | Date,\n isAsc: boolean\n ) {\n return (a < b ? -1 : 1) * (isAsc ? 1 : -1);\n }\n\n static merge(...objects: any[]): any {\n const result: any = {};\n\n objects.forEach((source: any) => {\n Object.keys(source).forEach((prop: any) => {\n if (prop in result && Array.isArray(result[prop])) {\n result[prop] = result[prop].concat(source[prop]);\n } else if (prop in result && typeof result[prop] === 'object') {\n result[prop] = ObjectUtils.merge(result[prop], source[prop]);\n } else {\n result[prop] = source[prop];\n }\n });\n });\n\n return result;\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { TranslateLoader } from '@ngx-translate/core';\nimport { forkJoin, Observable, of, throwError } from 'rxjs';\nimport { catchError, map, retry } from 'rxjs/operators';\nimport { ObjectUtils } from '../core/helpers/object-utils';\nexport class ComponentTranslationModel {\n name: string;\n path: string;\n json: string[];\n\n constructor(obj?: any) {\n this.name = obj && obj.name;\n this.path = obj && obj.path;\n this.json = (obj && obj.json) || [];\n }\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TranslateLoaderProvider implements TranslateLoader, OnDestroy {\n // private prefix = null;\n private suffix = '.json';\n private providers: ComponentTranslationModel[] = [];\n private queue: any[][] = [];\n\n constructor(private http: HttpClient) {}\n\n ngOnDestroy(): void {\n console.log('TRANSLATE DESTROY');\n }\n\n registerProvider(name: string, path: string) {\n const registered = this.providers.find(\n (provider) => provider.name === name\n );\n\n if (registered) {\n registered.path = path;\n } else {\n this.providers.push(\n new ComponentTranslationModel({ name: name, path: path })\n );\n }\n }\n\n providerRegistered(name: string): boolean {\n return this.providers.find((x) => x.name === name) ? true : false;\n }\n\n getComponentToFetch(lang: any): Array<Observable<any>> {\n const observableBatch: any = [];\n\n if (!this.queue[lang]) {\n this.queue[lang] = [];\n }\n\n this.providers.forEach((component:any) => {\n if (!this.isComponentInQueue(lang, component.name)) {\n this.queue[lang].push(component.name);\n\n const translationUrl = `${component.path}/${lang}${\n this.suffix\n }?v=${Date.now()}`;\n\n observableBatch.push(\n this.http.get(translationUrl).pipe(\n map((res) => {\n component.json[lang] = res;\n }),\n retry(3),\n catchError(() => throwError(`Failed to load ${translationUrl}`))\n )\n );\n }\n });\n\n return observableBatch;\n }\n\n init(lang: any) {\n if (this.queue[lang] === undefined) {\n this.queue[lang] = [];\n }\n }\n\n isComponentInQueue(lang: any, name: string) {\n return (this.queue[lang] || []).find((x) => x === name) ? true : false;\n }\n\n getFullTranslationJSON(lang: any): any {\n let result = {};\n\n this.providers\n .slice(0)\n .sort((a, b) => {\n if (a.name === 'app') {\n return 1;\n }\n\n if (b.name === 'app') {\n return -1;\n }\n\n return a.name.localeCompare(b.name);\n })\n .forEach((model) => {\n if (model.json && model.json[lang]) {\n result = ObjectUtils.merge(result, model.json[lang]);\n }\n });\n\n return result;\n }\n\n getTranslation(lang: string): Observable<any> {\n let hasFailures = false;\n const batch = [\n ...this.getComponentToFetch(lang).map((observable) => {\n return observable.pipe(\n catchError((error) => {\n hasFailures = true;\n\n return of(error);\n })\n );\n }),\n ];\n\n return new Observable((observer) => {\n if (batch.length > 0) {\n forkJoin(batch).subscribe(\n () => {\n const fullTranslation = this.getFullTranslationJSON(lang);\n\n if (fullTranslation) {\n observer.next(fullTranslation);\n }\n\n if (hasFailures) {\n observer.error('Failed to load some resources');\n } else {\n observer.complete();\n }\n },\n (err) => {\n observer.error('Failed to load some resources');\n }\n );\n } else {\n const fullTranslation = this.getFullTranslationJSON(lang);\n\n if (fullTranslation) {\n observer.next(fullTranslation);\n observer.complete();\n }\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { webSocket } from 'rxjs/webSocket';\nimport { from } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\n@Injectable({\n providedIn: 'root',\n})\nexport class webRtcProvider {\n pc: RTCPeerConnection = new RTCPeerConnection();\n subject: any;\n constructor() {}\n\n connect(id = 1) {\n this.subject = webSocket('wss://localhost:3000?id=' + id);\n }\n\n setup() {\n\n this.connect(1)\n\n // try {\n // this.pc = new RTCPeerConnection({\n // iceServers: [\n // { urls: 'stun:stun.services.mozilla.com' },\n // { urls: 'stun:stun.l.google.com:19302' },\n // ],\n // });\n // } catch (error) {\n // console.log(error);\n // this.pc = new RTCPeerConnection({\n // iceServers: [\n // { urls: 'stun:stun.services.mozilla.com' },\n // { urls: 'stun:stun.l.google.com:19302' },\n // ],\n // });\n // }\n\n // this.pc.onicecandidate = (event) => {\n // event.candidate\n // ? this.sendMessage({ ice: event.candidate })\n // : console.log('Sent All Ice');\n // };\n\n // if (this.pc) {\n // from(this.pc.createOffer())\n // .pipe(switchMap((offer) => from(this.pc.setLocalDescription(offer))))\n // .subscribe((data: any) => {\n // this.sendMessage({\n // type: 'offer',\n // sdp: this.pc.localDescription,\n // });\n // });\n // }\n }\n sendMessage(data: any) {\n console.log(data);\n this.subject.next(JSON.stringify(data));\n }\n}\n","import { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { DialogsModule } from '../dialogs/dialogs.module';\nimport { HttpErrorInterceptor } from '../providers/interceptor.provider';\nimport { NgxScandocAuthProvider } from '../providers/auth.provider';\nimport { ScanProvider } from '../providers/scan.provider';\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { AuthConfig, ScanConfig, ScanDataConfig } from '../core/interfaces/config';\nimport { NgxScandocCameraProvider } from '../providers/camera.provider';\nimport { AUTH_CONFIG_TOKEN, SCAN_CONFIG_TOKEN } from '../core/tokens/config.tokens';\nimport { NgxScanDocTranslationProvider } from '../providers/translation.provider';\n\n\n@NgModule({\n declarations: [],\n imports: [DialogsModule.forRoot()],\n exports: [DialogsModule],\n})\nexport class NgxScandocModule {\n static forRoot(\n config: ScanDataConfig\n ): ModuleWithProviders<NgxScandocModule> {\n return {\n ngModule: NgxScandocModule,\n providers: [\n\n { provide: AUTH_CONFIG_TOKEN, useValue: config.auth },\n ScanProvider,\n { provide:SCAN_CONFIG_TOKEN, useValue: config.scan },\n\n {\n provide: HTTP_INTERCEPTORS,\n useClass: HttpErrorInterceptor,\n multi: true,\n },\n NgxScanDocTranslationProvider,\n NgxScandocCameraProvider,\n // NgxScandocAuthProvider,\n ],\n };\n }\n\n constructor(){\n\n }\n}\n","/*\n * Public API Surface of ngx-scandoc\n */\nexport { CoreComponentsModule } from './core/components/components.module';\nexport { CorePipesModule } from './core/pipes/pipes.module';\nexport { MaterialModule } from './core/shared/material.module';\nexport { DialogsModule } from './dialogs/dialogs.module';\nexport { NgxScandocDialogsCoreProvider } from './dialogs/dialogs.core.provider';\nexport { AppFormModule } from './forms/form.module';\nexport { NgxScandocAuthProvider } from './providers/auth.provider';\nexport { HttpErrorInterceptor } from './providers/interceptor.provider';\nexport { NgxScandocFieldsProvider } from './providers/scan.form';\nexport { ScanProvider } from './providers/scan.provider';\nexport { NgxScanDocTranslationProvider } from './providers/translation.provider';\nexport { TranslateLoaderProvider } from './providers/translate-loader.provider';\nexport { webRtcProvider } from './providers/webrtc.provider';\nexport { WebcamComponent } from './core/components/webcam/webcam/webcam.component';\nexport { SafeResourceUrlPipe } from './core/pipes/safeResourceUrl.pipe';\nexport { BlankComponent } from './dialogs/components/blank/blank.component';\nexport { LoadingComponent } from './dialogs/components/loading/loading.component';\nexport { ScanProfileComponent } from './dialogs/components/scan-profile/scan-profile.component';\nexport { ScanSelfieComponent } from './dialogs/components/scan-selfie/scan-selfie.component';\nexport { TurnDocumentComponent } from './dialogs/components/turn-document/turn-document.component';\nexport { WebcamModule } from './core/components/webcam/webcam.module';\n\nexport { NgxScandocModule } from './lib/ngx-scandoc.module';\nexport { ScanComponent } from './core/components/scan/scan.component';\nexport { CameraSwitchComponent } from './core/components/camera-switch/camera-switch.component';\nexport { PromptManualComponent } from './dialogs/components/prompt-manual/prompt-manual.component';\nexport { ManualScanComponent } from './core/components/manual-scan/manual-scan.component';\n// export {NgxScandocCameraProvider} from './providers/camera.provider'\nexport {SCAN_CONFIG_TOKEN,AUTH_CONFIG_TOKEN} from './core/tokens/config.tokens'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3.NgxScandocCameraProvider","i4","tap","i2","i1.NgxScanDocTranslationProvider","i2.ScanProvider","i1.NgxScandocCameraProvider","i2.NgxScandocFieldsProvider","i3.ScanProvider","i8","switchMap","i2.LayoutProvider","i3","i4.WebcamComponent","i5","i6","i7","i9","i5.NgxScandocAuthProvider","i7.WebcamComponent","i10","i11.ScanResultsComponent","i12.ManualScanComponent","i13","i2.NgxScandocCameraProvider","i4.NgxScandocDialogsCoreProvider","i9.WebcamComponent","i10.CameraSwitchComponent","i11","i1.NgxScandocDialogsCoreProvider","i9.ScanComponent","i1.CoreComponentsModule"],"mappings":"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I;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAAI;AACT,YAAA,GAAG,EAAE,IAA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"}