{"version":3,"file":"ng-new-files-uploader.mjs","sources":["../../../projects/ng-file-upload/src/lib/ng-file-upload.service.ts","../../../projects/ng-file-upload/src/lib/ng-file-upload.component.ts","../../../projects/ng-file-upload/src/lib/ng-file-upload.component.html","../../../projects/ng-file-upload/src/lib/ng-file-upload.module.ts","../../../projects/ng-file-upload/src/public-api.ts","../../../projects/ng-file-upload/src/ng-new-files-uploader.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class NgFileUploadService {\n\n  constructor() { }\n}\n","import {\n  HttpClient,\n  HttpEventType,\n  HttpHeaders,\n  HttpRequest,\n  HttpResponse,\n} from '@angular/common/http';\nimport { Component, ElementRef, EventEmitter, Input, Output, Pipe, PipeTransform, Renderer2, ViewChild } from '@angular/core';\nimport { Subject, filter, takeUntil } from 'rxjs';\nexport class entReceiptNoteAttachment {\n  receiptNoteAttachmentId = 0;\n  receiptNoteId = 0;\n  attachmentType = '';\n  attachmentFileId = 0;\n  uploadDate = '';\n  companyId = 0;\n  factoryId = 0;\n  branchId = 0;\n  ientFile = new entFile();\n  uploadedByFullName = '';\n  //  msg = new entIEMessage();\n  idoObjState = '';\n  updateSeq = 0;\n}\nexport class entFile {\n  fileId = 0;\n  fileName = '';\n  fileExtension = '';\n  fileType = '';\n  fileSize = '';\n  relativePath = '';\n  content = '';\n  companyId = 0;\n  factoryId = 0;\n}\n\n@Pipe({\n  name: 'fileSize'\n})\nexport class FileSizePipe implements PipeTransform {\n  transform(value: any): any {\n    return (value / 1024 / 1024).toFixed(2);\n  }\n}\n@Pipe({\n  name: \"fileType\",\n})\nexport class FileTypePipe implements PipeTransform {\n  transform(value: any, filetype: any): any {\n    if (filetype === \"\") {\n      return true;\n    }\n    if (!filetype) {\n      return true;\n    }\n    return !filetype.test(value);\n  }\n}\n\n@Component({\n  selector: 'ng-new-files-uploader',\n  templateUrl: './ng-file-upload.component.html',\n  styleUrls: [\"./ng-file-upload.component.scss\"]\n})\nexport class NgFileUploadComponent {\n  @ViewChild(\"nativefileupload\", { static: false })\n  nativefileupload!: ElementRef;\n  @ViewChild(\"fileinput\", { static: false })\n  fileinput!: ElementRef<any>;\n  private dropzone!: ElementRef;\n  @ViewChild(\"dropzone\", { static: false }) set content(content: ElementRef) {\n    this.dropzone = content;\n  }\n  private cancelUpload$ = new Subject<void>();\n  showFileInput = true;\n  @Input() multiple = false;\n  accept = ['application/pdf', 'image/jpeg', 'image/png', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/xls', 'application/vnd.ms-excel'];\n  @Input() dropText = \"Drop your files here\";\n  fileTypePattern = /(\\.jpeg|\\.JPEG|\\.jpg|\\.JPG|\\.png|\\.PNG|\\.gif|\\.GIF|\\.tiff|\\.TIFF|\\.tif|\\.xls|\\.xlsx|\\.pdf|\\.PDF)$/i;\n  @Input() parentObj: any;\n  allowedFileTypes = ['.pdf', '.jpeg', '.png', '.xlsx', '.xls', '.gif', '.tif'];\n  @Input() uploadUrl = '';\n  @Input() token = '';\n  @Output('onFileChange') onFileChange: EventEmitter<any> = new EventEmitter<any>();\n  @Output('onError') onError: EventEmitter<string> = new EventEmitter<string>();\n  files: any = [];\n  maximumFileSize = 10;\n  fileSize = 0;\n  fileSizeError = false;\n  fileTypeError = false;\n  fileSizeErrorMsg: any = 'File size exceeds the maximum allowed size.';\n  fileTypeErrorMsg: any = 'Please select a file with a valid extension.';\n\n  constructor(\n    public http: HttpClient,\n    public renderer: Renderer2,\n  ) {\n\n    this.init();\n  }\n  ngOnInit() { }\n  triggerClick() {\n    this.files = [];\n    this.nativefileupload.nativeElement.click();\n  }\n  init() {\n    if (this.dropzone) {\n      this.dropFn();\n    } else {\n      setTimeout(() => {\n        this.init();\n      }, 400);\n    }\n  }\n  dropFn() {\n    this.renderer.listen(this.dropzone.nativeElement, \"dragenter\", (event) => {\n      event.preventDefault();\n      event.stopPropagation();\n      this.renderer.addClass(this.dropzone.nativeElement, \"entered\");\n    });\n    this.renderer.listen(this.dropzone.nativeElement, \"dragleave\", (event) => {\n      event.preventDefault();\n      event.stopPropagation();\n      this.renderer.removeClass(this.dropzone.nativeElement, \"entered\");\n    });\n    this.renderer.listen(this.dropzone.nativeElement, \"dragover\", (event) => {\n      event.preventDefault();\n      event.stopPropagation();\n      this.renderer.addClass(this.dropzone.nativeElement, \"entered\");\n    });\n    this.renderer.listen(this.dropzone.nativeElement, \"drop\", (event) => {\n      event.preventDefault();\n      event.stopPropagation();\n      this.drop(event);\n    });\n  }\n  drop(event: any) {\n    this.renderer.removeClass(this.dropzone.nativeElement, \"entered\");\n    const dt = event.dataTransfer;\n    const files = dt.files;\n    this.files = Array.from(files).map(file => ({ file, progress: 0 }));\n    this.resetUploadState();\n    this.hasFileSizeError();\n    this.hasFileTypeError();\n  }\n\n  onFileSelected(event: any): void {\n    this.files = [];\n    const files = Array.from(event.target.files).map(file => ({ file, progress: 0 }));\n    this.files = files;\n    this.resetUploadState();\n    this.hasFileSizeError();\n    this.hasFileTypeError();\n\n  }\n\n  hasFileSizeError(): boolean {\n    return this.files.some((fileObj: any) => fileObj.file.size > this.maximumFileSize * 1024 * 1024);\n  }\n\n  hasFileTypeError(): boolean {\n    return this.files.some((fileObj: any) => {\n      const fileExtension = fileObj.file.name.toLowerCase().slice((fileObj.file.name.lastIndexOf(\".\") - 1 >>> 0) + 2);\n      return !this.allowedFileTypes.includes('.' + fileExtension);\n    });\n  }\n  canUpload(): boolean {\n    return !this.hasFileSizeError() && !this.hasFileTypeError();\n  }\n  async onUpload() {\n    this.files.forEach((fileObj: any, index: any) => {\n      const { file } = fileObj;\n\n      const reader = new FileReader();\n      reader.onload = async (event: any) => {\n        const fileContentBase64 = event.target.result;\n\n        const parentProtoObj: any = new entReceiptNoteAttachment();\n        parentProtoObj.ientFile.fileName = file.name || '';\n        parentProtoObj.ientFile.fileSize = String(file.size || 0);\n        parentProtoObj.ientFile.fileType = String(file.type);\n        parentProtoObj.ientFile.content = fileContentBase64;\n\n        await this.uploadFile(parentProtoObj, fileObj, index);\n      };\n\n      reader.readAsDataURL(file);\n    });\n  }\n\n  uploadFile(file: any, fileObj: any, index: number): void {\n    const header = new HttpHeaders({\n      Authorization: 'Bearer ' + this.token,\n    });\n\n    const req = new HttpRequest('POST', this.uploadUrl, file, {\n      headers: header,\n      reportProgress: true,\n      responseType: 'json',\n    });\n    const upload$ = this.http.request(req);\n    upload$.pipe(\n      takeUntil(this.cancelUpload$.pipe(filter((val: any) => val === index)))).subscribe(\n        (event: any) => {\n          if (event.type === HttpEventType.UploadProgress) {\n            fileObj.progress = Math.round((100 * event.loaded) / event.total);\n          } else if (event instanceof HttpResponse) {\n            this.onFileChange.emit(file);\n          }\n        },\n        (error: any) => {\n          this.resetUploadState();\n        },\n      );\n  }\n\n  resetUploadState(): void {\n    this.files.forEach((fileObj: any) => (fileObj.progress = 0));\n  }\n  removeImage(val: any) {\n    this.cancelUpload$.next(val);\n    this.files.splice(val, 1);\n    this.hasFileSizeError();\n    this.hasFileTypeError();\n\n  }\n\n  clearAll() {\n    this.files = [];\n  }\n}","<div class=\"drop-zone\">\r\n    <div class=\"header\">\r\n\r\n        <h2>\r\n            Upload Files\r\n        </h2>\r\n        <div class=\"btn-group\" *ngIf=\"this.files.length>0 && canUpload()\">\r\n            <button mat-button class=\"btn-primary\" (click)=\"onUpload()\">Upload</button>\r\n            <button mat-stroked-button class=\"drop-btn_clear\" (click)=\"clearAll()\">Clear</button>\r\n\r\n        </div>\r\n    </div>\r\n    <div class=\"bordered\" #dropzone>\r\n        <div class=\"drop-ab\" (click)=\"triggerClick()\">\r\n            <div class=\"onentered text-center\">\r\n                <ion-icon name=\"cloud-upload-outline\"></ion-icon>\r\n                <p>{{dropText}}</p>\r\n                <h5>or</h5>\r\n                <button mat-stroked-button class=\"btn-browse\">Browse</button>\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"upload-panel\">\r\n        <ng-container *ngFor=\"let fileData of files; let i = index\">\r\n            <div class=\"file-card col-md-6\">\r\n                <div class=\"d-flex align-item-center\">\r\n                    <div class=\"col-md-10 p-0\">\r\n                        <div class=\"card-title\">\r\n                            <div class=\"file-name\">{{fileData.file.name}}</div>\r\n\r\n                            <div class=\"file-size\">Size ~ {{fileData.file.size | fileSize}} mb</div>\r\n                        </div>\r\n\r\n\r\n                        <mat-progress-bar mode=\"determinate\" [value]=\"fileData.progress\"></mat-progress-bar>\r\n\r\n                        <div class=\"card-title\">\r\n                            <div class=\"loading-text-primary\" *ngIf=\"fileData.progress>0 && fileData.progress!==100\">\r\n                                Uploading...</div>\r\n                            <div class=\"loading-text-secondary\" *ngIf=\"fileData.progress===100\">Completed</div>\r\n                            <div>{{ fileData.progress }}%</div>\r\n\r\n                        </div>\r\n                        <div class=\"errormsg\">\r\n                            <ng-container *ngIf=\"!(fileData.file.name | fileType: fileTypePattern)\r\n                            && (fileData.file.size | fileSize)> maximumFileSize\">\r\n                                <div class=\"text-danger\">\r\n                                    <small>{{fileSizeErrorMsg}}The max Size is :{{maximumFileSize}}mb.</small>\r\n                                </div>\r\n                            </ng-container>\r\n                            <ng-container *ngIf=\"(fileData.file.name | fileType:\r\n                            fileTypePattern)\">\r\n                                <div class=\"text-danger\">\r\n                                    <small>{{fileTypeErrorMsg}}</small>\r\n                                </div>\r\n                            </ng-container>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"col-sm-2 p-0 text-right\">\r\n                        <button mat-icon-button matTooltip=\"Remove this file\" (click)=\"removeImage(i)\">\r\n                            <ion-icon name=\"close-outline\" class=\"f16 close-btn\"></ion-icon>\r\n                        </button>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </ng-container>\r\n    </div>\r\n</div>\r\n\r\n<label class=\"file-upload\" #nativefileupload>\r\n    <input type=\"file\" #fileinput (change)=\"onFileSelected($event)\" id=\"file-input\" class=\"hidden\" [multiple]=\"multiple\"\r\n        [accept]=\"accept\">\r\n</label>","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { FileSizePipe, FileTypePipe, NgFileUploadComponent } from './ng-file-upload.component';\nimport { CommonModule } from '@angular/common';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatButtonModule } from '@angular/material/button';\nimport { HttpClientModule } from '@angular/common/http';\n\n\n\n@NgModule({\n  declarations: [\n    NgFileUploadComponent,\n    FileSizePipe, FileTypePipe\n  ],\n  imports: [\n    CommonModule,\n    MatProgressBarModule, MatButtonModule,\n    HttpClientModule\n  ],\n  exports: [\n    NgFileUploadComponent\n  ],\n  schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class NgFileUploadModule { }\n","/*\n * Public API Surface of ng-file-upload\n */\n\nexport * from './lib/ng-file-upload.service';\nexport * from './lib/ng-file-upload.component';\nexport * from './lib/ng-file-upload.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}