{"version":3,"file":"koalarx-ui-file-button.mjs","sources":["../../../projects/file-button/src/lib/koala.btn-file.service.ts","../../../projects/file-button/src/lib/file-button.component.ts","../../../projects/file-button/src/lib/file-button.component.html","../../../projects/file-button/src/lib/koala.file-button.module.ts","../../../projects/file-button/src/koalarx-ui-file-button.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { KoalaFileInterface } from './koala.file.interface';\n\n@Injectable({providedIn: \"any\"})\nexport class KoalaBtnFileService {\n\tpublic setFileSubject = new BehaviorSubject<File|null>(null);\n\tpublic fileListSubject = new BehaviorSubject<KoalaFileInterface[]>([]);\n\n\tpublic async setFile(file: File) {\n\t\tif (file) {\n\t\t\tthis.setFileSubject.next(file);\n\t\t}\n\t}\n\n\tpublic removeFile(files: KoalaFileInterface[], index: number) {\n\t\tfiles.splice(index, 1);\n\t\tthis.fileListSubject.next(files);\n\t}\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnInit,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { KoalaFileInterface } from './koala.file.interface';\nimport { BehaviorSubject } from 'rxjs';\n\n@Component({\n  selector: 'koala-file-button',\n  templateUrl: 'file-button.component.html',\n  styleUrls: ['file-button.component.css'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FileButtonComponent implements OnInit {\n  @Input() color?: string;\n  @Input() backgroundColor?: string;\n  @Input() icon?: string;\n  @Input() text?: string;\n  @Input() tooltip?: string;\n  @Input() disabled?: boolean;\n  @Input() multiple?: boolean;\n  @Input() accept?: string;\n  @Input() setFile?: BehaviorSubject<File>;\n  @Input() updateFileList?: BehaviorSubject<KoalaFileInterface[]>;\n  @Input() autoclear = true;\n  @Output() getFiles = new EventEmitter<KoalaFileInterface[]>();\n  public files: KoalaFileInterface[] = [];\n  public style?: string;\n\n  @ViewChild('file', { static: true }) private file?: ElementRef<HTMLInputElement>;\n\n  public textSubject = new BehaviorSubject<string>('');\n\n  ngOnInit() {\n    this.style = `color: ${this.color}!important;background-color: ${this.backgroundColor}!important;`;\n    this.textSubject.next(this.text ?? '');\n    if (this.setFile) {\n      this.setFile.subscribe(async (file) => {\n        if (file) {\n          const fileResult = await this.convertFile(file);\n          if (fileResult) {\n            this.files.push(fileResult);\n          }\n          this.generateTextButton();\n          this.getFiles.emit(this.files);\n        }\n      });\n    }\n\n    if (this.updateFileList) {\n      this.updateFileList.subscribe((fileList) => {\n        this.files = fileList;\n        this.generateTextButton();\n      });\n    }\n  }\n\n  public async emitFiles(files: FileList | null) {\n    if (files) {\n      if (files?.length > 0) {\n        for (let f = 0; f <= files.length; f++) {\n          const file = files.item(f);\n          if (file) {\n            const fileResult = await this.convertFile(file);\n            if (fileResult) {\n              this.files.push(fileResult);\n            }\n          }\n        }\n\n        this.getFiles.emit(this.files);\n      } else {\n        this.getFiles.emit([]);\n      }\n      this.generateTextButton();\n    }\n  }\n\n  public open() {\n    const elFile = this.file?.nativeElement;\n    if (elFile) elFile.value = '';\n    if (this.autoclear) {\n      this.files = [];\n      this.getFiles.emit([]);\n      this.generateTextButton();\n    }\n    elFile?.click();\n  }\n\n  private generateTextButton() {\n    this.textSubject.next(\n      this.files.length > 0\n        ? `${this.files.length} arquivo${this.files.length > 1 ? 's' : ''} selecionado`\n        : this.text ?? '',\n    );\n  }\n\n  private async convertFile(file: File): Promise<KoalaFileInterface | null> {\n    const blobFile = await new Promise<string | ArrayBuffer | null>((resolve) => {\n      const fileReader = new FileReader();\n      fileReader.readAsDataURL(file);\n      fileReader.onload = () => {\n        resolve(fileReader.result);\n      };\n    });\n    if (blobFile) {\n      const fileSplit = blobFile.toString().split(';base64,');\n      return {\n        filename: file.name,\n        type: fileSplit[0].replace('data:', ''),\n        base64: fileSplit[1],\n      };\n    }\n\n    return null;\n  }\n}\n","<input #file (change)=\"emitFiles(file.files)\" [accept]=\"accept\" [multiple]=\"multiple\"\n       style=\"display: none;\"\n       type=\"file\"/>\n<button\n\t(click)=\"open()\"\n\t*ngIf=\"text else iconButton\"\n\t[disabled]=\"disabled\"\n\t[matTooltipDisabled]=\"!tooltip\"\n\t[matTooltip]=\"tooltip ?? ''\"\n  [style]=\"style\"\n\tclass=\"koala-button\"\n\tmat-button\n\tmatTooltipPosition=\"above\"\n\ttype=\"button\">\n  <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\n\t{{textSubject | async}}\n</button>\n<ng-template #iconButton>\n  <button\n\t  (click)=\"open()\"\n\t  [disabled]=\"disabled\"\n\t  [matTooltipDisabled]=\"!tooltip\"\n\t  [matTooltip]=\"tooltip ?? ''\"\n    [style]=\"style\"\n\t  class=\"koala-icon-button\"\n\t  mat-icon-button\n\t  matTooltipPosition=\"before\"\n\t  type=\"button\">\n    <mat-icon>{{icon}}</mat-icon>\n  </button>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FileButtonComponent } from './file-button.component';\n\n@NgModule({\n  exports: [\n    FileButtonComponent\n  ],\n\tdeclarations: [\n\t\tFileButtonComponent\n\t],\n\timports: [\n\t\tCommonModule,\n\t\tMatTooltipModule,\n\t\tMatButtonModule,\n\t\tMatIconModule\n\t]\n})\nexport class KoalaFileButtonModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}