{"version":3,"file":"altack-quar.mjs","sources":["../../../projects/quar/src/lib/quar-errors.ts","../../../projects/quar/src/lib/CameraStream.ts","../../../projects/quar/src/lib/quar.service.ts","../../../projects/quar/src/lib/quar.component.ts","../../../projects/quar/src/lib/quar.module.ts","../../../projects/quar/src/public-api.ts","../../../projects/quar/src/altack-quar.ts"],"sourcesContent":["export enum QuarErrors {\n    notSupported = 'notSupported',\n    noPermissions = 'noPermissions',\n    unknownError = 'unknownError'\n}\n","export class CameraStream {\n    private canvasElem!: HTMLCanvasElement;\n    private gtx!: CanvasRenderingContext2D;\n    get renderingContext(): CanvasRenderingContext2D {\n        if (this.gtx) {\n            return this.gtx;\n        }\n        if (!this.canvasElem) {\n            this.canvasElem = document.createElement('canvas');\n            this.canvasElem.style.width = `${this.videoElem.videoWidth}px`;\n            this.canvasElem.style.height = `${this.videoElem.videoHeight}px`;\n            this.canvasElem.width = this.videoElem.videoWidth;\n            this.canvasElem.height = this.videoElem.videoHeight;\n        }\n        this.gtx = this.canvasElem.getContext('2d') as CanvasRenderingContext2D;\n        return this.gtx;\n    }\n    getImageData(): ImageData {\n        this.renderingContext.clearRect(0, 0, this.videoElem.videoWidth, this.videoElem.videoHeight);\n        this.renderingContext.drawImage(\n            this.videoElem,\n            0,\n            0,\n            this.videoElem.videoWidth,\n            this.videoElem.videoHeight\n        );\n        return this.renderingContext.getImageData(0, 0, this.canvasElem.width, this.canvasElem.height);\n    }\n    isVideoReady(): boolean {\n        return this.videoElem.readyState === HTMLMediaElement.HAVE_ENOUGH_DATA;\n    }\n    stop(): CameraStream {\n        if (this.stream) {\n            const track = this.stream.getTracks()[0];\n            track.stop();\n            this.stream = null;\n            this.videoElem.srcObject = null;\n        }\n        return this;\n    }\n\n    constructor(public videoElem: HTMLVideoElement, public stream: MediaStream | null) {\n        this.videoElem.srcObject = stream;\n    }\n}\n","import { Injectable } from '@angular/core';\nimport jsQR, { Options } from 'jsqr';\nimport { QuarErrors } from './quar-errors';\nimport {\n    animationFrameScheduler,\n    BehaviorSubject,\n    from,\n    interval,\n    Observable,\n    Subject\n} from 'rxjs';\nimport { auditTime, filter, finalize, map, switchMap, take, takeUntil } from 'rxjs/operators';\nimport { CameraStream } from './CameraStream';\n\n@Injectable({providedIn: 'root'})\nexport class QuarService {\n    private videoConstraints: MediaStreamConstraints = {\n        video: { facingMode: 'environment' },\n        audio: false\n    };\n    private defaultOption: Options = { inversionAttempts: 'attemptBoth' };\n    private continue$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\n    private destroy$ = new Subject<void>();\n\n    constructor() {}\n\n    capture$(videoElement: HTMLVideoElement, options: Options = {}): Observable<string> {\n        const opts: Options = {\n            ...this.defaultOption,\n            ...options\n        };\n\n        if (!navigator.mediaDevices.getUserMedia) {\n            throw new Error(QuarErrors.notSupported);\n        }\n        return from(navigator.mediaDevices.getUserMedia(this.videoConstraints)).pipe(\n            map((stream: MediaStream): CameraStream => new CameraStream(videoElement, stream)),\n            switchMap((cameraStream: CameraStream) => {\n                return interval(0, animationFrameScheduler).pipe(\n                    auditTime(300),\n                    switchMap(() => this.continue$),\n                    filter(Boolean),\n                    map(() => this.decode(cameraStream, opts)),\n                    finalize(() => cameraStream.stop())\n                );\n            }),\n            filter((code: string) => !!code),\n            takeUntil(this.destroy$)\n        );\n    }\n\n    private decode(cameraStream: CameraStream, options: Options = {}): string {\n        if (cameraStream.isVideoReady()) {\n            const imageData: ImageData = cameraStream.getImageData();\n            const code = jsQR(imageData.data, imageData.width, imageData.height, options);\n            if (code) {\n                return code.data;\n            }\n        }\n        return '';\n    }\n\n    toggle(): void {\n        this.continue$.pipe(take(1)).subscribe((status: boolean) => {\n            this.continue$.next(!status);\n        });\n    }\n\n    pauseScanner(): void {\n        this.continue$.next(false);\n    }\n\n    resumeScanner(): void {\n        this.continue$.next(true);\n    }\n\n    isDeviceCapable(): boolean {\n        return this.isCanvasSupported() && this.isMediaSupported();\n    }\n\n    destroyScanner(): void {\n        this.destroy$.next();\n        this.destroy$.complete();\n    }\n\n    async requestPermissions(): Promise<boolean> {\n        if (this.isDeviceCapable()) {\n            try {\n                const stream = await navigator.mediaDevices.getUserMedia({ video: true, audio: false });\n                const track = stream.getTracks()[0];\n                track.stop();\n                return Promise.resolve(true);\n            } catch (e) {\n                return Promise.reject(QuarErrors.noPermissions);\n            }\n        } else {\n            return Promise.reject(QuarErrors.noPermissions);\n        }\n    }\n\n    async getVideoDevices(): Promise<MediaDeviceInfo[]> {\n        if (navigator.mediaDevices.enumerateDevices) {\n            const devices = await navigator.mediaDevices.enumerateDevices();\n            return devices.filter((item: MediaDeviceInfo) => item.kind === 'videoinput');\n        } else {\n            throw new Error('Current browser doest not support MediaStreamTrack.getSources');\n        }\n    }\n\n    private isCanvasSupported(): boolean {\n        const elem = document.createElement('canvas');\n        return !!(elem.getContext && elem.getContext('2d'));\n    }\n\n    private isMediaSupported(): boolean {\n        return navigator.mediaDevices && !!navigator.mediaDevices.getUserMedia;\n    }\n}\n","import {\n    Component,\n    ElementRef,\n    EventEmitter,\n    OnDestroy,\n    OnInit,\n    Output,\n    ViewChild\n} from '@angular/core';\nimport { from, Subject } from 'rxjs';\nimport { QuarErrors } from './quar-errors';\nimport { filter, switchMap, takeUntil } from 'rxjs/operators';\nimport { QuarService } from './quar.service';\n\n@Component({\n    selector: 'quar-scanner',\n    template: `\n        <video #video autoplay muted playsinline></video>\n    `,\n    styleUrls: ['./quar.component.scss']\n})\nexport class QuarComponent implements OnInit, OnDestroy {\n    @ViewChild('video') video!: ElementRef;\n    @Output() scanSuccess: EventEmitter<string> = new EventEmitter<string>();\n    @Output() scanError: EventEmitter<QuarErrors> = new EventEmitter<QuarErrors>();\n    private destroy$ = new Subject<void>();\n    constructor(private quarService: QuarService) {}\n\n    ngOnInit(): void {\n        this.resumeScanner();\n        from(this.quarService.requestPermissions())\n            .pipe(\n                filter(Boolean),\n                switchMap(() => this.quarService.capture$(this.video.nativeElement)),\n                takeUntil(this.destroy$)\n            )\n            .subscribe(\n                (result: string) => {\n                    this.scanSuccess.emit(result);\n                    this.pauseScanner();\n                },\n                (error: QuarErrors) => {\n                    this.scanError.emit(error);\n                }\n            );\n    }\n\n    resumeScanner(): void {\n        this.quarService.resumeScanner();\n    }\n\n    pauseScanner(): void {\n        this.quarService.pauseScanner();\n    }\n\n    ngOnDestroy(): void {\n        this.destroy$.next();\n        this.destroy$.complete();\n        this.quarService.destroyScanner();\n    }\n}\n","import { NgModule } from '@angular/core';\nimport { QuarComponent } from './quar.component';\nimport { CommonModule } from '@angular/common';\n\n\n\n@NgModule({\n  declarations: [\n    QuarComponent\n  ],\n  imports: [\n    CommonModule\n  ],\n  exports: [\n    QuarComponent\n  ]\n})\nexport class QuarModule { }\n","/*\n * Public API Surface of quar\n */\n\nexport * from './lib/quar.service';\nexport * from './lib/quar.component';\nexport * from './lib/quar.module';\nexport * from './lib/quar-errors';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.QuarService"],"mappings":"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"}