{"version":3,"file":"ngx-filepond.mjs","sources":["../../../projects/ngx-filepond/src/lib/ngx-filepond.component.ts","../../../projects/ngx-filepond/src/lib/ngx-filepond.component.html","../../../projects/ngx-filepond/src/lib/ngx-filepond.module.ts","../../../projects/ngx-filepond/src/public-api.ts","../../../projects/ngx-filepond/src/ngx-filepond.ts"],"sourcesContent":["import {\n  Component,\n  ElementRef,\n  SimpleChanges,\n  ViewEncapsulation,\n  EventEmitter,\n  NgZone,\n  Input,\n  Output,\n  AfterViewInit,\n  OnChanges,\n  OnDestroy,\n} from \"@angular/core\";\n\nimport { create, supported, FilePond, FilePondOptions } from \"filepond\";\n\n// We test if filepond is supported on the current client\nconst isSupported: Boolean = supported();\n\n// List of attributes for fallback input\nconst inputAttributes: Array<string> = [\n  \"id\",\n  \"name\",\n  \"class\",\n  \"multiple\",\n  \"required\",\n  \"disabled\",\n  \"capture\",\n  \"accept\",\n];\n\n// Methods not made available on the component\nconst filteredComponentMethods: Array<string> = [\n  \"setOptions\",\n  \"on\",\n  \"off\",\n  \"onOnce\",\n  \"appendTo\",\n  \"insertAfter\",\n  \"insertBefore\",\n  \"isAttachedTo\",\n  \"replaceElement\",\n  \"restoreElement\",\n  \"destroy\",\n];\n\nconst outputs: Array<string> = [\n  \"oninit\",\n  \"onwarning\",\n  \"onerror\",\n  \"oninitfile\",\n  \"onaddfilestart\",\n  \"onaddfileprogress\",\n  \"onaddfile\",\n  \"onprocessfilestart\",\n  \"onprocessfileprogress\",\n  \"onprocessfileabort\",\n  \"onprocessfilerevert\",\n  \"onprocessfile\",\n  \"onprocessfiles\",\n  \"onremovefile\",\n  \"onpreparefile\",\n  \"onupdatefiles\",\n  \"onactivatefile\",\n  \"onreorderfiles\",\n];\n\n// Component outline\n@Component({\n  selector: \"file-pond\",\n  encapsulation: ViewEncapsulation.None,\n  templateUrl: \"./ngx-filepond.component.html\",\n  styleUrls: [\"./ngx-filepond.component.css\"],\n})\nexport class FilePondComponent implements AfterViewInit, OnChanges, OnDestroy {\n  @Input()\n  options: FilePondOptions | any = {};\n\n  @Input()\n  files: FilePondOptions[\"files\"];\n\n  // same as outputs array\n  @Output() oninit = new EventEmitter<any>();\n  @Output() onwarning = new EventEmitter<any>();\n  @Output() onerror = new EventEmitter<any>();\n  @Output() oninitfile = new EventEmitter<any>();\n  @Output() onactivatefile = new EventEmitter<any>();\n  @Output() onaddfilestart = new EventEmitter<any>();\n  @Output() onaddfileprogress = new EventEmitter<any>();\n  @Output() onaddfile = new EventEmitter<any>();\n  @Output() onprocessfilestart = new EventEmitter<any>();\n  @Output() onprocessfileprogress = new EventEmitter<any>();\n  @Output() onprocessfileabort = new EventEmitter<any>();\n  @Output() onprocessfilerevert = new EventEmitter<any>();\n  @Output() onprocessfile = new EventEmitter<any>();\n  @Output() onprocessfiles = new EventEmitter<any>();\n  @Output() onremovefile = new EventEmitter<any>();\n  @Output() onpreparefile = new EventEmitter<any>();\n  @Output() onupdatefiles = new EventEmitter<any>();\n  @Output() onreorderfiles = new EventEmitter<any>();\n\n  private root: ElementRef;\n  private zone: NgZone;\n  private pond: FilePond | null = null;\n  private handleEvent: Function | null = null;\n\n  constructor(root: ElementRef, zone: NgZone) {\n    this.root = root;\n    this.zone = zone;\n  }\n\n  ngAfterViewInit() {\n    const input = this.root.nativeElement.querySelector(\"input\");\n\n    // transfer relevant attributes to input, this so we still have an input with the correct attributes should file pond not load\n    const attributes = this.root.nativeElement.attributes;\n    inputAttributes.forEach((name) => {\n      const value = attributes[name]\n        ? attributes[name].value\n        : this.options[name];\n      if (!value) {\n        return;\n      }\n      input.setAttribute(name, value);\n    });\n\n    // no sufficient features supported in this browser\n    if (!isSupported) {\n      return;\n    }\n\n    // map FilePond events to Angular @outputs\n    this.handleEvent = (e: Event) => {\n      const key = `on${e.type.split(\":\")[1]}`;\n      // @ts-ignore\n      this[key].emit({ ...e.detail });\n    };\n    outputs.forEach((event) => {\n      this.root.nativeElement.addEventListener(\n        `FilePond:${event.substring(2)}`,\n        this.handleEvent\n      );\n    });\n\n    // will block angular from listening to events inside the pond\n    this.zone.runOutsideAngular(() => {\n      // create instance\n      this.pond = create(input, {\n        // our options\n        ...this.options,\n\n        // our initial files\n        files: this.files,\n      });\n    });\n\n    // Copy instance method references to component instance\n    this.pond &&\n      Object.keys(this.pond)\n\n        // remove unwanted methods\n        .filter((key) => filteredComponentMethods.indexOf(key) === -1)\n\n        // set method references from the component instance to the pond instance\n        .forEach((key) => {\n          // @ts-ignore\n          this[key] = this.pond[key];\n        });\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    // no need to handle first change\n    if (changes[\"firstChange\"]) return;\n\n    // no filepond instance available\n    if (!this.pond) {\n      return;\n    }\n\n    // use new options object as base ( or if not available, use current options )\n    const options = changes[\"options\"]\n      ? changes[\"options\"].currentValue\n      : this.options;\n\n    // see if file list has changed\n    if (\n      changes[\"files\"] &&\n      JSON.stringify(changes[\"files\"].previousValue) !==\n        JSON.stringify(changes[\"files\"].currentValue)\n    ) {\n      // file list has changed\n      options.files = changes[\"files\"].currentValue;\n    }\n\n    // set new options\n    this.pond.setOptions(options);\n  }\n\n  ngOnDestroy() {\n    if (!this.pond) {\n      return;\n    }\n\n    outputs.forEach((event) => {\n      this.root.nativeElement.removeEventListener(\n        `FilePond:${event.substring(2)}`,\n        this.handleEvent\n      );\n    });\n\n    this.pond.destroy();\n  }\n}\n","<div class=\"filepond--wrapper\">\n  <input type=\"file\"/>\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FilePondComponent } from './ngx-filepond.component';\n\nexport { registerPlugin } from 'filepond';\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [FilePondComponent],\n  exports: [FilePondComponent],\n})\nexport class FilePondModule {}\n","/*\n * Public API Surface of ngx-filepond\n */\n\nexport * from './lib/ngx-filepond.component';\nexport * from './lib/ngx-filepond.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}