{"version":3,"file":"ottimis-ng2-file-upload.mjs","sources":["../../../../libs/ng2-file-upload/file-upload/file-like-object.class.ts","../../../../libs/ng2-file-upload/file-upload/file-item.class.ts","../../../../libs/ng2-file-upload/file-upload/file-type.class.ts","../../../../libs/ng2-file-upload/file-upload/file-uploader.class.ts","../../../../libs/ng2-file-upload/file-upload/file-drop.directive.ts","../../../../libs/ng2-file-upload/file-upload/file-select.directive.ts","../../../../libs/ng2-file-upload/file-upload/file-upload.module.ts","../../../../libs/ng2-file-upload/ottimis-ng2-file-upload.ts"],"sourcesContent":["export class FileLikeObject {\n  lastModifiedDate: any;\n  size: any;\n  type?: string;\n  name?: string;\n  rawFile: HTMLInputElement | File;\n\n  constructor(fileOrInput: HTMLInputElement | File) {\n    this.rawFile = fileOrInput;\n    const fakePathOrObject =\n      fileOrInput instanceof HTMLInputElement ? fileOrInput.value : fileOrInput;\n    const postfix =\n      typeof fakePathOrObject === \"string\" ? \"FakePath\" : \"Object\";\n    const method = `_createFrom${postfix}`;\n    (this as any)[method](fakePathOrObject);\n  }\n\n  _createFromFakePath(path: string): void {\n    this.lastModifiedDate = void 0;\n    this.size = void 0;\n    this.type = `like/${path.slice(path.lastIndexOf(\".\") + 1).toLowerCase()}`;\n    this.name = path.slice(path.lastIndexOf(\"/\") + path.lastIndexOf(\"\\\\\") + 2);\n  }\n\n  _createFromObject(object: {\n    size: number;\n    type: string;\n    name: string;\n  }): void {\n    this.size = object.size;\n    this.type = object.type;\n    this.name = object.name;\n  }\n}\n","import { FileLikeObject } from \"./file-like-object.class\";\nimport {\n  FileUploader,\n  ParsedResponseHeaders,\n  FileUploaderOptions,\n} from \"./file-uploader.class\";\n\nexport class FileItem {\n  file: FileLikeObject;\n  _file: File;\n  alias?: string;\n  url = \"/\";\n  method?: string;\n  headers: any = [];\n  withCredentials = true;\n  formData: any = [];\n  isReady = false;\n  isUploading = false;\n  isUploaded = false;\n  isSuccess = false;\n  isCancel = false;\n  isError = false;\n  progress = 0;\n  index?: number;\n  _xhr?: XMLHttpRequest;\n  _form: any;\n\n  protected uploader: FileUploader;\n  protected some: File;\n  protected options: FileUploaderOptions;\n\n  constructor(\n    uploader: FileUploader,\n    some: File,\n    options: FileUploaderOptions\n  ) {\n    this.uploader = uploader;\n    this.some = some;\n    this.options = options;\n    this.file = new FileLikeObject(some);\n    this._file = some;\n    if (uploader.options) {\n      this.method = uploader.options.method || \"POST\";\n      this.alias = uploader.options.itemAlias || \"file\";\n    }\n    this.url = uploader.options.url;\n  }\n\n  upload(): void {\n    try {\n      this.uploader.uploadItem(this);\n    } catch (e) {\n      this.uploader._onCompleteItem(this, \"\", 0, {});\n      this.uploader._onErrorItem(this, \"\", 0, {});\n    }\n  }\n\n  cancel(): void {\n    this.uploader.cancelItem(this);\n  }\n\n  remove(): void {\n    this.uploader.removeFromQueue(this);\n  }\n\n  onBeforeUpload(): void {\n    return void 0;\n  }\n\n  onBuildForm(form: any): any {\n    return { form };\n  }\n\n  onProgress(progress: number): any {\n    return { progress };\n  }\n\n  onSuccess(\n    response: string,\n    status: number,\n    headers: ParsedResponseHeaders\n  ): any {\n    return { response, status, headers };\n  }\n\n  onError(\n    response: string,\n    status: number,\n    headers: ParsedResponseHeaders\n  ): any {\n    return { response, status, headers };\n  }\n\n  onCancel(\n    response: string,\n    status: number,\n    headers: ParsedResponseHeaders\n  ): any {\n    return { response, status, headers };\n  }\n\n  onComplete(\n    response: string,\n    status: number,\n    headers: ParsedResponseHeaders\n  ): any {\n    return { response, status, headers };\n  }\n\n  _onBeforeUpload(): void {\n    this.isReady = true;\n    this.isUploading = true;\n    this.isUploaded = false;\n    this.isSuccess = false;\n    this.isCancel = false;\n    this.isError = false;\n    this.progress = 0;\n    this.onBeforeUpload();\n  }\n\n  _onBuildForm(form: any): void {\n    this.onBuildForm(form);\n  }\n\n  _onProgress(progress: number): void {\n    this.progress = progress;\n    this.onProgress(progress);\n  }\n\n  _onSuccess(\n    response: string,\n    status: number,\n    headers: ParsedResponseHeaders\n  ): void {\n    this.isReady = false;\n    this.isUploading = false;\n    this.isUploaded = true;\n    this.isSuccess = true;\n    this.isCancel = false;\n    this.isError = false;\n    this.progress = 100;\n    this.index = undefined;\n    this.onSuccess(response, status, headers);\n  }\n\n  _onError(\n    response: string,\n    status: number,\n    headers: ParsedResponseHeaders\n  ): void {\n    this.isReady = false;\n    this.isUploading = false;\n    this.isUploaded = true;\n    this.isSuccess = false;\n    this.isCancel = false;\n    this.isError = true;\n    this.progress = 0;\n    this.index = undefined;\n    this.onError(response, status, headers);\n  }\n\n  _onCancel(\n    response: string,\n    status: number,\n    headers: ParsedResponseHeaders\n  ): void {\n    this.isReady = false;\n    this.isUploading = false;\n    this.isUploaded = false;\n    this.isSuccess = false;\n    this.isCancel = true;\n    this.isError = false;\n    this.progress = 0;\n    this.index = undefined;\n    this.onCancel(response, status, headers);\n  }\n\n  _onComplete(\n    response: string,\n    status: number,\n    headers: ParsedResponseHeaders\n  ): void {\n    this.onComplete(response, status, headers);\n\n    if (this.uploader.options.removeAfterUpload) {\n      this.remove();\n    }\n  }\n\n  _prepareToUploading(): void {\n    this.index = this.index || ++this.uploader._nextIndex;\n    this.isReady = true;\n  }\n}\n","import { FileLikeObject } from \"../index\";\n\nexport class FileType {\n  /*  MS office  */\n  // tslint:disable-next-line:variable-name\n  static mime_doc: string[] = [\n    \"application/msword\",\n    \"application/msword\",\n    \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n    \"application/vnd.openxmlformats-officedocument.wordprocessingml.template\",\n    \"application/vnd.ms-word.document.macroEnabled.12\",\n    \"application/vnd.ms-word.template.macroEnabled.12\",\n  ];\n  // tslint:disable-next-line:variable-name\n  static mime_xsl: string[] = [\n    \"application/vnd.ms-excel\",\n    \"application/vnd.ms-excel\",\n    \"application/vnd.ms-excel\",\n    \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n    \"application/vnd.openxmlformats-officedocument.spreadsheetml.template\",\n    \"application/vnd.ms-excel.sheet.macroEnabled.12\",\n    \"application/vnd.ms-excel.template.macroEnabled.12\",\n    \"application/vnd.ms-excel.addin.macroEnabled.12\",\n    \"application/vnd.ms-excel.sheet.binary.macroEnabled.12\",\n  ];\n  // tslint:disable-next-line:variable-name\n  static mime_ppt: string[] = [\n    \"application/vnd.ms-powerpoint\",\n    \"application/vnd.ms-powerpoint\",\n    \"application/vnd.ms-powerpoint\",\n    \"application/vnd.ms-powerpoint\",\n    \"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\n    \"application/vnd.openxmlformats-officedocument.presentationml.template\",\n    \"application/vnd.openxmlformats-officedocument.presentationml.slideshow\",\n    \"application/vnd.ms-powerpoint.addin.macroEnabled.12\",\n    \"application/vnd.ms-powerpoint.presentation.macroEnabled.12\",\n    \"application/vnd.ms-powerpoint.presentation.macroEnabled.12\",\n    \"application/vnd.ms-powerpoint.slideshow.macroEnabled.12\",\n  ];\n\n  /* PSD */\n  // tslint:disable-next-line:variable-name\n  static mime_psd: string[] = [\n    \"image/photoshop\",\n    \"image/x-photoshop\",\n    \"image/psd\",\n    \"application/photoshop\",\n    \"application/psd\",\n    \"zz-application/zz-winassoc-psd\",\n  ];\n\n  /* Compressed files */\n  // tslint:disable-next-line:variable-name\n  static mime_compress: string[] = [\n    \"application/x-gtar\",\n    \"application/x-gcompress\",\n    \"application/compress\",\n    \"application/x-tar\",\n    \"application/x-rar-compressed\",\n    \"application/octet-stream\",\n    \"application/x-zip-compressed\",\n    \"application/zip-compressed\",\n    \"application/x-7z-compressed\",\n    \"application/gzip\",\n    \"application/x-bzip2\",\n  ];\n\n  static getMimeClass(file: FileLikeObject): string {\n    let mimeClass = \"application\";\n    if (file?.type && this.mime_psd.indexOf(file.type) !== -1) {\n      mimeClass = \"image\";\n    } else if (file?.type?.match(\"image.*\")) {\n      mimeClass = \"image\";\n    } else if (file?.type?.match(\"video.*\")) {\n      mimeClass = \"video\";\n    } else if (file?.type?.match(\"audio.*\")) {\n      mimeClass = \"audio\";\n    } else if (file?.type === \"application/pdf\") {\n      mimeClass = \"pdf\";\n    } else if (file?.type && this.mime_compress.indexOf(file.type) !== -1) {\n      mimeClass = \"compress\";\n    } else if (file?.type && this.mime_doc.indexOf(file.type) !== -1) {\n      mimeClass = \"doc\";\n    } else if (file?.type && this.mime_xsl.indexOf(file.type) !== -1) {\n      mimeClass = \"xls\";\n    } else if (file?.type && this.mime_ppt.indexOf(file.type) !== -1) {\n      mimeClass = \"ppt\";\n    }\n    if (mimeClass === \"application\" && file?.name) {\n      mimeClass = this.fileTypeDetection(file.name);\n    }\n\n    return mimeClass;\n  }\n\n  static fileTypeDetection(inputFilename: string): string {\n    const types: { [key: string]: string } = {\n      jpg: \"image\",\n      jpeg: \"image\",\n      tif: \"image\",\n      psd: \"image\",\n      bmp: \"image\",\n      png: \"image\",\n      nef: \"image\",\n      tiff: \"image\",\n      cr2: \"image\",\n      dwg: \"image\",\n      cdr: \"image\",\n      ai: \"image\",\n      indd: \"image\",\n      pin: \"image\",\n      cdp: \"image\",\n      skp: \"image\",\n      stp: \"image\",\n      \"3dm\": \"image\",\n      mp3: \"audio\",\n      wav: \"audio\",\n      wma: \"audio\",\n      mod: \"audio\",\n      m4a: \"audio\",\n      compress: \"compress\",\n      zip: \"compress\",\n      rar: \"compress\",\n      \"7z\": \"compress\",\n      lz: \"compress\",\n      z01: \"compress\",\n      bz2: \"compress\",\n      gz: \"compress\",\n      pdf: \"pdf\",\n      xls: \"xls\",\n      xlsx: \"xls\",\n      ods: \"xls\",\n      mp4: \"video\",\n      avi: \"video\",\n      wmv: \"video\",\n      mpg: \"video\",\n      mts: \"video\",\n      flv: \"video\",\n      \"3gp\": \"video\",\n      vob: \"video\",\n      m4v: \"video\",\n      mpeg: \"video\",\n      m2ts: \"video\",\n      mov: \"video\",\n      doc: \"doc\",\n      docx: \"doc\",\n      eps: \"doc\",\n      txt: \"doc\",\n      odt: \"doc\",\n      rtf: \"doc\",\n      ppt: \"ppt\",\n      pptx: \"ppt\",\n      pps: \"ppt\",\n      ppsx: \"ppt\",\n      odp: \"ppt\",\n    };\n\n    const chunks = inputFilename.split(\".\");\n    if (chunks.length < 2) {\n      return \"application\";\n    }\n    const extension = chunks[chunks.length - 1].toLowerCase();\n    if (types[extension] === undefined) {\n      return \"application\";\n    } else {\n      return types[extension];\n    }\n  }\n}\n","import { EventEmitter } from \"@angular/core\";\nimport { FileLikeObject } from \"./file-like-object.class\";\nimport { FileItem } from \"./file-item.class\";\nimport { FileType } from \"./file-type.class\";\n\nfunction isFile(value: any): boolean {\n  return File && value instanceof File;\n}\n\nexport interface Headers {\n  name: string;\n  value: string;\n}\n\nexport interface ParsedResponseHeaders {\n  [headerFieldName: string]: string;\n}\n\nexport interface FilterFunction {\n  name: string;\n  fn(item: FileLikeObject, options?: FileUploaderOptions): boolean;\n}\n\nexport interface FileUploaderOptions {\n  allowedMimeType?: string[];\n  allowedFileType?: string[];\n  autoUpload?: boolean;\n  isHTML5?: boolean;\n  filters?: FilterFunction[];\n  headers?: Headers[];\n  method?: string;\n  authToken?: string;\n  maxFileSize?: number;\n  queueLimit?: number;\n  removeAfterUpload?: boolean;\n  url: string;\n  disableMultipart?: boolean;\n  itemAlias?: string;\n  authTokenHeader?: string;\n  additionalParameter?: { [key: string]: any };\n  parametersBeforeFiles?: boolean;\n  // eslint-disable-next-line @typescript-eslint/ban-types\n  formatDataFunction?: Function;\n  formatDataFunctionIsAsync?: boolean;\n}\n\nexport class FileUploader {\n  authToken?: string;\n  isUploading = false;\n  queue: FileItem[] = [];\n  progress = 0;\n  _nextIndex = 0;\n  autoUpload: any;\n  authTokenHeader?: string;\n  response: EventEmitter<any>;\n\n  options: FileUploaderOptions = {\n    autoUpload: false,\n    isHTML5: true,\n    filters: [],\n    removeAfterUpload: false,\n    disableMultipart: false,\n    formatDataFunction: (item: FileItem) => item._file,\n    formatDataFunctionIsAsync: false,\n    url: \"\",\n  };\n\n  protected _failFilterIndex?: number;\n\n  constructor(options: FileUploaderOptions) {\n    this.setOptions(options);\n    this.response = new EventEmitter<string>();\n  }\n\n  setOptions(options: FileUploaderOptions): void {\n    this.options = Object.assign(this.options, options);\n\n    this.authToken = this.options.authToken;\n    this.authTokenHeader = this.options.authTokenHeader || \"Authorization\";\n    this.autoUpload = this.options.autoUpload;\n    this.options.filters?.unshift({\n      name: \"queueLimit\",\n      fn: this._queueLimitFilter,\n    });\n\n    if (this.options.maxFileSize) {\n      this.options.filters?.unshift({\n        name: \"fileSize\",\n        fn: this._fileSizeFilter,\n      });\n    }\n\n    if (this.options.allowedFileType) {\n      this.options.filters?.unshift({\n        name: \"fileType\",\n        fn: this._fileTypeFilter,\n      });\n    }\n\n    if (this.options.allowedMimeType) {\n      this.options.filters?.unshift({\n        name: \"mimeType\",\n        fn: this._mimeTypeFilter,\n      });\n    }\n\n    for (let i = 0; i < this.queue.length; i++) {\n      this.queue[i].url = this.options.url;\n    }\n  }\n\n  addToQueue(\n    files: File[],\n    _options?: FileUploaderOptions,\n    filters?: [] | string\n  ): void {\n    let options = _options;\n    const list: File[] = [];\n    for (const file of files) {\n      list.push(file);\n    }\n    const arrayOfFilters = this._getFilters(filters);\n    const count = this.queue.length;\n    const addedFileItems: FileItem[] = [];\n    list.map((some: File) => {\n      if (!options) {\n        options = this.options;\n      }\n\n      const temp = new FileLikeObject(some);\n      if (this._isValidFile(temp, arrayOfFilters, options)) {\n        const fileItem = new FileItem(this, some, options);\n        addedFileItems.push(fileItem);\n        this.queue.push(fileItem);\n        this._onAfterAddingFile(fileItem);\n      } else {\n        if (this._failFilterIndex) {\n          const filter = arrayOfFilters[this._failFilterIndex];\n          this._onWhenAddingFileFailed(temp, filter, options);\n        }\n      }\n    });\n    if (this.queue.length !== count) {\n      this._onAfterAddingAll(addedFileItems);\n      this.progress = this._getTotalProgress();\n    }\n    this._render();\n    if (this.options.autoUpload) {\n      this.uploadAll();\n    }\n  }\n\n  removeFromQueue(value: FileItem): void {\n    const index = this.getIndexOfItem(value);\n    const item = this.queue[index];\n    if (item.isUploading) {\n      item.cancel();\n    }\n    this.queue.splice(index, 1);\n    this.progress = this._getTotalProgress();\n  }\n\n  clearQueue(): void {\n    while (this.queue.length) {\n      this.queue[0].remove();\n    }\n    this.progress = 0;\n  }\n\n  uploadItem(value: FileItem): void {\n    const index = this.getIndexOfItem(value);\n    const item = this.queue[index];\n    const transport = this.options.isHTML5\n      ? \"_xhrTransport\"\n      : \"_iframeTransport\";\n    item._prepareToUploading();\n    if (this.isUploading) {\n      return;\n    }\n    this.isUploading = true;\n    (this as any)[transport](item);\n  }\n\n  cancelItem(value: FileItem): void {\n    const index = this.getIndexOfItem(value);\n    const item = this.queue[index];\n    const prop = this.options.isHTML5 ? item._xhr : item._form;\n    if (item && item.isUploading) {\n      prop.abort();\n    }\n  }\n\n  uploadAll(): void {\n    const items = this.getNotUploadedItems().filter(\n      (item: FileItem) => !item.isUploading\n    );\n    if (!items.length) {\n      return;\n    }\n    items.map((item: FileItem) => item._prepareToUploading());\n    items[0].upload();\n  }\n\n  cancelAll(): void {\n    const items = this.getNotUploadedItems();\n    items.map((item: FileItem) => item.cancel());\n  }\n\n  isFile(value: any): boolean {\n    return isFile(value);\n  }\n\n  isFileLikeObject(value: any): boolean {\n    return value instanceof FileLikeObject;\n  }\n\n  getIndexOfItem(value: any): number {\n    return typeof value === \"number\" ? value : this.queue.indexOf(value);\n  }\n\n  getNotUploadedItems(): any[] {\n    return this.queue.filter((item: FileItem) => !item.isUploaded);\n  }\n\n  getReadyItems(): any[] {\n    return this.queue\n      .filter((item: FileItem) => item.isReady && !item.isUploading)\n      .sort((item1: any, item2: any) => item1.index - item2.index);\n  }\n\n  onAfterAddingAll(fileItems: any): any {\n    return { fileItems };\n  }\n\n  onBuildItemForm(fileItem: FileItem, form: any): any {\n    return { fileItem, form };\n  }\n\n  onAfterAddingFile(fileItem: FileItem): any {\n    return { fileItem };\n  }\n\n  onWhenAddingFileFailed(item: FileLikeObject, filter: any, options: any): any {\n    return { item, filter, options };\n  }\n\n  onBeforeUploadItem(fileItem: FileItem): any {\n    return { fileItem };\n  }\n\n  onProgressItem(fileItem: FileItem, progress: any): any {\n    return { fileItem, progress };\n  }\n\n  onProgressAll(progress: any): any {\n    return { progress };\n  }\n\n  onSuccessItem(\n    item: FileItem,\n    response: string,\n    status: number,\n    headers: ParsedResponseHeaders\n  ): any {\n    return { item, response, status, headers };\n  }\n\n  onErrorItem(\n    item: FileItem,\n    response: string,\n    status: number,\n    headers: ParsedResponseHeaders\n  ): any {\n    return { item, response, status, headers };\n  }\n\n  onCancelItem(\n    item: FileItem,\n    response: string,\n    status: number,\n    headers: ParsedResponseHeaders\n  ): any {\n    return { item, response, status, headers };\n  }\n\n  onCompleteItem(\n    item: FileItem,\n    response: string,\n    status: number,\n    headers: ParsedResponseHeaders\n  ): any {\n    return { item, response, status, headers };\n  }\n\n  onCompleteAll(): any {\n    return void 0;\n  }\n\n  _mimeTypeFilter(item: FileLikeObject): boolean {\n    return !(\n      item?.type &&\n      this.options.allowedMimeType &&\n      this.options.allowedMimeType?.indexOf(item.type) === -1\n    );\n  }\n\n  _fileSizeFilter(item: FileLikeObject): boolean {\n    return !(this.options.maxFileSize && item.size > this.options.maxFileSize);\n  }\n\n  _fileTypeFilter(item: FileLikeObject): boolean {\n    return !(\n      this.options.allowedFileType &&\n      this.options.allowedFileType.indexOf(FileType.getMimeClass(item)) === -1\n    );\n  }\n\n  _onErrorItem(\n    item: FileItem,\n    response: string,\n    status: number,\n    headers: ParsedResponseHeaders\n  ): void {\n    item._onError(response, status, headers);\n    this.onErrorItem(item, response, status, headers);\n  }\n\n  _onCompleteItem(\n    item: FileItem,\n    response: string,\n    status: number,\n    headers: ParsedResponseHeaders\n  ): void {\n    item._onComplete(response, status, headers);\n    this.onCompleteItem(item, response, status, headers);\n    const nextItem = this.getReadyItems()[0];\n    this.isUploading = false;\n    if (nextItem) {\n      nextItem.upload();\n\n      return;\n    }\n    this.onCompleteAll();\n    this.progress = this._getTotalProgress();\n    this._render();\n  }\n\n  protected _headersGetter(parsedHeaders: ParsedResponseHeaders): any {\n    return (name: any): any => {\n      if (name) {\n        return parsedHeaders[name.toLowerCase()] || undefined;\n      }\n\n      return parsedHeaders;\n    };\n  }\n\n  protected _xhrTransport(item: FileItem): any {\n    // tslint:disable-next-line:no-this-assignment\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const that = this;\n    const xhr = (item._xhr = new XMLHttpRequest());\n    let sendable: any;\n    this._onBeforeUploadItem(item);\n\n    if (typeof item._file.size !== \"number\") {\n      throw new TypeError(\"The file specified is no longer valid\");\n    }\n    if (!this.options.disableMultipart) {\n      sendable = new FormData();\n      this._onBuildItemForm(item, sendable);\n      const appendFile = () =>\n        sendable.append(item.alias, item._file, item.file.name);\n      if (!this.options.parametersBeforeFiles) {\n        appendFile();\n      }\n\n      // For AWS, Additional Parameters must come BEFORE Files\n      if (this.options.additionalParameter !== undefined) {\n        Object.keys(this.options.additionalParameter).forEach((key: string) => {\n          let paramVal = this.options.additionalParameter?.[key];\n          // Allow an additional parameter to include the filename\n          if (\n            typeof paramVal === \"string\" &&\n            paramVal.indexOf(\"{{file_name}}\") >= 0 &&\n            item.file?.name\n          ) {\n            paramVal = paramVal.replace(\"{{file_name}}\", item.file.name);\n          }\n          sendable.append(key, paramVal);\n        });\n      }\n\n      if (appendFile && this.options.parametersBeforeFiles) {\n        appendFile();\n      }\n    } else {\n      if (this.options.formatDataFunction) {\n        sendable = this.options.formatDataFunction(item);\n      }\n    }\n\n    xhr.upload.onprogress = (event: any) => {\n      const progress = Math.round(\n        event.lengthComputable ? (event.loaded * 100) / event.total : 0\n      );\n      this._onProgressItem(item, progress);\n    };\n    xhr.onload = () => {\n      const headers = this._parseHeaders(xhr.getAllResponseHeaders());\n      const response = this._transformResponse(xhr.response, headers);\n      const gist = this._isSuccessCode(xhr.status) ? \"Success\" : \"Error\";\n      const method = `_on${gist}Item`;\n      (this as any)[method](item, response, xhr.status, headers);\n      this._onCompleteItem(item, response, xhr.status, headers);\n    };\n    xhr.onerror = () => {\n      const headers = this._parseHeaders(xhr.getAllResponseHeaders());\n      const response = this._transformResponse(xhr.response, headers);\n      this._onErrorItem(item, response, xhr.status, headers);\n      this._onCompleteItem(item, response, xhr.status, headers);\n    };\n    xhr.onabort = () => {\n      const headers = this._parseHeaders(xhr.getAllResponseHeaders());\n      const response = this._transformResponse(xhr.response, headers);\n      this._onCancelItem(item, response, xhr.status, headers);\n      this._onCompleteItem(item, response, xhr.status, headers);\n    };\n    if (item.method && item.url) {\n      xhr.open(item.method, item.url, true);\n    }\n    xhr.withCredentials = item.withCredentials;\n    if (this.options.headers) {\n      for (const header of this.options.headers) {\n        xhr.setRequestHeader(header.name, header.value);\n      }\n    }\n    if (item.headers.length) {\n      for (const header of item.headers) {\n        xhr.setRequestHeader(header.name, header.value);\n      }\n    }\n    if (this.authToken && this.authTokenHeader) {\n      xhr.setRequestHeader(this.authTokenHeader, this.authToken);\n    }\n    xhr.onreadystatechange = function () {\n      if (xhr.readyState == XMLHttpRequest.DONE) {\n        that.response.emit(xhr.responseText);\n      }\n    };\n    if (this.options.formatDataFunctionIsAsync) {\n      sendable.then((result: any) => xhr.send(JSON.stringify(result)));\n    } else {\n      xhr.send(sendable);\n    }\n    this._render();\n  }\n\n  protected _getTotalProgress(value = 0): number {\n    if (this.options.removeAfterUpload) {\n      return value;\n    }\n    const notUploaded = this.getNotUploadedItems().length;\n    const uploaded = notUploaded\n      ? this.queue.length - notUploaded\n      : this.queue.length;\n    const ratio = 100 / this.queue.length;\n    const current = (value * ratio) / 100;\n    return Math.round(uploaded * ratio + current);\n  }\n\n  protected _getFilters(\n    filters?: FilterFunction[] | string\n  ): FilterFunction[] | [] {\n    if (!filters) {\n      return this.options?.filters || [];\n    }\n    if (Array.isArray(filters)) {\n      return filters;\n    }\n    if (typeof filters === \"string\") {\n      const names = filters.match(/[^\\s,]+/g);\n\n      return (\n        this.options?.filters ||\n        [].filter((filter: any) => names?.indexOf(filter.name) !== -1)\n      );\n    }\n\n    return this.options?.filters || [];\n  }\n\n  protected _render(): any {\n    return void 0;\n  }\n\n  protected _queueLimitFilter(): boolean {\n    return (\n      this.options.queueLimit === undefined ||\n      this.queue.length < this.options.queueLimit\n    );\n  }\n\n  protected _isValidFile(\n    file: FileLikeObject,\n    filters: FilterFunction[],\n    options: FileUploaderOptions\n  ): boolean {\n    this._failFilterIndex = -1;\n\n    return !filters.length\n      ? true\n      : filters.every((filter: FilterFunction) => {\n          if (this._failFilterIndex) {\n            this._failFilterIndex++;\n          }\n\n          return filter.fn.call(this, file, options);\n        });\n  }\n\n  protected _isSuccessCode(status: number): boolean {\n    return (status >= 200 && status < 300) || status === 304;\n  }\n\n  protected _transformResponse(\n    response: string,\n    headers: ParsedResponseHeaders\n  ): string {\n    return response;\n  }\n\n  protected _parseHeaders(headers: string): ParsedResponseHeaders {\n    const parsed: any = {};\n    let key: any;\n    let val: any;\n    let i: any;\n    if (!headers) {\n      return parsed;\n    }\n    headers.split(\"\\n\").map((line: any) => {\n      i = line.indexOf(\":\");\n      key = line.slice(0, i).trim().toLowerCase();\n      val = line.slice(i + 1).trim();\n      if (key) {\n        parsed[key] = parsed[key] ? parsed[key] + \", \" + val : val;\n      }\n    });\n\n    return parsed;\n  }\n\n  protected _onWhenAddingFileFailed(\n    item: FileLikeObject,\n    filter: any,\n    options: any\n  ): void {\n    this.onWhenAddingFileFailed(item, filter, options);\n  }\n\n  protected _onAfterAddingFile(item: FileItem): void {\n    this.onAfterAddingFile(item);\n  }\n\n  protected _onAfterAddingAll(items: any): void {\n    this.onAfterAddingAll(items);\n  }\n\n  protected _onBeforeUploadItem(item: FileItem): void {\n    item._onBeforeUpload();\n    this.onBeforeUploadItem(item);\n  }\n\n  protected _onBuildItemForm(item: FileItem, form: any): void {\n    item._onBuildForm(form);\n    this.onBuildItemForm(item, form);\n  }\n\n  protected _onProgressItem(item: FileItem, progress: any): void {\n    const total = this._getTotalProgress(progress);\n    this.progress = total;\n    item._onProgress(progress);\n    this.onProgressItem(item, progress);\n    this.onProgressAll(total);\n    this._render();\n  }\n\n  protected _onSuccessItem(\n    item: FileItem,\n    response: string,\n    status: number,\n    headers: ParsedResponseHeaders\n  ): void {\n    item._onSuccess(response, status, headers);\n    this.onSuccessItem(item, response, status, headers);\n  }\n\n  protected _onCancelItem(\n    item: FileItem,\n    response: string,\n    status: number,\n    headers: ParsedResponseHeaders\n  ): void {\n    item._onCancel(response, status, headers);\n    this.onCancelItem(item, response, status, headers);\n  }\n}\n","import {\n  Directive,\n  EventEmitter,\n  ElementRef,\n  HostListener,\n  Input,\n  Output,\n} from \"@angular/core\";\n\nimport { FileUploader, FileUploaderOptions } from \"./file-uploader.class\";\n\n@Directive({ selector: \"[ng2FileDrop]\" })\nexport class FileDropDirective {\n  @Input() uploader?: FileUploader;\n  @Output() fileOver: EventEmitter<any> = new EventEmitter();\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  @Output() onFileDrop: EventEmitter<File[]> = new EventEmitter<File[]>();\n\n  protected element: ElementRef;\n\n  constructor(element: ElementRef) {\n    this.element = element;\n  }\n\n  getOptions(): FileUploaderOptions | void {\n    return this.uploader?.options;\n  }\n\n  getFilters(): string {\n    return \"\";\n  }\n\n  @HostListener(\"drop\", [\"$event\"])\n  onDrop(event: MouseEvent): void {\n    const transfer = this._getTransfer(event);\n    if (!transfer) {\n      return;\n    }\n\n    const options = this.getOptions();\n    const filters = this.getFilters();\n    this._preventAndStop(event);\n    if (options) {\n      this.uploader?.addToQueue(transfer.files, options, filters);\n    }\n    this.fileOver.emit(false);\n    this.onFileDrop.emit(transfer.files);\n  }\n\n  @HostListener(\"dragover\", [\"$event\"])\n  onDragOver(event: MouseEvent): void {\n    const transfer = this._getTransfer(event);\n    if (!this._haveFiles(transfer.types)) {\n      return;\n    }\n\n    transfer.dropEffect = \"copy\";\n    this._preventAndStop(event);\n    this.fileOver.emit(true);\n  }\n\n  @HostListener(\"dragleave\", [\"$event\"])\n  onDragLeave(event: MouseEvent): void {\n    if ((this as any).element) {\n      if (event.currentTarget === (this as any).element[0]) {\n        return;\n      }\n    }\n\n    this._preventAndStop(event);\n    this.fileOver.emit(false);\n  }\n\n  protected _getTransfer(event: any): any {\n    return event.dataTransfer\n      ? event.dataTransfer\n      : event.originalEvent.dataTransfer; // jQuery fix;\n  }\n\n  protected _preventAndStop(event: MouseEvent): void {\n    event.preventDefault();\n    event.stopPropagation();\n  }\n\n  protected _haveFiles(types: any): boolean {\n    if (!types) {\n      return false;\n    }\n\n    if (types.indexOf) {\n      return types.indexOf(\"Files\") !== -1;\n    } else if (types.contains) {\n      return types.contains(\"Files\");\n    } else {\n      return false;\n    }\n  }\n}\n","import {\n  Directive,\n  EventEmitter,\n  ElementRef,\n  Input,\n  HostListener,\n  Output,\n} from \"@angular/core\";\n\nimport { FileUploader, FileUploaderOptions } from \"./file-uploader.class\";\n\n@Directive({ selector: \"[ng2FileSelect]\" })\nexport class FileSelectDirective {\n  @Input() uploader?: FileUploader;\n  // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n  @Output() onFileSelected: EventEmitter<File[]> = new EventEmitter<File[]>();\n\n  protected element: ElementRef;\n\n  constructor(element: ElementRef) {\n    this.element = element;\n  }\n\n  getOptions(): FileUploaderOptions | undefined {\n    return this.uploader?.options;\n  }\n\n  getFilters(): string {\n    return \"\";\n  }\n\n  isEmptyAfterSelection(): boolean {\n    return !!this.element.nativeElement.attributes.multiple;\n  }\n\n  @HostListener(\"change\")\n  onChange(): void {\n    const files = this.element.nativeElement.files;\n    const options = this.getOptions();\n    const filters = this.getFilters();\n    this.uploader?.addToQueue(files, options, filters);\n\n    this.onFileSelected.emit(files);\n    if (this.isEmptyAfterSelection()) {\n      this.element.nativeElement.value = \"\";\n    }\n  }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\n\nimport { FileDropDirective } from \"./file-drop.directive\";\nimport { FileSelectDirective } from \"./file-select.directive\";\n\n@NgModule({\n  imports: [CommonModule],\n  declarations: [FileDropDirective, FileSelectDirective],\n  exports: [FileDropDirective, FileSelectDirective],\n})\nexport class FileUploadModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}