{"version":3,"file":"ngx-barcode-scanner.mjs","sources":["../../../projects/ngx-barcode-scanner/src/lib/barcode-scanner-livestream/barcode-scanner-livestream.config.ts","../../../projects/ngx-barcode-scanner/src/lib/barcode-scanner-livestream/barcode-types.ts","../../../projects/ngx-barcode-scanner/src/lib/barcode-scanner-livestream/barcode-scanner-livestream.component.ts","../../../projects/ngx-barcode-scanner/src/lib/barcode-scanner-livestream/barcode-scanner-livestream.component.html","../../../projects/ngx-barcode-scanner/src/lib/barcode-scanner-livestream/barcode-scanner-livestream.module.ts","../../../projects/ngx-barcode-scanner/src/lib/barcode-scanner-livestream-overlay/barcode-scanner-livestream-overlay.component.ts","../../../projects/ngx-barcode-scanner/src/lib/barcode-scanner-livestream-overlay/barcode-scanner-livestream-overlay.component.html","../../../projects/ngx-barcode-scanner/src/lib/barcode-scanner-livestream-overlay/barcode-scanner-livestream-overlay.module.ts","../../../projects/ngx-barcode-scanner/src/public-api.ts","../../../projects/ngx-barcode-scanner/src/ngx-barcode-scanner.ts"],"sourcesContent":["import { QuaggaJSConfigObject } from '@ericblade/quagga2';\n\nexport const DEFAULT_CONFIG: QuaggaJSConfigObject = {\n    inputStream: {\n        name: 'Live',\n        type: 'LiveStream',\n        target: null,\n        constraints: {\n            width: { min: 640 },\n            height: { min: 480 },\n            aspectRatio: { min: 1, max: 2 },\n            facingMode: 'environment', // or user\n        },\n        singleChannel: false // true: only the red color-channel is read\n    },\n    locator: {\n        patchSize: 'medium',\n        halfSample: true\n    },\n    locate: true,\n    numOfWorkers: 4,\n    decoder: {\n        readers: ['code_128_reader']\n    }\n};\n\n","export const BARCODE_TYPES = [\n    'code_128',\n    'code_39',\n    'code_39_vin',\n    'ean',\n    'ean_extended',\n    'ean_8',\n    'upc',\n    'upc_e',\n    'codabar',\n    'i2of5',\n    '2of5',\n    'code_93'\n];\n\nexport function mapToReader(value: string | string[]) {\n    if (typeof value === 'string') {\n        checkBarCodeType(value);\n        return [ mapToBarcodeType(value)];\n    } else {\n        return value.map(val => {\n            checkBarCodeType(val);\n            return mapToBarcodeType(val);\n        });\n    }\n}\n\nfunction checkBarCodeType(value: string) {\n    if (!BARCODE_TYPES.some(t => t === value)) {\n        throw new Error(`This barcode type '${value}' is not valid.`);\n    }\n}\n\nfunction mapToBarcodeType(value) {\n    return `${value}_reader`;\n}\n","import {\n    Component, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, Output, ViewChild, ViewEncapsulation\n} from '@angular/core';\nimport Quagga, { QuaggaJSConfigObject, QuaggaJSResultObject } from '@ericblade/quagga2';\nimport defaultsDeep from 'lodash.defaultsdeep';\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { DEFAULT_CONFIG } from './barcode-scanner-livestream.config';\nimport { mapToReader } from './barcode-types';\n\n@Component({\n    selector: 'barcode-scanner-livestream',\n    templateUrl: './barcode-scanner-livestream.component.html',\n    styleUrls: ['./barcode-scanner-livestream.component.scss'],\n    encapsulation: ViewEncapsulation.None,\n})\nexport class BarcodeScannerLivestreamComponent implements OnChanges, OnDestroy {\n    // Inputs\n    @Input() type: string | string[];\n\n    @Input() deviceId: string;\n\n    @Input() maxWidth = '100%';\n\n    @Input() maxHeight: string;\n\n    @Input() config: Partial<QuaggaJSConfigObject>;\n\n    @Input() errorFilter: {\n        median?: number\n        threshold?: number\n    }\n\n    @Input() set torch(value: boolean) {\n      const track = Quagga.CameraAccess.getActiveTrack();\n      if (track) {\n        track.applyConstraints({\n          advanced: [{ torch: value } as any],\n        });\n      }\n    }\n\n    _valueChanges = new Subject();\n\n    // Outputs\n    @Output() valueChanges = new EventEmitter<QuaggaJSResultObject>();\n\n    @Output() started = new EventEmitter<boolean>();\n\n    @ViewChild('BarcodeScanner') barcodeScanner: ElementRef<HTMLDivElement>;\n\n    get _maxWidth(): string {\n        return this.maxWidth ? `${this.maxWidth}` : 'auto';\n    }\n\n    get _maxHeight(): string {\n        return this.maxHeight ? `${this.maxHeight}` : 'auto';\n    }\n\n    private _started = false;\n\n    get isStarted(): boolean {\n        return this._started;\n    }\n\n    private _destroyed: Subject<boolean> = new Subject<boolean>();\n\n    private configQuagga: QuaggaJSConfigObject;\n\n    constructor() {\n\n        this._valueChanges.pipe(\n            takeUntil(this._destroyed),\n            filter((result: QuaggaJSResultObject) => {\n                const errors: number[] = result.codeResult.decodedCodes\n                    .filter(_ => _.error !== undefined)\n                    .map(_ => _.error);\n\n\n                const median = this._getMedian(errors);\n\n                //Filter result when median and/or threshold parameters are provided\n                //Good result for code_128 : median = 0.08 and threshold = 0.1\n                return !this.errorFilter ||\n                    !(this.errorFilter.median && median > this.errorFilter.median\n                        || this.errorFilter.threshold && errors.some(err => err > this.errorFilter.threshold))\n            }),\n        ).subscribe(result => {\n            const drawingCtx = Quagga.canvas.ctx.overlay;\n\n            Quagga.ImageDebug.drawPath(result.line, {\n                x: 'x',\n                y: 'y',\n            }, drawingCtx, {\n                color: 'red',\n                lineWidth: 3,\n            });\n\n            this.valueChanges.next(result);\n        })\n    }\n\n    ngOnDestroy(): void {\n        this.stop();\n        this._destroyed.next(true);\n        this._destroyed.complete();\n    }\n\n    ngOnChanges(): void {\n        this.restart();\n    }\n\n    private _init(): Promise<void> {\n        return new Promise((resolve, reject) => {\n            Quagga.onProcessed((result) => this.onProcessed(result));\n\n            Quagga.onDetected((result) => this.onDetected(result));\n\n            this.configQuagga = defaultsDeep({}, this.config, DEFAULT_CONFIG);\n\n            this.configQuagga.inputStream.target = this.barcodeScanner.nativeElement;\n\n            if (this.type) {\n                this.configQuagga.decoder.readers = mapToReader(this.type);\n            }\n\n            if (this.deviceId) {\n                this.configQuagga.inputStream.constraints.deviceId = this.deviceId;\n            }\n\n            Quagga.init(this.configQuagga, (err) => {\n                if (err) {\n                    console.log(err);\n                    return reject(err);\n                }\n\n                resolve();\n            });\n        });\n    }\n\n    private _getMedian(arr: number[]): number {\n        arr.sort((a, b) => a - b);\n        const half = Math.floor(arr.length / 2);\n        if (arr.length % 2 === 1) // Odd length\n            return arr[half];\n        return (arr[half - 1] + arr[half]) / 2.0;\n    }\n\n\n    async start(): Promise<void> {\n        if (!this._started) {\n            await this._init();\n            Quagga.start();\n            this._started = true;\n            this.started.next(true);\n        }\n    }\n\n    stop(): void {\n        if (this._started) {\n            Quagga.stop();\n            this._started = false;\n            this.started.next(false);\n        }\n    }\n\n    restart(): void {\n        if (this._started) {\n            this.stop();\n            this.start();\n        }\n    }\n\n    onProcessed(result: QuaggaJSResultObject): any {\n        const drawingCtx = Quagga.canvas.ctx.overlay;\n        const drawingCanvas = Quagga.canvas.dom.overlay;\n\n        if (result) {\n            if (result.boxes) {\n                drawingCtx.clearRect(0, 0,\n                    parseInt(drawingCanvas.getAttribute('width'), 10),\n                    parseInt(drawingCanvas.getAttribute('height'), 10));\n                result.boxes.filter((box: any) => {\n                    return box !== result.box;\n                }).forEach((box: any) => {\n                    Quagga.ImageDebug.drawPath(box, {\n                        x: 0,\n                        y: 1,\n                    }, drawingCtx, {\n                        color: 'green',\n                        lineWidth: 2,\n                    });\n                });\n            }\n\n            if (result.box) {\n                Quagga.ImageDebug.drawPath(result.box, {\n                    x: 0,\n                    y: 1,\n                }, drawingCtx, {\n                    color: '#00F',\n                    lineWidth: 2,\n                });\n            }\n\n        }\n    }\n\n    onDetected(result: QuaggaJSResultObject): void {\n        this._valueChanges.next(result);\n    }\n\n}\n\n","<div\n  #BarcodeScanner\n  class=\"scanner\"\n  [hidden]=\"!isStarted\"\n  [style.max-height]=\"_maxHeight\"\n  [style.max-width]=\"_maxWidth\"\n>\n  <video [style.max-height]=\"_maxHeight\" [style.max-width]=\"_maxWidth\"></video>\n  <canvas\n    [style.max-height]=\"_maxHeight\"\n    [style.max-width]=\"_maxWidth\"\n    class=\"drawingBuffer\"\n  ></canvas>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { BarcodeScannerLivestreamComponent } from './barcode-scanner-livestream.component';\n\n@NgModule({\n    imports: [\n        CommonModule\n    ],\n    declarations: [\n        BarcodeScannerLivestreamComponent\n    ],\n    exports: [\n        BarcodeScannerLivestreamComponent\n    ]\n})\nexport class BarcodeScannerLivestreamModule { }\n","import {\n    Component, EventEmitter, Input, OnDestroy, Output, ViewChild\n} from '@angular/core';\nimport { QuaggaJSConfigObject } from '@ericblade/quagga2';\nimport { BarcodeScannerLivestreamComponent } from '../barcode-scanner-livestream/barcode-scanner-livestream.component';\n\n@Component({\n    selector: 'barcode-scanner-livestream-overlay',\n    templateUrl: './barcode-scanner-livestream-overlay.component.html',\n    styleUrls: ['./barcode-scanner-livestream-overlay.component.scss'],\n})\nexport class BarcodeScannerLivestreamOverlayComponent implements OnDestroy {\n\n    private _started = false;\n\n    get isStarted(): boolean {\n        return this._started;\n    }\n\n    // Inputs\n    @Input() type: string | string[];\n\n    @Input() deviceId: string;\n\n    @Input() width = '90vw';\n\n    @Input() maxWidth = '640px';\n\n    @Input() height: string;\n\n    @Input() maxHeight: string;\n\n    @Input() config: Partial<QuaggaJSConfigObject>;\n\n    @Output() valueChanges = new EventEmitter<string>();\n\n    @Output() started = new EventEmitter<boolean>();\n\n    @ViewChild(BarcodeScannerLivestreamComponent)\n    scanner: BarcodeScannerLivestreamComponent;\n\n    private _showScanner = false;\n\n    get showScanner(): boolean {\n        return this._showScanner;\n    }\n\n    ngOnDestroy(): void {\n        this.scanner.stop();\n    }\n\n    show(): void {\n        this._showScanner = true;\n        this.scanner.start();\n    }\n\n    hide(): void {\n        this._showScanner = false;\n        this.scanner.stop();\n    }\n\n    onStarted(value: boolean): void {\n        this._started = value;\n        this.started.next(value);\n    }\n\n    onValueChanges(result: string): void {\n        this.valueChanges.next(result);\n    }\n\n}\n","<div class=\"barcode-scanner-livestream-overlay\" [hidden]=\"!showScanner\">\n  <div\n    class=\"barcode-scanner-livestream-overlay-content\"\n    [style.width]=\"width\"\n    [style.max-width]=\"maxWidth\"\n    [style.height]=\"height\"\n    [style.max-height]=\"maxHeight\"\n  >\n    <div\n      class=\"barcode-scanner-livestream-overlay-close\"\n      *ngIf=\"isStarted\"\n      (click)=\"hide()\"\n    >\n      X\n    </div>\n    <barcode-scanner-livestream\n      [type]=\"type\"\n      [deviceId]=\"deviceId\"\n      [config]=\"config\"\n      (valueChanges)=\"onValueChanges($event)\"\n      (started)=\"onStarted($event)\"\n    ></barcode-scanner-livestream>\n  </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { BarcodeScannerLivestreamModule } from '../barcode-scanner-livestream/barcode-scanner-livestream.module';\nimport { BarcodeScannerLivestreamOverlayComponent } from './barcode-scanner-livestream-overlay.component';\n\n@NgModule({\n    imports: [\n        CommonModule,\n        BarcodeScannerLivestreamModule\n    ],\n    declarations: [\n        BarcodeScannerLivestreamOverlayComponent\n    ],\n    exports: [\n        BarcodeScannerLivestreamOverlayComponent\n    ]\n})\nexport class BarcodeScannerLivestreamOverlayModule { }\n\n","/*\n * Public API Surface of ngx-barcode-scanner\n */\n\nexport * from './lib/barcode-scanner-livestream-overlay/index';\nexport * from './lib/barcode-scanner-livestream/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.BarcodeScannerLivestreamComponent"],"mappings":"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"}