{"version":3,"file":"asoftwareworld-form-builder-pro-preview-template.mjs","sources":["../../src/components/preview-template/preview-template.ts","../../src/components/preview-template/preview-template.html","../../src/components/preview-template/preview-template.module.ts","../../src/components/preview-template/public_api.ts","../../src/components/preview-template/asoftwareworld-form-builder-pro-preview-template.ts"],"sourcesContent":["/**\n * @license\n * Copyright ASW (A Software World) All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file\n */\n\nimport { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { Constants, NotificationService } from '@asoftwareworld/form-builder-pro/common';\nimport { ObjectUtils } from '@asoftwareworld/form-builder-pro/utils';\nimport jsPDF from 'jspdf';\nimport html2canvas from 'html2canvas';\nimport { CSSFrameworkEnum } from '@asoftwareworld/form-builder-pro/api';\nimport { AswTranslateService } from '@asoftwareworld/form-builder-pro/core';\n\n@Component({\n    selector: 'asw-preview-template',\n    templateUrl: './preview-template.html'\n})\nexport class AswPreviewTemplate implements OnInit {\n    constants: any = Constants;\n    @Input() formContainer: any[] = [];\n    @Input() currentLanguage = 'en';\n    @Input() cssFramework: CSSFrameworkEnum = CSSFrameworkEnum.Material;\n    @Output() buttonClick = new EventEmitter<any[]>();\n    @Output() aswModelChange = new EventEmitter<any>();\n    @ViewChild('printPdf') printPdf!: ElementRef;\n\n    constructor(\n        public translate: AswTranslateService,\n        private notificationService: NotificationService\n    ) {}\n\n    ngOnInit(): void {\n        this.translate.use(this.currentLanguage);\n    }\n\n    updatedControl(control: any): void {\n        this.updateControlFromContainer(control);\n    }\n\n    private updateControlFromContainer(draggedItem: any): void {\n        this.formContainer.filter((control: any, index: number) => {\n            if (control.guid === draggedItem.guid) {\n                this.formContainer.splice(index, 1, draggedItem);\n            } else {\n                this.updateChildControl(control, draggedItem);\n            }\n        });\n    }\n\n    private updateChildControl(control: any, draggedItem: any): void {\n        control.columns?.forEach((column: any) => {\n            column.components.forEach((component: any, childIndex: number) => {\n                if (component.guid === draggedItem.guid) {\n                    column.components.splice(childIndex, 1, draggedItem);\n                }\n                if (component.controlType === 'columns') {\n                    this.updateChildControl(component, draggedItem);\n                }\n            });\n        });\n    }\n\n    buttonClicked(type: string): void {\n        if (type === 'reset') {\n            this.formContainer = ObjectUtils.resetForm(this.formContainer);\n        } else {\n            const data = ObjectUtils.validateForm(this.formContainer);\n            if (!data.isFormValid) {\n                this.notificationService.openNotification('Please fill in the following required fields.' + ' \\n \\n' + data.labels.join(', '), 'Close');\n            } else {\n                this.buttonClick.emit(this.formContainer);\n            }\n        }\n    }\n\n    onSelectionChange(control: any): void {\n        this.aswModelChange.emit(control);\n    }\n    async makePdf() {\n        const pdf = new jsPDF('p', 'mm', 'a4');\n\n        html2canvas(this.printPdf.nativeElement, { scale: 1 }).then((canvas) => {\n            const imgData = canvas.toDataURL('image/png');\n            const imgWidth = 210;\n            const pageHeight = 295;\n            const imgHeight = (canvas.height * imgWidth) / canvas.width;\n            let heightLeft = imgHeight;\n            let position = 0;\n\n            pdf.addImage(imgData, 'PNG', 0, position, imgWidth, imgHeight);\n            heightLeft -= pageHeight;\n\n            while (heightLeft >= 0) {\n                position = heightLeft - imgHeight;\n                pdf.addPage();\n                pdf.addImage(imgData, 'PNG', 0, position, imgWidth, imgHeight);\n                heightLeft -= pageHeight;\n            }\n\n            window.open(pdf.output('bloburl'));\n        });\n\n        // const htmlElement = this.printPdf.nativeElement;\n        // const width = htmlElement.clientWidth;\n        // const height = htmlElement.clientHeight;\n        // // debugger\n        // // const pdf = new jsPDF({ unit: 'in', format: 'a0', orientation: 'portrait' });\n        // // pdf.html(htmlElement, {\n        // //     html2canvas: {\n        // //         scale: 0.3, //this was my solution, you have to adjust to your size\n        // //         width: 1000 //for some reason width does nothing\n        // //     },\n        // //     callback: (doc: any) => {\n        // //         window.open(doc.output(\"bloburl\"));\n        // //     }\n        // // });\n\n        // html2canvas(htmlElement).then(canvas => {\n        //     // Few necessary setting options\n        //     const imgWidth = 208;\n        //     const pageHeight = 295;\n        //     const imgHeight = canvas.height * imgWidth / canvas.width;\n        //     const heightLeft = imgHeight;\n\n        //     const contentDataURL = canvas.toDataURL('image/png');\n        //     const pdf = new jsPDF('p', 'mm', 'a4'); // A4 size page of PDF\n        //     const position = 0;\n        //     pdf.addImage(contentDataURL, 'PNG', 0, position, imgWidth, imgHeight);\n        //     window.open(pdf.output('bloburl')) // Generated PDF\n        // });\n        // var ratio = width / height;\n        // html2canvas(htmlElement)\n        //     .then((successRef: any) => {\n        //         var doc = new jsPDF('p', 'pt', 'a4');\n        //         var img = successRef.toDataURL('image/png');\n\n        //         // Add image Canvas to PDF\n        //         const bufferX = 5;\n        //         const bufferY = 5;\n        //         const imgProps = (<any>doc).getImageProperties(img);\n        //         const pdfWidth = doc.internal.pageSize.getWidth() - 2 * bufferX;\n        //         const pdfHeight = (imgProps.height * pdfWidth) / imgProps.width;\n        //         doc.addImage(\n        //             img,\n        //             'PNG',\n        //             bufferX,\n        //             bufferY,\n        //             pdfWidth,\n        //             pdfHeight,\n        //             undefined,\n        //             'FAST'\n        //         );\n        //         return doc;\n        //     })\n        //     .then((doc: any) => {\n        //         window.open(doc.output('bloburl'));\n        //     });\n    }\n}\n","<!-- <div class=\"asw-row\">\r\n    <div class=\"asw-col-md-12 text-right\">\r\n        <button mat-raised-button \r\n                type=\"button\"\r\n                class=\"asw-button asw-button-secondary asw-button-sm float-end mb-2\" (click)=\"makePdf()\">Download Pdf\r\n        </button>                \r\n    </div>\r\n</div> -->\r\n<div class=\"asw-row\" #printPdf>\r\n    <div class=\"asw-col-md-12\">\r\n        <mat-card>\r\n            <mat-card-content>\r\n                <ng-container *ngFor=\"let control of formContainer\">\r\n                    <ng-container *ngTemplateOutlet=\"childContainer, context:{control:control}\"></ng-container>\r\n                </ng-container>\r\n                <ng-template #childContainer let-control=\"control\">\r\n                    <ng-container [ngSwitch]=\"control.controlType\">\r\n                        <ng-container *ngIf=\"!control.columns; else layout\">\r\n                            <ng-container *ngSwitchCase=\"'autocomplete'\">\r\n                                <asw-autocomplete \r\n                                    [control]=\"control\"\r\n                                    [CSSFramework]=\"cssFramework\"\r\n                                    (selectionChange)=\"onSelectionChange($event)\">\r\n                                </asw-autocomplete>\r\n                            </ng-container>\r\n                            <ng-container *ngSwitchCase=\"'header'\">\r\n                                <asw-header [control]=\"control\" [CSSFramework]=\"cssFramework\">\r\n                                </asw-header>\r\n                            </ng-container>\r\n                            <ng-container *ngSwitchCase=\"'qr-code'\">\r\n                                <asw-qrcode [control]=\"control\" [CSSFramework]=\"cssFramework\">\r\n                                </asw-qrcode>\r\n                            </ng-container>\r\n                            <ng-container *ngSwitchCase=\"'image'\">\r\n                                <asw-image [control]=\"control\"\r\n                                    [CSSFramework]=\"cssFramework\"\r\n                                    (imageUpdateEvent)=\"updatedControl($event)\">\r\n                                </asw-image>\r\n                            </ng-container>\r\n                            <ng-container *ngSwitchCase=\"'textfield'\">\r\n                                <asw-textfield [control]=\"control\" [CSSFramework]=\"cssFramework\"\r\n                                    (aswModelChange)=\"onSelectionChange($event)\">\r\n                                </asw-textfield>\r\n                            </ng-container>\r\n                            <ng-container *ngSwitchCase=\"'email'\">\r\n                                <asw-textfield [control]=\"control\" [CSSFramework]=\"cssFramework\"\r\n                                    (aswModelChange)=\"onSelectionChange($event)\">\r\n                                </asw-textfield>\r\n                            </ng-container>\r\n                            <ng-container *ngSwitchCase=\"'url'\">\r\n                                <asw-textfield [control]=\"control\" [CSSFramework]=\"cssFramework\"\r\n                                    (aswModelChange)=\"onSelectionChange($event)\">\r\n                                </asw-textfield>\r\n                            </ng-container>\r\n                            <ng-container *ngSwitchCase=\"'phone-number'\">\r\n                                <asw-textfield [control]=\"control\" [CSSFramework]=\"cssFramework\"\r\n                                    (aswModelChange)=\"onSelectionChange($event)\">\r\n                                </asw-textfield>\r\n                            </ng-container>\r\n                            <ng-container *ngSwitchCase=\"'currency'\">\r\n                                <asw-number [control]=\"control\"\r\n                                    [formControls]=\"formContainer\"\r\n                                    [CSSFramework]=\"cssFramework\"\r\n                                    (aswModelChange)=\"onSelectionChange($event)\">\r\n                                </asw-number>\r\n                            </ng-container>\r\n                            <ng-container *ngSwitchCase=\"'textarea'\">\r\n                                <asw-textfield [control]=\"control\"\r\n                                    [CSSFramework]=\"cssFramework\"\r\n                                    (aswModelChange)=\"onSelectionChange($event)\">\r\n                                </asw-textfield>\r\n                            </ng-container>\r\n                            <ng-container *ngSwitchCase=\"'number'\">\r\n                                <asw-number [control]=\"control\"\r\n                                    [formControls]=\"formContainer\"\r\n                                    [CSSFramework]=\"cssFramework\"\r\n                                    (aswModelChange)=\"onSelectionChange($event)\">\r\n                                </asw-number>\r\n                            </ng-container>\r\n                            <ng-container *ngSwitchCase=\"'calculation'\">\r\n                                <asw-calculation [control]=\"control\" [CSSFramework]=\"cssFramework\"\r\n                                    (aswModelChange)=\"onSelectionChange($event)\">\r\n                                </asw-calculation>\r\n                            </ng-container>\r\n                            <ng-container *ngSwitchCase=\"'select'\">\r\n                                <asw-select [control]=\"control\" [CSSFramework]=\"cssFramework\"\r\n                                    (selectionChange)=\"onSelectionChange($event)\">\r\n                                </asw-select>\r\n                            </ng-container>\r\n                            <ng-container *ngSwitchCase=\"'multi-select'\">\r\n                                <asw-multi-select [control]=\"control\" [CSSFramework]=\"cssFramework\"\r\n                                    (selectionChange)=\"onSelectionChange($event)\">\r\n                                </asw-multi-select>\r\n                            </ng-container>\r\n                            <ng-container *ngSwitchCase=\"'radio'\">\r\n                                <asw-radio-button [control]=\"control\" [CSSFramework]=\"cssFramework\"\r\n                                    (selectionChange)=\"onSelectionChange($event)\">\r\n                                </asw-radio-button>\r\n                            </ng-container>\r\n                            <ng-container *ngSwitchCase=\"'checkbox'\">\r\n                                <asw-checkbox [control]=\"control\" [CSSFramework]=\"cssFramework\"\r\n                                    (selectionChange)=\"onSelectionChange($event)\">\r\n                                </asw-checkbox>\r\n                            </ng-container>\r\n                            <ng-container *ngSwitchCase=\"'datepicker'\">\r\n                                <asw-datepicker [control]=\"control\" [CSSFramework]=\"cssFramework\"\r\n                                    (dateChange)=\"onSelectionChange($event)\">\r\n                                </asw-datepicker>\r\n                            </ng-container>\r\n                            <ng-container *ngSwitchCase=\"'daterange'\">\r\n                                <asw-datepicker [control]=\"control\" [CSSFramework]=\"cssFramework\"\r\n                                    (dateChange)=\"onSelectionChange($event)\">\r\n                                </asw-datepicker>\r\n                            </ng-container>\r\n                            <ng-container *ngSwitchCase=\"'button'\">\r\n                                <asw-button [control]=\"control\" [CSSFramework]=\"cssFramework\"\r\n                                    (buttonClickEvent)=\"buttonClicked($event)\">\r\n                                </asw-button>\r\n                            </ng-container>\r\n                            <ng-container *ngSwitchCase=\"'paragraph'\">\r\n                                <asw-paragraph [control]=\"control\">\r\n                                </asw-paragraph>\r\n                            </ng-container>\r\n                            <ng-container *ngSwitchCase=\"'divider'\">\r\n                                <asw-divider [control]=\"control\">\r\n                                </asw-divider>\r\n                            </ng-container>\r\n                            <ng-container *ngSwitchCase=\"'slide-toggle'\">\r\n                                <asw-slide-toggle [control]=\"control\" [CSSFramework]=\"cssFramework\"\r\n                                    (selectionChange)=\"onSelectionChange($event)\">\r\n                                </asw-slide-toggle>\r\n                            </ng-container>\r\n                            <ng-container *ngSwitchCase=\"'gps'\">\r\n                                <asw-gps [control]=\"control\" [CSSFramework]=\"cssFramework\"\r\n                                    (gpsAddressChange)=\"onSelectionChange($event)\">\r\n                                </asw-gps>\r\n                            </ng-container>\r\n                            <ng-container *ngSwitchCase=\"'signature'\">\r\n                                <asw-signature [control]=\"control\" [CSSFramework]=\"cssFramework\">\r\n                                </asw-signature>\r\n                            </ng-container>\r\n                            <ng-container *ngSwitchCase=\"'drawing'\">\r\n                                <asw-drawing [control]=\"control\" [CSSFramework]=\"cssFramework\">\r\n                                </asw-drawing>\r\n                            </ng-container>\r\n                            <ng-container *ngSwitchCase=\"'fileupload'\">\r\n                                <asw-fileupload [control]=\"control\" [CSSFramework]=\"cssFramework\">\r\n                                </asw-fileupload>\r\n                            </ng-container>\r\n                        </ng-container>\r\n                        <ng-template #layout>\r\n                            <ng-container *ngSwitchCase=\"'columns'\">\r\n                                <div class=\"asw-row\">\r\n                                    <div class=\"asw-col-{{column.size}}-{{column.width}}\" *ngFor=\"let column of control.columns\">\r\n                                        <ng-container *ngFor=\"let component of column.components\">\r\n                                            <ng-container *ngTemplateOutlet=\"childContainer, context:{control:component}\"></ng-container>\r\n                                        </ng-container>\r\n                                    </div>\r\n                                </div>\r\n                            </ng-container>\r\n                        </ng-template>\r\n                    </ng-container>\r\n                </ng-template>\r\n            </mat-card-content>\r\n        </mat-card>\r\n    </div>\r\n</div>","/**\n * @license\n * Copyright ASW (A Software World) All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file\n */\n\nimport { CommonModule } from '@angular/common';\nimport { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\nimport { APP_INITIALIZER, NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { NotificationService } from '@asoftwareworld/form-builder-pro/common';\nimport { AswAutocompleteModule } from '@asoftwareworld/form-builder-pro/form-control/autocomplete';\nimport { AswButtonModule } from '@asoftwareworld/form-builder-pro/form-control/button';\nimport { AswCalculationModule } from '@asoftwareworld/form-builder-pro/form-control/calculation';\nimport { AswCheckboxModule } from '@asoftwareworld/form-builder-pro/form-control/checkbox';\nimport { AswDatepickerModule } from '@asoftwareworld/form-builder-pro/form-control/datepicker';\nimport { AswDividerModule } from '@asoftwareworld/form-builder-pro/form-control/divider';\nimport { AswDrawingModule } from '@asoftwareworld/form-builder-pro/form-control/drawing';\nimport { AswFileUploadModule } from '@asoftwareworld/form-builder-pro/form-control/fileupload';\nimport { AswGpsModule } from '@asoftwareworld/form-builder-pro/form-control/gps';\nimport { AswHeaderModule } from '@asoftwareworld/form-builder-pro/form-control/header';\nimport { AswImageModule } from '@asoftwareworld/form-builder-pro/form-control/image';\nimport { AswMultiSelectModule } from '@asoftwareworld/form-builder-pro/form-control/multi-select';\nimport { AswNumberModule } from '@asoftwareworld/form-builder-pro/form-control/number';\nimport { AswParagraphModule } from '@asoftwareworld/form-builder-pro/form-control/paragraph';\nimport { QrCodeModule } from '@asoftwareworld/form-builder-pro/form-control/qrcode';\nimport { AswRadioButtonModule } from '@asoftwareworld/form-builder-pro/form-control/radio-button';\nimport { AswSelectModule } from '@asoftwareworld/form-builder-pro/form-control/select';\nimport { AswSignatureModule } from '@asoftwareworld/form-builder-pro/form-control/signature';\nimport { AswSlideToggleModule } from '@asoftwareworld/form-builder-pro/form-control/slide-toggle';\nimport { AswTextFieldModule } from '@asoftwareworld/form-builder-pro/form-control/textfield';\nimport { AswPreviewTemplate } from './preview-template';\nimport { AswLicense, WatermarkService } from '@asoftwareworld/form-builder-pro/core';\n\nexport function initializeLicense(): () => Promise<void> {\n    return () => {\n        AswLicense.validateLicense();\n        return Promise.resolve();\n    };\n}\n\n@NgModule({\n    declarations: [AswPreviewTemplate],\n    exports: [AswPreviewTemplate],\n    imports: [\n        CommonModule,\n        FormsModule,\n        ReactiveFormsModule,\n        AswAutocompleteModule,\n        AswButtonModule,\n        AswCheckboxModule,\n        AswDatepickerModule,\n        AswDividerModule,\n        AswDrawingModule,\n        AswGpsModule,\n        AswHeaderModule,\n        AswImageModule,\n        AswMultiSelectModule,\n        AswParagraphModule,\n        AswSelectModule,\n        AswSignatureModule,\n        AswSlideToggleModule,\n        AswTextFieldModule,\n        AswRadioButtonModule,\n        MatSnackBarModule,\n        MatCardModule,\n        QrCodeModule,\n        AswNumberModule,\n        AswCalculationModule,\n        AswFileUploadModule\n    ],\n    providers: [\n        NotificationService,\n        {\n            provide: APP_INITIALIZER,\n            useFactory: initializeLicense,\n            multi: true\n        },\n        WatermarkService,\n        provideHttpClient(withInterceptorsFromDi())\n    ]\n})\nexport class AswPreviewTemplateModule {\n    constructor(private watermarkService: WatermarkService) {\n        // Call the showWatermark method when the module is loaded\n        const isValid = AswLicense.isDisplayWatermark();\n        if (isValid) {\n            this.watermarkService.showWatermark();\n        }\n    }\n}\n","/**\n * @license\n * Copyright ASW (A Software World) All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file\n */\n\nexport * from './preview-template';\nexport * from './preview-template.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}