{"version":3,"file":"guajiritos-drag-and-drop.mjs","sources":["../../../projects/drag-and-drop/src/directives/drag-and-drop.directive.ts","../../../projects/drag-and-drop/src/lib/drag-and-drop.component.ts","../../../projects/drag-and-drop/src/public-api.ts","../../../projects/drag-and-drop/src/guajiritos-drag-and-drop.ts"],"sourcesContent":["import { Directive, EventEmitter, HostBinding, HostListener, Output } from '@angular/core';\r\n\r\n\r\n@Directive({\r\n  selector: '[DragAndDrop]',\r\n  standalone: true\r\n})\r\nexport class DragAndDropDirective {\r\n  @HostBinding('class.file-over') fileOver: boolean | undefined;\r\n  @HostBinding('class.file-not-allowed') fileNotAllowed: boolean = false;\r\n\r\n  @Output() fileDropped: EventEmitter<File[]> = new EventEmitter<File[]>();\r\n\r\n  @HostListener('dragover', ['$event']) onDragOver(evt: DragEvent): void {\r\n    evt.preventDefault();\r\n    evt.stopPropagation();\r\n\r\n    this.fileOver = true;\r\n  }\r\n\r\n  @HostListener('dragleave', ['$event'])\r\n  public onDragLeave(evt: any): void {\r\n    evt.preventDefault();\r\n    evt.stopPropagation();\r\n    this.fileOver = false;\r\n    this.fileNotAllowed = false;\r\n  }\r\n\r\n  @HostListener('drop', ['$event'])\r\n  public ondrop(evt: any): void {\r\n    evt.preventDefault();\r\n    evt.stopPropagation();\r\n    this.fileOver = false;\r\n    this.fileNotAllowed = false;\r\n    const files = evt.dataTransfer?.files ?? [];\r\n\r\n    this.fileDropped.emit(files);\r\n  }\r\n}\r\n","import { Component, EventEmitter, forwardRef, Input, Output, signal, WritableSignal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\nimport { DragAndDropDirective } from '../directives/drag-and-drop.directive';\r\nimport { Base64ExportFile } from '../interfaces/interfaces';\r\n\r\n@Component({\r\n  selector: 'guajiritos-drag-and-drop',\r\n  standalone: true,\r\n  imports: [\r\n    CommonModule,\r\n    DragAndDropDirective,\r\n    TranslateModule\r\n  ],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => GuajiritosDragAndDrop),\r\n      multi: true\r\n    }\r\n  ],\r\n  template: `\r\n    <div class=\"drag-and-drop\">\r\n      <div DragAndDrop (fileDropped)=\"getFileDropped($event)\" class=\"drag-and-drop-container\"\r\n           (click)=\"fileInput.click()\">\r\n        <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 -960 960 960\" width=\"24\">\r\n          <path\r\n              d=\"M260-160q-91 0-155.5-63T40-377q0-78 47-139t123-78q25-92 100-149t170-57q117 0 198.5 81.5T760-520q69 8 114.5 59.5T920-340q0 75-52.5 127.5T740-160H520q-33 0-56.5-23.5T440-240v-206l-64 62-56-56 160-160 160 160-56 56-64-62v206h220q42 0 71-29t29-71q0-42-29-71t-71-29h-60v-80q0-83-58.5-141.5T480-720q-83 0-141.5 58.5T280-520h-20q-58 0-99 41t-41 99q0 58 41 99t99 41h100v80H260Zm220-280Z\"/>\r\n        </svg>\r\n        <span>\r\n          {{ 'Arrastre y suelte el archivo aquí o' | translate }}\r\n          <strong>{{ \"Escoge un archivo\" | translate }}</strong>\r\n        </span>\r\n        <input #fileInput (change)=\"onFileSelected($event)\" [hidden]=\"true\" [accept]=\"accept\" type=\"file\"\r\n               [multiple]=\"multiple\">\r\n      </div>\r\n\r\n      @if (hasStorage) {\r\n        @for (file of storageFiles(); track file.name; let index = $index) {\r\n          <div class=\"file-container\">\r\n            <span>{{ file?.name }}</span>\r\n            <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 -960 960 960\" width=\"24\"\r\n                 (click)=\"removeFile(index)\">\r\n              <path\r\n                  d=\"M280-120q-33 0-56.5-23.5T200-200v-520h-40v-80h200v-40h240v40h200v80h-40v520q0 33-23.5 56.5T680-120H280Zm400-600H280v520h400v-520ZM360-280h80v-360h-80v360Zm160 0h80v-360h-80v360ZM280-720v520-520Z\"/>\r\n            </svg>\r\n          </div>\r\n        }\r\n      }\r\n    </div>\r\n  `,\r\n  styles: `\r\n    .drag-and-drop {\r\n      display: flex;\r\n      flex-direction: column;\r\n      gap: 1rem;\r\n      color: gray;\r\n\r\n      .drag-and-drop-container {\r\n        width: 100%;\r\n        height: 240px;\r\n        border: 1px dashed gray;\r\n        display: flex;\r\n        justify-content: center;\r\n        align-items: center;\r\n        flex-direction: column;\r\n        border-radius: .25rem;\r\n\r\n        span strong {\r\n          color: dimgray;\r\n        }\r\n\r\n        svg {\r\n          width: 64px;\r\n          height: 64px;\r\n          fill: dimgray;\r\n        }\r\n\r\n        &.file-over {\r\n          background-color: lightgrey;\r\n          color: white;\r\n\r\n          span strong {\r\n            color: white;\r\n          }\r\n\r\n          svg {\r\n            fill: white;\r\n          }\r\n        }\r\n        \r\n        &:hover {\r\n          cursor: pointer;\r\n        }\r\n      }\r\n\r\n      .file-container {\r\n        display: flex;\r\n        justify-content: space-between;\r\n        align-items: center;\r\n        padding: .5rem 1.5rem;\r\n        color: dimgray;\r\n        background-color: lightgray;\r\n        border-radius: .25rem;\r\n\r\n        svg {\r\n          fill: dimgray;\r\n        }\r\n\r\n        &:hover {\r\n          color: white;\r\n\r\n          svg {\r\n            fill: white;\r\n            cursor: pointer;\r\n          }\r\n        }\r\n      }\r\n    }\r\n  `\r\n})\r\nexport class GuajiritosDragAndDrop implements ControlValueAccessor {\r\n  public storageFiles: WritableSignal<File[]> = signal([]);\r\n\r\n  @Input() accept: string = '*';\r\n  @Input() multiple: boolean = true;\r\n  @Input() exportBase64Files: boolean = false;\r\n  @Input() hasStorage: boolean = true;\r\n\r\n  @Input() set initialFiles(files: File[]) {\r\n    if (files?.length) {\r\n      this.storageFiles.set(files);\r\n    }\r\n  }\r\n\r\n  @Output() files: EventEmitter<File[] | Base64ExportFile[]> = new EventEmitter();\r\n\r\n  private filesToBase64(file: File): Promise<string> {\r\n    return new Promise((resolve, reject): void => {\r\n      const reader: FileReader = new FileReader();\r\n      reader.readAsDataURL(file);\r\n      reader.onload = (): void => {\r\n        resolve((reader.result as string)?.split(',')[1]);\r\n      };\r\n      reader.onerror = (error): void => {\r\n        reject(error)\r\n      };\r\n    })\r\n  }\r\n\r\n  private returnChanges(): void {\r\n    if (this.exportBase64Files) {\r\n      const base64Array: Base64ExportFile[] = [];\r\n      this.storageFiles.update((files: File[]): File[] => {\r\n        files.forEach(async (file: File, index: number): Promise<void> => {\r\n          await this.filesToBase64(file).then((base64File: string): void => {\r\n            base64Array.push({\r\n              base64: base64File,\r\n              name: file.name,\r\n              type: file.type\r\n            });\r\n          });\r\n\r\n          if (index === files.length - 1) {\r\n            this.files.emit(base64Array);\r\n            this.propagateChange(base64Array);\r\n          }\r\n        })\r\n        return files;\r\n      });\r\n    } else {\r\n      this.files.emit(this.storageFiles());\r\n      this.propagateChange(this.storageFiles());\r\n    }\r\n  }\r\n\r\n  public getFileDropped(files: File[]): void {\r\n    this.storageFiles.update((storageFiles: File[]): File[] => {\r\n      if (this.hasStorage) {\r\n        storageFiles = [...storageFiles, ...files];\r\n      } else {\r\n        storageFiles = [...files];\r\n      }\r\n\r\n      return storageFiles;\r\n    });\r\n\r\n    this.returnChanges();\r\n  }\r\n\r\n  public onFileSelected(event: any): void {\r\n    this.storageFiles.update((storageFiles: File[]): File[] => {\r\n      if (this.hasStorage) {\r\n        storageFiles = [...storageFiles, ...event.target.files];\r\n      } else {\r\n        storageFiles = [...event.target.files];\r\n      }\r\n\r\n      return storageFiles;\r\n    });\r\n\r\n    this.returnChanges();\r\n  }\r\n\r\n  public removeFile(index: number): void {\r\n    this.storageFiles.update((files: File[]): File[] => {\r\n      files.splice(index, 1);\r\n      return files;\r\n    });\r\n\r\n    this.returnChanges();\r\n  }\r\n\r\n  /**\r\n   * Propagates changes to the given parameter.\r\n   */\r\n  propagateChange(_: any): void {\r\n  };\r\n\r\n  /**\r\n   * Registers a callback function to be invoked when the value of the control changes.\r\n   */\r\n  registerOnChange(fn: any): void {\r\n    this.propagateChange = fn;\r\n  }\r\n\r\n  /**\r\n   * Registers a callback function that will be called when the element is touched.\r\n   */\r\n  registerOnTouched(): void {\r\n  }\r\n\r\n  /**\r\n   * Writes a value to the form.\r\n   *\r\n   * @param files\r\n   */\r\n  writeValue(files: File[]): void {\r\n    if (files?.length) {\r\n      this.storageFiles.update((storageFiles: File[]): File[] => [...storageFiles, ...files]);\r\n    }\r\n  }\r\n}\r\n","/*\r\n * Public API Surface of drag-and-drop\r\n */\r\n\r\nexport * from './lib/drag-and-drop.component';\r\nexport * from './interfaces/interfaces';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}