{"version":3,"file":"asoftwareworld-form-builder-form-control-qrcode.mjs","sources":["../../src/components/form-control/qrcode/qrcode-dialog.ts","../../src/components/form-control/qrcode/qrcode-dialog.html","../../src/components/form-control/qrcode/qrcode.ts","../../src/components/form-control/qrcode/qrcode.html","../../src/components/form-control/qrcode/qrcode-control.ts","../../src/components/form-control/qrcode/qrcode.module.ts","../../src/components/form-control/qrcode/public_api.ts","../../src/components/form-control/qrcode/asoftwareworld-form-builder-form-control-qrcode.ts"],"sourcesContent":["/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\n\r\nimport { Component, Inject, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { Constants } from '@asoftwareworld/form-builder/form-control/core';\r\n\r\n@Component({\r\n    selector: 'asw-qrcode-dialog',\r\n    templateUrl: './qrcode-dialog.html',\r\n    styleUrls: ['./qrcode-dialog.scss']\r\n})\r\nexport class AswQrCodeDialog implements OnInit {\r\n    constants: any = Constants;\r\n    value = 0.4;\r\n    errorCorrectionLevels = ['L', 'M', 'Q', 'H'];\r\n    modes = ['Numeric', 'Alphanumeric', 'Byte', 'Kanji'];\r\n    \r\n    aswFormatForm!: FormGroup;\r\n    aswDensityForm!: FormGroup;\r\n    aswQrLogoStyleForm!: FormGroup;\r\n\r\n    constructor(\r\n        private formBuilder: FormBuilder,\r\n        public dialogRef: MatDialogRef<AswQrCodeDialog>,\r\n        @Inject(MAT_DIALOG_DATA) public control: any) { }\r\n\r\n    ngOnInit(): void {\r\n        this.validateFormBuilder();\r\n        if (this.control) {\r\n            this.setData();\r\n        }\r\n        this.aswFormatForm.valueChanges.subscribe(val => {\r\n            if (this.aswFormatForm.invalid) {\r\n                return;\r\n            }\r\n            this.control.width = val.width;\r\n            this.control.height = val.height;\r\n            this.control.outerMargin = val.outerMargin;\r\n            this.control.value = val.value;\r\n        });\r\n        this.aswQrLogoStyleForm.valueChanges.subscribe(val => {\r\n            if (this.aswQrLogoStyleForm.invalid) {\r\n                return;\r\n            }\r\n            this.control.logoStyle = val;\r\n        });\r\n        this.aswDensityForm.valueChanges.subscribe(val => {\r\n            if (this.aswQrLogoStyleForm.invalid) {\r\n                return;\r\n            }\r\n            this.control.density = val;\r\n        });\r\n    }\r\n\r\n    validateFormBuilder(): void {\r\n        this.aswFormatForm = this.formBuilder.group({\r\n            value: [''],\r\n            width: [200, [Validators.required]],\r\n            height: [200, [Validators.required]],\r\n            outerMargin: [0],\r\n            column: ['']\r\n        });\r\n        this.aswDensityForm = this.formBuilder.group({\r\n            typeNumber: [0, [Validators.required]],\r\n            mode: ['Byte', [Validators.required]],\r\n            errorCorrectionLevel: ['Q']\r\n        });\r\n        this.aswQrLogoStyleForm = this.formBuilder.group({\r\n            hideBackgroundCircle: [true],\r\n            logoSize: [0.4, [Validators.required]],\r\n            logoMargin: [0]\r\n        });\r\n    }\r\n\r\n    setData(): void {\r\n        this.aswFormatForm.setValue({\r\n            value: this.control.value,\r\n            width: this.control.width,\r\n            height: this.control.height,\r\n            outerMargin: this.control.outerMargin,\r\n            column: this.control.column\r\n        });\r\n        this.aswDensityForm.patchValue({\r\n            typeNumber: this.control.density.typeNumber,\r\n            mode: this.control.density.mode,\r\n            errorCorrectionLevel: this.control.density.errorCorrectionLevel\r\n        });\r\n        this.aswQrLogoStyleForm.patchValue({\r\n            hideBackgroundCircle: this.control.logoStyle.hideBackgroundCircle,\r\n            logoSize: this.control.logoStyle.logoSize,\r\n            logoMargin: this.control.logoStyle.logoMargin\r\n        });\r\n    }\r\n\r\n    confirm(): void {\r\n        const option = JSON.parse(JSON.stringify({\r\n            width: this.aswFormatForm.value.width,\r\n            value: this.aswFormatForm.value.value,\r\n            height: this.aswFormatForm.value.height,\r\n            column: this.aswFormatForm.value.column,\r\n            outerMargin: this.aswFormatForm.value.outerMargin,\r\n            logo: this.control.logo,\r\n            density: this.control.density,\r\n            logoStyle: this.control.logoStyle,\r\n            controlType: this.control.controlType\r\n        }));\r\n        this.dialogRef.close(option);\r\n    }\r\n\r\n    insertImage(event: any): void {\r\n        this.control.logo = event.target.value;\r\n    }\r\n\r\n    onNoClick(): void {\r\n        this.dialogRef.close();\r\n    }\r\n}\r\n","<h4 mat-dialog-title>Edit Property</h4>\r\n<mat-dialog-content class=\"mat-typography\">\r\n    <div class=\"row p-2\">\r\n        <div class=\"col-md-4\">\r\n            <div class=\"sticky-top\">\r\n                <div class=\"row\">\r\n                    <div class=\"col-md-12\">\r\n                        <h4 class=\"text-center\">Preview</h4>\r\n                    </div>\r\n                    <div class=\"col-md-12 d-flex align-items-center justify-content-center\">\r\n                        <asw-qr-code #child [width]=\"control.width\" \r\n                            [height]=\"control.height\"\r\n                            [qrData]=\"control.value\" \r\n                            [outerMargin]=\"control.outerMargin\"\r\n                            [logo]=\"control.logo\" [allowEmptyString]=\"true\"\r\n                            [density]=\"control.density\" \r\n                            [logoStyle]=\"control.logoStyle\">\r\n                        </asw-qr-code>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <div class=\"col-md-8\">\r\n            <mat-accordion class=\"example-headers-align\" multi>\r\n                <mat-expansion-panel expanded=\"true\">\r\n                    <mat-expansion-panel-header>\r\n                        <mat-panel-title>\r\n                            Format\r\n                        </mat-panel-title>\r\n                    </mat-expansion-panel-header>\r\n                    <form [formGroup]=\"aswFormatForm\">\r\n                        <div class=\"row\">\r\n                            <div class=\"col-md-12\">\r\n                                <mat-form-field appearance=\"outline\" class=\"asw-mat-form-field\">\r\n                                    <mat-label>Data</mat-label>\r\n                                    <input matInput type=\"text\" name=\"value\" placeholder=\"QR code data\"\r\n                                        matTooltip=\"Enter QR code data\" formControlName=\"value\">\r\n                                </mat-form-field>\r\n                            </div>\r\n                            <div class=\"col-md-6\">\r\n                                <mat-form-field appearance=\"outline\" class=\"asw-mat-form-field\">\r\n                                    <mat-label>Width</mat-label>\r\n                                    <input matInput type=\"number\" name=\"width\" min=\"100\" max=\"600\" placeholder=\"QR code width\"\r\n                                        matTooltip=\"Enter QR code width\" formControlName=\"width\" required>\r\n                                        <mat-error *ngFor=\"let validation of constants.accountValidationMessages.width\">\r\n                                            <ng-container *ngIf=\"aswFormatForm.get('width')?.hasError(validation.type) && (aswFormatForm.get('width')?.dirty || aswFormatForm.get('width')?.touched)\">\r\n                                                {{validation.message}}\r\n                                            </ng-container>\r\n                                        </mat-error>\r\n                                </mat-form-field>\r\n                            </div>\r\n                            <div class=\"col-md-6\">\r\n                                <mat-form-field appearance=\"outline\" class=\"asw-mat-form-field\">\r\n                                    <mat-label>Height</mat-label>\r\n                                    <input matInput type=\"number\" name=\"height\" min=\"100\" max=\"600\"\r\n                                        placeholder=\"QR code height\" matTooltip=\"Enter QR code height\" formControlName=\"height\"\r\n                                        required>\r\n                                        <mat-error *ngFor=\"let validation of constants.accountValidationMessages.height\">\r\n                                            <ng-container *ngIf=\"aswFormatForm.get('height')?.hasError(validation.type) && (aswFormatForm.get('height')?.dirty || aswFormatForm.get('height')?.touched)\">\r\n                                                {{validation.message}}\r\n                                            </ng-container>\r\n                                        </mat-error>\r\n                                </mat-form-field>\r\n                            </div>\r\n                            <div class=\"col-md-6\">\r\n                                <mat-form-field appearance=\"outline\" class=\"asw-mat-form-field\">\r\n                                    <mat-label>Column Size</mat-label>\r\n                                    <mat-select formControlName=\"column\" matTooltip=\"Select column size\">\r\n                                        <mat-option *ngFor=\"let column of constants.columns\" [value]=\"column.value\">\r\n                                            {{column.label}}\r\n                                        </mat-option>\r\n                                    </mat-select>\r\n                                </mat-form-field>\r\n                            </div>\r\n                            <div class=\"col-md-6\">\r\n                                <mat-form-field appearance=\"outline\" class=\"asw-mat-form-field\">\r\n                                    <mat-label>Outer Margin</mat-label>\r\n                                    <input matInput type=\"number\" name=\"margin\" min=\"0\" max=\"30\" placeholder=\"QR code margin\"\r\n                                        matTooltip=\"Enter QR code margin\" formControlName=\"outerMargin\" required>\r\n                                </mat-form-field>\r\n                            </div>\r\n                        </div>\r\n                    </form>\r\n                </mat-expansion-panel>\r\n                <mat-expansion-panel>\r\n                    <mat-expansion-panel-header>\r\n                        <mat-panel-title>\r\n                            Density\r\n                        </mat-panel-title>\r\n                    </mat-expansion-panel-header>\r\n                    <form [formGroup]=\"aswDensityForm\">\r\n                        <div class=\"row\">\r\n                            <div class=\"col-md-12\">\r\n                                <div class=\"label-container\">\r\n                                    <label id=\"asw-name-label\" class=\"asw-name-label\">Type Number</label>\r\n                                    <label class=\"asw-value-label\">{{aswDensityForm.value.typeNumber}}</label>\r\n                                </div>\r\n                                <mat-slider min=\"0\" max=\"40\" step=\"1\" discrete class=\"asw-width-99\">\r\n                                    <input matSliderThumb formControlName=\"typeNumber\">\r\n                                </mat-slider>\r\n                            </div>\r\n                            <div class=\"col-md-6\">\r\n                                <mat-form-field appearance=\"outline\" class=\"asw-mat-form-field\">\r\n                                    <mat-label>Error Correction Level</mat-label>\r\n                                    <mat-select formControlName=\"errorCorrectionLevel\"\r\n                                        matTooltip=\"Select error correction level\">\r\n                                        <mat-option *ngFor=\"let ecl of errorCorrectionLevels\" [value]=\"ecl\">\r\n                                            {{ecl}}\r\n                                        </mat-option>\r\n                                    </mat-select>\r\n                                </mat-form-field>\r\n                            </div>\r\n                            <div class=\"col-md-6\">\r\n                                <mat-form-field appearance=\"outline\" class=\"asw-mat-form-field\">\r\n                                    <mat-label>Mode</mat-label>\r\n                                    <mat-select formControlName=\"mode\" matTooltip=\"Select qr code mode\">\r\n                                        <mat-option *ngFor=\"let m of modes\" [value]=\"m\">\r\n                                            {{m}}\r\n                                        </mat-option>\r\n                                    </mat-select>\r\n                                </mat-form-field>\r\n                            </div>\r\n                        </div>\r\n                    </form>\r\n                </mat-expansion-panel>\r\n                \r\n                \r\n                <mat-expansion-panel>\r\n                    <mat-expansion-panel-header>\r\n                        <mat-panel-title>\r\n                            Logo\r\n                        </mat-panel-title>\r\n                    </mat-expansion-panel-header>\r\n                    <form [formGroup]=\"aswQrLogoStyleForm\">\r\n                        <div class=\"row\">\r\n                            <div class=\"col-md-12\">\r\n                                <mat-form-field appearance=\"outline\" class=\"asw-mat-form-field\">\r\n                                    <mat-label>Logo url</mat-label>\r\n                                    <input matInput type=\"text\" name=\"logo\" placeholder=\"Logo\"\r\n                                        (change)=\"insertImage($event)\"\r\n                                        matTooltip=\"Enter Logo\" formControlName=\"logo\">\r\n                                </mat-form-field>\r\n                            </div>\r\n                            <ng-container *ngIf=\"control.logo\">\r\n                                <div class=\"col-md-12\">\r\n                                    <mat-slide-toggle color=\"primary\" formControlName=\"hideBackgroundCircle\">\r\n                                        Hide Background Dots\r\n                                    </mat-slide-toggle>\r\n                                </div>\r\n                                <div class=\"col-md-12\">\r\n                                    <div class=\"asw-label-container\">\r\n                                        <label id=\"asw-name-label\" class=\"asw-name-label\">Logo Size</label>\r\n                                        <label class=\"asw-value-label\">{{aswQrLogoStyleForm.value.logoSize}}</label>\r\n                                    </div>\r\n                                    <mat-slider min=\"0\" max=\"1\" step=\"0.1\" discrete class=\"asw-width-99\">\r\n                                        <input matSliderThumb formControlName=\"logoSize\">\r\n                                    </mat-slider>\r\n                                </div>\r\n                                <div class=\"col-md-12\">\r\n                                    <div class=\"label-container\">\r\n                                        <label id=\"asw-name-label\" class=\"asw-name-label\">Logo Margin</label>\r\n                                        <label class=\"asw-value-label\">{{aswQrLogoStyleForm.value.logoMargin}}</label>\r\n                                    </div>\r\n                                    <mat-slider min=\"0\" max=\"10\" step=\"1\" discrete class=\"asw-width-99\">\r\n                                        <input matSliderThumb formControlName=\"logoMargin\">\r\n                                    </mat-slider>\r\n                                </div>\r\n                            </ng-container>\r\n                        </div>\r\n                    </form>\r\n                </mat-expansion-panel>\r\n            </mat-accordion>\r\n        </div>\r\n    </div>\r\n</mat-dialog-content>\r\n<mat-dialog-actions align=\"end\">\r\n    <button type=\"button\"\r\n            class=\"btn btn-danger mr-2 me-2 mb-1\"\r\n            (click)=\"onNoClick()\">\r\n        No\r\n    </button>\r\n    <button type=\"submit\"\r\n            class=\"btn btn-primary mb-1\"\r\n            cdkFocusInitial (click)=\"confirm()\">\r\n        Yes\r\n    </button>\r\n</mat-dialog-actions>\r\n\r\n","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\n\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { AswConfirmDialog } from '@asoftwareworld/form-builder/form-control/confirm-dialog';\r\nimport { Constants } from '@asoftwareworld/form-builder/form-control/core';\r\nimport { QrCodeControl } from './qrcode-control';\r\nimport { AswQrCodeDialog } from './qrcode-dialog';\r\n\r\n@Component({\r\n    selector: 'asw-qrcode',\r\n    templateUrl: './qrcode.html'\r\n})\r\nexport class AswQrCode {\r\n\r\n    constants: any = Constants;\r\n    /**\r\n     * QR Code control\r\n     */\r\n    @Input() control: QrCodeControl | null = null;\r\n\r\n    /**\r\n     * QR Code control index to help update or delete button from drop area\r\n     */\r\n    @Input() controlIndex!: number;\r\n\r\n    @Input() isPreviewTemplate = false;\r\n\r\n    @Output() qrCodeUpdateEvent = new EventEmitter<{control: QrCodeControl, index: number}>();\r\n    @Output() qrCodeDeleteEvent = new EventEmitter<number>();\r\n    @Output() duplicateControl = new EventEmitter<QrCodeControl>();\r\n\r\n    constructor(public dialog: MatDialog) {\r\n    }\r\n\r\n    deleteQrCodeDialog(control: QrCodeControl, controlIndex: number): void {\r\n        const dialogRef = this.dialog.open(AswConfirmDialog, {\r\n            width: '350px',\r\n            data: { name: control.controlType, message: this.constants.messages.waringMessage }\r\n        });\r\n        dialogRef.afterClosed().subscribe(result => {\r\n            if (result !== undefined) {\r\n                this.qrCodeDeleteEvent.emit(controlIndex);\r\n            }\r\n        });\r\n    }\r\n\r\n    editQrCodeDialog(control: QrCodeControl, controlIndex: number): void {\r\n        const dialogRef = this.dialog.open(AswQrCodeDialog, {\r\n            disableClose: true,\r\n            width: '80%',\r\n            minWidth: '80vw',\r\n            data: control\r\n        });\r\n        dialogRef.afterClosed().subscribe(result => {\r\n            if (result !== undefined) {\r\n                this.qrCodeUpdateEvent.emit({control: result, index: controlIndex});\r\n            }\r\n        });\r\n    }\r\n\r\n    duplicateQrCodeControl(control: QrCodeControl): void {\r\n        this.duplicateControl.emit(control);\r\n    }\r\n}\r\n","<ng-container *ngIf=\"control as control\">\r\n    <asw-qr-code #parent [width]=\"control.width\" \r\n        [height]=\"control.height\"\r\n        [qrData]=\"control.value\" \r\n        [outerMargin]=\"control.outerMargin\"\r\n        [logo]=\"control.logo\" [allowEmptyString]=\"true\"\r\n        [density]=\"control.density\" \r\n        [logoStyle]=\"control.logoStyle\">\r\n    </asw-qr-code>\r\n    <ng-template [ngIf]=\"isPreviewTemplate\">\r\n        <div class=\"row mb-2\">\r\n            <div class=\"col-md-12\">\r\n                <button mat-icon-button \r\n                        type=\"button\" \r\n                        matTooltip=\"Duplicate\" \r\n                        [matTooltipPosition]=\"'below'\" \r\n                        (click)=\"duplicateQrCodeControl(control)\">\r\n                    <mat-icon>content_copy</mat-icon>\r\n                </button>\r\n                <button mat-icon-button \r\n                        type=\"button\" \r\n                        matTooltip=\"Edit\" \r\n                        [matTooltipPosition]=\"'below'\" \r\n                        (click)=\"editQrCodeDialog(control, controlIndex)\">\r\n                    <mat-icon>edit</mat-icon>\r\n                </button>\r\n                <button mat-icon-button \r\n                        type=\"button\" \r\n                        matTooltip=\"Delete\" \r\n                        [matTooltipPosition]=\"'below'\" \r\n                        (click)=\"deleteQrCodeDialog(control, controlIndex)\">\r\n                    <mat-icon>delete</mat-icon>\r\n                </button>\r\n            </div>                                            \r\n        </div>\r\n    </ng-template>\r\n</ng-container>","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\n\r\nimport { Density, LogoStyle } from '@asoftwareworld/qrcode';\r\n\r\nexport interface QrCodeControl {\r\n    id?: string;\r\n    guid?: string;\r\n    column: string;\r\n    value: string;\r\n    controlType?: string;\r\n    displayName: string;\r\n    height?: number;\r\n    width?: number;\r\n    logo?: string;\r\n    outerMargin?: number;\r\n    density?: Density;\r\n    logoStyle?: LogoStyle;\r\n}\r\n","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\n\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatSliderModule } from '@angular/material/slider';\r\nimport { AswConfirmDialogModule } from '@asoftwareworld/form-builder/form-control/confirm-dialog';\r\nimport { AswQrCodeModule } from '@asoftwareworld/qrcode';\r\n\r\nimport { AswQrCode } from './qrcode';\r\nimport { AswQrCodeDialog } from './qrcode-dialog';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\n\r\n@NgModule({\r\n    imports: [\r\n        CommonModule,\r\n        FormsModule,\r\n        ReactiveFormsModule,\r\n        MatInputModule,\r\n        MatSelectModule,\r\n        MatDialogModule,\r\n        MatSlideToggleModule,\r\n        MatTooltipModule,\r\n        MatDividerModule,\r\n        MatIconModule,\r\n        AswConfirmDialogModule,\r\n        AswQrCodeModule,\r\n        MatButtonModule,\r\n        MatSliderModule,\r\n        MatExpansionModule\r\n    ],\r\n    declarations: [\r\n        AswQrCode,\r\n        AswQrCodeDialog\r\n    ],\r\n    exports: [\r\n        AswQrCode,\r\n        AswQrCodeDialog\r\n    ]\r\n})\r\nexport class QrCodeModule { }\r\n","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\n\r\nexport * from './qrcode';\r\nexport * from './qrcode-dialog';\r\nexport * from './qrcode-control';\r\nexport * from './qrcode.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2","i3","i4","i5","i6"],"mappings":"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"}