{"version":3,"file":"asoftwareworld-form-builder-pro-form-control-fileupload.mjs","sources":["../../src/components/form-control/fileupload/fileupload-dialog.ts","../../src/components/form-control/fileupload/fileupload-dialog.html","../../src/components/form-control/fileupload/asw-drag-drop.directive.ts","../../src/components/form-control/fileupload/fileupload.ts","../../src/components/form-control/fileupload/fileupload.html","../../src/components/form-control/fileupload/fileupload-control.ts","../../src/components/form-control/fileupload/fileupload.module.ts","../../src/components/form-control/fileupload/public_api.ts","../../src/components/form-control/fileupload/asoftwareworld-form-builder-pro-form-control-fileupload.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, Inject, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { Constants, Icons } from '@asoftwareworld/form-builder-pro/common';\nimport { FileUploadControl } from './fileupload-control';\n\n@Component({\n    selector: 'asw-fileupload-dialog',\n    templateUrl: './fileupload-dialog.html'\n})\nexport class AswFileUploadDialog implements OnInit {\n    constants: any = Constants;\n    icons = Icons;\n    aswFileUploadForm!: FormGroup;\n    control!: FileUploadControl;\n    constructor(\n        private formBuilder: FormBuilder,\n        public dialogRef: MatDialogRef<AswFileUploadDialog>,\n        @Inject(MAT_DIALOG_DATA) public data: any\n    ) {}\n\n    ngOnInit(): void {\n        this.control = this.data.control;\n        this.validateFormBuilder();\n        this.editProperty(this.control);\n    }\n\n    validateFormBuilder(): void {\n        this.aswFileUploadForm = this.formBuilder.group({\n            id: ['', [Validators.required]],\n            label: ['', [Validators.required, Validators.minLength(2)]],\n            minSize: [],\n            maxSize: [],\n            allowMultipleFile: [],\n            fileTypes: [],\n            isRequired: [false]\n        });\n    }\n\n    editProperty(control: FileUploadControl): void {\n        this.aswFileUploadForm.setValue({\n            id: control.id,\n            label: control.label,\n            minSize: control.minSize,\n            maxSize: control.maxSize,\n            allowMultipleFile: control.allowMultipleFile,\n            fileTypes: control.fileTypes,\n            isRequired: control.isRequired\n        });\n    }\n\n    onNoClick(): void {\n        this.dialogRef.close();\n    }\n\n    onSubmit(): void {\n        if (this.aswFileUploadForm.invalid) {\n            return;\n        }\n        this.aswFileUploadForm.value.controlType = this.control.controlType;\n        this.aswFileUploadForm.value.guid = this.control.guid;\n        this.aswFileUploadForm.value.value = this.control.value;\n        this.dialogRef.close(this.aswFileUploadForm.value);\n    }\n}\n","<div class=\"asw-dialog-header\">\r\n    <div class=\"asw-edit-row-dialog\">\r\n        <div class=\"asw-dialog-header clearfix\">\r\n            <div class=\"asw-dialog-about\">\r\n                <h1 mat-dialog-title class=\"asw-m-0\">{{'FormControl.Edit' | aswTranslate}} {{control.label | aswTranslate}}</h1>\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <button mat-icon-button (click)=\"onNoClick()\" aria-label=\"Close dialog\" class=\"asw-mt-2 asw-me-2\">\r\n        <div [innerHTML]=\"icons.close | aswSafeHtml\"></div>\r\n    </button>\r\n</div>\r\n<form [formGroup]=\"aswFileUploadForm\" (ngSubmit)=\"onSubmit()\">\r\n    <mat-dialog-content class=\"mat-typography\">\r\n        <div class=\"asw-row\">\r\n            <ng-container *ngIf=\"data.CSSFramework === 'material'; else bootstrap\">\r\n                <ng-container *ngIf=\"!data.propertyPersonalization.includes('uniqueId')\">\r\n                    <div class=\"asw-col-md-12\">\r\n                        <mat-form-field appearance=\"outline\" class=\"asw-width-100\">\r\n                            <mat-label>{{'FormControl.UniqueId' | aswTranslate}}</mat-label>\r\n                            <input matInput type=\"text\"\r\n                                name=\"id\"\r\n                                placeholder=\"{{'FormControl.UniqueId' | aswTranslate}}\"\r\n                                matTooltip=\"{{'FormControl.UniqueId' | aswTranslate}}\"\r\n                                formControlName=\"id\" required>\r\n                            <mat-error *ngFor=\"let validation of constants.accountValidationMessages.id\">\r\n                                <ng-container *ngIf=\"aswFileUploadForm.get('id')?.hasError(validation.type) && (aswFileUploadForm.get('id')?.dirty || aswFileUploadForm.get('id')?.touched)\">\r\n                                    {{validation.message | aswTranslate}}\r\n                                </ng-container>\r\n                            </mat-error>\r\n                        </mat-form-field>\r\n                    </div>\r\n                </ng-container>\r\n                <div class=\"asw-col-md-6\">\r\n                    <mat-form-field appearance=\"outline\" class=\"asw-width-100\">\r\n                        <mat-label>{{'FormControl.Label' | aswTranslate}}</mat-label>\r\n                        <input matInput type=\"text\"\r\n                            name=\"label\"\r\n                            placeholder=\"{{'FormControl.Label' | aswTranslate}}\"\r\n                            matTooltip=\"{{'FormControl.Label' | aswTranslate}}\"\r\n                            formControlName=\"label\" required>\r\n                        <mat-error *ngFor=\"let validation of constants.accountValidationMessages.label\">\r\n                            <ng-container *ngIf=\"aswFileUploadForm.get('label')?.hasError(validation.type) && (aswFileUploadForm.get('label')?.dirty || aswFileUploadForm.get('label')?.touched)\">\r\n                                {{validation.message | aswTranslate}}\r\n                            </ng-container>\r\n                        </mat-error>\r\n                    </mat-form-field>\r\n                </div>\r\n                <div class=\"asw-col-md-6\">\r\n                    <mat-form-field appearance=\"outline\" class=\"asw-width-100\">\r\n                        <mat-label>{{'FormControl.AllowMultipleFile' | aswTranslate}}</mat-label>\r\n                        <input matInput type=\"text\"\r\n                            name=\"allowMultipleFile\"\r\n                            placeholder=\"{{'FormControl.AllowMultipleFile' | aswTranslate}}\"\r\n                            matTooltip=\"{{'FormControl.AllowMultipleFile' | aswTranslate}}\"\r\n                            formControlName=\"allowMultipleFile\">\r\n                    </mat-form-field>\r\n                </div>\r\n                <div class=\"asw-col-md-6\">\r\n                    <mat-form-field appearance=\"outline\" class=\"asw-width-100\">\r\n                        <mat-label>{{'FormControl.MinSize' | aswTranslate}}</mat-label>\r\n                        <input matInput type=\"text\"\r\n                            name=\"minSize\"\r\n                            placeholder=\"{{'FormControl.MinSize' | aswTranslate}}\"\r\n                            matTooltip=\"{{'FormControl.MinSize' | aswTranslate}}\"\r\n                            formControlName=\"minSize\">\r\n                    </mat-form-field>\r\n                </div>\r\n                <div class=\"asw-col-md-6\">\r\n                    <mat-form-field appearance=\"outline\" class=\"asw-width-100\">\r\n                        <mat-label>{{'FormControl.MaxSize' | aswTranslate}}</mat-label>\r\n                        <input matInput type=\"text\"\r\n                            name=\"maxSize\"\r\n                            placeholder=\"{{'FormControl.MaxSize' | aswTranslate}}\"\r\n                            matTooltip=\"{{'FormControl.MaxSize' | aswTranslate}}\"\r\n                            formControlName=\"maxSize\">\r\n                    </mat-form-field>\r\n                </div>\r\n                <div class=\"asw-col-md-12\">\r\n                    <mat-form-field appearance=\"outline\" class=\"asw-width-100\">\r\n                        <mat-label>{{'FormControl.FileTypes' | aswTranslate}}</mat-label>\r\n                        <textarea matInput type=\"text\"\r\n                            name=\"fileTypes\"\r\n                            placeholder=\"{{'FormControl.FileTypes' | aswTranslate}}\"\r\n                            matTooltip=\"{{'FormControl.FileTypes' | aswTranslate}}\"\r\n                            formControlName=\"fileTypes\">\r\n                        </textarea>\r\n                    </mat-form-field>\r\n                </div>\r\n            </ng-container>\r\n            <ng-template #bootstrap>\r\n                <ng-container *ngIf=\"!data.propertyPersonalization.includes('uniqueId')\">\r\n                    <div class=\"asw-col-md-12\">\r\n                        <div class=\"asw-mb-3\">\r\n                            <label class=\"asw-input-label asw-invalid-label {{(aswFileUploadForm.get('id')?.invalid && (aswFileUploadForm.get('id')?.dirty || aswFileUploadForm.get('id')?.touched)) ? 'asw-red-color' : ''}}\">{{'FormControl.UniqueId' | aswTranslate}}</label>\r\n                            <input type=\"text\"\r\n                                name=\"id\"\r\n                                class=\"asw-input-control\"\r\n                                [class.asw-is-invalid]=\"(aswFileUploadForm.get('id')?.invalid && (aswFileUploadForm.get('id')?.dirty || aswFileUploadForm.get('id')?.touched))\"\r\n                                matTooltip=\"{{'FormControl.UniqueId' | aswTranslate}}\"\r\n                                formControlName=\"id\" required>\r\n                            <div *ngFor=\"let validation of constants.accountValidationMessages.id\" class=\"invalid-feedback\">\r\n                                <ng-container *ngIf=\"aswFileUploadForm.get('id')?.hasError(validation.type) && (aswFileUploadForm.get('id')?.dirty || aswFileUploadForm.get('id')?.touched)\">\r\n                                    {{validation.message | aswTranslate}}\r\n                                </ng-container>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </ng-container>\r\n                <div class=\"asw-col-md-6\">\r\n                    <div class=\"asw-mb-3\">\r\n                        <label class=\"asw-input-label asw-invalid-label {{(aswFileUploadForm.get('label')?.invalid && (aswFileUploadForm.get('label')?.dirty || aswFileUploadForm.get('label')?.touched)) ? 'asw-red-color' : ''}}\">{{'FormControl.Label' | aswTranslate}}</label>\r\n                        <input type=\"text\"\r\n                            name=\"label\"\r\n                            class=\"asw-input-control\"\r\n                            [class.asw-is-invalid]=\"(aswFileUploadForm.get('label')?.invalid && (aswFileUploadForm.get('label')?.dirty || aswFileUploadForm.get('label')?.touched))\"\r\n                            matTooltip=\"{{'FormControl.Label' | aswTranslate}}\"\r\n                            formControlName=\"label\" required>\r\n                        <div *ngFor=\"let validation of constants.accountValidationMessages.label\" class=\"invalid-feedback\">\r\n                            <ng-container *ngIf=\"aswFileUploadForm.get('label')?.hasError(validation.type) && (aswFileUploadForm.get('label')?.dirty || aswFileUploadForm.get('label')?.touched)\">\r\n                                {{validation.message | aswTranslate}}\r\n                            </ng-container>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div class=\"asw-col-md-6\">\r\n                    <div class=\"asw-mb-3\">\r\n                        <label class=\"asw-input-label\">{{'FormControl.AllowMultipleFile' | aswTranslate}}</label>\r\n                        <input type=\"text\"\r\n                            name=\"allowMultipleFile\"\r\n                            class=\"asw-input-control\"\r\n                            matTooltip=\"{{'FormControl.AllowMultipleFile' | aswTranslate}}\"\r\n                            formControlName=\"allowMultipleFile\">\r\n                    </div>\r\n                </div>\r\n                <div class=\"asw-col-md-6\">\r\n                    <div class=\"asw-mb-3\">\r\n                        <label class=\"asw-input-label\">{{'FormControl.MinSize' | aswTranslate}}</label>\r\n                        <input type=\"text\"\r\n                            name=\"minSize\"\r\n                            class=\"asw-input-control\"\r\n                            matTooltip=\"{{'FormControl.MinSize' | aswTranslate}}\"\r\n                            formControlName=\"minSize\">\r\n                    </div>\r\n                </div>\r\n                <div class=\"asw-col-md-6\">\r\n                    <div class=\"asw-mb-3\">\r\n                        <label class=\"asw-input-label\">{{'FormControl.MaxSize' | aswTranslate}}</label>\r\n                        <input type=\"text\"\r\n                            name=\"maxSize\"\r\n                            class=\"asw-input-control\"\r\n                            matTooltip=\"{{'FormControl.MaxSize' | aswTranslate}}\"\r\n                            formControlName=\"maxSize\">\r\n                    </div>\r\n                </div>\r\n                <div class=\"asw-col-md-12\">\r\n                    <div class=\"asw-mb-3\">\r\n                        <label class=\"asw-input-label\">{{'FormControl.FileTypes' | aswTranslate}}</label>\r\n                        <textarea type=\"text\"\r\n                            name=\"fileTypes\"\r\n                            class=\"asw-input-control\"\r\n                            matTooltip=\"{{'FormControl.FileTypes' | aswTranslate}}\"\r\n                            formControlName=\"fileTypes\">\r\n                        </textarea>\r\n                    </div>\r\n                </div>\r\n            </ng-template>\r\n        </div>\r\n    </mat-dialog-content>\r\n    <mat-dialog-actions align=\"end\">\r\n        <button type=\"button\"\r\n                class=\"asw-button asw-button-danger asw-mb-1 asw-me-2\"\r\n                (click)=\"onNoClick()\">\r\n            {{'FormControl.No' | aswTranslate}}\r\n        </button>\r\n        <button type=\"submit\"\r\n                class=\"asw-button asw-button-primary asw-mb-1\"\r\n                cdkFocusInitial>\r\n            {{'FormControl.Yes' | aswTranslate}}\r\n        </button>\r\n    </mat-dialog-actions>\r\n</form>\r\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 */\nimport { Directive, EventEmitter, HostBinding, HostListener, Output } from '@angular/core';\n\n@Directive({\n    selector: '[aswDragAndDrop]'\n})\nexport class AswDragAndDropDirective {\n    @HostBinding('class.fileover') fileOver = false;\n    @Output() fileDropped = new EventEmitter<any>();\n\n    // Dragover listener\n    @HostListener('dragover', ['$event']) onDragOver(evt: any): void {\n        evt.preventDefault();\n        evt.stopPropagation();\n        this.fileOver = true;\n    }\n\n    // Dragleave listener\n    @HostListener('dragleave', ['$event']) public onDragLeave(evt: any): void {\n        evt.preventDefault();\n        evt.stopPropagation();\n        this.fileOver = false;\n    }\n\n    // Drop listener\n    @HostListener('drop', ['$event']) public ondrop(evt: any): void {\n        evt.preventDefault();\n        evt.stopPropagation();\n        this.fileOver = false;\n        const files = evt.dataTransfer.files;\n        if (files.length > 0) {\n            this.fileDropped.emit(files);\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 */\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { CSSFrameworkEnum } from '@asoftwareworld/form-builder-pro/api';\nimport { Constants, Icons, NotificationService } from '@asoftwareworld/form-builder-pro/common';\nimport { AswConfirmDialog } from '@asoftwareworld/form-builder-pro/form-control/confirm-dialog';\nimport { ObjectUtils } from '@asoftwareworld/form-builder-pro/utils';\nimport { FileUploadControl } from './fileupload-control';\nimport { AswFileUploadDialog } from './fileupload-dialog';\n\n@Component({\n    selector: 'asw-fileupload',\n    templateUrl: './fileupload.html',\n    styleUrls: ['./fileupload.scss']\n})\nexport class AswFileUpload {\n    constants: any = Constants;\n    icons = Icons;\n    @Input() control: any;\n    @Input() CSSFramework: CSSFrameworkEnum = CSSFrameworkEnum.Material;\n    @Input() isPreviewTemplate = false;\n    @Input() propertyPersonalization: string[] = [];\n\n    @Output() fileUploadUpdateEvent = new EventEmitter<FileUploadControl>();\n    @Output() fileUploadDeleteEvent = new EventEmitter<FileUploadControl>();\n    @Output() onfileUploadChange = new EventEmitter<FileUploadControl>();\n    @Output() duplicateControl = new EventEmitter<FileUploadControl>();\n\n    constructor(\n        public dialog: MatDialog,\n        private notificationService: NotificationService\n    ) {}\n\n    /**\n     * on file drop handler\n     */\n    onFileDropped(event: any): void {\n        this.validateFileList(event);\n    }\n\n    /**\n     * handle file from browsing\n     */\n    fileBrowseHandler(event: any): void {\n        this.validateFileList(event.target?.files);\n    }\n\n    /**\n     * Delete file from files list\n     * @param index (File index)\n     */\n    deleteFile(index: number): void {\n        this.control.value.splice(index, 1);\n        this.onfileUploadChange.emit();\n    }\n\n    /**\n     * Simulate the upload process\n     */\n    uploadFilesSimulator(index: number): void {\n        setTimeout(() => {\n            if (index === this.control.value.length) {\n                return;\n            } else {\n                const progressInterval = setInterval(() => {\n                    if (this.control.value[index].progress === 100) {\n                        clearInterval(progressInterval);\n                        this.uploadFilesSimulator(index + 1);\n                    } else {\n                        this.control.value[index].progress += 5;\n                    }\n                }, 200);\n            }\n        }, 1000);\n    }\n\n    /**\n     * Convert Files list to normal array list\n     * @param files (Files List)\n     */\n    private prepareFilesList(files: Array<any>): void {\n        for (const item of files) {\n            item.progress = 0;\n            this.control.value.push(item);\n            this.onfileUploadChange.emit(item);\n        }\n        this.uploadFilesSimulator(0);\n    }\n\n    private validateFileList(files: Array<any>): void {\n        if (!ObjectUtils.missingOrEmpty(this.control.allowMultipleFile)) {\n            const fileCount = files.length + this.control.value.length;\n            if (!(fileCount <= Number(this.control.allowMultipleFile))) {\n                this.notificationService.openNotification('Only ' + this.control.allowMultipleFile + ' files are allowed to upload.', 'Close');\n                return;\n            }\n        }\n        const fileTypes = this.control.fileTypes.split(',');\n        for (const item of files) {\n            if (!ObjectUtils.missingOrEmpty(this.control.fileTypes)) {\n                const extension = item.name.split('.')[1];\n                if (!fileTypes.find((x: string) => x.trim() === extension)) {\n                    this.notificationService.openNotification(item.name + ' has invalid extension. Only ' + this.control.fileTypes + ' are allowed.', 'Close');\n                    return;\n                }\n            }\n            if (!ObjectUtils.missingOrEmpty(this.control.minSize)) {\n                const minFileSize = Number(this.control.minSize) * 1000;\n                if (item.size <= minFileSize) {\n                    this.notificationService.openNotification(item.name + ' is too small, minimum file size is ' + this.control.minSize + 'KB.', 'Close');\n                    return;\n                }\n            }\n            if (!ObjectUtils.missingOrEmpty(this.control.maxSize)) {\n                const maxFileSize = Number(this.control.maxSize) * 1000;\n                if (item.size >= maxFileSize) {\n                    this.notificationService.openNotification(item.name + ' is too large, maximum file size is ' + this.control.maxSize + 'KB.', 'Close');\n                    return;\n                }\n            }\n        }\n        this.prepareFilesList(files);\n    }\n\n    /**\n     * format bytes\n     * @param bytes (File size in bytes)\n     * @param decimals (Decimals point)\n     */\n    formatBytes(bytes: any, decimals: any): any {\n        if (bytes === 0) {\n            return '0 Bytes';\n        }\n        const k = 1024;\n        const dm = decimals <= 0 ? 0 : decimals || 2;\n        const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n        const i = Math.floor(Math.log(bytes) / Math.log(k));\n        return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\n    }\n\n    editFileUploadDialog(control: FileUploadControl): void {\n        const dialogRef = this.dialog.open(AswFileUploadDialog, {\n            width: '50%',\n            disableClose: true,\n            data: { control, CSSFramework: this.CSSFramework, propertyPersonalization: this.propertyPersonalization }\n        });\n        dialogRef.afterClosed().subscribe((result) => {\n            if (result !== undefined) {\n                this.fileUploadUpdateEvent.emit(result);\n            }\n        });\n    }\n\n    deleteFileUploadDialog(control: any): void {\n        const dialogRef = this.dialog.open(AswConfirmDialog, {\n            width: '350px',\n            data: { name: control.controlType, message: this.constants.messages.waringMessage }\n        });\n        dialogRef.afterClosed().subscribe((result) => {\n            if (result !== undefined) {\n                this.fileUploadDeleteEvent.emit(control);\n            }\n        });\n    }\n\n    duplicateFileUploadControl(control: any): void {\n        this.duplicateControl.emit(control);\n    }\n}\n","<div class=\"asw-upload-container\" aswDragAndDrop (fileDropped)=\"onFileDropped($event)\">\r\n\t<div class=\"asw-drop-area\">\r\n\t\t<input type=\"file\" #fileDropRef id=\"fileDropRef\" multiple (change)=\"fileBrowseHandler($event)\" />\r\n\t\t<span>\r\n\t\t\t{{'Drag and drop files here or' | aswTranslate}}\r\n\t\t\t<a href=\"javascript:void(0);\" for=\"fileDropRef\"><u>{{'Browse' | aswTranslate}}</u></a>\r\n\t\t</span>\r\n\t</div>\r\n</div>\r\n<ul class=\"asw-file-lists\">\r\n\t<li class=\"asw-single-list\" *ngFor=\"let file of control.value; let i = index\">\r\n\t\t<span class=\"asw-file-name\" [ngStyle]=\"{'color':file?.progress === 100 ? 'green' : '' }\">{{ file?.name }}</span>\r\n\t\t<span class=\"asw-file-size\" style=\"display: inline-block;\">{{ formatBytes(file?.size, undefined) }}</span>\r\n\t\t<span class=\"asw-delete-svg\" (click)=\"deleteFile(i)\" [innerHTML]=\"icons.delete2 | aswSafeHtml\"></span>\r\n\t\t<ng-container *ngIf=\"file?.progress < 100\">\r\n\t\t\t<mat-progress-bar mode=\"determinate\" [value]=\"file?.progress\"></mat-progress-bar>\r\n\t\t</ng-container>\r\n\t</li>\r\n</ul>\r\n<div class=\"asw-row\" *ngIf=\"isPreviewTemplate\">\r\n    <div class=\"asw-col-md-12\" align=\"right\">\r\n        <button mat-icon-button \r\n                type=\"button\" \r\n                matTooltip=\"{{'FormControl.Duplicate' | aswTranslate}}\" \r\n                [matTooltipPosition]=\"'below'\" \r\n                (click)=\"duplicateFileUploadControl(control)\">\r\n            <div [innerHTML]=\"icons.contentCopy | aswSafeHtml\"></div>\r\n        </button>\r\n        <button mat-icon-button \r\n                type=\"button\" \r\n                matTooltip=\"{{'FormControl.Edit' | aswTranslate}}\" \r\n                [matTooltipPosition]=\"'below'\" \r\n                (click)=\"editFileUploadDialog(control)\">\r\n            <div [innerHTML]=\"icons.edit | aswSafeHtml\"></div>\r\n        </button>\r\n        <button mat-icon-button \r\n                type=\"button\" \r\n                matTooltip=\"{{'FormControl.Delete' | aswTranslate}}\" \r\n                [matTooltipPosition]=\"'below'\" \r\n                (click)=\"deleteFileUploadDialog(control)\">\r\n            <div [innerHTML]=\"icons.delete2 | aswSafeHtml\"></div>\r\n        </button>\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\nexport interface FileUploadControl {\n    id: string;\n    guid: string;\n    label: string;\n    controlType: string;\n    minSize: string;\n    maxSize: string;\n    fileTypes: string;\n    allowMultipleFile: string;\n    isRequired: boolean;\n    value: File[];\n}\n\nexport interface File {\n    progress: number;\n    lastModified: number;\n    lastModifiedDate: Date;\n    name: string;\n    size: number;\n    type: string;\n    webkitRelativePath: string;\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\nimport { CommonModule } from '@angular/common';\nimport { NgModule, APP_INITIALIZER } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { AswPipeModule, MaterialModule, NotificationService } from '@asoftwareworld/form-builder-pro/common';\nimport { AswLicense, AswTranslateModule, WatermarkService } from '@asoftwareworld/form-builder-pro/core';\nimport { AswConfirmDialogModule } from '@asoftwareworld/form-builder-pro/form-control/confirm-dialog';\nimport { AswDragAndDropDirective } from './asw-drag-drop.directive';\n\nimport { AswFileUpload } from './fileupload';\nimport { AswFileUploadDialog } from './fileupload-dialog';\n\nexport function initializeLicense(): () => Promise<void> {\n    return () => {\n        AswLicense.validateLicense();\n        return Promise.resolve();\n    };\n}\n\n@NgModule({\n    imports: [CommonModule, FormsModule, ReactiveFormsModule, MaterialModule, AswConfirmDialogModule, AswTranslateModule, AswPipeModule],\n    declarations: [AswFileUpload, AswFileUploadDialog, AswDragAndDropDirective],\n    exports: [AswFileUpload, AswFileUploadDialog, AswDragAndDropDirective],\n    providers: [\n        NotificationService,\n        {\n            provide: APP_INITIALIZER,\n            useFactory: initializeLicense,\n            multi: true\n        },\n        WatermarkService\n    ]\n})\nexport class AswFileUploadModule {\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 './fileupload';\nexport * from './fileupload-dialog';\nexport * from './asw-drag-drop.directive';\nexport * from './fileupload-control';\nexport * from './fileupload.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i9","i1","i2","i5","i6","i7.AswDragAndDropDirective"],"mappings":"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"}