@servicemind.tis/tis-image-and-file-upload-and-view 1.0.0 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/servicemind.tis-tis-image-and-file-upload-and-view.mjs +199 -116
- package/fesm2022/servicemind.tis-tis-image-and-file-upload-and-view.mjs.map +1 -1
- package/lib/services/tis-helper.service.d.ts +3 -4
- package/lib/tis-file-viewer/tis-excel-file-viewer/tis-excel-file-viewer.component.d.ts +14 -0
- package/lib/tis-file-viewer/tis-file-viewer.component.d.ts +11 -0
- package/lib/tis-file-viewer/tis-pdf-viewer/tis-pdf-viewer.component.d.ts +16 -0
- package/lib/tis-file-viewer/tis-video/tis-video.component.d.ts +13 -0
- package/lib/tis-image-and-file-upload-and-view/tis-image-and-file-upload-and-view.component.d.ts +2 -6
- package/lib/tis-image-and-file-upload-and-view.module.d.ts +14 -10
- package/package.json +3 -2
- package/lib/services/file-upload.service.d.ts +0 -13
- package/lib/services/image-upload.service.d.ts +0 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"servicemind.tis-tis-image-and-file-upload-and-view.mjs","sources":["../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-image-and-file-upload-and-view.service.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-file-viewer/tis-file-viewer.component.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-file-viewer/tis-file-viewer.component.html","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-preview-image/tis-preview-image.component.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-preview-image/tis-preview-image.component.html","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-error-dialog/tis-error-dialog.component.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-error-dialog/tis-error-dialog.component.html","../../../projects/tis-image-and-file-upload-and-view/src/lib/services/tis-helper.service.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/services/file-upload.service.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/services/image-upload.service.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-confirmation-dialog/tis-confirmation-dialog.component.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-confirmation-dialog/tis-confirmation-dialog.component.html","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-image-and-file-upload-and-view/tis-image-and-file-upload-and-view.component.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-image-and-file-upload-and-view/tis-image-and-file-upload-and-view.component.html","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-image-and-file-upload-and-view.module.ts","../../../projects/tis-image-and-file-upload-and-view/src/public-api.ts","../../../projects/tis-image-and-file-upload-and-view/src/servicemind.tis-tis-image-and-file-upload-and-view.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TisImageAndFileUploadAndViewService {\n\n constructor() { }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'tis-file-viewer',\n standalone: false,\n templateUrl: './tis-file-viewer.component.html',\n styleUrl: './tis-file-viewer.component.css'\n})\nexport class TisFileViewerComponent {\n\n}\n","<p>tis-file-viewer works!</p>\n","import { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n selector: 'tis-preview-image',\n standalone: false,\n templateUrl: './tis-preview-image.component.html',\n styleUrl: './tis-preview-image.component.css'\n})\nexport class TisPreviewImageComponent {\n width = 850;\n height = 650;\n isLoading: boolean = true;\n isLandscape: boolean | undefined;\n orientation: string | undefined;\n imageWidth: number | undefined;\n imageHeight: number | undefined;\n\n\n constructor(\n public dialogRef: MatDialogRef<TisPreviewImageComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n ) { }\n\n ngOnInit(): void {\n if (this.data.url) {\n setTimeout(() => {\n this.checkImageOrientation(this.data.url);\n }, 500);\n }\n }\n\n checkImageOrientation(imageUrl: string): void {\n const img = new Image();\n img.src = imageUrl;\n this.isLoading = true;\n\n img.onload = () => {\n this.imageWidth = img.naturalWidth;\n this.imageHeight = img.naturalHeight;\n this.isLandscape = img.naturalWidth > img.naturalHeight;\n this.orientation = this.isLandscape ? 'landscape-image' : 'portrait-image';\n this.isLoading = false;\n };\n\n img.onerror = () => {\n console.error('Failed to load image.');\n this.isLoading = false;\n };\n }\n\n onClose() {\n this.dialogRef.close()\n }\n}\n","@if(isLoading){\n <div style=\"width: 350px; height: 350px; display: flex; justify-content: center; align-items: center\">\n <mat-progress-spinner color=\"primary\" mode=\"indeterminate\" [diameter]=\"80\"></mat-progress-spinner>\n </div>\n}\n@else{\n <div class=\"w-100 dialog-container\" appScrolling style=\"--img-width: {{(imageWidth && imageWidth < 700) ? imageWidth : 650}}px; --img-height: {{(imageHeight && imageHeight < 600) ? imageHeight : 600}}px\">\n <mat-icon\n class=\"close-icon\"\n (click)=\"onClose()\">cancel</mat-icon>\n <img \n *ngIf=\"data.url\" \n [src]=\"data.url\" \n alt=\"preview-image\" \n class=\"preview-image {{orientation}}\">\n </div>\n}","import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'lib-tis-error-dialog',\n standalone: false,\n templateUrl: './tis-error-dialog.component.html',\n styleUrl: './tis-error-dialog.component.css'\n})\nexport class TisErrorDialogComponent {\n constructor(\n public dialogRef: MatDialogRef<TisErrorDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n ) {}\n\n onClose(): void {\n this.dialogRef.close();\n }\n}\n","<h1 mat-dialog-title>\n <mat-icon class=\"{{data?.iconClass}}\">{{data?.icon}}</mat-icon>\n {{data?.title}}\n</h1>\n<div mat-dialog-content>\n {{data?.message}}\n</div>\n<div mat-dialog-actions>\n <button mat-button class=\"tis-text-upper {{data?.buttonClass ?? 'tis-btn-primary'}}\" (click)=\"onClose()\" cdkFocusInitial *ngIf=\"data?.buttonText && data?.buttonText != ''\">{{data?.buttonText}}</button>\n</div>","import { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { MatSnackBar, MatSnackBarRef, TextOnlySnackBar } from '@angular/material/snack-bar';\nimport { TisErrorDialogComponent } from '../tis-error-dialog/tis-error-dialog.component';\nimport { Observable } from 'rxjs';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TisHelperService {\n\n constructor(\n private snackBar: MatSnackBar,\n private dialog: MatDialog,\n private http: HttpClient\n ) { }\n\n showHttpErrorMsg(error: HttpErrorResponse, duration = 5000) {\n console.log('httpError: ', error);\n\n let errorMessage = 'Some Unknown Error Occurred.';\n let errorCode = 'Unknown Error';\n const httpError = error;\n\n if (httpError.status >= 400) {\n const errorFromServer = httpError.error;\n if (Array.isArray(errorFromServer) && errorFromServer.length > 0) {\n errorMessage = errorFromServer[0].message;\n errorCode = errorFromServer[0].code;\n }\n } else if (httpError.status < 100) {\n errorMessage = httpError.message;\n errorCode = httpError.statusText;\n }\n\n if (errorCode == \"VALIDATION_ERROR\" || errorCode == \"NOT_FOUND_ERROR\" || errorCode == \"THIRD_PARTY_API_ERROR\") {\n let confirmBoxData: any = {\n title: \"Error !\",\n message: errorMessage,\n icon: \"error\",\n iconClass: \"tis-text-danger\",\n buttonText: \"Ok\",\n buttonClass: \"tis-btn-primary\",\n };\n\n const dialogRef: MatDialogRef<TisErrorDialogComponent> = this.dialog.open(TisErrorDialogComponent, {\n width: \"550px\",\n panelClass: ['tis-simple-confirmation'],\n data: confirmBoxData,\n disableClose: false,\n });\n\n return dialogRef;\n\n } else {\n const snackbarRef: MatSnackBarRef<TextOnlySnackBar> = this.snackBar.open(errorMessage, 'Error', { duration: duration });\n return snackbarRef;\n }\n\n }\n\n showSuccessMsg(message: string, title: string, duration = 5000) {\n this.snackBar.open(message, title, {\n duration: duration\n })\n }\n\n showErrorMsg(message: string, title: string, duration = 5000) {\n this.snackBar.open(message, title, {\n duration: duration\n })\n }\n\n async compressFile(image: any, mimeType: string): Promise<Blob> {\n\n let imageData = image;\n\n let imageBlob: Blob = this.dataURItoBlob(imageData.split(',')[1], mimeType);\n return imageBlob;\n }\n\n dataURItoBlob(dataURI: string, mimeType: string): Blob {\n const byteString = window.atob(dataURI);\n const arrayBuffer = new ArrayBuffer(byteString.length);\n const int8Array = new Uint8Array(arrayBuffer);\n for (let i = 0; i < byteString.length; i++) {\n int8Array[i] = byteString.charCodeAt(i);\n }\n const blob = new Blob([int8Array], { type: mimeType });\n return blob;\n }\n\n getDataUrlFromFile(file: any) {\n return new Promise((resolve, reject) => {\n var reader = new FileReader();\n reader.onload = (e: any) => {\n resolve(e.target.result)\n };\n reader.onerror = (e: any) => {\n reject(e.target.error);\n };\n reader.readAsDataURL(file);\n })\n }\n\n getUploadUrl(url: string, filename: string, mimeType: string, type: string): Observable<any> {\n return this.http.post(url, { filename, mimeType, type });\n }\n\n attachImagesToEntity(url: string, data: any): Observable<any> {\n return this.http.post(url, data);\n }\n\n uploadImageByEntity(url: string, data: any): Observable<any> {\n return this.http.post(url, data);\n }\n\n putImage(url: string, file: File, contentType?: string): Observable<any> {\n // const headers = new HttpHeaders({ \"content-type\": contentType ? contentType : \"binary/octet-stream\"}).set(SkipAuthInterceptorHeader, \"\");\n const headers = new HttpHeaders({ \"content-type\": contentType ? contentType : \"binary/octet-stream\"});\n return this.http.put(url, file, { headers });\n }\n\n deleteUploadedImage(url: string, data: any): Observable<any> {\n return this.http.post(url, data);\n }\n\n}","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n// import { SkipAuthInterceptorHeader } from '@app/interceptors/authorize-request-interceptor';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FileUploadService {\n\n constructor(private http: HttpClient) { }\n\n getUploadUrl(url: string, filename: string, mimeType: string, type: string): Observable<any> {\n return this.http.post(url, { filename, mimeType, type });\n }\n\n attachFilesToEntity(url: string, data: any): Observable<any> {\n return this.http.post(url, data);\n }\n\n putFile(url: string, file: File): Observable<any> {\n // const headers = new HttpHeaders({ \"content-type\": \"binary/octet-stream\"}).set(SkipAuthInterceptorHeader, \"\");\n const headers = new HttpHeaders({ \"content-type\": \"binary/octet-stream\"});\n return this.http.put(url, file, { headers });\n }\n\n deleteUploadedFile(url: string, data: any): Observable<any> {\n return this.http.post(url, data);\n }\n\n // getDownloadUrl(url: string, filepath: string , expiryInHours: number): Observable<any> {\n // return this.http.post(url, { filepath, expiryInHours });\n // }\n\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n// import { SkipAuthInterceptorHeader } from '@app/interceptors/authorize-request-interceptor';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ImageUploadService {\n\n constructor(private http: HttpClient) { }\n\n getUploadUrl(url: string, filename: string, mimeType: string, type: string): Observable<any> {\n return this.http.post(url, { filename, mimeType, type });\n }\n\n attachImagesToEntity(url: string, data: any): Observable<any> {\n return this.http.post(url, data);\n }\n\n // uploadImageByEntity(url: string, data: any): Observable<any> {\n // return this.http.post(url, data);\n // }\n\n putImage(url: string, file: File, contentType?: string): Observable<any> {\n // const headers = new HttpHeaders({ \"content-type\": contentType ? contentType : \"binary/octet-stream\"}).set(SkipAuthInterceptorHeader, \"\");\n const headers = new HttpHeaders({ \"content-type\": contentType ? contentType : \"binary/octet-stream\"});\n return this.http.put(url, file, { headers });\n }\n\n deleteUploadedImage(url: string, data: any): Observable<any> {\n return this.http.post(url, data);\n }\n\n // removeImageById(url: string, imageId: number): Observable<any> {\n // return this.http.post(url, { id: imageId });\n // }\n\n}\n","import { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n selector: 'tis-confirmation-dialog',\n standalone: false,\n templateUrl: './tis-confirmation-dialog.component.html',\n styleUrl: './tis-confirmation-dialog.component.css'\n})\nexport class TisConfirmationDialogComponent {\n constructor(\n public dialogRef: MatDialogRef<TisConfirmationDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n ) {\n this.dialogRef.addPanelClass(['md-tis-w-400-px']);\n }\n\n onClose(status: boolean | null): void {\n this.dialogRef.close(status);\n }\n}\n","<h1 mat-dialog-title style=\"align-items: center; display: flex;\">\n <mat-icon class=\"{{data?.iconClass}}\">{{data?.icon}}</mat-icon>\n <span>{{data?.title}}</span>\n</h1>\n<div mat-dialog-content>\n @if(data?.html){\n <h5 class=\"title\">{{data?.message}}</h5>\n <div [innerHTML]=\"data.html\">\n </div>\n }\n @else {\n <span>{{data?.message}}</span>\n }\n</div>\n<div mat-dialog-actions>\n <button mat-button class=\"tis-text-upper {{data?.cancelButtonClass ?? 'tis-btn-primary'}}\" (click)=\"onClose(false)\" *ngIf=\"data?.cancelButtonText && data?.cancelButtonText != ''\">{{data?.cancelButtonText}}</button>\n <button mat-button class=\"tis-text-upper {{data?.approveButtonClass ?? 'tis-btn-primary'}}\" (click)=\"onClose(true)\" cdkFocusInitial *ngIf=\"data?.approveButtonText && data?.approveButtonText != ''\">{{data?.approveButtonText}}</button>\n</div>","import { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\nimport { TisFileViewerComponent } from '../tis-file-viewer/tis-file-viewer.component';\nimport type { DialogConfig, FileViewerDialogData, FileViewerFileType, UrlConfig } from '../interfaces';\nimport { TisPreviewImageComponent } from '../tis-preview-image/tis-preview-image.component';\nimport { BehaviorSubject, Observable, map, shareReplay } from 'rxjs';\nimport { MatDialog } from '@angular/material/dialog';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { TisHelperService } from '../services/tis-helper.service';\nimport { FileUploadService } from '../services/file-upload.service';\nimport { ImageUploadService } from '../services/image-upload.service';\nimport { TisConfirmationDialogComponent } from '../tis-confirmation-dialog/tis-confirmation-dialog.component';\n\n@Component({\n selector: 'tis-image-and-file-upload-and-view',\n standalone: false,\n templateUrl: './tis-image-and-file-upload-and-view.component.html',\n styleUrl: './tis-image-and-file-upload-and-view.component.css'\n})\nexport class TisImageAndFileUploadAndViewComponent {\n private changeSubject = new BehaviorSubject<boolean>(false);\n\n @Input({required: true}) urlConfig!: UrlConfig;\n @Input() entityType!: string;\n @Input() entityId: any;\n @Input() viewType: 'card' | 'list' = 'card';\n @Input() type: string = 'image';\n @Input() label: string | null = null;\n @Input() disabled: boolean = false;\n @Input() data: any;\n @Input() hint: string | null = null;\n @Input() accept: string = '';\n @Input() selectedId: any = null;\n @Input() options: any = null;\n @Input() required: boolean = false;\n @Input() previewOnly: boolean = false;\n @Input() previewInFlex: boolean = false;\n @Input() imageItemClass: string = '';\n @Input() isEnableDeleteConfirmation: boolean = true;\n @Input() deleteConfirmationMsg!: string;\n @Input() dialogConfig!: DialogConfig;\n @Output() uploadInProgress = new EventEmitter();\n @Output() onUploaded = new EventEmitter();\n @Output() onFileSelect = new EventEmitter<any>();\n @Output() onFileRemoved = new EventEmitter<any>();\n\n isMobile = false;\n isTab = false;\n\n isHandset$!: Observable<boolean>;\n isTab$!: Observable<boolean>;\n\n\n config: any = {\n isCompressed: false,\n hiddenDeleteBtn: false,\n hiddenPreview: false,\n selectionMode: false,\n isStoredDb: false,\n isMultiple: false,\n fileSize: null,\n limit: 10,\n cols: 5,\n colsForTab: 5,\n colsForMobile: 3,\n height: '130px',\n selectorId: 'choosing-img',\n };\n\n isSliderLoaded = true;\n\n filesArray: any[] = [\n // {\n // \"s3Url\": \"https://obk-servicemind-uat-resources.s3.ap-southeast-1.amazonaws.com/parcel_create/da226bf2-4e5f-4180-94d8-6746b1ce139b.jpg\",\n // \"uploadData\": {\n // \"isBase64Encoded\": false,\n // \"headers\": {\n // \"Access-Control-Allow-Origin\": \"*\"\n // },\n // \"uploadURL\": \"https://obk-servicemind-uat-resources.s3.ap-southeast-1.amazonaws.com/parcel_create/da226bf2-4e5f-4180-94d8-6746b1ce139b.jpg?Content-Type=image%2Fjpeg&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA37VN5NQI5HY4VFVN%2F20220617%2Fap-southeast-1%2Fs3%2Faws4_request&X-Amz-Date=20220617T152621Z&X-Amz-Expires=900&X-Amz-Signature=4004cfb10a740b9623d486de992a06f53b458ed6fc151c092eea88a3059eae8f&X-Amz-SignedHeaders=host%3Bx-amz-acl&x-amz-acl=public-read\",\n // \"photoFilename\": \"f7a32cd0-d0c1-474a-838e-47402d80527a.jpeg\",\n // \"fileName\": \"1452664590074.jpeg\",\n // \"uploadPath\": \"/survey_orders/f7a32cd0-d0c1-474a-838e-47402d80527a.jpeg\",\n // \"resourceUrl\": \"https://obk-servicemind-uat-resources.s3.ap-southeast-1.amazonaws.com/parcel_create/da226bf2-4e5f-4180-94d8-6746b1ce139b.jpg\"\n // }\n // },\n // {\n // \"s3Url\": \"https://obk-servicemind-uat-resources.s3.ap-southeast-1.amazonaws.com/parcel_create/31033a2a-5db6-450d-a541-58a94654dd0c.jpg\",\n // \"uploadData\": {\n // \"isBase64Encoded\": false,\n // \"headers\": {\n // \"Access-Control-Allow-Origin\": \"*\"\n // },\n // \"uploadURL\": \"https://servicemind-resources-staging.s3.ap-southeast-1.amazonaws.com/survey_orders/6c537889-c72a-48ca-9134-638e8d6a1aac.sql?Content-Type=application%2Fsql&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA37VN5NQI5HY4VFVN%2F20220617%2Fap-southeast-1%2Fs3%2Faws4_request&X-Amz-Date=20220617T152641Z&X-Amz-Expires=900&X-Amz-Signature=bcdf347df2a6495615bf48d619492e1deac2264231161da5dc3becaa7f45a796&X-Amz-SignedHeaders=host%3Bx-amz-acl&x-amz-acl=public-read\",\n // \"photoFilename\": \"6c537889-c72a-48ca-9134-638e8d6a1aac.sql\",\n // \"fileName\": \"eccom_bermuda.sql\",\n // \"uploadPath\": \"/survey_orders/6c537889-c72a-48ca-9134-638e8d6a1aac.sql\",\n // \"resourceUrl\": \"https://servicemind-resources-staging.s3.ap-southeast-1.amazonaws.com/survey_orders/6c537889-c72a-48ca-9134-638e8d6a1aac.sql\"\n // }\n // },\n // {\n // \"s3Url\": \"https://obk-servicemind-uat-resources.s3.ap-southeast-1.amazonaws.com/parcel_create/b8424185-30c6-4f44-ba1e-ff616dfd6576.jpg\",\n // \"uploadData\": {\n // \"isBase64Encoded\": false,\n // \"headers\": {\n // \"Access-Control-Allow-Origin\": \"*\"\n // },\n // \"uploadURL\": \"https://servicemind-resources-staging.s3.ap-southeast-1.amazonaws.com/survey_orders/232f2548-dc93-4204-8835-86b69f3005a7.pdf?Content-Type=application%2Fpdf&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA37VN5NQI5HY4VFVN%2F20220617%2Fap-southeast-1%2Fs3%2Faws4_request&X-Amz-Date=20220617T152656Z&X-Amz-Expires=900&X-Amz-Signature=85643479c3fbecc5bd1fee9783e3cb72e27e16a034921b52cf2f377eefb01ff9&X-Amz-SignedHeaders=host%3Bx-amz-acl&x-amz-acl=public-read\",\n // \"photoFilename\": \"232f2548-dc93-4204-8835-86b69f3005a7.pdf\",\n // \"fileName\": \"print-registration-4x6.pdf\",\n // \"uploadPath\": \"/survey_orders/232f2548-dc93-4204-8835-86b69f3005a7.pdf\",\n // \"resourceUrl\": \"https://servicemind-resources-staging.s3.ap-southeast-1.amazonaws.com/survey_orders/232f2548-dc93-4204-8835-86b69f3005a7.pdf\"\n // }\n // }\n ];\n currentEntityId!: number;\n currentEntityType!: string;\n images = [];\n loading = false;\n status = false;\n\n\n constructor(\n public dialog: MatDialog,\n private fileUploadService: FileUploadService,\n private imageUploadService: ImageUploadService,\n private helper: TisHelperService,\n private breakpointObserver: BreakpointObserver\n ) { }\n\n ngOnInit() {\n this.isHandset$ = this.breakpointObserver.observe([Breakpoints.Handset])\n .pipe(\n map(result => result.matches),\n shareReplay()\n );\n\n this.isTab$ = this.breakpointObserver.observe([Breakpoints.TabletPortrait])\n .pipe(\n map(result => result.matches),\n shareReplay()\n );\n \n this.prepareConfig();\n }\n\n ngAfterViewInit() {\n this.isHandset$.subscribe(r => {\n console.log('IS HANDSET:', r);\n this.isMobile = r;\n this.changeSubject.next(true);\n });\n this.isTab$.subscribe(r => {\n console.log('IS TAB:', r);\n this.isTab = r;\n this.changeSubject.next(true);\n });\n\n this.changeSubject.subscribe(status => {\n let cols = 1;\n if (this.isMobile) {\n cols = this.options?.colsForMobile ?? 3;\n }\n else if (this.isTab) {\n cols = this.options?.colsForTab ?? 4;\n }\n else {\n cols = this.options?.cols ?? 5;\n }\n\n this.config.cols = cols;\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['entityId']) {\n this.currentEntityId = changes['entityId'].currentValue;\n }\n if (changes['entityType']) {\n this.currentEntityType = changes['entityType'].currentValue;\n }\n if (changes['options']) {\n this.prepareConfig();\n }\n if (changes['data']) {\n this.filesArray = changes['data']?.currentValue ?? [];\n this.filesArray = this.filesArray?.map(r => {\n r.loading = false;\n return r;\n });\n console.log(\"this.filesArray\", this.filesArray);\n }\n }\n\n prepareConfig() {\n if (this.options?.isCompressed) {\n this.config.isCompressed = this.options?.isCompressed;\n }\n\n if (this.options?.isSliderPreview) {\n this.config.isSliderPreview = this.options?.isSliderPreview;\n }\n\n if (this.options?.hiddenDeleteBtn) {\n this.config.hiddenDeleteBtn = this.options?.hiddenDeleteBtn;\n }\n\n if (this.options?.hiddenPreview) {\n this.config.hiddenPreview = this.options?.hiddenPreview;\n }\n\n if (this.options?.selectionMode) {\n this.config.selectionMode = this.options?.selectionMode;\n }\n\n if (this.options?.isStoredDb) {\n this.config.isStoredDb = this.options?.isStoredDb;\n }\n\n if (this.options?.isMultiple) {\n this.config.isMultiple = this.options?.isMultiple;\n }\n\n if (this.options?.fileSize) {\n this.config.fileSize = this.options?.fileSize;\n }\n\n if (this.options?.limit) {\n this.config.limit = this.options?.limit;\n }\n\n if (this.options?.cols) {\n this.config.cols = this.options?.cols;\n }\n\n if (this.options?.colsForTab) {\n this.config.colsForTab = this.options?.colsForTab;\n }\n\n if (this.options?.colsForMobile) {\n this.config.colsForMobile = this.options?.colsForMobile;\n }\n\n if (this.options?.height) {\n this.config.height = this.options?.height;\n }\n\n if (this.options?.selectorId) {\n this.config.selectorId = this.options?.selectorId;\n }\n }\n\n setSliderLoading() {\n this.isSliderLoaded = false;\n setTimeout(() => {\n this.isSliderLoaded = true;\n }, 20);\n }\n\n openImageSelector() {\n document.getElementById(this.config?.selectorId)?.click();\n }\n\n async detectImages(event: any) {\n console.log('detectImages:', event);\n event.preventDefault();\n\n if (this.config?.limit === 1) {\n this.filesArray = []; // Reset array for a single image\n }\n\n let files = event.target.files;\n if (!files) {\n this.helper.showErrorMsg('Please select an image', 'Error', 3000);\n return;\n }\n\n if ((this.filesArray?.length + files.length) > this.config?.limit) {\n this.helper.showErrorMsg(`You can upload a maximum of ${this.config?.limit} images`, 'Error', 3000);\n return;\n }\n\n this.loading = true;\n this.uploadInProgress.emit(true);\n\n let uploadedImages: any[] = [];\n\n // Process all images concurrently and wait for completion\n await Promise.all([...files].map(file => this.processImage(file, uploadedImages)));\n\n if (this.config?.isStoredDb) {\n await this.uploadImages(uploadedImages);\n }\n\n this.loading = false;\n this.uploadInProgress.emit(false);\n\n this.onSubmit(); // Call once after all uploads\n }\n\n async processImage(file: File, uploadedImages: any[]) {\n let fileSize = file.size / 1024;\n if (this.config?.fileSize && fileSize > this.config?.fileSize) {\n let maxSize = this.config.fileSize / 1024;\n this.helper.showErrorMsg(`File size must be ≤ ${maxSize >= 1 ? maxSize : this.config.fileSize} ${maxSize >= 1 ? 'MB' : 'KB'}`, 'Error', 3000);\n return;\n }\n\n return new Promise<void>((resolve) => {\n let reader = new FileReader();\n reader.onload = async (e: any) => {\n let mimeType = file.type;\n let compressedImage = this.config?.isCompressed ? await this.helper.compressFile(e.target?.result, mimeType) : e.target.result;\n\n try {\n let uploadResponse = await this.imageUploadService.getUploadUrl(this.urlConfig.getUploadUrl, file.name, mimeType, this.currentEntityType).toPromise();\n let uploadData = uploadResponse.data.uploadUrlData;\n let dataUrl = await this.helper.getDataUrlFromFile(file);\n\n let currentImageData = {\n title: file.name, name: file.name, s3Url: dataUrl,\n filename: file.name, s3Path: uploadData.uploadPath,\n tempS3Url: uploadData.resourceUrl, id: null,\n uploadData: uploadData, loading: true\n };\n\n this.filesArray = [currentImageData, ...this.filesArray];\n this.setSliderLoading();\n uploadedImages.push(currentImageData);\n\n await this.imageUploadService.putImage(uploadData.uploadURL, compressedImage).toPromise();\n\n // Final processing\n currentImageData.s3Url = currentImageData.tempS3Url;\n currentImageData.loading = !this.config?.isStoredDb;\n this.setSliderLoading();\n\n resolve();\n } catch (error: any) {\n this.helper.showHttpErrorMsg(error);\n resolve();\n }\n };\n\n reader.readAsArrayBuffer(file);\n });\n }\n\n uploadImages(data: any) {\n return new Promise((resolve, reject) => {\n if (data && data?.length > 0) {\n console.log('There is a image pending to attach:', data);\n\n let images: any[] = [];\n let fa = data.map((r: any) => {\n if (r?.uploadData) {\n images.push({ fileName: r.uploadData?.fileName, resourceUrl: r.uploadData?.resourceUrl, uploadPath: r.uploadData?.uploadPath, uploadURL: r.uploadData?.uploadURL });\n // delete r.uploadData;\n }\n\n return r;\n\n });\n\n this.imageUploadService.attachImagesToEntity(this.urlConfig.attachToEntity, { images: images, entityId: this.currentEntityId, entityType: this.currentEntityType }).subscribe({\n next: (ir: any) => {\n resolve(ir);\n },\n error: (imErr: any) => this.helper.showErrorMsg(imErr, \"Error\")\n });\n\n } else {\n resolve(false);\n }\n });\n }\n\n\n deleteImage(event: any, t: any, index: number, img: any) {\n event.stopPropagation();\n if (this.isEnableDeleteConfirmation) {\n let confirmBoxData: DialogConfig = {\n title: this.dialogConfig.title,\n message: this.deleteConfirmationMsg ?? this.dialogConfig.message,\n iconClass: this.dialogConfig.iconClass,\n icon: this.dialogConfig.icon,\n approveButtonText: this.dialogConfig.approveButtonText,\n approveButtonClass: this.dialogConfig.approveButtonClass,\n cancelButtonText: this.dialogConfig.cancelButtonText,\n cancelButtonClass: this.dialogConfig.cancelButtonClass\n };\n\n const dialogRef = this.dialog.open(TisConfirmationDialogComponent, {\n width: \"450px\",\n panelClass: ['tis-confirmation-dialog'],\n data: confirmBoxData,\n disableClose: true,\n });\n\n dialogRef.afterClosed().subscribe((result: any) => {\n console.log(\"The dialog was closed with result:\", result);\n if (result) {\n this.removeImage(event, index, img);\n }\n });\n }\n else {\n this.removeImage(event, index, img);\n }\n }\n\n\n /*REMOVE SELECTED IMAGE */\n removeImage(event: any, index: number, img: any) {\n this.loading = true;\n this.filesArray[index].loading = true;\n if (img?.id) {\n delete img.uploadData;\n this.removeUploadedImage(img, index, true);\n }\n else {\n this.loading = false;\n this.filesArray.splice(index, 1);\n this.setSliderLoading();\n this.onSubmit();\n }\n }\n\n removeUploadedImage(img: any, index: number, silently: boolean = false) {\n console.log(\"removeUploadedImage:\", img);\n this.imageUploadService.deleteUploadedImage(this.urlConfig.removeImage, img).subscribe((r: any) => {\n console.log('Image Delete Res:', r);\n this.loading = false;\n this.filesArray.splice(index, 1);\n this.setSliderLoading();\n this.onSubmit();\n if (!silently) {\n this.helper.showSuccessMsg(r.message, 'Success', 3000);\n }\n },\n (err: any) => { this.filesArray[index].loading = false; this.helper.showErrorMsg(err, \"Error\") })\n }\n\n async detectFiles(event: any) {\n console.log('detectFiles:', event);\n event.preventDefault();\n\n if (this.config?.limit === 1) {\n this.filesArray = []; // Reset array for a single file\n }\n\n let files = event.target.files;\n if (!files) {\n this.helper.showErrorMsg('Please select a file', 'Error', 3000);\n return;\n }\n\n if ((this.filesArray?.length + files.length) > this.config?.limit) {\n this.helper.showErrorMsg(`You can upload a maximum of ${this.config?.limit} files`, 'Error', 3000);\n return;\n }\n\n this.loading = true;\n this.uploadInProgress.emit(true);\n\n let uploadedFiles: any[] = [];\n\n // Process all files concurrently and wait for completion\n await Promise.all([...files].map(file => this.processFile(file, uploadedFiles)));\n\n if (this.config?.isStoredDb) {\n await this.uploadFiles(uploadedFiles);\n }\n\n this.loading = false;\n this.uploadInProgress.emit(false);\n\n this.onSubmit(); // Call once after all uploads\n }\n\n async processFile(file: File, uploadedFiles: any[]) {\n let fileSize = file.size / 1024;\n if (this.config?.fileSize && fileSize > this.config?.fileSize) {\n let maxSize = this.config.fileSize / 1024;\n this.helper.showErrorMsg(`File size must be ≤ ${maxSize >= 1 ? maxSize : this.config.fileSize} ${maxSize >= 1 ? 'MB' : 'KB'}`, 'Error', 3000);\n return;\n }\n\n return new Promise<void>((resolve) => {\n let reader = new FileReader();\n reader.onload = async (e: any) => {\n let mimeType = file.type;\n let buffer = new Uint8Array(<ArrayBuffer>reader.result);\n\n try {\n let uploadResponse = await this.fileUploadService.getUploadUrl(this.urlConfig.getUploadUrl, file.name, mimeType, this.currentEntityType).toPromise();\n let uploadData = uploadResponse.data.uploadUrlData;\n\n let currentFileData = {\n title: file.name, name: file.name, s3Url: uploadData.resourceUrl,\n s3Path: uploadData.uploadPath, filename: file.name, id: null,\n uploadData: uploadData, loading: true, buffer: buffer\n };\n\n this.filesArray = [currentFileData, ...this.filesArray];\n this.setSliderLoading();\n uploadedFiles.push(currentFileData);\n\n await this.fileUploadService.putFile(uploadData.uploadURL, e.target.result).toPromise();\n\n // Final processing\n currentFileData.s3Url = currentFileData.uploadData?.resourceUrl;\n currentFileData.loading = !this.config?.isStoredDb;\n this.setSliderLoading();\n\n resolve();\n } catch (error: any) {\n this.helper.showHttpErrorMsg(error);\n resolve();\n }\n };\n\n reader.readAsArrayBuffer(file);\n });\n }\n\n uploadFiles(data: any) {\n return new Promise((resolve, reject) => {\n if (data && data.length > 0) {\n console.log('There is a file pending to attach:', data);\n\n let files: any[] = [];\n let fa = data.map((r: any) => {\n if (r?.uploadData) {\n files.push({ fileName: r.uploadData?.fileName, resourceUrl: r.uploadData?.resourceUrl, uploadPath: r.uploadData?.uploadPath, uploadURL: r.uploadData?.uploadURL });\n // delete r.uploadData;\n }\n\n return r;\n\n });\n\n this.fileUploadService.attachFilesToEntity(this.urlConfig.attachToEntity, { files: files, entityId: this.currentEntityId, entityType: this.currentEntityType }).subscribe({\n next: (ir: any) => {\n // this.filesArray = fa;\n this.filesArray[0].loading = false;\n this.onSubmit();\n resolve(ir);\n },\n error: (imErr: any) => reject(imErr)\n });\n } else {\n resolve(false);\n }\n });\n }\n\n deleteFile(event: any, t: any, index: number, file: any) {\n event.stopPropagation();\n if (this.isEnableDeleteConfirmation) {\n let confirmBoxData: DialogConfig = {\n title: this.dialogConfig.title,\n message: this.deleteConfirmationMsg ?? this.dialogConfig.message,\n iconClass: this.dialogConfig.iconClass,\n icon: this.dialogConfig.icon,\n approveButtonText: this.dialogConfig.approveButtonText,\n approveButtonClass: this.dialogConfig.approveButtonClass,\n cancelButtonText: this.dialogConfig.cancelButtonText,\n cancelButtonClass: this.dialogConfig.cancelButtonClass\n };\n\n const dialogRef = this.dialog.open(TisConfirmationDialogComponent, {\n width: \"450px\",\n panelClass: ['tis-simple-confirmation'],\n data: confirmBoxData,\n disableClose: true,\n });\n\n dialogRef.afterClosed().subscribe((result: any) => {\n console.log(\"The dialog was closed with result:\", result);\n if (result) {\n this.removeFile(event, index, file);\n }\n });\n }\n else {\n this.removeFile(event, index, file);\n }\n }\n\n removeFile(event: any, index: number, file: any) {\n this.loading = true;\n this.filesArray[index].loading = true;\n if (file?.id) {\n delete file.uploadData;\n this.removeUploadedFile(file, index, true);\n }\n else {\n this.loading = false;\n this.filesArray.splice(index, 1);\n this.setSliderLoading();\n this.onSubmit();\n this.onFileRemoved.emit(true);\n }\n }\n\n removeUploadedFile(file: any, index: number, silently = false) {\n console.log(\"removeUploadedFile:\", file);\n this.fileUploadService.deleteUploadedFile(this.urlConfig.removeImage, file).subscribe((r: any) => {\n console.log('File Delete Res:', r);\n this.loading = false;\n this.filesArray.splice(index, 1);\n this.setSliderLoading();\n this.onSubmit();\n if (!silently) {\n this.helper.showSuccessMsg(r.message, 'Success', 3000);\n }\n this.onSubmit();\n },\n (err: any) => { this.filesArray[index].loading = false; this.helper.showErrorMsg(err, \"Error\") })\n }\n\n onSubmit() {\n this.onUploaded.emit(this.filesArray);\n }\n\n async downloadFile(url: string, fileName: string) {\n fetch(url)\n .then(response => response.blob())\n .then(blob => {\n const blobUrl = URL.createObjectURL(blob);\n const el = document.createElement(\"a\");\n el.href = blobUrl;\n el.download = fileName;\n document.body.appendChild(el);\n el.click();\n document.body.removeChild(el);\n URL.revokeObjectURL(blobUrl); // Cleanup\n })\n .catch(error => console.error(\"Download failed\", error));\n }\n\n clickTimeout: any = null;\n clickDelay: number = 250; // Delay in milliseconds to distinguish single and double click\n\n onSelectFile(file: any) {\n if (this.config.selectionMode) {\n if (this.clickTimeout) {\n clearTimeout(this.clickTimeout);\n this.clickTimeout = null;\n this.openFile(file); // Double-click detected\n } else {\n this.clickTimeout = setTimeout(() => {\n this.clickTimeout = null;\n if (this.config.selectionMode) {\n this.onFileSelect.emit(file); // Single-click detected\n }\n }, this.clickDelay);\n }\n }\n else {\n this.clickTimeout = null;\n this.openFile(file);\n }\n }\n\n openFile(file: any) {\n if (!this.config.hiddenPreview) {\n this.openPreviewDialog(file.s3Url, file.title);\n }\n }\n\n openPreviewDialog(url: string, title: string): void {\n if (url.indexOf('.jpg') != -1 || url.indexOf('.jpeg') != -1 || url.indexOf('.png') != -1) {\n this.openImagePreviewDialog(url);\n }\n else if (url.indexOf('.pdf') != -1) {\n this.openFileViewer(url, 'pdf');\n }\n // else if(url.indexOf('.csv') != -1){\n // this.openFileViewer(url, 'csv');\n // }\n else if (url.indexOf('.xlxs') != -1 || url.indexOf('.xlx') != -1 || url.indexOf('.xls') != -1) {\n this.openFileViewer(url, 'excel');\n }\n else {\n this.downloadFile(url, title);\n }\n }\n\n openImagePreviewDialog(url: string): void {\n const dialogRef = this.dialog.open(TisPreviewImageComponent, {\n panelClass: ['mat-p-0', 'relative'],\n data: { url },\n });\n\n dialogRef.afterClosed().subscribe((result: any) => {\n console.log('The dialog was closed', result);\n });\n }\n\n openFileViewer(pdfUrl: string, fileType: FileViewerFileType) {\n let dialogData: FileViewerDialogData = {\n src: pdfUrl,\n fileType: fileType\n };\n\n const dialogRef = this.dialog.open(TisFileViewerComponent, {\n width: this.isMobile ? \"100%\" : \"90%\",\n height: this.isMobile ? \"100%\" : \"98%\",\n minHeight: this.isMobile ? \"100%\" : \"80%\",\n maxWidth: this.isMobile ? \"100%\" : \"100%\",\n panelClass: ['tis-file-viewer'],\n data: dialogData,\n disableClose: false,\n });\n\n dialogRef.afterClosed().subscribe((result: any) => {\n console.log(\"FileViewer Dialog Closed\");\n });\n }\n\n checkingForPreview(img: string) {\n let imageArray = img.split('.');\n let imageType = imageArray[imageArray?.length - 1];\n if (imageType == 'png' || imageType == 'jpg' || imageType == 'jpeg') {\n return true;\n }\n else {\n return false;\n }\n }\n\n setHeight(id: string) {\n let height = document.getElementById(id)?.offsetWidth;\n return `${height}px`;\n }\n}\n","<div>\n <input type=\"file\" size=\"60\" *ngIf=\"!config?.isMultiple\" id=\"{{config.selectorId}}\" (change)=\"type == 'file'? detectFiles($event): detectImages($event)\" accept=\"{{accept}}\" style=\"display: none;\" />\n <input type=\"file\" size=\"60\" *ngIf=\"config?.isMultiple\" id=\"{{config.selectorId}}\" (change)=\"type == 'file'? detectFiles($event): detectImages($event)\" accept=\"{{accept}}\" multiple style=\"display: none;\" />\n <!-- <input type=\"file\" name=\"file\" id=\"file-picker\" style=\"display: none;\" *ngIf=\"(filesArray?.length < config?.limit) && !disabled\" [style.height]=\"config?.labelHeight\"> -->\n @if(viewType == 'card'){\n <div [class.image-picker-label]=\"!previewOnly\" [class.error]=\"required && (filesArray?.length || 0) <= 0\" [style.height]=\"filesArray?.length ? null : config?.height\" style=\"--tis-image-picker-height: {{config?.height ?? 0}}\">\n @if(filesArray?.length){\n <div [ngClass]=\"{'grid-cols-1': config?.cols == 1, 'grid-cols-2': config?.cols == 2, 'grid-cols-3': config?.cols == 3, 'grid-cols-4': config?.cols == 4, 'grid-cols-5': config?.cols == 5, 'grid-cols-6': config?.cols == 6}\" class=\"{{previewInFlex ? 'flex' : 'grid'}} image-list\" style=\"gap: 25px;\">\n @for(file of filesArray; track file.s3Url; let i = $index; let l = $last;){\n <!-- style=\"height: calc((var(--tis-image-picker-height) - 48px - 0.75rem) / 2); width: calc((var(--tis-image-picker-height) - 48px - 0.75rem) / 2);\" -->\n <div class=\"image-item {{imageItemClass}}\" [class.selected]=\"config?.selectionMode ? selectedId == file.id : false\" [class.tis-curser-pointer]=\"!config?.hiddenPreview || config?.selectionMode\" id=\"image-item-{{config.selectorId}}-{{i}}\" [style.height]=\"setHeight('image-item-'+config.selectorId+'-'+i)\" [style.background-image]=\"type == 'file'? '' : 'url('+file.s3Url+')'\" *ngIf=\"file?.loading\">\n <div class=\"shedded\" style=\"width: 100%; height: 100%; position: absolute; top: 0px; left: 0px; display: flex; justify-content: center; align-items: center;\">\n <mat-progress-spinner color=\"primary\" mode=\"indeterminate\" [diameter]=\"30\"></mat-progress-spinner>\n </div>\n <mat-icon *ngIf=\"type == 'file'\" class=\"active tis-mat-icon-2x\">description</mat-icon>\n </div>\n <div class=\"image-item {{imageItemClass}}\" [class.selected]=\"config?.selectionMode ? selectedId == file.id : false\" [class.tis-curser-pointer]=\"!config?.hiddenPreview || config?.selectionMode\" id=\"image-item-{{config.selectorId}}-{{i}}\" [style.height]=\"setHeight('image-item-'+config.selectorId+'-'+i)\" [style.background-image]=\"type == 'file'? '' : 'url('+file.s3Url+')'\" (click)=\"onSelectFile(file)\" *ngIf=\"!file?.loading\">\n <mat-icon *ngIf=\"type == 'file'\" class=\"active tis-mat-icon-2x\">description</mat-icon>\n <span class=\"material-icons cancel\" (click)=\"type == 'file'? deleteFile($event, {}, i, file) : deleteImage($event, {}, i, file)\" *ngIf=\"!disabled && !config.hiddenDeleteBtn\">highlight_off</span>\n <span class=\"material-icons download\" (click)=\"$event.stopPropagation(); downloadFile(file.s3Url, file.title)\" *ngIf=\"!disabled && !config.hiddenDownloadBtn\">download_for_offline</span>\n </div>\n @if(l && (config?.limit || 0) > (filesArray?.length || 0) && !disabled){\n <!-- style=\"height: calc((var(--tis-image-picker-height) - 48px - 0.75rem) / 2); width: calc((var(--tis-image-picker-height) - 48px - 0.75rem) / 2);\" -->\n <div class=\"image-item uploader\" id=\"image-item-{{config.selectorId}}-{{i}}-{{i}}\" [style.height]=\"setHeight('image-item-'+config.selectorId+'-'+i+'-'+i)\" (click)=\"loading? null : openImageSelector()\">\n <mat-icon class=\"active\">upload_file</mat-icon>\n </div>\n }\n }\n </div>\n }\n @else if(!disabled){\n <label style=\"display: flex; gap: 12px; flex-direction: column; justify-content: center; align-items: center; height: 100%; cursor: pointer;\" (click)=\"loading? null : openImageSelector()\">\n <mat-icon>upload_file</mat-icon>\n <p style=\"text-align: center; font-size: 14px;\">\n {{label}}\n @if(hint && hint != ''){\n <br>\n <small>{{hint}}</small>\n }\n </p>\n </label>\n }\n @else{\n <div style=\"display: flex; flex-direction: column; justify-content: center; align-items: center; width: 100%; cursor: pointer;\">\n <img src=\"assets/icons/norecordfound.png\" alt=\"data not found\" style=\"margin: auto; height: calc(var(--tis-image-picker-height) - 30px); max-height: 150px;\">\n </div>\n }\n </div>\n }\n @else if(viewType == 'list'){\n <div [class.error-border]=\"required && (filesArray?.length || 0) <= 0\" [style.height]=\"filesArray?.length ? null : config?.height\" style=\"width: 100%; display: flex; gap: 12px; flex-direction: column; --tis-image-picker-height: {{config?.height ?? 0}}\">\n @if(filesArray?.length){\n @for(file of filesArray; track file.s3Url; let i = $index; let l = $last;){\n <div style=\"position: relative; display: flex; align-items: center; gap: 10px; border-radius: 5px; border: 1px solid black; padding: 5px; height: 56px;\">\n <mat-icon style=\"width: 40px; min-width: 22px;\">description</mat-icon>\n <div style=\"white-space: nowrap; overflow: hidden; text-overflow: ellipsis; width: 100%;\">{{file?.title}}</div>\n <div style=\"display: flex; align-items: center; gap: 4px;\" *ngIf=\"!file?.loading\">\n <button type=\"button\" mat-icon-button aria-label=\"Download File\" class=\"tis-icon-btn-sm tis-text-download\" style=\"margin: 0px !important;\" (click)=\"$event.stopPropagation(); downloadFile(file.s3Url, file.title)\" *ngIf=\"!disabled && !config.hiddenDownloadBtn\">\n <mat-icon>download_for_offline</mat-icon>\n </button>\n <button type=\"button\" mat-icon-button aria-label=\"View File\" class=\"tis-icon-btn-sm tis-text-view\" style=\"margin: 0px !important;\" (click)=\"openFile(file)\" *ngIf=\"!config.hiddenPreview\">\n <mat-icon>visibility</mat-icon>\n </button>\n <button type=\"button\" mat-icon-button aria-label=\"Remove File\" class=\"tis-icon-btn-sm tis-text-cancel\" style=\"margin: 0px !important;\" (click)=\"type == 'file'? deleteFile($event, {}, i, file) : deleteImage($event, {}, i, file)\" *ngIf=\"!disabled && !config.hiddenDeleteBtn\">\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n <div style=\"display: flex; justify-content: center; align-items: center; gap: 4px;\" style=\"width: 50px;\" *ngIf=\"file?.loading\">\n <mat-progress-spinner color=\"primary\" mode=\"indeterminate\" [diameter]=\"20\"></mat-progress-spinner>\n </div>\n <!-- <span class=\"material-icons download\" (click)=\"$event.stopPropagation(); downloadFile(file.s3Url, file.title)\" *ngIf=\"!disabled && !config.hiddenDownloadBtn\">download_for_offline</span> -->\n </div>\n @if(l && (config?.limit || 0) > (filesArray?.length || 0) && !disabled){\n <div style=\"cursor: pointer; display: flex; align-items: center; gap: 4px; border: 1px solid black; border-radius: 5px; padding: 5px; height: 56px;\" (click)=\"loading? null : openImageSelector()\">\n <mat-icon style=\"width: 40px; min-width: 22px;\">upload_file</mat-icon>\n <div style=\"width: 100%;\">\n <div style=\"display: flex; flex-direction: column; align-items: start; font-size: 14px;\">\n {{label}}\n @if(hint && hint != ''){\n <small>{{hint}}</small>\n }\n </div>\n </div>\n </div>\n }\n }\n }\n @else if(!disabled){\n <div style=\"cursor: pointer; display: flex; align-items: center; gap: 4px; border: 1px solid black; border-radius: 5px; padding: 5px; height: 56px;\" (click)=\"loading? null : openImageSelector()\">\n <mat-icon style=\"width: 40px; min-width: 22px;\">upload_file</mat-icon>\n <div style=\"width: 100%;\">\n <div style=\"display: flex; flex-direction: column; align-items: start; font-size: 14px;\">\n {{label}}\n @if(hint && hint != ''){\n <small>{{hint}}</small>\n }\n </div>\n </div>\n </div>\n }\n </div>\n }\n</div>","import { NgModule } from '@angular/core';\nimport { TisImageAndFileUploadAndViewComponent } from './tis-image-and-file-upload-and-view/tis-image-and-file-upload-and-view.component';\nimport { TisPreviewImageComponent } from './tis-preview-image/tis-preview-image.component';\nimport { CommonModule } from '@angular/common';\nimport { TisFileViewerComponent } from './tis-file-viewer/tis-file-viewer.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { TisErrorDialogComponent } from './tis-error-dialog/tis-error-dialog.component';\nimport { TisConfirmationDialogComponent } from './tis-confirmation-dialog/tis-confirmation-dialog.component';\n\n\nconst uiImports = [\n MatTooltipModule,\n MatIconModule,\n MatSnackBarModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatDialogModule,\n];\n\n\n@NgModule({\n declarations: [\n TisImageAndFileUploadAndViewComponent,\n TisPreviewImageComponent,\n TisFileViewerComponent,\n TisErrorDialogComponent,\n TisConfirmationDialogComponent\n ],\n imports: [\n CommonModule,\n ...uiImports\n ],\n exports: [\n TisImageAndFileUploadAndViewComponent\n ]\n})\nexport class TisImageAndFileUploadAndViewModule { }\n","/*\n * Public API Surface of tis-image-and-file-upload-and-view\n */\n\nexport * from './lib/tis-image-and-file-upload-and-view.service';\nexport * from './lib/tis-image-and-file-upload-and-view/tis-image-and-file-upload-and-view.component';\nexport * from './lib/tis-image-and-file-upload-and-view.module';\n\nexport * from './lib/interfaces';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i4","i1","i2","i3","i2.FileUploadService","i3.ImageUploadService","i4.TisHelperService","i6","i7","i8","i9"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"servicemind.tis-tis-image-and-file-upload-and-view.mjs","sources":["../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-image-and-file-upload-and-view.service.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-file-viewer/tis-pdf-viewer/tis-pdf-viewer.component.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-file-viewer/tis-pdf-viewer/tis-pdf-viewer.component.html","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-file-viewer/tis-excel-file-viewer/tis-excel-file-viewer.component.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-file-viewer/tis-excel-file-viewer/tis-excel-file-viewer.component.html","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-file-viewer/tis-video/tis-video.component.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-file-viewer/tis-video/tis-video.component.html","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-file-viewer/tis-file-viewer.component.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-file-viewer/tis-file-viewer.component.html","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-preview-image/tis-preview-image.component.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-preview-image/tis-preview-image.component.html","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-error-dialog/tis-error-dialog.component.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-error-dialog/tis-error-dialog.component.html","../../../projects/tis-image-and-file-upload-and-view/src/lib/services/tis-helper.service.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-confirmation-dialog/tis-confirmation-dialog.component.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-confirmation-dialog/tis-confirmation-dialog.component.html","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-image-and-file-upload-and-view/tis-image-and-file-upload-and-view.component.ts","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-image-and-file-upload-and-view/tis-image-and-file-upload-and-view.component.html","../../../projects/tis-image-and-file-upload-and-view/src/lib/tis-image-and-file-upload-and-view.module.ts","../../../projects/tis-image-and-file-upload-and-view/src/public-api.ts","../../../projects/tis-image-and-file-upload-and-view/src/servicemind.tis-tis-image-and-file-upload-and-view.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TisImageAndFileUploadAndViewService {\n\n constructor() { }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnChanges, SimpleChanges, ViewChild } from '@angular/core';\nimport type { SafeUrl } from '@angular/platform-browser';\nimport { NgxExtendedPdfViewerComponent } from 'ngx-extended-pdf-viewer';\n\n@Component({\n selector: 'tis-pdf-viewer',\n standalone: false,\n templateUrl: './tis-pdf-viewer.component.html',\n styleUrl: './tis-pdf-viewer.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TisPdfViewerComponent implements OnChanges {\n\n loading = true;\n isError = false;\n\n @Input({ required: true }) src!: string;\n\n @ViewChild(NgxExtendedPdfViewerComponent, { static: false })\n private pdfViewer!: NgxExtendedPdfViewerComponent;\n\n constructor(\n private cdRef: ChangeDetectorRef\n ) {\n\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if(changes['src']) {\n console.log('Pdf Viewer: src changed: ', changes['src']);\n }\n }\n\n destroyPdfViewer() {\n this.pdfViewer.ngOnDestroy();\n }\n\n loadingFinished(ev: any) {\n console.log('PDF Loaded', ev)\n this.loading = false;\n this.cdRef.detectChanges();\n this.pdfViewer.height = 'auto';\n }\n\n loadingError(ev: any) {\n console.log('PDF Loading Error:', ev);\n this.isError = true;\n this.loading = false;\n this.cdRef.detectChanges();\n }\n\n}\n","@if (isError) {\n <div class=\"flex tis-justify-content-center py-4\">\n <h3> Some Error Occurred in Loading PDF File. Please Try again. </h3>\n </div>\n} \n\n@if (!isError) {\n <div class=\"tis-extended-pdf-viewer\">\n @if(loading) {\n <div class=\"loading\">\n <mat-progress-spinner color=\"primary\" mode=\"indeterminate\" [diameter]=\"50\"></mat-progress-spinner>\n </div>\n }\n <ngx-extended-pdf-viewer [src]=\"src\"\n [showToolbar]=\"true\"\n [showSidebarButton]=\"true\"\n [showFindButton]=\"false\"\n [showPagingButtons]=\"true\"\n [showDrawEditor]=\"false\"\n [showStampEditor]=\"false\"\n [showTextEditor]=\"false\"\n [showZoomButtons]=\"true\"\n [showPresentationModeButton]=\"false\"\n [showOpenFileButton]=\"false\"\n [showPrintButton]=\"true\"\n [showDownloadButton]=\"true\"\n [showSecondaryToolbarButton]=\"false\"\n [showRotateButton]=\"true\"\n [showHandToolButton]=\"false\"\n [showScrollingButton]=\"true\"\n [showSpreadButton]=\"false\"\n [showPropertiesButton]=\"false\"\n [zoom]=\"'page-fit'\"\n (pdfDownloaded)=\"loadingFinished($event)\"\n (pdfLoaded)=\"loadingFinished($event)\"\n (pdfLoadingFailed)=\"loadingError($event)\"\n >\n </ngx-extended-pdf-viewer>\n </div>\n}\n \n ","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport type { SafeUrl } from '@angular/platform-browser';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Component({\n selector: 'tis-excel-file-viewer',\n standalone: false,\n templateUrl: './tis-excel-file-viewer.component.html',\n styleUrl: './tis-excel-file-viewer.component.css'\n})\nexport class TisExcelFileViewerComponent implements OnChanges {\n\n @Input({ required: true }) src!: SafeUrl;\n\n baseUrl = `https://view.officeapps.live.com/op/embed.aspx?src=`;\n iframeSrc: SafeUrl | null = null;\n\n constructor(private sanitizer: DomSanitizer ) {\n\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['src']) {\n console.log('Url Received', this.src);\n const src = this.baseUrl + this.src;\n this.iframeSrc = this.sanitizer.bypassSecurityTrustResourceUrl(src);\n console.log('Iframe src:', this.iframeSrc);\n }\n }\n\n \n}\n","<div class=\"bg-slate-900 w-full h-5\">\n \n</div>\n<div class=\"aspect-w-16 aspect-h-9\">\n <iframe class=\"w-full h-full\" [src]=\"iframeSrc\" frameborder='0'>This is an embedded <a target='_blank'\n href='http://office.com'>Microsoft Office</a> document, powered by <a target='_blank'\n href='http://office.com/webapps'>Office Online</a>.</iframe>\n</div>","import { Component, Input, SimpleChanges } from '@angular/core';\nimport type { SafeUrl } from '@angular/platform-browser';\n\n@Component({\n selector: 'tis-video',\n standalone: false,\n templateUrl: './tis-video.component.html',\n styleUrl: './tis-video.component.css'\n})\nexport class TisVideoComponent {\n @Input({ required: true }) src!: SafeUrl;\n type!: string;\n\n constructor() {}\n\n ngOnInit(): void {\n if(this.src){\n this.type = this.getFileType(String(this.src));\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if(changes['src']) {\n console.log('Pdf Viewer: src changed: ', changes['src']);\n this.type = this.getFileType(changes['src'].currentValue);\n }\n }\n\n getFileType(text: string) {\n let txtArr = text.split('.');\n let fileType = txtArr[txtArr.length - 1];\n return fileType.toLocaleLowerCase() == 'mov' ? 'mp4': fileType.toLocaleLowerCase();\n }\n}\n","<video controls autoplay style=\"min-width: 300px; max-width: 90vw; min-height: 300px; max-height: 90vh;\">\n <source [src]=\"src\" type=\"video/{{type}}\">\n Your browser does not support the video tag.\n</video>","import { Component, Inject, ViewChild } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport type { FileViewerDialogData } from '../interfaces';\nimport { TisPdfViewerComponent } from './tis-pdf-viewer/tis-pdf-viewer.component';\n\n@Component({\n selector: 'tis-file-viewer',\n standalone: false,\n templateUrl: './tis-file-viewer.component.html',\n styleUrl: './tis-file-viewer.component.css'\n})\nexport class TisFileViewerComponent {\n safeUrl!: string;\n\n @ViewChild(TisPdfViewerComponent, { static: false }) private pdfViewer!: TisPdfViewerComponent;\n\n constructor(\n public dialogRef: MatDialogRef<TisFileViewerComponent>,\n @Inject(MAT_DIALOG_DATA) public data: FileViewerDialogData,\n private sanitizer: DomSanitizer\n ) {\n console.log('File Viewer Data:', data);\n\n this.safeUrl = this.data.src;\n console.log('FileViewer SafeUrl:', this.safeUrl);\n\n dialogRef.beforeClosed().subscribe((result) => {\n console.log('The dialog is about to be closed');\n // Here's the interesting bit:\n if (this.pdfViewer) {\n this.pdfViewer.destroyPdfViewer();\n console.log('PDF Viewer Destroyed.');\n }\n });\n }\n\n downloadFile() {\n var el = document.createElement(\"a\");\n el.setAttribute(\"href\", this.safeUrl);\n el.setAttribute(\"download\", 'Video-' + new Date().valueOf());\n document.body.appendChild(el);\n el.click();\n el.remove();\n }\n\n onClose(status: boolean | null): void {\n this.dialogRef.close(status);\n }\n}\n","@if(safeUrl) {\n <div class=\"tis-pdf-viewer\">\n @if(data.fileType == 'video') {\n <mat-icon class=\"download-btn\" (click)=\"downloadFile()\" matTooltip=\"Download\">download</mat-icon>\n <!-- <button mat-icon-button color=\"primary\" class=\"download-btn\" >\n <mat-icon>download</mat-icon>\n </button> -->\n }\n @else {\n <button mat-mini-fab color=\"primary\" class=\"close-btn\" (click)=\"onClose(null)\" matTooltip=\"Close\">\n <mat-icon>clear</mat-icon>\n </button>\n }\n @if(data.fileType == 'pdf') {\n <tis-pdf-viewer [src]=\"safeUrl\"></tis-pdf-viewer>\n }\n @else if(data.fileType == 'excel') {\n <tis-excel-file-viewer [src]=\"safeUrl\"></tis-excel-file-viewer>\n }\n @else if(data.fileType == 'video') {\n <tis-video [src]=\"safeUrl\"></tis-video>\n }\n </div>\n}\n","import { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n selector: 'tis-preview-image',\n standalone: false,\n templateUrl: './tis-preview-image.component.html',\n styleUrl: './tis-preview-image.component.css'\n})\nexport class TisPreviewImageComponent {\n width = 850;\n height = 650;\n isLoading: boolean = true;\n isLandscape: boolean | undefined;\n orientation: string | undefined;\n imageWidth: number | undefined;\n imageHeight: number | undefined;\n\n\n constructor(\n public dialogRef: MatDialogRef<TisPreviewImageComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n ) { }\n\n ngOnInit(): void {\n if (this.data.url) {\n setTimeout(() => {\n this.checkImageOrientation(this.data.url);\n }, 500);\n }\n }\n\n checkImageOrientation(imageUrl: string): void {\n const img = new Image();\n img.src = imageUrl;\n this.isLoading = true;\n\n img.onload = () => {\n this.imageWidth = img.naturalWidth;\n this.imageHeight = img.naturalHeight;\n this.isLandscape = img.naturalWidth > img.naturalHeight;\n this.orientation = this.isLandscape ? 'landscape-image' : 'portrait-image';\n this.isLoading = false;\n };\n\n img.onerror = () => {\n console.error('Failed to load image.');\n this.isLoading = false;\n };\n }\n\n onClose() {\n this.dialogRef.close()\n }\n}\n","@if(isLoading){\n <div style=\"width: 350px; height: 350px; display: flex; justify-content: center; align-items: center\">\n <mat-progress-spinner color=\"primary\" mode=\"indeterminate\" [diameter]=\"80\"></mat-progress-spinner>\n </div>\n}\n@else{\n <div class=\"w-100 dialog-container\" appScrolling style=\"--img-width: {{(imageWidth && imageWidth < 700) ? imageWidth : 650}}px; --img-height: {{(imageHeight && imageHeight < 600) ? imageHeight : 600}}px\">\n <mat-icon\n class=\"close-icon\"\n (click)=\"onClose()\">cancel</mat-icon>\n <img \n *ngIf=\"data.url\" \n [src]=\"data.url\" \n alt=\"preview-image\" \n class=\"preview-image {{orientation}}\">\n </div>\n}","import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'lib-tis-error-dialog',\n standalone: false,\n templateUrl: './tis-error-dialog.component.html',\n styleUrl: './tis-error-dialog.component.css'\n})\nexport class TisErrorDialogComponent {\n constructor(\n public dialogRef: MatDialogRef<TisErrorDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n ) {}\n\n onClose(): void {\n this.dialogRef.close();\n }\n}\n","<h1 mat-dialog-title>\n <mat-icon class=\"{{data?.iconClass}}\">{{data?.icon}}</mat-icon>\n {{data?.title}}\n</h1>\n<div mat-dialog-content>\n {{data?.message}}\n</div>\n<div mat-dialog-actions>\n <button mat-button class=\"tis-text-upper {{data?.buttonClass ?? 'tis-btn-primary'}}\" (click)=\"onClose()\" cdkFocusInitial *ngIf=\"data?.buttonText && data?.buttonText != ''\">{{data?.buttonText}}</button>\n</div>","import { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { MatSnackBar, MatSnackBarRef, TextOnlySnackBar } from '@angular/material/snack-bar';\nimport { TisErrorDialogComponent } from '../tis-error-dialog/tis-error-dialog.component';\nimport { Observable } from 'rxjs';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TisHelperService {\n\n constructor(\n private snackBar: MatSnackBar,\n private dialog: MatDialog,\n private http: HttpClient\n ) { }\n\n showHttpErrorMsg(error: HttpErrorResponse, duration = 5000) {\n console.log('httpError: ', error);\n\n let errorMessage = 'Some Unknown Error Occurred.';\n let errorCode = 'Unknown Error';\n const httpError = error;\n\n if (httpError.status >= 400) {\n const errorFromServer = httpError.error;\n if (Array.isArray(errorFromServer) && errorFromServer.length > 0) {\n errorMessage = errorFromServer[0].message;\n errorCode = errorFromServer[0].code;\n }\n } else if (httpError.status < 100) {\n errorMessage = httpError.message;\n errorCode = httpError.statusText;\n }\n\n if (errorCode == \"VALIDATION_ERROR\" || errorCode == \"NOT_FOUND_ERROR\" || errorCode == \"THIRD_PARTY_API_ERROR\") {\n let confirmBoxData: any = {\n title: \"Error !\",\n message: errorMessage,\n icon: \"error\",\n iconClass: \"tis-text-danger\",\n buttonText: \"Ok\",\n buttonClass: \"tis-btn-primary\",\n };\n\n const dialogRef: MatDialogRef<TisErrorDialogComponent> = this.dialog.open(TisErrorDialogComponent, {\n width: \"550px\",\n panelClass: ['tis-simple-confirmation'],\n data: confirmBoxData,\n disableClose: false,\n });\n\n return dialogRef;\n\n } else {\n const snackbarRef: MatSnackBarRef<TextOnlySnackBar> = this.snackBar.open(errorMessage, 'Error', { duration: duration });\n return snackbarRef;\n }\n\n }\n\n showSuccessMsg(message: string, title: string, duration = 5000) {\n this.snackBar.open(message, title, {\n duration: duration\n })\n }\n\n showErrorMsg(message: string, title: string, duration = 5000) {\n this.snackBar.open(message, title, {\n duration: duration\n })\n }\n\n async compressFile(image: any, mimeType: string): Promise<Blob> {\n\n let imageData = image;\n\n let imageBlob: Blob = this.dataURItoBlob(imageData.split(',')[1], mimeType);\n return imageBlob;\n }\n\n dataURItoBlob(dataURI: string, mimeType: string): Blob {\n const byteString = window.atob(dataURI);\n const arrayBuffer = new ArrayBuffer(byteString.length);\n const int8Array = new Uint8Array(arrayBuffer);\n for (let i = 0; i < byteString.length; i++) {\n int8Array[i] = byteString.charCodeAt(i);\n }\n const blob = new Blob([int8Array], { type: mimeType });\n return blob;\n }\n\n getDataUrlFromFile(file: any) {\n return new Promise((resolve, reject) => {\n var reader = new FileReader();\n reader.onload = (e: any) => {\n resolve(e.target.result)\n };\n reader.onerror = (e: any) => {\n reject(e.target.error);\n };\n reader.readAsDataURL(file);\n })\n }\n\n getUploadUrl(url: string, filename: string, mimeType: string, type: string): Observable<any> {\n return this.http.post(url, { filename, mimeType, type });\n }\n\n attachFilesToEntity(url: string, data: any): Observable<any> {\n return this.http.post(url, data);\n }\n\n putFile(url: string, file: File, contentType?: string): Observable<any> {\n const headers = new HttpHeaders({ \"content-type\": contentType ? contentType : \"binary/octet-stream\"}).set('X-Skip-Auth-Interceptor', \"\");\n return this.http.put(url, file, { headers });\n }\n\n deleteUploadedFile(url: string, data: any): Observable<any> {\n return this.http.post(url, data);\n }\n\n}","import { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n selector: 'tis-confirmation-dialog',\n standalone: false,\n templateUrl: './tis-confirmation-dialog.component.html',\n styleUrl: './tis-confirmation-dialog.component.css'\n})\nexport class TisConfirmationDialogComponent {\n constructor(\n public dialogRef: MatDialogRef<TisConfirmationDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: any,\n ) {\n this.dialogRef.addPanelClass(['md-tis-w-400-px']);\n }\n\n onClose(status: boolean | null): void {\n this.dialogRef.close(status);\n }\n}\n","<h1 mat-dialog-title style=\"align-items: center; display: flex;\">\n <mat-icon class=\"{{data?.iconClass}}\">{{data?.icon}}</mat-icon>\n <span>{{data?.title}}</span>\n</h1>\n<div mat-dialog-content>\n @if(data?.html){\n <h5 class=\"title\">{{data?.message}}</h5>\n <div [innerHTML]=\"data.html\">\n </div>\n }\n @else {\n <span>{{data?.message}}</span>\n }\n</div>\n<div mat-dialog-actions>\n <button mat-button class=\"tis-text-upper {{data?.cancelButtonClass ?? 'tis-btn-primary'}}\" (click)=\"onClose(false)\" *ngIf=\"data?.cancelButtonText && data?.cancelButtonText != ''\">{{data?.cancelButtonText}}</button>\n <button mat-button class=\"tis-text-upper {{data?.approveButtonClass ?? 'tis-btn-primary'}}\" (click)=\"onClose(true)\" cdkFocusInitial *ngIf=\"data?.approveButtonText && data?.approveButtonText != ''\">{{data?.approveButtonText}}</button>\n</div>","import { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\nimport { TisFileViewerComponent } from '../tis-file-viewer/tis-file-viewer.component';\nimport type { DialogConfig, FileViewerDialogData, FileViewerFileType, UrlConfig } from '../interfaces';\nimport { TisPreviewImageComponent } from '../tis-preview-image/tis-preview-image.component';\nimport { BehaviorSubject, Observable, map, shareReplay } from 'rxjs';\nimport { MatDialog } from '@angular/material/dialog';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { TisHelperService } from '../services/tis-helper.service';\nimport { TisConfirmationDialogComponent } from '../tis-confirmation-dialog/tis-confirmation-dialog.component';\n\n@Component({\n selector: 'tis-image-and-file-upload-and-view',\n standalone: false,\n templateUrl: './tis-image-and-file-upload-and-view.component.html',\n styleUrl: './tis-image-and-file-upload-and-view.component.css'\n})\nexport class TisImageAndFileUploadAndViewComponent {\n private changeSubject = new BehaviorSubject<boolean>(false);\n\n @Input({required: true}) urlConfig!: UrlConfig;\n @Input() entityType!: string;\n @Input() entityId: any;\n @Input() viewType: 'card' | 'list' = 'card';\n @Input() type: 'image' | 'file' = 'image';\n @Input() label: string | null = null;\n @Input() disabled: boolean = false;\n @Input() data: any;\n @Input() hint: string | null = null;\n @Input() accept: string = '';\n @Input() selectedId: any = null;\n @Input() options: any = null;\n @Input() required: boolean = false;\n @Input() previewOnly: boolean = false;\n @Input() previewInFlex: boolean = false;\n @Input() imageItemClass: string = '';\n @Input() isEnableDeleteConfirmation: boolean = true;\n @Input() deleteConfirmationMsg!: string;\n @Input() dialogConfig!: DialogConfig;\n @Output() uploadInProgress = new EventEmitter();\n @Output() onUploaded = new EventEmitter();\n @Output() onFileSelect = new EventEmitter<any>();\n @Output() onFileRemoved = new EventEmitter<any>();\n\n isMobile = false;\n isTab = false;\n\n isHandset$!: Observable<boolean>;\n isTab$!: Observable<boolean>;\n\n\n config: any = {\n isCompressed: false,\n hiddenDeleteBtn: false,\n hiddenPreview: false,\n selectionMode: false,\n isStoredDb: false,\n isMultiple: false,\n fileSize: null,\n limit: 10,\n cols: 5,\n colsForTab: 5,\n colsForMobile: 3,\n height: '130px',\n selectorId: 'choosing-img',\n };\n\n isSliderLoaded = true;\n\n filesArray: any[] = [\n // {\n // \"s3Url\": \"https://obk-servicemind-uat-resources.s3.ap-southeast-1.amazonaws.com/parcel_create/da226bf2-4e5f-4180-94d8-6746b1ce139b.jpg\",\n // \"uploadData\": {\n // \"isBase64Encoded\": false,\n // \"headers\": {\n // \"Access-Control-Allow-Origin\": \"*\"\n // },\n // \"uploadURL\": \"https://obk-servicemind-uat-resources.s3.ap-southeast-1.amazonaws.com/parcel_create/da226bf2-4e5f-4180-94d8-6746b1ce139b.jpg?Content-Type=image%2Fjpeg&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA37VN5NQI5HY4VFVN%2F20220617%2Fap-southeast-1%2Fs3%2Faws4_request&X-Amz-Date=20220617T152621Z&X-Amz-Expires=900&X-Amz-Signature=4004cfb10a740b9623d486de992a06f53b458ed6fc151c092eea88a3059eae8f&X-Amz-SignedHeaders=host%3Bx-amz-acl&x-amz-acl=public-read\",\n // \"photoFilename\": \"f7a32cd0-d0c1-474a-838e-47402d80527a.jpeg\",\n // \"fileName\": \"1452664590074.jpeg\",\n // \"uploadPath\": \"/survey_orders/f7a32cd0-d0c1-474a-838e-47402d80527a.jpeg\",\n // \"resourceUrl\": \"https://obk-servicemind-uat-resources.s3.ap-southeast-1.amazonaws.com/parcel_create/da226bf2-4e5f-4180-94d8-6746b1ce139b.jpg\"\n // }\n // },\n // {\n // \"s3Url\": \"https://obk-servicemind-uat-resources.s3.ap-southeast-1.amazonaws.com/parcel_create/31033a2a-5db6-450d-a541-58a94654dd0c.jpg\",\n // \"uploadData\": {\n // \"isBase64Encoded\": false,\n // \"headers\": {\n // \"Access-Control-Allow-Origin\": \"*\"\n // },\n // \"uploadURL\": \"https://servicemind-resources-staging.s3.ap-southeast-1.amazonaws.com/survey_orders/6c537889-c72a-48ca-9134-638e8d6a1aac.sql?Content-Type=application%2Fsql&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA37VN5NQI5HY4VFVN%2F20220617%2Fap-southeast-1%2Fs3%2Faws4_request&X-Amz-Date=20220617T152641Z&X-Amz-Expires=900&X-Amz-Signature=bcdf347df2a6495615bf48d619492e1deac2264231161da5dc3becaa7f45a796&X-Amz-SignedHeaders=host%3Bx-amz-acl&x-amz-acl=public-read\",\n // \"photoFilename\": \"6c537889-c72a-48ca-9134-638e8d6a1aac.sql\",\n // \"fileName\": \"eccom_bermuda.sql\",\n // \"uploadPath\": \"/survey_orders/6c537889-c72a-48ca-9134-638e8d6a1aac.sql\",\n // \"resourceUrl\": \"https://servicemind-resources-staging.s3.ap-southeast-1.amazonaws.com/survey_orders/6c537889-c72a-48ca-9134-638e8d6a1aac.sql\"\n // }\n // },\n // {\n // \"s3Url\": \"https://obk-servicemind-uat-resources.s3.ap-southeast-1.amazonaws.com/parcel_create/b8424185-30c6-4f44-ba1e-ff616dfd6576.jpg\",\n // \"uploadData\": {\n // \"isBase64Encoded\": false,\n // \"headers\": {\n // \"Access-Control-Allow-Origin\": \"*\"\n // },\n // \"uploadURL\": \"https://servicemind-resources-staging.s3.ap-southeast-1.amazonaws.com/survey_orders/232f2548-dc93-4204-8835-86b69f3005a7.pdf?Content-Type=application%2Fpdf&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA37VN5NQI5HY4VFVN%2F20220617%2Fap-southeast-1%2Fs3%2Faws4_request&X-Amz-Date=20220617T152656Z&X-Amz-Expires=900&X-Amz-Signature=85643479c3fbecc5bd1fee9783e3cb72e27e16a034921b52cf2f377eefb01ff9&X-Amz-SignedHeaders=host%3Bx-amz-acl&x-amz-acl=public-read\",\n // \"photoFilename\": \"232f2548-dc93-4204-8835-86b69f3005a7.pdf\",\n // \"fileName\": \"print-registration-4x6.pdf\",\n // \"uploadPath\": \"/survey_orders/232f2548-dc93-4204-8835-86b69f3005a7.pdf\",\n // \"resourceUrl\": \"https://servicemind-resources-staging.s3.ap-southeast-1.amazonaws.com/survey_orders/232f2548-dc93-4204-8835-86b69f3005a7.pdf\"\n // }\n // }\n ];\n currentEntityId!: number;\n currentEntityType!: string;\n images = [];\n loading = false;\n status = false;\n\n\n constructor(\n public dialog: MatDialog,\n private helper: TisHelperService,\n private breakpointObserver: BreakpointObserver\n ) { }\n\n ngOnInit() {\n this.isHandset$ = this.breakpointObserver.observe([Breakpoints.Handset])\n .pipe(\n map(result => result.matches),\n shareReplay()\n );\n\n this.isTab$ = this.breakpointObserver.observe([Breakpoints.TabletPortrait])\n .pipe(\n map(result => result.matches),\n shareReplay()\n );\n \n this.prepareConfig();\n }\n\n ngAfterViewInit() {\n this.isHandset$.subscribe(r => {\n console.log('IS HANDSET:', r);\n this.isMobile = r;\n this.changeSubject.next(true);\n });\n this.isTab$.subscribe(r => {\n console.log('IS TAB:', r);\n this.isTab = r;\n this.changeSubject.next(true);\n });\n\n this.changeSubject.subscribe(status => {\n let cols = 1;\n if (this.isMobile) {\n cols = this.options?.colsForMobile ?? 3;\n }\n else if (this.isTab) {\n cols = this.options?.colsForTab ?? 4;\n }\n else {\n cols = this.options?.cols ?? 5;\n }\n\n this.config.cols = cols;\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['entityId']) {\n this.currentEntityId = changes['entityId'].currentValue;\n }\n if (changes['entityType']) {\n this.currentEntityType = changes['entityType'].currentValue;\n }\n if (changes['options']) {\n this.prepareConfig();\n }\n if (changes['data']) {\n this.filesArray = changes['data']?.currentValue ?? [];\n this.filesArray = this.filesArray?.map(r => {\n r.loading = false;\n return r;\n });\n console.log(\"this.filesArray\", this.filesArray);\n }\n }\n\n prepareConfig() {\n if (this.options?.isCompressed) {\n this.config.isCompressed = this.options?.isCompressed;\n }\n\n if (this.options?.isSliderPreview) {\n this.config.isSliderPreview = this.options?.isSliderPreview;\n }\n\n if (this.options?.hiddenDeleteBtn) {\n this.config.hiddenDeleteBtn = this.options?.hiddenDeleteBtn;\n }\n\n if (this.options?.hiddenPreview) {\n this.config.hiddenPreview = this.options?.hiddenPreview;\n }\n\n if (this.options?.selectionMode) {\n this.config.selectionMode = this.options?.selectionMode;\n }\n\n if (this.options?.isStoredDb) {\n this.config.isStoredDb = this.options?.isStoredDb;\n }\n\n if (this.options?.isMultiple) {\n this.config.isMultiple = this.options?.isMultiple;\n }\n\n if (this.options?.fileSize) {\n this.config.fileSize = this.options?.fileSize;\n }\n\n if (this.options?.limit) {\n this.config.limit = this.options?.limit;\n }\n\n if (this.options?.cols) {\n this.config.cols = this.options?.cols;\n }\n\n if (this.options?.colsForTab) {\n this.config.colsForTab = this.options?.colsForTab;\n }\n\n if (this.options?.colsForMobile) {\n this.config.colsForMobile = this.options?.colsForMobile;\n }\n\n if (this.options?.height) {\n this.config.height = this.options?.height;\n }\n\n if (this.options?.selectorId) {\n this.config.selectorId = this.options?.selectorId;\n }\n }\n\n setSliderLoading() {\n this.isSliderLoaded = false;\n setTimeout(() => {\n this.isSliderLoaded = true;\n }, 20);\n }\n\n openImageSelector() {\n document.getElementById(this.config?.selectorId)?.click();\n }\n\n async detectImages(event: any) {\n console.log('detectImages:', event);\n event.preventDefault();\n\n if (this.config?.limit === 1) {\n this.filesArray = []; // Reset array for a single image\n }\n\n let files = event.target.files;\n if (!files) {\n this.helper.showErrorMsg('Please select an image', 'Error', 3000);\n return;\n }\n\n if ((this.filesArray?.length + files.length) > this.config?.limit) {\n this.helper.showErrorMsg(`You can upload a maximum of ${this.config?.limit} images`, 'Error', 3000);\n return;\n }\n\n this.loading = true;\n this.uploadInProgress.emit(true);\n\n let uploadedImages: any[] = [];\n\n // Process all images concurrently and wait for completion\n await Promise.all([...files].map(file => this.processImage(file, uploadedImages)));\n\n if (this.config?.isStoredDb) {\n await this.uploadImages(uploadedImages);\n }\n\n this.loading = false;\n this.uploadInProgress.emit(false);\n\n this.onSubmit(); // Call once after all uploads\n }\n\n async processImage(file: File, uploadedImages: any[]) {\n let fileSize = file.size / 1024;\n if (this.config?.fileSize && fileSize > this.config?.fileSize) {\n let maxSize = this.config.fileSize / 1024;\n this.helper.showErrorMsg(`File size must be ≤ ${maxSize >= 1 ? maxSize : this.config.fileSize} ${maxSize >= 1 ? 'MB' : 'KB'}`, 'Error', 3000);\n return;\n }\n\n return new Promise<void>((resolve) => {\n let reader = new FileReader();\n reader.onload = async (e: any) => {\n let mimeType = file.type;\n let compressedImage = this.config?.isCompressed ? await this.helper.compressFile(e.target?.result, mimeType) : e.target.result;\n\n try {\n let uploadResponse = await this.helper.getUploadUrl(this.urlConfig.getUploadUrl, file.name, mimeType, this.currentEntityType).toPromise();\n let uploadData = uploadResponse.data.uploadUrlData;\n let dataUrl = await this.helper.getDataUrlFromFile(file);\n\n let currentImageData = {\n title: file.name, name: file.name, s3Url: dataUrl,\n filename: file.name, s3Path: uploadData.uploadPath,\n tempS3Url: uploadData.resourceUrl, id: null,\n uploadData: uploadData, loading: true\n };\n\n this.filesArray = [currentImageData, ...this.filesArray];\n this.setSliderLoading();\n uploadedImages.push(currentImageData);\n\n await this.helper.putFile(uploadData.uploadURL, compressedImage).toPromise();\n\n // Final processing\n currentImageData.s3Url = currentImageData.tempS3Url;\n currentImageData.loading = !this.config?.isStoredDb;\n this.setSliderLoading();\n\n resolve();\n } catch (error: any) {\n this.helper.showHttpErrorMsg(error);\n resolve();\n }\n };\n\n reader.readAsArrayBuffer(file);\n });\n }\n\n uploadImages(data: any) {\n return new Promise((resolve, reject) => {\n if (data && data?.length > 0) {\n console.log('There is a image pending to attach:', data);\n\n let images: any[] = [];\n let fa = data.map((r: any) => {\n if (r?.uploadData) {\n images.push({ fileName: r.uploadData?.fileName, resourceUrl: r.uploadData?.resourceUrl, uploadPath: r.uploadData?.uploadPath, uploadURL: r.uploadData?.uploadURL });\n // delete r.uploadData;\n }\n\n return r;\n\n });\n\n this.helper.attachFilesToEntity(this.urlConfig.attachToEntity, { images: images, entityId: this.currentEntityId, entityType: this.currentEntityType }).subscribe({\n next: (ir: any) => {\n resolve(ir);\n },\n error: (imErr: any) => this.helper.showErrorMsg(imErr, \"Error\")\n });\n\n } else {\n resolve(false);\n }\n });\n }\n\n\n deleteImage(event: any, t: any, index: number, img: any) {\n event.stopPropagation();\n if (this.isEnableDeleteConfirmation) {\n let confirmBoxData: DialogConfig = {\n title: this.dialogConfig.title,\n message: this.deleteConfirmationMsg ?? this.dialogConfig.message,\n iconClass: this.dialogConfig.iconClass,\n icon: this.dialogConfig.icon,\n approveButtonText: this.dialogConfig.approveButtonText,\n approveButtonClass: this.dialogConfig.approveButtonClass,\n cancelButtonText: this.dialogConfig.cancelButtonText,\n cancelButtonClass: this.dialogConfig.cancelButtonClass\n };\n\n const dialogRef = this.dialog.open(TisConfirmationDialogComponent, {\n width: \"450px\",\n panelClass: ['tis-confirmation-dialog'],\n data: confirmBoxData,\n disableClose: true,\n });\n\n dialogRef.afterClosed().subscribe((result: any) => {\n console.log(\"The dialog was closed with result:\", result);\n if (result) {\n this.removeImage(event, index, img);\n }\n });\n }\n else {\n this.removeImage(event, index, img);\n }\n }\n\n\n /*REMOVE SELECTED IMAGE */\n removeImage(event: any, index: number, img: any) {\n this.loading = true;\n this.filesArray[index].loading = true;\n if (img?.id) {\n delete img.uploadData;\n this.removeUploadedImage(img, index, true);\n }\n else {\n this.loading = false;\n this.filesArray.splice(index, 1);\n this.setSliderLoading();\n this.onSubmit();\n }\n }\n\n removeUploadedImage(img: any, index: number, silently: boolean = false) {\n console.log(\"removeUploadedImage:\", img);\n this.helper.deleteUploadedFile(this.urlConfig.removeImage, img).subscribe((r: any) => {\n console.log('Image Delete Res:', r);\n this.loading = false;\n this.filesArray.splice(index, 1);\n this.setSliderLoading();\n this.onSubmit();\n if (!silently) {\n this.helper.showSuccessMsg(r.message, 'Success', 3000);\n }\n },\n (err: any) => { this.filesArray[index].loading = false; this.helper.showErrorMsg(err, \"Error\") })\n }\n\n async detectFiles(event: any) {\n console.log('detectFiles:', event);\n event.preventDefault();\n\n if (this.config?.limit === 1) {\n this.filesArray = []; // Reset array for a single file\n }\n\n let files = event.target.files;\n if (!files) {\n this.helper.showErrorMsg('Please select a file', 'Error', 3000);\n return;\n }\n\n if ((this.filesArray?.length + files.length) > this.config?.limit) {\n this.helper.showErrorMsg(`You can upload a maximum of ${this.config?.limit} files`, 'Error', 3000);\n return;\n }\n\n this.loading = true;\n this.uploadInProgress.emit(true);\n\n let uploadedFiles: any[] = [];\n\n // Process all files concurrently and wait for completion\n await Promise.all([...files].map(file => this.processFile(file, uploadedFiles)));\n\n if (this.config?.isStoredDb) {\n await this.uploadFiles(uploadedFiles);\n }\n\n this.loading = false;\n this.uploadInProgress.emit(false);\n\n this.onSubmit(); // Call once after all uploads\n }\n\n async processFile(file: File, uploadedFiles: any[]) {\n let fileSize = file.size / 1024;\n if (this.config?.fileSize && fileSize > this.config?.fileSize) {\n let maxSize = this.config.fileSize / 1024;\n this.helper.showErrorMsg(`File size must be ≤ ${maxSize >= 1 ? maxSize : this.config.fileSize} ${maxSize >= 1 ? 'MB' : 'KB'}`, 'Error', 3000);\n return;\n }\n\n return new Promise<void>((resolve) => {\n let reader = new FileReader();\n reader.onload = async (e: any) => {\n let mimeType = file.type;\n let buffer = new Uint8Array(<ArrayBuffer>reader.result);\n\n try {\n let uploadResponse = await this.helper.getUploadUrl(this.urlConfig.getUploadUrl, file.name, mimeType, this.currentEntityType).toPromise();\n let uploadData = uploadResponse.data.uploadUrlData;\n\n let currentFileData = {\n title: file.name, name: file.name, s3Url: uploadData.resourceUrl,\n s3Path: uploadData.uploadPath, filename: file.name, id: null,\n uploadData: uploadData, loading: true, buffer: buffer\n };\n\n this.filesArray = [currentFileData, ...this.filesArray];\n this.setSliderLoading();\n uploadedFiles.push(currentFileData);\n\n await this.helper.putFile(uploadData.uploadURL, e.target.result).toPromise();\n\n // Final processing\n currentFileData.s3Url = currentFileData.uploadData?.resourceUrl;\n currentFileData.loading = !this.config?.isStoredDb;\n this.setSliderLoading();\n\n resolve();\n } catch (error: any) {\n this.helper.showHttpErrorMsg(error);\n resolve();\n }\n };\n\n reader.readAsArrayBuffer(file);\n });\n }\n\n uploadFiles(data: any) {\n return new Promise((resolve, reject) => {\n if (data && data.length > 0) {\n console.log('There is a file pending to attach:', data);\n\n let files: any[] = [];\n let fa = data.map((r: any) => {\n if (r?.uploadData) {\n files.push({ fileName: r.uploadData?.fileName, resourceUrl: r.uploadData?.resourceUrl, uploadPath: r.uploadData?.uploadPath, uploadURL: r.uploadData?.uploadURL });\n // delete r.uploadData;\n }\n\n return r;\n\n });\n\n this.helper.attachFilesToEntity(this.urlConfig.attachToEntity, { files: files, entityId: this.currentEntityId, entityType: this.currentEntityType }).subscribe({\n next: (ir: any) => {\n // this.filesArray = fa;\n this.filesArray[0].loading = false;\n this.onSubmit();\n resolve(ir);\n },\n error: (imErr: any) => reject(imErr)\n });\n } else {\n resolve(false);\n }\n });\n }\n\n deleteFile(event: any, t: any, index: number, file: any) {\n event.stopPropagation();\n if (this.isEnableDeleteConfirmation) {\n let confirmBoxData: DialogConfig = {\n title: this.dialogConfig.title,\n message: this.deleteConfirmationMsg ?? this.dialogConfig.message,\n iconClass: this.dialogConfig.iconClass,\n icon: this.dialogConfig.icon,\n approveButtonText: this.dialogConfig.approveButtonText,\n approveButtonClass: this.dialogConfig.approveButtonClass,\n cancelButtonText: this.dialogConfig.cancelButtonText,\n cancelButtonClass: this.dialogConfig.cancelButtonClass\n };\n\n const dialogRef = this.dialog.open(TisConfirmationDialogComponent, {\n width: \"450px\",\n panelClass: ['tis-simple-confirmation'],\n data: confirmBoxData,\n disableClose: true,\n });\n\n dialogRef.afterClosed().subscribe((result: any) => {\n console.log(\"The dialog was closed with result:\", result);\n if (result) {\n this.removeFile(event, index, file);\n }\n });\n }\n else {\n this.removeFile(event, index, file);\n }\n }\n\n removeFile(event: any, index: number, file: any) {\n this.loading = true;\n this.filesArray[index].loading = true;\n if (file?.id) {\n delete file.uploadData;\n this.removeUploadedFile(file, index, true);\n }\n else {\n this.loading = false;\n this.filesArray.splice(index, 1);\n this.setSliderLoading();\n this.onSubmit();\n this.onFileRemoved.emit(true);\n }\n }\n\n removeUploadedFile(file: any, index: number, silently = false) {\n console.log(\"removeUploadedFile:\", file);\n this.helper.deleteUploadedFile(this.urlConfig.removeImage, file).subscribe((r: any) => {\n console.log('File Delete Res:', r);\n this.loading = false;\n this.filesArray.splice(index, 1);\n this.setSliderLoading();\n this.onSubmit();\n if (!silently) {\n this.helper.showSuccessMsg(r.message, 'Success', 3000);\n }\n this.onSubmit();\n },\n (err: any) => { this.filesArray[index].loading = false; this.helper.showErrorMsg(err, \"Error\") })\n }\n\n onSubmit() {\n this.onUploaded.emit(this.filesArray);\n }\n\n async downloadFile(url: string, fileName: string) {\n fetch(url)\n .then(response => response.blob())\n .then(blob => {\n const blobUrl = URL.createObjectURL(blob);\n const el = document.createElement(\"a\");\n el.href = blobUrl;\n el.download = fileName;\n document.body.appendChild(el);\n el.click();\n document.body.removeChild(el);\n URL.revokeObjectURL(blobUrl); // Cleanup\n })\n .catch(error => console.error(\"Download failed\", error));\n }\n\n clickTimeout: any = null;\n clickDelay: number = 250; // Delay in milliseconds to distinguish single and double click\n\n onSelectFile(file: any) {\n if (this.config.selectionMode) {\n if (this.clickTimeout) {\n clearTimeout(this.clickTimeout);\n this.clickTimeout = null;\n this.openFile(file); // Double-click detected\n } else {\n this.clickTimeout = setTimeout(() => {\n this.clickTimeout = null;\n if (this.config.selectionMode) {\n this.onFileSelect.emit(file); // Single-click detected\n }\n }, this.clickDelay);\n }\n }\n else {\n this.clickTimeout = null;\n this.openFile(file);\n }\n }\n\n openFile(file: any) {\n if (!this.config.hiddenPreview) {\n this.openPreviewDialog(file.s3Url, file.title);\n }\n }\n\n openPreviewDialog(url: string, title: string): void {\n if (url.indexOf('.jpg') != -1 || url.indexOf('.jpeg') != -1 || url.indexOf('.png') != -1) {\n this.openImagePreviewDialog(url);\n }\n else if (url.indexOf('.pdf') != -1) {\n this.openFileViewer(url, 'pdf');\n }\n // else if(url.indexOf('.csv') != -1){\n // this.openFileViewer(url, 'csv');\n // }\n else if (url.indexOf('.xlxs') != -1 || url.indexOf('.xlx') != -1 || url.indexOf('.xls') != -1) {\n this.openFileViewer(url, 'excel');\n }\n else {\n this.downloadFile(url, title);\n }\n }\n\n openImagePreviewDialog(url: string): void {\n const dialogRef = this.dialog.open(TisPreviewImageComponent, {\n panelClass: ['mat-p-0', 'relative'],\n data: { url },\n });\n\n dialogRef.afterClosed().subscribe((result: any) => {\n console.log('The dialog was closed', result);\n });\n }\n\n openFileViewer(pdfUrl: string, fileType: FileViewerFileType) {\n let dialogData: FileViewerDialogData = {\n src: pdfUrl,\n fileType: fileType\n };\n\n const dialogRef = this.dialog.open(TisFileViewerComponent, {\n width: this.isMobile ? \"100%\" : \"90%\",\n height: this.isMobile ? \"100%\" : \"98%\",\n minHeight: this.isMobile ? \"100%\" : \"80%\",\n maxWidth: this.isMobile ? \"100%\" : \"100%\",\n panelClass: ['tis-file-viewer'],\n data: dialogData,\n disableClose: false,\n });\n\n dialogRef.afterClosed().subscribe((result: any) => {\n console.log(\"FileViewer Dialog Closed\");\n });\n }\n\n checkingForPreview(img: string) {\n let imageArray = img.split('.');\n let imageType = imageArray[imageArray?.length - 1];\n if (imageType == 'png' || imageType == 'jpg' || imageType == 'jpeg') {\n return true;\n }\n else {\n return false;\n }\n }\n\n setHeight(id: string) {\n let height = document.getElementById(id)?.offsetWidth;\n return `${height}px`;\n }\n}\n","<div>\n <input type=\"file\" size=\"60\" *ngIf=\"!config?.isMultiple\" id=\"{{config.selectorId}}\" (change)=\"type == 'file'? detectFiles($event): detectImages($event)\" accept=\"{{accept}}\" style=\"display: none;\" />\n <input type=\"file\" size=\"60\" *ngIf=\"config?.isMultiple\" id=\"{{config.selectorId}}\" (change)=\"type == 'file'? detectFiles($event): detectImages($event)\" accept=\"{{accept}}\" multiple style=\"display: none;\" />\n <!-- <input type=\"file\" name=\"file\" id=\"file-picker\" style=\"display: none;\" *ngIf=\"(filesArray?.length < config?.limit) && !disabled\" [style.height]=\"config?.labelHeight\"> -->\n @if(viewType == 'card'){\n <div [class.image-picker-label]=\"!previewOnly\" [class.error]=\"required && (filesArray?.length || 0) <= 0\" [style.height]=\"filesArray?.length ? null : config?.height\" style=\"--tis-image-picker-height: {{config?.height ?? 0}}\">\n @if(filesArray?.length){\n <div [ngClass]=\"{'grid-cols-1': config?.cols == 1, 'grid-cols-2': config?.cols == 2, 'grid-cols-3': config?.cols == 3, 'grid-cols-4': config?.cols == 4, 'grid-cols-5': config?.cols == 5, 'grid-cols-6': config?.cols == 6}\" class=\"{{previewInFlex ? 'flex' : 'grid'}} image-list\" style=\"gap: 25px;\">\n @for(file of filesArray; track file.s3Url; let i = $index; let l = $last;){\n <!-- style=\"height: calc((var(--tis-image-picker-height) - 48px - 0.75rem) / 2); width: calc((var(--tis-image-picker-height) - 48px - 0.75rem) / 2);\" -->\n <div class=\"image-item {{imageItemClass}}\" [class.selected]=\"config?.selectionMode ? selectedId == file.id : false\" [class.tis-curser-pointer]=\"!config?.hiddenPreview || config?.selectionMode\" id=\"image-item-{{config.selectorId}}-{{i}}\" [style.height]=\"setHeight('image-item-'+config.selectorId+'-'+i)\" [style.background-image]=\"type == 'file'? '' : 'url('+file.s3Url+')'\" *ngIf=\"file?.loading\">\n <div class=\"shedded\" style=\"width: 100%; height: 100%; position: absolute; top: 0px; left: 0px; display: flex; justify-content: center; align-items: center;\">\n <mat-progress-spinner color=\"primary\" mode=\"indeterminate\" [diameter]=\"30\"></mat-progress-spinner>\n </div>\n <mat-icon *ngIf=\"type == 'file'\" class=\"active tis-mat-icon-2x\">description</mat-icon>\n </div>\n <div class=\"image-item {{imageItemClass}}\" [class.selected]=\"config?.selectionMode ? selectedId == file.id : false\" [class.tis-curser-pointer]=\"!config?.hiddenPreview || config?.selectionMode\" id=\"image-item-{{config.selectorId}}-{{i}}\" [style.height]=\"setHeight('image-item-'+config.selectorId+'-'+i)\" [style.background-image]=\"type == 'file'? '' : 'url('+file.s3Url+')'\" (click)=\"onSelectFile(file)\" *ngIf=\"!file?.loading\">\n <mat-icon *ngIf=\"type == 'file'\" class=\"active tis-mat-icon-2x\">description</mat-icon>\n <span class=\"material-icons cancel\" (click)=\"type == 'file'? deleteFile($event, {}, i, file) : deleteImage($event, {}, i, file)\" *ngIf=\"!disabled && !config.hiddenDeleteBtn\">highlight_off</span>\n <span class=\"material-icons download\" (click)=\"$event.stopPropagation(); downloadFile(file.s3Url, file.title)\" *ngIf=\"!config.hiddenDownloadBtn\">download_for_offline</span>\n </div>\n @if(l && (config?.limit || 0) > (filesArray?.length || 0) && !disabled){\n <!-- style=\"height: calc((var(--tis-image-picker-height) - 48px - 0.75rem) / 2); width: calc((var(--tis-image-picker-height) - 48px - 0.75rem) / 2);\" -->\n <div class=\"image-item uploader\" id=\"image-item-{{config.selectorId}}-{{i}}-{{i}}\" [style.height]=\"setHeight('image-item-'+config.selectorId+'-'+i+'-'+i)\" (click)=\"loading? null : openImageSelector()\">\n <mat-icon class=\"active\">upload_file</mat-icon>\n </div>\n }\n }\n </div>\n }\n @else if(!disabled){\n <label style=\"display: flex; gap: 12px; flex-direction: column; justify-content: center; align-items: center; height: 100%; cursor: pointer;\" (click)=\"loading? null : openImageSelector()\">\n <mat-icon>upload_file</mat-icon>\n <p style=\"text-align: center; font-size: 14px;\">\n {{label}}\n @if(hint && hint != ''){\n <br>\n <small>{{hint}}</small>\n }\n </p>\n </label>\n }\n @else{\n <div class=\"not-found-section\" style=\"display: flex; flex-direction: column; justify-content: center; align-items: center; width: 100%; cursor: pointer;\">\n <!-- <img src=\"assets/tis-image-and-file-upload-and-view-assets/no-record-found.png\" alt=\"data not found\" style=\"margin: auto; height: calc(var(--tis-image-picker-height) - 30px); max-height: 150px;\"> -->\n \n <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" id=\"Layer_1\" x=\"0px\" y=\"0px\" width=\"100%\" viewBox=\"0 0 512 512\" enable-background=\"new 0 0 512 512\" xml:space=\"preserve\">\n <path fill=\"none\" opacity=\"1.000000\" stroke=\"none\" d=\" M283.000000,513.000000 C188.689560,513.000000 94.879120,513.000000 1.034338,513.000000 C1.034338,342.397858 1.034338,171.795731 1.034338,1.096792 C171.560455,1.096792 342.121002,1.096792 512.840759,1.096792 C512.840759,171.666550 512.840759,342.333252 512.840759,513.000000 C436.462372,513.000000 359.981171,513.000000 283.000000,513.000000 M214.500000,497.000000 C271.998901,496.999969 329.497833,497.019897 386.996674,496.975769 C394.561920,496.969971 401.787231,494.626648 406.395233,488.770782 C412.026520,481.614502 416.644897,473.577057 421.072449,465.572754 C437.390259,436.072754 453.464813,406.438049 469.597321,376.835754 C478.327332,360.816742 487.426758,344.977722 495.530029,328.645905 C501.012421,317.596252 494.173737,304.613556 481.201294,304.861847 C456.377502,305.336975 431.538177,304.999878 406.705292,304.999847 C404.938568,304.999847 403.171844,304.999847 401.000031,304.999847 C401.000031,302.348328 401.003784,300.379181 400.999481,298.410065 C400.935120,269.085632 400.853577,239.761169 400.867645,210.436768 C400.868164,209.340317 401.642242,208.138214 402.315186,207.164581 C408.841400,197.722305 416.441071,188.858276 421.779449,178.792419 C433.290894,157.086823 435.985443,133.380402 431.740631,109.507538 C425.335449,73.484550 405.456726,46.387234 373.051300,29.163473 C356.219269,20.217096 338.040710,16.499708 318.773804,16.813351 C301.234619,17.098873 284.897461,21.133270 269.449402,28.965902 C256.098724,35.735111 244.580948,44.876842 234.887085,56.467457 C224.793365,68.536171 217.675415,82.055397 213.023590,96.957832 C209.186737,109.249481 208.654160,121.911049 208.964157,134.687836 C209.387650,152.143631 214.172058,168.302002 222.741714,183.427231 C224.412766,186.376572 225.987946,189.380234 227.939270,192.969376 C211.045273,192.969376 194.919281,193.199417 178.811310,192.763687 C175.805389,192.682358 172.083817,190.621887 170.038193,188.292847 C160.046188,176.916489 150.561493,165.096268 140.789429,153.524185 C136.493210,148.436600 131.117233,145.037399 124.221672,145.023544 C96.055626,144.966995 67.881424,145.387711 39.727192,144.808304 C28.532793,144.577896 16.775660,156.479080 16.809900,167.857864 C17.130381,274.354980 17.052288,380.853516 16.870073,487.351288 C16.859135,493.743988 19.582472,497.123566 26.503685,497.103851 C88.835381,496.926239 151.167801,497.000000 214.500000,497.000000 z\"/>\n <path fill=\"var(--tis-primary, #1F6AAD)\" opacity=\"1.000000\" stroke=\"none\" d=\" M214.000000,497.000000 C151.167801,497.000000 88.835381,496.926239 26.503685,497.103851 C19.582472,497.123566 16.859135,493.743988 16.870073,487.351288 C17.052288,380.853516 17.130381,274.354980 16.809900,167.857864 C16.775660,156.479080 28.532793,144.577896 39.727192,144.808304 C67.881424,145.387711 96.055626,144.966995 124.221672,145.023544 C131.117233,145.037399 136.493210,148.436600 140.789429,153.524185 C150.561493,165.096268 160.046188,176.916489 170.038193,188.292847 C172.083817,190.621887 175.805389,192.682358 178.811310,192.763687 C194.919281,193.199417 211.045273,192.969376 227.939270,192.969376 C225.987946,189.380234 224.412766,186.376572 222.741714,183.427231 C214.172058,168.302002 209.387650,152.143631 208.964157,134.687836 C208.654160,121.911049 209.186737,109.249481 213.023590,96.957832 C217.675415,82.055397 224.793365,68.536171 234.887085,56.467457 C244.580948,44.876842 256.098724,35.735111 269.449402,28.965902 C284.897461,21.133270 301.234619,17.098873 318.773804,16.813351 C338.040710,16.499708 356.219269,20.217096 373.051300,29.163473 C405.456726,46.387234 425.335449,73.484550 431.740631,109.507538 C435.985443,133.380402 433.290894,157.086823 421.779449,178.792419 C416.441071,188.858276 408.841400,197.722305 402.315186,207.164581 C401.642242,208.138214 400.868164,209.340317 400.867645,210.436768 C400.853577,239.761169 400.935120,269.085632 400.999481,298.410065 C401.003784,300.379181 401.000031,302.348328 401.000031,304.999847 C403.171844,304.999847 404.938568,304.999847 406.705292,304.999847 C431.538177,304.999878 456.377502,305.336975 481.201294,304.861847 C494.173737,304.613556 501.012421,317.596252 495.530029,328.645905 C487.426758,344.977722 478.327332,360.816742 469.597321,376.835754 C453.464813,406.438049 437.390259,436.072754 421.072449,465.572754 C416.644897,473.577057 412.026520,481.614502 406.395233,488.770782 C401.787231,494.626648 394.561920,496.969971 386.996674,496.975769 C329.497833,497.019897 271.998901,496.999969 214.000000,497.000000 M134.597260,321.000000 C127.620270,319.337616 123.942146,323.017517 121.500618,328.932983 C120.498009,331.362091 119.193306,333.673279 117.937233,335.989990 C103.522736,362.575897 89.117485,389.166901 74.653091,415.725647 C67.257729,429.304626 59.689438,442.789490 52.312668,456.378448 C47.974022,464.370728 43.857620,472.483643 39.401810,481.000000 C42.117859,481.000000 44.110912,481.000000 46.103966,481.000000 C144.765793,481.000000 243.427612,481.000031 342.089447,481.000000 C354.922150,481.000000 367.755981,481.100647 380.587189,480.961823 C388.353729,480.877808 394.963684,478.668121 399.028687,471.088623 C414.189636,442.819641 429.540070,414.652191 444.852783,386.464783 C452.465210,372.451935 460.203308,358.507233 467.780884,344.475739 C471.870789,336.902466 475.742279,329.211273 480.010315,321.000000 C364.545990,321.000000 250.059738,321.000000 134.597260,321.000000 M324.557129,242.085190 C327.301666,237.590393 329.664886,232.791306 332.924042,228.707169 C335.118561,225.957092 338.299622,222.950409 341.520416,222.240189 C357.159485,218.791580 371.110535,211.909912 382.881226,201.408112 C405.027954,181.648727 416.679504,157.025070 416.129883,126.765366 C415.719910,104.193253 408.285522,84.336838 393.808441,67.607040 C373.699219,44.368736 348.121246,32.686760 316.779572,33.851212 C294.904785,34.663937 275.751617,42.202290 259.624786,56.188839 C232.720886,79.522171 221.513794,109.436241 227.057266,144.851562 C232.965317,182.596176 262.283539,213.393021 299.806335,221.925400 C304.366974,222.962448 307.440796,225.236969 309.702332,229.227615 C313.147400,235.306534 316.865295,241.230835 320.988098,248.086838 C322.400177,245.685776 323.276184,244.196213 324.557129,242.085190 z\"/>\n <path fill=\"none\" opacity=\"1.000000\" stroke=\"none\" d=\" M135.085373,321.000000 C250.059738,321.000000 364.545990,321.000000 480.010315,321.000000 C475.742279,329.211273 471.870789,336.902466 467.780884,344.475739 C460.203308,358.507233 452.465210,372.451935 444.852783,386.464783 C429.540070,414.652191 414.189636,442.819641 399.028687,471.088623 C394.963684,478.668121 388.353729,480.877808 380.587189,480.961823 C367.755981,481.100647 354.922150,481.000000 342.089447,481.000000 C243.427612,481.000031 144.765793,481.000000 46.103966,481.000000 C44.110912,481.000000 42.117859,481.000000 39.401810,481.000000 C43.857620,472.483643 47.974022,464.370728 52.312668,456.378448 C59.689438,442.789490 67.257729,429.304626 74.653091,415.725647 C89.117485,389.166901 103.522736,362.575897 117.937233,335.989990 C119.193306,333.673279 120.498009,331.362091 121.500618,328.932983 C123.942146,323.017517 127.620270,319.337616 135.085373,321.000000 M140.500000,440.999939 C132.167938,440.999939 123.835869,440.999023 115.503807,441.000183 C106.978073,441.001343 104.965355,442.559265 105.000999,449.124817 C105.035042,455.395599 107.121445,456.999329 115.262733,456.999634 C146.424759,457.000732 177.586792,457.000153 208.748825,457.000000 C224.913086,456.999939 241.077591,456.952484 257.241425,457.035980 C260.763824,457.054169 263.472839,456.015015 264.705200,452.580017 C267.060974,446.013672 263.486053,441.009705 256.482880,441.007080 C218.155258,440.992767 179.827621,441.000061 140.500000,440.999939 M211.498047,417.000153 C216.330338,416.999176 221.164948,417.091248 225.994263,416.971069 C230.865005,416.849884 232.921509,414.514984 232.998932,409.368042 C233.083664,403.733337 231.121094,401.059509 226.230942,401.046417 C196.071045,400.965607 165.910004,400.915100 135.752502,401.195435 C133.579193,401.215637 130.361252,403.471161 129.469467,405.497375 C126.665665,411.867889 130.514359,416.987915 137.514694,416.993042 C161.842728,417.010773 186.170807,417.000061 211.498047,417.000153 z\"/>\n <path fill=\"none\" opacity=\"1.000000\" stroke=\"none\" d=\" M324.354675,242.395920 C323.276184,244.196213 322.400177,245.685776 320.988098,248.086838 C316.865295,241.230835 313.147400,235.306534 309.702332,229.227615 C307.440796,225.236969 304.366974,222.962448 299.806335,221.925400 C262.283539,213.393021 232.965317,182.596176 227.057266,144.851562 C221.513794,109.436241 232.720886,79.522171 259.624786,56.188839 C275.751617,42.202290 294.904785,34.663937 316.779572,33.851212 C348.121246,32.686760 373.699219,44.368736 393.808441,67.607040 C408.285522,84.336838 415.719910,104.193253 416.129883,126.765366 C416.679504,157.025070 405.027954,181.648727 382.881226,201.408112 C371.110535,211.909912 357.159485,218.791580 341.520416,222.240189 C338.299622,222.950409 335.118561,225.957092 332.924042,228.707169 C329.664886,232.791306 327.301666,237.590393 324.354675,242.395920 M365.048187,97.443359 C370.583435,91.700768 370.701630,85.175507 365.330109,81.880753 C361.672668,79.637360 356.630035,80.933273 352.129089,85.405678 C342.914734,94.561584 333.749512,103.766907 324.548431,112.936203 C323.412384,114.068321 322.181274,115.104980 320.457794,116.674324 C319.017365,114.966263 317.930176,113.478592 316.646271,112.186401 C307.370972,102.851303 298.080811,93.530586 288.741608,84.259491 C284.745544,80.292557 279.208740,79.658867 275.876648,82.619972 C271.622955,86.400055 271.606628,92.007065 276.075226,96.532738 C285.555145,106.133804 295.140411,115.630798 304.670227,125.182716 C305.910522,126.425888 307.078339,127.741364 308.699982,129.471832 C306.767456,131.142502 305.170319,132.365768 303.755219,133.772186 C294.658264,142.813187 285.530975,151.825531 276.561829,160.992294 C272.316803,165.330841 271.679443,172.193146 274.860229,175.243683 C278.125275,178.375015 284.989929,177.494553 289.133881,173.366959 C295.270966,167.254105 301.415710,161.148209 307.489624,154.972931 C311.886749,150.502441 316.174255,145.924133 320.608521,141.291687 C322.557465,143.156174 323.772125,144.275360 324.939575,145.441833 C334.366547,154.861099 343.762360,164.311676 353.216248,173.703827 C357.078430,177.540771 364.054932,178.250854 367.156860,175.284821 C369.494812,173.049301 370.182617,164.901749 365.897583,161.258850 C361.343750,157.387436 357.354156,152.853470 353.106140,148.620880 C346.649475,142.187607 340.182373,135.764771 333.450989,129.070267 C344.099365,118.419060 354.322937,108.192757 365.048187,97.443359 z\"/>\n <path fill=\"var(--tis-primary, #1F6AAD)\" opacity=\"1.000000\" stroke=\"none\" d=\" M141.000000,440.999939 C179.827621,441.000061 218.155258,440.992767 256.482880,441.007080 C263.486053,441.009705 267.060974,446.013672 264.705200,452.580017 C263.472839,456.015015 260.763824,457.054169 257.241425,457.035980 C241.077591,456.952484 224.913086,456.999939 208.748825,457.000000 C177.586792,457.000153 146.424759,457.000732 115.262733,456.999634 C107.121445,456.999329 105.035042,455.395599 105.000999,449.124817 C104.965355,442.559265 106.978073,441.001343 115.503807,441.000183 C123.835869,440.999023 132.167938,440.999939 141.000000,440.999939 z\"/>\n <path fill=\"var(--tis-primary, #1F6AAD)\" opacity=\"1.000000\" stroke=\"none\" d=\" M210.998444,417.000153 C186.170807,417.000061 161.842728,417.010773 137.514694,416.993042 C130.514359,416.987915 126.665665,411.867889 129.469467,405.497375 C130.361252,403.471161 133.579193,401.215637 135.752502,401.195435 C165.910004,400.915100 196.071045,400.965607 226.230942,401.046417 C231.121094,401.059509 233.083664,403.733337 232.998932,409.368042 C232.921509,414.514984 230.865005,416.849884 225.994263,416.971069 C221.164948,417.091248 216.330338,416.999176 210.998444,417.000153 z\"/>\n <path fill=\"var(--tis-primary, #1F6AAD)\" opacity=\"1.000000\" stroke=\"none\" d=\" M364.797363,97.704910 C354.322937,108.192757 344.099365,118.419060 333.450989,129.070267 C340.182373,135.764771 346.649475,142.187607 353.106140,148.620880 C357.354156,152.853470 361.343750,157.387436 365.897583,161.258850 C370.182617,164.901749 369.494812,173.049301 367.156860,175.284821 C364.054932,178.250854 357.078430,177.540771 353.216248,173.703827 C343.762360,164.311676 334.366547,154.861099 324.939575,145.441833 C323.772125,144.275360 322.557465,143.156174 320.608521,141.291687 C316.174255,145.924133 311.886749,150.502441 307.489624,154.972931 C301.415710,161.148209 295.270966,167.254105 289.133881,173.366959 C284.989929,177.494553 278.125275,178.375015 274.860229,175.243683 C271.679443,172.193146 272.316803,165.330841 276.561829,160.992294 C285.530975,151.825531 294.658264,142.813187 303.755219,133.772186 C305.170319,132.365768 306.767456,131.142502 308.699982,129.471832 C307.078339,127.741364 305.910522,126.425888 304.670227,125.182716 C295.140411,115.630798 285.555145,106.133804 276.075226,96.532738 C271.606628,92.007065 271.622955,86.400055 275.876648,82.619972 C279.208740,79.658867 284.745544,80.292557 288.741608,84.259491 C298.080811,93.530586 307.370972,102.851303 316.646271,112.186401 C317.930176,113.478592 319.017365,114.966263 320.457794,116.674324 C322.181274,115.104980 323.412384,114.068321 324.548431,112.936203 C333.749512,103.766907 342.914734,94.561584 352.129089,85.405678 C356.630035,80.933273 361.672668,79.637360 365.330109,81.880753 C370.701630,85.175507 370.583435,91.700768 364.797363,97.704910 z\"/>\n </svg>\n\n </div>\n }\n </div>\n }\n @else if(viewType == 'list'){\n <div [class.error-border]=\"required && (filesArray?.length || 0) <= 0\" [style.height]=\"filesArray?.length ? null : config?.height\" style=\"width: 100%; display: flex; gap: 12px; flex-direction: column; --tis-image-picker-height: {{config?.height ?? 0}}\">\n @if(filesArray?.length){\n @for(file of filesArray; track file.s3Url; let i = $index; let l = $last;){\n <div style=\"position: relative; display: flex; align-items: center; gap: 10px; border-radius: 5px; border: 1px solid black; padding: 5px; height: 56px;\">\n <mat-icon style=\"width: 40px; min-width: 22px;\">description</mat-icon>\n <div style=\"white-space: nowrap; overflow: hidden; text-overflow: ellipsis; width: 100%;\">{{file?.title}}</div>\n <div style=\"display: flex; align-items: center; gap: 4px;\" *ngIf=\"!file?.loading\">\n <button type=\"button\" mat-icon-button aria-label=\"Download File\" class=\"tis-icon-btn-sm tis-text-download\" style=\"margin: 0px !important;\" (click)=\"$event.stopPropagation(); downloadFile(file.s3Url, file.title)\" *ngIf=\"!config.hiddenDownloadBtn\">\n <mat-icon>download_for_offline</mat-icon>\n </button>\n <button type=\"button\" mat-icon-button aria-label=\"View File\" class=\"tis-icon-btn-sm tis-text-view\" style=\"margin: 0px !important;\" (click)=\"openFile(file)\" *ngIf=\"!config.hiddenPreview\">\n <mat-icon>visibility</mat-icon>\n </button>\n <button type=\"button\" mat-icon-button aria-label=\"Remove File\" class=\"tis-icon-btn-sm tis-text-cancel\" style=\"margin: 0px !important;\" (click)=\"type == 'file'? deleteFile($event, {}, i, file) : deleteImage($event, {}, i, file)\" *ngIf=\"!disabled && !config.hiddenDeleteBtn\">\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n <div style=\"display: flex; justify-content: center; align-items: center; gap: 4px;\" style=\"width: 50px;\" *ngIf=\"file?.loading\">\n <mat-progress-spinner color=\"primary\" mode=\"indeterminate\" [diameter]=\"20\"></mat-progress-spinner>\n </div>\n <!-- <span class=\"material-icons download\" (click)=\"$event.stopPropagation(); downloadFile(file.s3Url, file.title)\" *ngIf=\"!disabled && !config.hiddenDownloadBtn\">download_for_offline</span> -->\n </div>\n @if(l && (config?.limit || 0) > (filesArray?.length || 0) && !disabled){\n <div style=\"cursor: pointer; display: flex; align-items: center; gap: 4px; border: 1px solid black; border-radius: 5px; padding: 5px; height: 56px;\" (click)=\"loading? null : openImageSelector()\">\n <mat-icon style=\"width: 40px; min-width: 22px;\">upload_file</mat-icon>\n <div style=\"width: 100%;\">\n <div style=\"display: flex; flex-direction: column; align-items: start; font-size: 14px;\">\n {{label}}\n @if(hint && hint != ''){\n <small>{{hint}}</small>\n }\n </div>\n </div>\n </div>\n }\n }\n }\n @else if(!disabled){\n <div style=\"cursor: pointer; display: flex; align-items: center; gap: 4px; border: 1px solid black; border-radius: 5px; padding: 5px; height: 56px;\" (click)=\"loading? null : openImageSelector()\">\n <mat-icon style=\"width: 40px; min-width: 22px;\">upload_file</mat-icon>\n <div style=\"width: 100%;\">\n <div style=\"display: flex; flex-direction: column; align-items: start; font-size: 14px;\">\n {{label}}\n @if(hint && hint != ''){\n <small>{{hint}}</small>\n }\n </div>\n </div>\n </div>\n }\n </div>\n }\n</div>","import { NgModule } from '@angular/core';\nimport { TisImageAndFileUploadAndViewComponent } from './tis-image-and-file-upload-and-view/tis-image-and-file-upload-and-view.component';\nimport { TisPreviewImageComponent } from './tis-preview-image/tis-preview-image.component';\nimport { CommonModule } from '@angular/common';\nimport { TisFileViewerComponent } from './tis-file-viewer/tis-file-viewer.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { TisErrorDialogComponent } from './tis-error-dialog/tis-error-dialog.component';\nimport { TisConfirmationDialogComponent } from './tis-confirmation-dialog/tis-confirmation-dialog.component';\nimport { TisExcelFileViewerComponent } from './tis-file-viewer/tis-excel-file-viewer/tis-excel-file-viewer.component';\nimport { TisPdfViewerComponent } from './tis-file-viewer/tis-pdf-viewer/tis-pdf-viewer.component';\nimport { TisVideoComponent } from './tis-file-viewer/tis-video/tis-video.component';\nimport { NgxExtendedPdfViewerModule } from 'ngx-extended-pdf-viewer';\n\n\nconst uiImports = [\n MatTooltipModule,\n MatIconModule,\n MatSnackBarModule,\n MatProgressSpinnerModule,\n MatButtonModule,\n MatDialogModule,\n];\n\n\n@NgModule({\n declarations: [\n TisImageAndFileUploadAndViewComponent,\n TisPreviewImageComponent,\n TisFileViewerComponent,\n TisExcelFileViewerComponent,\n TisPdfViewerComponent,\n TisVideoComponent,\n TisErrorDialogComponent,\n TisConfirmationDialogComponent\n ],\n imports: [\n CommonModule,\n NgxExtendedPdfViewerModule,\n ...uiImports\n ],\n exports: [\n TisImageAndFileUploadAndViewComponent\n ]\n})\nexport class TisImageAndFileUploadAndViewModule { }\n","/*\n * Public API Surface of tis-image-and-file-upload-and-view\n */\n\nexport * from './lib/tis-image-and-file-upload-and-view.service';\nexport * from './lib/tis-image-and-file-upload-and-view/tis-image-and-file-upload-and-view.component';\nexport * from './lib/tis-image-and-file-upload-and-view.module';\n\nexport * from './lib/interfaces';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i4","i5","i6.TisExcelFileViewerComponent","i7.TisPdfViewerComponent","i8.TisVideoComponent","i3","i2.TisHelperService","i6","i7"],"mappings":"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"}
|
|
@@ -16,10 +16,9 @@ export declare class TisHelperService {
|
|
|
16
16
|
dataURItoBlob(dataURI: string, mimeType: string): Blob;
|
|
17
17
|
getDataUrlFromFile(file: any): Promise<unknown>;
|
|
18
18
|
getUploadUrl(url: string, filename: string, mimeType: string, type: string): Observable<any>;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
deleteUploadedImage(url: string, data: any): Observable<any>;
|
|
19
|
+
attachFilesToEntity(url: string, data: any): Observable<any>;
|
|
20
|
+
putFile(url: string, file: File, contentType?: string): Observable<any>;
|
|
21
|
+
deleteUploadedFile(url: string, data: any): Observable<any>;
|
|
23
22
|
static ɵfac: i0.ɵɵFactoryDeclaration<TisHelperService, never>;
|
|
24
23
|
static ɵprov: i0.ɵɵInjectableDeclaration<TisHelperService>;
|
|
25
24
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { OnChanges, SimpleChanges } from '@angular/core';
|
|
2
|
+
import type { SafeUrl } from '@angular/platform-browser';
|
|
3
|
+
import { DomSanitizer } from '@angular/platform-browser';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class TisExcelFileViewerComponent implements OnChanges {
|
|
6
|
+
private sanitizer;
|
|
7
|
+
src: SafeUrl;
|
|
8
|
+
baseUrl: string;
|
|
9
|
+
iframeSrc: SafeUrl | null;
|
|
10
|
+
constructor(sanitizer: DomSanitizer);
|
|
11
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
12
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TisExcelFileViewerComponent, never>;
|
|
13
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TisExcelFileViewerComponent, "tis-excel-file-viewer", never, { "src": { "alias": "src"; "required": true; }; }, {}, never, never, false, never>;
|
|
14
|
+
}
|
|
@@ -1,5 +1,16 @@
|
|
|
1
|
+
import { MatDialogRef } from '@angular/material/dialog';
|
|
2
|
+
import { DomSanitizer } from '@angular/platform-browser';
|
|
3
|
+
import type { FileViewerDialogData } from '../interfaces';
|
|
1
4
|
import * as i0 from "@angular/core";
|
|
2
5
|
export declare class TisFileViewerComponent {
|
|
6
|
+
dialogRef: MatDialogRef<TisFileViewerComponent>;
|
|
7
|
+
data: FileViewerDialogData;
|
|
8
|
+
private sanitizer;
|
|
9
|
+
safeUrl: string;
|
|
10
|
+
private pdfViewer;
|
|
11
|
+
constructor(dialogRef: MatDialogRef<TisFileViewerComponent>, data: FileViewerDialogData, sanitizer: DomSanitizer);
|
|
12
|
+
downloadFile(): void;
|
|
13
|
+
onClose(status: boolean | null): void;
|
|
3
14
|
static ɵfac: i0.ɵɵFactoryDeclaration<TisFileViewerComponent, never>;
|
|
4
15
|
static ɵcmp: i0.ɵɵComponentDeclaration<TisFileViewerComponent, "tis-file-viewer", never, {}, {}, never, never, false, never>;
|
|
5
16
|
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ChangeDetectorRef, OnChanges, SimpleChanges } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class TisPdfViewerComponent implements OnChanges {
|
|
4
|
+
private cdRef;
|
|
5
|
+
loading: boolean;
|
|
6
|
+
isError: boolean;
|
|
7
|
+
src: string;
|
|
8
|
+
private pdfViewer;
|
|
9
|
+
constructor(cdRef: ChangeDetectorRef);
|
|
10
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
11
|
+
destroyPdfViewer(): void;
|
|
12
|
+
loadingFinished(ev: any): void;
|
|
13
|
+
loadingError(ev: any): void;
|
|
14
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TisPdfViewerComponent, never>;
|
|
15
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TisPdfViewerComponent, "tis-pdf-viewer", never, { "src": { "alias": "src"; "required": true; }; }, {}, never, never, false, never>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { SimpleChanges } from '@angular/core';
|
|
2
|
+
import type { SafeUrl } from '@angular/platform-browser';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class TisVideoComponent {
|
|
5
|
+
src: SafeUrl;
|
|
6
|
+
type: string;
|
|
7
|
+
constructor();
|
|
8
|
+
ngOnInit(): void;
|
|
9
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
10
|
+
getFileType(text: string): string;
|
|
11
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TisVideoComponent, never>;
|
|
12
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TisVideoComponent, "tis-video", never, { "src": { "alias": "src"; "required": true; }; }, {}, never, never, false, never>;
|
|
13
|
+
}
|