{"version":3,"file":"main-class-componentes-arquivo.mjs","sources":["../../../../projects/main-class/componentes/arquivo/src/arquivo-manager.service.ts","../../../../projects/main-class/componentes/arquivo/src/download-arquivo.directive.ts","../../../../projects/main-class/componentes/arquivo/src/preview-arquivo/dialog-preview-arquivo/dialog-preview-arquivo.component.ts","../../../../projects/main-class/componentes/arquivo/src/preview-arquivo/dialog-preview-arquivo/dialog-preview-arquivo.component.html","../../../../projects/main-class/componentes/arquivo/src/preview-arquivo/preview-arquivo.component.ts","../../../../projects/main-class/componentes/arquivo/src/preview-arquivo/preview-arquivo.component.html","../../../../projects/main-class/componentes/arquivo/src/imagem.directive.ts","../../../../projects/main-class/componentes/arquivo/main-class-componentes-arquivo.ts"],"sourcesContent":["import {InjectionToken} from '@angular/core';\nimport {Observable} from 'rxjs';\n\nexport const ARQUIVO_MANAGER_SERVICE = new InjectionToken<ArquivoManagerService>('mainclass.ARQUIVO_MANAGER_SERVICE');\n\nexport interface UploadEvent {\n  type: 'progresso' | 'conclusao';\n  progresso?: number;\n  attachment?: any;\n}\n\nexport interface ArquivoManagerService {\n  upload(file: File, ...agrupadores: string[]): Observable<UploadEvent>;\n  downloadURL(attachment: any): Observable<string>;\n  fileName?(attachment: any): string;\n}\n","import {Directive, HostListener, Inject, Input} from '@angular/core';\r\nimport {ARQUIVO_MANAGER_SERVICE, ArquivoManagerService} from './arquivo-manager.service';\r\n\r\n@Directive({\r\n  selector: '[mclDownloadArquivo]'\r\n})\r\nexport class DownloadArquivoDirective {\r\n\r\n  @Input('mclDownloadArquivo') attachment: any | string;\r\n\r\n  @Input() target = '_blank';\r\n\r\n  constructor(\r\n    @Inject(ARQUIVO_MANAGER_SERVICE) private arquivoService: ArquivoManagerService\r\n  ) {\r\n  }\r\n\r\n  private async getUrlArquivo() {\r\n    if (typeof this.attachment === 'string') {\r\n      return this.attachment;\r\n    }\r\n\r\n    return await this.arquivoService.downloadURL(this.attachment).toPromise();\r\n  }\r\n\r\n  @HostListener('click')\r\n  async download() {\r\n    if (!this.attachment) {\r\n      return;\r\n    }\r\n\r\n    const link = document.createElement('a');\r\n\r\n    const url = await this.getUrlArquivo();\r\n\r\n    if (!!url) {\r\n      link.href = url;\r\n      link.target = this.target;\r\n\r\n      document.body.appendChild(link);\r\n      link.click();\r\n      document.body.removeChild(link);\r\n    }\r\n  }\r\n\r\n}\r\n","import {Component, Inject, OnInit} from '@angular/core';\r\nimport {MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogContent} from '@angular/material/dialog';\r\nimport {ARQUIVO_MANAGER_SERVICE, ArquivoManagerService} from '../../arquivo-manager.service';\r\nimport {PdfViewerModule} from 'ng2-pdf-viewer';\r\nimport {MatProgressSpinner} from '@angular/material/progress-spinner';\r\nimport {MatButton} from '@angular/material/button';\r\nimport {MatIcon} from '@angular/material/icon';\r\nimport {ImageViewerModule} from 'lacuna-image-viewer';\r\n\r\nexport interface DadosPreview {\r\n  src: string;\r\n  type: 'image' | 'pdf' | 'other';\r\n  group: string[];\r\n}\r\n\r\n@Component({\r\n  selector: 'mcl-dialog-preview-arquivo',\r\n  templateUrl: './dialog-preview-arquivo.component.html',\r\n  imports: [\r\n    MatDialogContent,\r\n    MatProgressSpinner,\r\n    PdfViewerModule,\r\n    MatDialogActions,\r\n    MatButton,\r\n    MatDialogClose,\r\n    MatIcon,\r\n    ImageViewerModule,\r\n  ],\r\n  styleUrls: ['./dialog-preview-arquivo.component.scss']\r\n})\r\nexport class DialogPreviewArquivoComponent implements OnInit {\r\n\r\n  loadingFile = true;\r\n\r\n  constructor(\r\n    @Inject(MAT_DIALOG_DATA) private dadosPreview: DadosPreview,\r\n    @Inject(ARQUIVO_MANAGER_SERVICE) private arquivoService: ArquivoManagerService,\r\n  ) {\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    if (this.type === 'image') {\r\n      this.previewCarregado();\r\n    }\r\n  }\r\n\r\n  get src() {\r\n    return this.dadosPreview.src;\r\n  }\r\n\r\n  get type() {\r\n    return this.dadosPreview.type;\r\n  }\r\n\r\n  get group() {\r\n    return this.dadosPreview.group;\r\n  }\r\n\r\n  handleEvent(evento: any) {\r\n    if (evento.name === 'download') {\r\n      this.download();\r\n    }\r\n  }\r\n\r\n  previewCarregado(e?: CustomEvent) {\r\n    this.loadingFile = false;\r\n  }\r\n\r\n  download() {\r\n    if (typeof this.src === 'string') {\r\n      const link = document.createElement('a');\r\n\r\n      link.href = this.src;\r\n      link.target = '_blank';\r\n\r\n      document.body.appendChild(link);\r\n      link.click();\r\n      document.body.removeChild(link);\r\n\r\n    } else {\r\n\r\n\r\n    }\r\n  }\r\n}\r\n","<mat-dialog-content>\r\n  @if (loadingFile) {\r\n    <div class=\"spinner-wrapper\">\r\n      <mat-spinner style=\"margin: 0 auto\" [diameter]=\"50\" color=\"warn\"></mat-spinner>\r\n    </div>\r\n  }\r\n\r\n  @switch (type) {\r\n    @case ('image') {\r\n      @if (group) {\r\n        <ngx-image-viewer [src]=\"group\" [index]=\"group.indexOf(src)\"\r\n                          [config]=\"{customBtns:[{name: 'download', icon: 'fa fa-download'}]}\"\r\n                          (customEvent)=\"handleEvent($event)\"></ngx-image-viewer>\r\n      } @else {\r\n        <ngx-image-viewer [src]=\"[src]\" [index]=\"0\"\r\n                          [config]=\"{customBtns:[{name: 'download', icon: 'fa fa-download'}]}\"\r\n                          (customEvent)=\"handleEvent($event)\"></ngx-image-viewer>\r\n      }\r\n    }\r\n    @case ('pdf') {\r\n      <pdf-viewer [src]=\"src\"\r\n                  (page-rendered)=\"previewCarregado($event)\"\r\n                  [original-size]=\"false\"\r\n                  [render-text]=\"false\"\r\n      ></pdf-viewer>\r\n    }\r\n  }\r\n\r\n</mat-dialog-content>\r\n\r\n<div mat-dialog-actions>\r\n  <button mat-button mat-dialog-close>\r\n    <mat-icon>close</mat-icon>\r\n    Fechar\r\n  </button>\r\n\r\n  <div class=\"spacer\"></div>\r\n\r\n  @if (!loadingFile) {\r\n    <button mat-stroked-button (click)=\"download()\">\r\n      <mat-icon>cloud_download</mat-icon>\r\n      Realizar o Download\r\n    </button>\r\n  }\r\n</div>\r\n","import {Component, Inject, Input, OnInit} from '@angular/core';\r\nimport {MatDialog} from '@angular/material/dialog';\r\nimport {DialogPreviewArquivoComponent} from './dialog-preview-arquivo/dialog-preview-arquivo.component';\r\nimport {ARQUIVO_MANAGER_SERVICE, ArquivoManagerService} from '../arquivo-manager.service';\r\nimport {Observable} from 'rxjs';\r\nimport {NgStyle} from '@angular/common';\r\nimport {DownloadArquivoDirective} from '../download-arquivo.directive';\r\nimport {PdfViewerModule} from 'ng2-pdf-viewer';\r\nimport {MatIcon} from '@angular/material/icon';\r\n\r\ninterface ArquivoPreview {\r\n  src?: string;\r\n  url?: string;\r\n  filename?: string;\r\n  type: 'image' | 'pdf' | 'other';\r\n}\r\n\r\n@Component({\r\n  selector: 'mcl-preview-arquivo',\r\n  templateUrl: './preview-arquivo.component.html',\r\n  imports: [\r\n    NgStyle,\r\n    DownloadArquivoDirective,\r\n    MatIcon,\r\n    PdfViewerModule,\r\n  ],\r\n  styleUrls: ['./preview-arquivo.component.scss']\r\n})\r\nexport class PreviewArquivoComponent implements OnInit {\r\n\r\n  src: any;\r\n  filename?: string;\r\n  type?: 'image' | 'pdf' | 'other';\r\n\r\n  @Input() showLoading = false;\r\n  @Input() height = '200px';\r\n  @Input() width = '200px';\r\n\r\n  @Input() group?: Array<string>;\r\n\r\n  private $arquivo?: string;\r\n  private $url?: string;\r\n\r\n  constructor(\r\n    @Inject(ARQUIVO_MANAGER_SERVICE) private arquivoManagerService: ArquivoManagerService,\r\n    private dialog: MatDialog,\r\n  ) {\r\n  }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n  get arquivo() {\r\n    return this.$url;\r\n  }\r\n\r\n  @Input() set arquivo(arquivo: any) {\r\n    if (this.$arquivo !== arquivo) {\r\n      this.$arquivo = arquivo;\r\n      this.parseArquivo(arquivo)\r\n        .subscribe(arq => {\r\n          this.src = arq.src;\r\n          this.filename = arq.filename;\r\n          this.$url = arq.url;\r\n          this.type = arq.type;\r\n        });\r\n    }\r\n  }\r\n\r\n  private parseArquivo(arquivo: any): Observable<ArquivoPreview> {\r\n    return new Observable(observer => {\r\n      if (arquivo.loading) { // uploading\r\n        const type = this.parseType(arquivo.file.name);\r\n\r\n        observer.next({\r\n          type,\r\n          filename: arquivo.file.name,\r\n        });\r\n\r\n        this.carregaArrayBuffFile(arquivo.file)\r\n          .then(src => {\r\n            observer.next({\r\n              src,\r\n              type,\r\n              filename: arquivo.file.name,\r\n            });\r\n            observer.complete();\r\n          })\r\n          .catch(err => observer.error(err));\r\n      } else if (typeof arquivo === 'string') { // puploading\r\n        const type = this.parseType(arquivo.split('?')[0]);\r\n\r\n        observer.next({\r\n          type,\r\n          url: arquivo,\r\n          src: arquivo,\r\n        });\r\n        observer.complete();\r\n      } else { // attachment\r\n        const fileName = this.arquivoManagerService.fileName ?\r\n          this.arquivoManagerService.fileName(arquivo) :\r\n          arquivo.nome || arquivo.name || arquivo.filename;\r\n        const type = this.parseType(fileName);\r\n\r\n        this.arquivoManagerService.downloadURL(arquivo).subscribe(url => {\r\n          observer.next({\r\n            type,\r\n            url,\r\n            src: url,\r\n          });\r\n          observer.complete();\r\n        }, err => observer.error(err));\r\n      }\r\n    });\r\n  }\r\n\r\n  private carregaArrayBuffFile(file: File): Promise<any> {\r\n    return new Promise(((resolve, reject) => {\r\n      if (typeof (FileReader) !== 'undefined') {\r\n        const reader = new FileReader();\r\n\r\n        reader.onload = (e: any) => resolve(e.target.result);\r\n        reader.onerror = e => reject(e);\r\n\r\n        reader.readAsArrayBuffer(file);\r\n      } else {\r\n        reject('FileReader not defined');\r\n      }\r\n    }));\r\n  }\r\n\r\n  private parseType(filename: string): 'image' | 'pdf' | 'other' {\r\n    const format = filename.substring(filename.lastIndexOf('.') + 1).toLowerCase();\r\n\r\n    switch (format) {\r\n      case 'jpeg':\r\n      case 'jpg':\r\n      case 'png':\r\n      case 'gif':\r\n        return 'image';\r\n      case 'pdf':\r\n        return 'pdf';\r\n    }\r\n\r\n    return 'other';\r\n  }\r\n\r\n  async abrePreview() {\r\n    let group;\r\n    let src = this.src;\r\n    if (this.group) {\r\n      group = (await Promise.all(\r\n        this.group.map(arq => this.parseArquivo(arq).toPromise())\r\n      ));\r\n      src = group[this.group.indexOf(this.$arquivo!)]!.src;\r\n      group = group.filter(g => !!g?.src && g?.type === this.type).map(g => g?.src);\r\n    }\r\n\r\n    this.dialog.open(DialogPreviewArquivoComponent, {\r\n      data: {\r\n        src,\r\n        group,\r\n        type: this.type,\r\n      },\r\n    });\r\n  }\r\n\r\n}\r\n","@if (!!src) {\r\n  @switch (type) {\r\n    @case ('image') {\r\n      <img [src]=\"src\"\r\n           [ngStyle]=\"{width:width,height:height}\"\r\n           (click)=\"abrePreview()\"/>\r\n    }\r\n    @case ('other') {\r\n      <div class=\"other\"\r\n           [ngStyle]=\"{width:width,height:height}\"\r\n           [mclDownloadArquivo]=\"arquivo\">\r\n        <mat-icon>insert_drive_file</mat-icon>\r\n        <small>{{ filename }}</small>\r\n      </div>\r\n    }\r\n    @case ('pdf') {\r\n      <pdf-viewer [src]=\"src\"\r\n                  [ngStyle]=\"{width:width,height:height}\"\r\n                  [original-size]=\"false\"\r\n                  [page]=\"1\"\r\n                  [render-text]=\"false\"\r\n                  (click)=\"abrePreview()\"\r\n      ></pdf-viewer>\r\n    }\r\n  }\r\n}\r\n","import {Directive, ElementRef, Inject, InjectionToken, Input, OnInit, Optional, Self} from '@angular/core';\nimport {ARQUIVO_MANAGER_SERVICE, ArquivoManagerService} from './arquivo-manager.service';\nimport {lastValueFrom} from 'rxjs';\n\nexport const MCL_IMAGE_PADRAO = new InjectionToken<string>('mainclass.MCL_IMAGE_PADRAO');\n\n@Directive({\n  selector: '[mclImagemSrc],[mclImagemBackground]'\n})\nexport class ImagemDirective implements OnInit {\n\n  private attachment: string | any;\n\n  private _setter?: (url: string) => any;\n\n  private backgroundSetter = (url: string) => {\n    this.element.nativeElement.style.backgroundImage = `url(${url})`;\n  };\n\n  private srcSetter = (url: string) => {\n    this.element.nativeElement.src = url;\n  };\n\n  constructor(\n    @Inject(MCL_IMAGE_PADRAO) @Optional() private _padrao: string,\n    @Self() private element: ElementRef,\n    @Inject(ARQUIVO_MANAGER_SERVICE) private arquivoManagerService: ArquivoManagerService,\n  ) {\n  }\n\n  @Input('mclImagemSrc')\n  set imagemSrc(imagem: string | any | undefined) {\n    this._setter = this.srcSetter;\n\n    if (imagem) {\n      if (this.attachment !== imagem) {\n        this.attachment = imagem;\n        this.setPath();\n      }\n    } else {\n      this._setter(this._padrao);\n    }\n  }\n\n  @Input('mclImagemBackground')\n  set imagemBackground(imagem: string | any | undefined) {\n    this._setter = this.backgroundSetter;\n\n    if (imagem) {\n      if (this.attachment !== imagem) {\n        this.attachment = imagem;\n        this.setPath();\n      }\n    } else {\n      this._setter(this._padrao);\n    }\n  }\n\n  @Input() set padrao(padrao: string) {\n    this._padrao = padrao;\n\n    if (this._setter) {\n      this._setter(this.padrao);\n    }\n  }\n\n  private async setPath() {\n    if (!!this._setter && !!this.attachment) {\n      let url;\n      if (typeof this.attachment === 'string' && (this.attachment.startsWith('http://') || this.attachment.startsWith('https://') || this.attachment.match(/^\\.?\\/?.+(\\/.+)*\\.(jpeg|png|jpg|gif)$/))) {\n        url = this.attachment;\n      } else {\n        url = await lastValueFrom(this.arquivoManagerService.downloadURL(this.attachment));\n      }\n      this._setter(url);\n    }\n  }\n\n  ngOnInit() {\n  }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}