{"version":3,"file":"ng-devui-upload.mjs","sources":["../../devui/upload/file-drop.directive.ts","../../devui/upload/file-uploader.types.ts","../../devui/upload/file-uploader.class.ts","../../devui/upload/upload.class.ts","../../devui/upload/uploaded-files.component.ts","../../devui/upload/uploaded-files.component.html","../../devui/upload/multiple-upload-view.component.ts","../../devui/upload/multiple-upload-view.component.html","../../devui/upload/select-files.utils.ts","../../devui/upload/slice-upload.service.ts","../../devui/upload/multiple-upload.component.ts","../../devui/upload/multiple-upload.component.html","../../devui/upload/single-upload-view.component.ts","../../devui/upload/single-upload-view.component.html","../../devui/upload/single-upload.component.ts","../../devui/upload/single-upload.component.html","../../devui/upload/upload.directive.ts","../../devui/upload/upload.module.ts","../../devui/upload/ng-devui-upload.ts"],"sourcesContent":["import { Directive, ElementRef, EventEmitter, HostListener, Input, Output } from '@angular/core';\n\n@Directive({\n  /* eslint-disable-next-line @angular-eslint/directive-selector*/\n  selector: '[d-file-drop]'\n})\nexport class FileDropDirective {\n  @Input() enableDrop = false;\n  @Input() isSingle = false;\n  @Output() public fileOver: EventEmitter<boolean> = new EventEmitter<boolean>();\n  @Output() public fileDrop: EventEmitter<any> = new EventEmitter<any>();\n\n  protected element: ElementRef;\n\n  public constructor(element: ElementRef) {\n    this.element = element;\n  }\n\n  @HostListener('drop', [ '$event' ])\n  public onDrop(event: any): void {\n    if (!this.enableDrop) {\n      return;\n    }\n    const transfer = this._getTransfer(event);\n    if (!transfer) {\n      return;\n    }\n    this._preventAndStop(event);\n    if (this.isSingle) {\n      this.fileDrop.emit([transfer.files[0]]);\n    } else {\n      this.fileDrop.emit(transfer.files);\n    }\n  }\n\n  @HostListener('dragover', [ '$event' ])\n  public onDragOver(event: any): void {\n    if (!this.enableDrop) {\n      return;\n    }\n    const transfer = this._getTransfer(event);\n    if (!this._haveFiles(transfer.types)) {\n      return;\n    }\n\n    this._preventAndStop(event);\n    this.fileOver.emit(true);\n  }\n\n  @HostListener('dragleave', [ '$event' ])\n  public onDragLeave(event: any): any {\n    if (!this.enableDrop) {\n      return;\n    }\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 ? event.dataTransfer : event.originalEvent.dataTransfer;\n  }\n\n  protected _preventAndStop(event: any): any {\n    event.preventDefault();\n    event.stopPropagation();\n  }\n\n  protected _haveFiles(types: any): any {\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","export class IUploadOptions {\r\n  // 是否开启分片上传\r\n  isChunked?: boolean;\r\n  // 分片大小\r\n  chunkSize?: number;\r\n  // 串行上传分片文件，默认并发\r\n  chunkInSequence?: boolean;\r\n  // 上传接口地址\r\n  uri: string;\r\n  // http 请求方法\r\n  method?: string;\r\n  // 上传文件大小限制\r\n  maximumSize?: number;\r\n  // 上传文件个数限制，多文件上传时可用\r\n  maximumCount?: number;\r\n  // 自定义请求headers\r\n  headers?: { [key: string]: any };\r\n  // 认证token\r\n  authToken?: string;\r\n  // 认证token header标示\r\n  authTokenHeader?: string;\r\n  // 上传额外自定义参数\r\n  additionalParameter?: { [key: string]: any };\r\n  // 上传文件字段名称，默认file\r\n  fileFieldName?: string;\r\n  // 多文件上传,是否检查文件重名，设置为true，重名文件不会覆盖，否则会覆盖上传\r\n  checkSameName?: boolean;\r\n  // 指示了是否该使用类似cookies,authorization headers(头部授权)或者TLS客户端证书这一类资格证书来创建一个跨站点访问控制（cross-site Access-Control）请求\r\n  withCredentials?: boolean;\r\n  //  手动设置返回数据类型\r\n  responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\r\n}\r\n\r\nexport class IFileOptions {\r\n  accept?: string;\r\n  multiple?: boolean;\r\n  webkitdirectory?: boolean;\r\n}\r\n\r\nexport enum UploadStatus {\r\n  preLoad = 0,\r\n  uploading = 1,\r\n  uploaded = 2,\r\n  failed = 3,\r\n}\r\n","import { IUploadOptions, UploadStatus } from './file-uploader.types';\n\nexport class FileUploader {\n  private xhr: XMLHttpRequest;\n  public status: UploadStatus;\n  public response: any;\n  public percentage = 0;\n\n  constructor(public file: File, public uploadOptions: IUploadOptions) {\n    this.file = file;\n    this.uploadOptions = uploadOptions;\n    this.status = UploadStatus.preLoad;\n  }\n\n  private sendCommonHandle(uploadFiles?) {\n    const { uri, method, headers, authToken, authTokenHeader, additionalParameter, fileFieldName, withCredentials, responseType } =\n      this.uploadOptions;\n    const authTokenHeader_ = authTokenHeader || 'Authorization';\n    const fileFieldName_ = fileFieldName || 'file';\n\n    this.xhr = new XMLHttpRequest();\n    this.xhr.open(method || 'POST', uri);\n\n    if (withCredentials) {\n      this.xhr.withCredentials = withCredentials;\n    }\n\n    if (responseType) {\n      this.xhr.responseType = responseType;\n    }\n\n    if (authToken) {\n      this.xhr.setRequestHeader(authTokenHeader_, authToken);\n    }\n\n    if (headers) {\n      Object.keys(headers).forEach((key) => {\n        this.xhr.setRequestHeader(key, headers[key]);\n      });\n    }\n\n    this.xhr.upload.onprogress = (e) => {\n      this.percentage = Math.round((e.loaded * 100) / e.total);\n    };\n\n    const formData =\n      uploadFiles && uploadFiles.length\n        ? this.oneTimeUploadFiles(fileFieldName_, additionalParameter, uploadFiles)\n        : this.parallelUploadFiles(fileFieldName_, additionalParameter);\n\n    this.xhr.send(formData);\n    this.status = UploadStatus.uploading;\n\n    this.xhr.onabort = () => {\n      this.status = UploadStatus.preLoad;\n      this.xhr = null;\n    };\n  }\n\n  private sendErrorAndLoadHandle(resolve, reject, isMultiple = false) {\n    this.xhr.onerror = () => {\n      this.response = this.xhr.response;\n      this.status = UploadStatus.failed;\n      if (isMultiple) {\n        reject({ file: this.file, response: this.xhr.response, status: UploadStatus.failed });\n      } else {\n        reject({ file: this.file, response: this.xhr.response });\n      }\n    };\n\n    this.xhr.onload = () => {\n      if (this.xhr.readyState === 4 && this.xhr.status >= 200 && this.xhr.status < 300) {\n        this.response = this.xhr.response;\n        this.status = UploadStatus.uploaded;\n        if (isMultiple) {\n          resolve({ file: this.file, response: this.xhr.response, status: UploadStatus.uploaded });\n        } else {\n          resolve({ file: this.file, response: this.xhr.response });\n        }\n      } else {\n        this.response = this.xhr.response;\n        this.status = UploadStatus.failed;\n        if (isMultiple) {\n          reject({ file: this.file, response: this.xhr.response, status: UploadStatus.failed });\n        } else {\n          reject({ file: this.file, response: this.xhr.response });\n        }\n      }\n    };\n  }\n\n  public send(uploadFiles?): Promise<{ file: File; response: any }> {\n    return new Promise((resolve, reject) => {\n      this.sendCommonHandle(uploadFiles);\n      this.sendErrorAndLoadHandle(resolve, reject);\n    });\n  }\n\n  public sendMultiple(uploadFiles?): Promise<{ file: File; response: any; status: UploadStatus }> {\n    return new Promise((resolve, reject) => {\n      this.sendCommonHandle(uploadFiles);\n      this.sendErrorAndLoadHandle(resolve, reject, true);\n    });\n  }\n\n  public parallelUploadFiles(fileFieldName_, additionalParameter) {\n    const formData = new FormData();\n    formData.append(fileFieldName_, this.file, this.file.name);\n    if (additionalParameter) {\n      Object.keys(additionalParameter).forEach((key: string) => {\n        formData.append(key, additionalParameter[key]);\n      });\n    }\n    return formData;\n  }\n\n  public oneTimeUploadFiles(fileFieldName_, additionalParameter, uploadFiles) {\n    const formData = new FormData();\n    uploadFiles.forEach((element) => {\n      formData.append(fileFieldName_, element.file, element.file.name);\n      if (additionalParameter) {\n        Object.keys(additionalParameter).forEach((key: string) => {\n          formData.append(key, additionalParameter[key]);\n        });\n      }\n    });\n    return formData;\n  }\n\n  public cancel() {\n    if (this.xhr) {\n      this.xhr.abort();\n    }\n  }\n}\n","import { from, merge, of } from 'rxjs';\nimport { catchError, toArray } from 'rxjs/operators';\nimport { FileUploader } from './file-uploader.class';\nimport { UploadStatus } from './file-uploader.types';\n\nexport class UploadComponent {\n  fileUploaders: Array<FileUploader> = [];\n  filesWithSameName = [];\n\n  addFile(file, options) {\n    if (options && options.checkSameName) {\n      if (this.checkFileSame(file.name)) {\n        this.fileUploaders.push(new FileUploader(file, options));\n      }\n    } else {\n      this.fileUploaders.push(new FileUploader(file, options));\n    }\n  }\n\n  checkFileSame(fileName) {\n    let checkRel = true;\n\n    for (let i = 0; i < this.fileUploaders.length; i++) {\n      if (fileName === this.fileUploaders[i].file.name) {\n        checkRel = false;\n        if (this.filesWithSameName.indexOf(fileName) === -1) {\n          this.filesWithSameName.push(fileName);\n        }\n        break;\n      }\n    }\n    return checkRel;\n  }\n\n  getFiles() {\n    return this.fileUploaders.map((fileUploader) => {\n      return fileUploader.file;\n    });\n  }\n\n  getFullFiles() {\n    return this.fileUploaders.map((fileUploader) => {\n      return fileUploader;\n    });\n  }\n\n  upload(oneFile?, isMultipleUpload = false) {\n    let uploads: any[] = [];\n    if (oneFile) {\n      oneFile.percentage = 0;\n      uploads.push(from(oneFile.send()));\n    } else {\n      const preFiles = this.fileUploaders.filter((fileUploader) => fileUploader.status === UploadStatus.preLoad);\n      const failedFiles = this.fileUploaders.filter((fileUploader) => fileUploader.status === UploadStatus.failed);\n      const uploadFiles = preFiles.length > 0 ? preFiles : failedFiles;\n      uploads = uploadFiles.map((fileUploader) => {\n        fileUploader.percentage = 0;\n        if (isMultipleUpload) {\n          return from(fileUploader.sendMultiple()).pipe(catchError((error) => of(error)));\n        } else {\n          return from(fileUploader.send());\n        }\n      });\n    }\n    if (uploads.length > 0) {\n      return merge(...uploads).pipe(toArray());\n    }\n\n    return from(Promise.reject('no files'));\n  }\n\n  oneTimeUpload() {\n    const uploads = this.fileUploaders.filter((fileUploader) => fileUploader.status !== UploadStatus.uploaded);\n    return from(this.dealOneTimeUploadFiles(uploads));\n  }\n\n  async dealOneTimeUploadFiles(uploads) {\n    if (!uploads || !uploads.length) {\n      return Promise.reject('no files');\n    }\n    // 触发文件上传\n    let finalUploads = [];\n    await uploads[0].send(uploads).finally(() =>\n    // 根据uploads[0]的上传状态为其他file设置状态\n    {\n      finalUploads = uploads.map((file) => {\n        file.status = uploads[0].status;\n        file.percentage = uploads[0].percentage;\n        return { file: file.file, response: uploads[0].response };\n      });\n    }\n    );\n    return finalUploads;\n  }\n\n  deleteFile(file) {\n    this.fileUploaders = this.fileUploaders.filter((fileUploader) => {\n      return file !== fileUploader.file;\n    });\n  }\n\n  removeFiles() {\n    this.fileUploaders = [];\n    this.filesWithSameName = [];\n  }\n\n  getSameNameFiles() {\n    return this.filesWithSameName.join();\n  }\n\n  resetSameNameFiles() {\n    this.filesWithSameName = [];\n  }\n}\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  TemplateRef,\n} from '@angular/core';\nimport { I18nInterface, I18nService } from 'ng-devui/i18n';\nimport { Subscription } from 'rxjs';\n\n@Component({\n  selector: 'd-uploaded-files',\n  exportAs: 'dUploadFiles',\n  templateUrl: './uploaded-files.component.html',\n  preserveWhitespaces: false,\n})\nexport class UploadedFilesComponent implements OnDestroy, OnInit {\n  @Input() uploadedFiles: Array<Object> = [];\n  @Input() uploadedFilesRef: TemplateRef<any>;\n  @Input() filePath: string;\n  @Output() deleteUploadedFileEvent: EventEmitter<any> = new EventEmitter<any>();\n  i18nText: I18nInterface['upload'];\n  i18nSubscription: Subscription;\n  constructor(private i18n: I18nService) {\n\n  }\n  ngOnInit(): void {\n    this.i18nText = this.i18n.getI18nText().upload;\n    this.i18nSubscription = this.i18n.langChange().subscribe((data) => {\n      this.i18nText = data.upload;\n    });\n  }\n\n  cleanUploadedFiles() {\n    this.uploadedFiles = [];\n  }\n\n  addAndOverwriteFile(file: Object) {\n    this.cleanUploadedFiles();\n    this.uploadedFiles.push(file);\n  }\n\n  addFile(file: Object) {\n    this.uploadedFiles.push(file);\n  }\n\n  deleteFile(filePath: string) {\n    this.uploadedFiles = this.uploadedFiles.filter((file) => {\n      return filePath !== (file as any)[this.filePath];\n    });\n    this.deleteUploadedFileEvent.emit(filePath);\n  }\n\n  // 解决templateContext 传递method.bind(this)引发模板中内嵌组件initialize问题\n  deleteFileProxy = filePath => {\n    this.deleteFile(filePath);\n  };\n  ngOnDestroy() {\n    if (this.i18nSubscription) {\n      this.i18nSubscription.unsubscribe();\n\n    }\n  }\n}\n","<ng-template\n  [ngTemplateOutlet]=\"uploadedFilesRef\"\n  [ngTemplateOutletContext]=\"{ $implicit: this, uploadedFiles: uploadedFiles, filePath: filePath, deleteFile: deleteFileProxy }\"\n>\n</ng-template>\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  TemplateRef,\n  ViewChild\n} from '@angular/core';\n\nimport { I18nInterface, I18nService } from 'ng-devui/i18n';\nimport { Subscription } from 'rxjs';\nimport { FileUploader } from './file-uploader.class';\nimport {\n  IUploadOptions,\n  UploadStatus\n} from './file-uploader.types';\nimport { UploadComponent } from './upload.class';\nimport { UploadedFilesComponent } from './uploaded-files.component';\n@Component({\n  selector: 'd-multiple-upload-view',\n  templateUrl: './multiple-upload-view.component.html',\n  preserveWhitespaces: false,\n})\nexport class MultipleUploadViewComponent extends UploadComponent implements OnDestroy , OnInit {\n  @ViewChild('dUploadedFiles', { static: true }) uploadedFilesComponent: UploadedFilesComponent;\n  @Input() uploadOptions: IUploadOptions;\n  @Input() preloadFilesRef: TemplateRef<any>;\n  @Input() uploadedFiles: Array<Object> = [];\n  @Input() uploadedFilesRef: TemplateRef<any>;\n  @Input() filePath: string;\n  @Output() deleteUploadedFileEvent: EventEmitter<any> = new EventEmitter<any>();\n  @Input() setCustomUploadOptions: (file, uploadOptions) => IUploadOptions;\n  UploadStatus = UploadStatus;\n  fileUploaders: Array<FileUploader> = [];\n  i18nText: I18nInterface['upload'];\n  i18nSubscription: Subscription;\n  constructor(private i18n: I18nService) {\n    super();\n  }\n  ngOnInit(): void {\n    this.i18nText = this.i18n.getI18nText().upload;\n    this.i18nSubscription = this.i18n.langChange().subscribe((data) => {\n      this.i18nText = data.upload;\n    });\n  }\n\n  addFile(file) {\n    let uploadOptions = this.uploadOptions;\n    if (this.setCustomUploadOptions) {\n      uploadOptions = this.setCustomUploadOptions(file, this.uploadOptions);\n    }\n    super.addFile(file, uploadOptions);\n  }\n\n  deleteFile(file) {\n    super.deleteFile(file);\n    this.deleteUploadedFileEvent.emit(file);\n  }\n\n  deletePreUploadFile(file) {\n    super.deleteFile(file);\n  }\n\n  removeFiles() {\n    super.removeFiles();\n  }\n\n  // 解决templateContext 传递method.bind(this)引发模板中内嵌组件initialize问题\n  deleteFileProxy = file => {\n    this.deleteFile(file);\n  };\n\n  _onDeleteUploadedFile(filePath: string) {\n    this.deleteUploadedFileEvent.emit(filePath);\n  }\n\n  ngOnDestroy(): void {\n    if (this.i18nSubscription) {\n      this.i18nSubscription.unsubscribe();\n\n    }\n  }\n}\n","<d-uploaded-files\n  #dUploadedFiles\n  [uploadedFiles]=\"uploadedFiles\"\n  [filePath]=\"filePath\"\n  [uploadedFilesRef]=\"uploadedFilesRef\"\n  (deleteUploadedFileEvent)=\"_onDeleteUploadedFile($event)\"\n>\n</d-uploaded-files>\n<ng-template\n  [ngTemplateOutlet]=\"preloadFilesRef\"\n  [ngTemplateOutletContext]=\"{ $implicit: this, fileUploaders: fileUploaders, UploadStatus: UploadStatus, deleteFile: deleteFileProxy }\"\n>\n</ng-template>\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\nimport { I18nInterface, I18nService } from 'ng-devui/i18n';\nimport { Observable, Subscription, from } from 'rxjs';\nimport { mergeMap } from 'rxjs/operators';\nimport { IFileOptions, IUploadOptions } from './file-uploader.types';\n\n@Injectable()\nexport class SelectFiles {\n  NOT_ALLOWED_FILE_TYPE_MSG: string;\n  BEYOND_MAXIMAL_FILE_SIZE_MSG: string;\n  BEYOND_MAXIMAL_FILE_COUNT_MSG: string;\n  i18nText: I18nInterface['upload'];\n  i18nSubscription: Subscription;\n  document: Document;\n\n  constructor(private i18n: I18nService, @Inject(DOCUMENT) private doc: any) {\n    this.document = this.doc;\n    this.i18nText = this.i18n.getI18nText().upload;\n    this.i18nSubscription = this.i18n.langChange().subscribe((data) => {\n      this.i18nText = data.upload;\n    });\n  }\n\n  selectFiles = ({ multiple, accept, webkitdirectory }: IFileOptions): Promise<File[]> => {\n    return new Promise((resolve) => {\n      const tempNode = this.document.getElementById('d-upload-temp');\n      if (tempNode) {\n        this.document.body.removeChild(tempNode);\n      }\n      const input = this.document.createElement('input');\n\n      input.style.position = 'fixed';\n      input.style.left = '-2000px';\n      input.style.top = '-2000px';\n\n      input.setAttribute('id', 'd-upload-temp');\n      input.setAttribute('type', 'file');\n      if (multiple) {\n        input.setAttribute('multiple', '');\n      }\n      if (accept) {\n        input.setAttribute('accept', accept);\n      }\n\n      if (webkitdirectory) {\n        input.setAttribute('webkitdirectory', '');\n      }\n\n      input.addEventListener('change', event => {\n        resolve(Array.prototype.slice.call((event.target as HTMLInputElement).files));\n      });\n      this.document.body.appendChild(input); // Fix compatibility issue with Internet Explorer 11\n      this.simulateClickEvent(input);\n    });\n  };\n\n  isAllowedFileType = (accept: string, file: File) => {\n    if (accept) {\n      const acceptArr = accept.split(',');\n      const baseMimeType = file.type.replace(/\\/.*$/, '');\n      return acceptArr.some((type: string) => {\n        const validType = type.trim();\n        //  suffix name (e.g. '.png,.xlsx')\n        if (validType.startsWith('.')) {\n          return (\n            file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.toLowerCase().length - validType.toLowerCase().length) > -1\n          );\n          // mime type like 'image/*'\n        } else if (/\\/\\*$/.test(validType)) {\n          return baseMimeType === validType.replace(/\\/.*$/, '');\n        }\n        //  mime type like 'text/plain,application/json'\n        return file.type === validType;\n      });\n    }\n    return true;\n  };\n\n  beyondMaximalSize = (fileSize, maximumSize) => {\n    if (maximumSize) {\n      return fileSize > 1024 * 1024 * maximumSize;\n    }\n    return false;\n  };\n\n  beyondAllFilesMaximalSize = (fileSize, maximumSize) => {\n    if (maximumSize) {\n      return fileSize > 1024 * 1024 * maximumSize;\n    }\n    return false;\n  };\n\n  beyondMaximumFileCount = (files, maximumCount) => {\n    if (maximumCount) {\n      return files > maximumCount;\n    }\n    return false;\n  };\n\n  triggerSelectFiles = (fileOptions: IFileOptions, uploadOptions: IUploadOptions) => {\n    const { multiple, accept, webkitdirectory } = fileOptions;\n    return from(this.selectFiles({ multiple, accept, webkitdirectory })).pipe(mergeMap(file => <any>file));\n  };\n\n  triggerDropFiles = (fileOptions: IFileOptions, uploadOptions: IUploadOptions, files: any) => {\n    return new Observable(observer => observer.next(files)).pipe(mergeMap(file => <any>file));\n\n  };\n\n  checkAllFilesSize(fileSize, maximumSize) {\n    if (this.beyondMaximalSize(fileSize, maximumSize)) {\n      this.BEYOND_MAXIMAL_FILE_SIZE_MSG = this.i18nText.getAllFilesBeyondMaximalFileSizeMsg(maximumSize);\n      return { checkError: true, errorMsg: this.BEYOND_MAXIMAL_FILE_SIZE_MSG };\n    }\n  }\n\n  _validateFiles(filesLen, currentFile, accept, uploadOptions) {\n    if (!this.isAllowedFileType(accept, <File>currentFile)) {\n      this.NOT_ALLOWED_FILE_TYPE_MSG = this.i18nText.getNotAllowedFileTypeMsg((<File>currentFile).name, accept);\n      return { checkError: true, errorMsg: this.NOT_ALLOWED_FILE_TYPE_MSG };\n    }\n    if (this.beyondMaximalSize((<File>currentFile).size, uploadOptions.maximumSize)) {\n      this.BEYOND_MAXIMAL_FILE_SIZE_MSG = this.i18nText.getBeyondMaximalFileSizeMsg((<File>currentFile).name, uploadOptions.maximumSize);\n      return { checkError: true, errorMsg: this.BEYOND_MAXIMAL_FILE_SIZE_MSG };\n    }\n    if (this.beyondMaximumFileCount(filesLen, uploadOptions.maximumCount)) {\n      this.BEYOND_MAXIMAL_FILE_COUNT_MSG = this.i18nText.getBeyondMaximumFileCountMsg(uploadOptions.maximumCount);\n      return { checkError: true, errorMsg: this.BEYOND_MAXIMAL_FILE_COUNT_MSG };\n    }\n    return { checkError: false, errorMsg: undefined };\n  }\n\n  simulateClickEvent(input) {\n    const evt = new MouseEvent('click');\n    evt.stopPropagation();\n    input.dispatchEvent(evt);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { from, merge, of } from 'rxjs';\nimport { concatMap, last, toArray } from 'rxjs/operators';\nimport { FileUploader } from './file-uploader.class';\nimport { IUploadOptions, UploadStatus } from './file-uploader.types';\nimport { MultipleUploadViewComponent } from './multiple-upload-view.component';\nimport { MultipleUploadComponent } from './multiple-upload.component';\nimport { SingleUploadViewComponent } from './single-upload-view.component';\nimport { SingleUploadComponent } from './single-upload.component';\n\n@Injectable()\nexport class SliceUploadService {\n  defaultChunkSize = 1024 * 1024 * 20; // 单位是byte 默认分片大小 20兆。\n\n  isNeedChunk(fileUploaders: Array<FileUploader>, uploadOptions: IUploadOptions) {\n    return (fileUploaders || []).some((item: FileUploader) => item?.file.size > (uploadOptions?.chunkSize || this.defaultChunkSize));\n  }\n\n  async sliceUpload(\n    instance: SingleUploadComponent | MultipleUploadComponent,\n    viewInstance: SingleUploadViewComponent | MultipleUploadViewComponent\n  ) {\n    const fileUploaders = viewInstance.fileUploaders;\n    const customizeFunc =\n      (instance as SingleUploadComponent).dynamicUploadOptionsFn || (instance as MultipleUploadComponent).setCustomUploadOptions;\n    for (let i = 0; i < fileUploaders.length; i++) {\n      // 判断不需要切片的文件不调用自定义参数方法\n      const file = fileUploaders[i].file;\n      const isNeedChunk = file.size > (instance.uploadOptions?.chunkSize || this.defaultChunkSize);\n      const fileChunkList = this.createFileChunk(\n        file,\n        fileUploaders[i].uploadOptions || instance.uploadOptions,\n        isNeedChunk ? customizeFunc : undefined\n      );\n      const currentFile = fileUploaders[i];\n      const uploadObservable = this.uploadChunkList(fileChunkList, currentFile, instance, viewInstance);\n      (await uploadObservable).subscribe(\n        (results: Array<{ file: File; response: any }>) => {\n          currentFile.percentage = 100;\n          currentFile.status = UploadStatus.uploaded;\n          const successRes = [\n            {\n              file: currentFile.file,\n              response: results[0].response,\n              chunkList: results,\n            },\n          ];\n          instance.successEvent.emit(successRes);\n          results.forEach((result) => viewInstance.uploadedFilesComponent.addAndOverwriteFile(result.file));\n        },\n        (error) => {\n          error.file = currentFile.file;\n          this.chunkRequestError(error, currentFile, instance, viewInstance, false);\n        }\n      );\n    }\n  }\n\n  async uploadChunkList(\n    fileChunkList: Array<FileUploader>,\n    currentFile: FileUploader,\n    instance: SingleUploadComponent | MultipleUploadComponent,\n    viewInstance: SingleUploadViewComponent | MultipleUploadViewComponent\n  ) {\n    let uploads: any[] = [];\n    const chunkPercentage = (1 / fileChunkList.length) * 100;\n    currentFile.status = UploadStatus.uploading;\n    currentFile.percentage = 0;\n    if (instance.uploadOptions.chunkInSequence) {\n      return of(...fileChunkList).pipe(\n        concatMap((uploader) => {\n          let result;\n          if (currentFile.status === UploadStatus.failed) {\n            result = from(Promise.reject(new Error('upload canceled')));\n            if (uploads.length === 0) {\n              uploads.push(result);\n            }\n          } else {\n            result = from(uploader.send());\n            result.subscribe(\n              () => {\n                currentFile.percentage = currentFile.percentage + chunkPercentage;\n              },\n              (error) => this.chunkRequestError(error, currentFile, instance, viewInstance)\n            );\n            uploads.push(result);\n          }\n          return result;\n        }),\n        // last的过滤函数直接返回false，从而使用默认值uploads返回\n        last(() => false, uploads)\n      );\n    } else {\n      uploads = fileChunkList.map((fileUploader) => {\n        fileUploader.percentage = 0;\n        return from(fileUploader.send());\n      });\n      if (uploads.length > 0) {\n        const uploadObservable = merge(...uploads);\n        (await uploadObservable).subscribe(\n          (results) => {\n            currentFile.percentage = currentFile.percentage + chunkPercentage;\n          },\n          (error) => this.chunkRequestError(error, currentFile, instance, viewInstance)\n        );\n        return merge(...uploads).pipe(toArray());\n      }\n    }\n    return from(Promise.reject(new Error('no files')));\n  }\n\n  // 生成分片上传的数组\n  createFileChunk(file: File, uploadOptions: IUploadOptions, uploadOptionsFunc?: Function) {\n    const chunkSize = uploadOptions.chunkSize || this.defaultChunkSize;\n    const { name, type, lastModified, size } = file;\n    const fileId = new Date().getTime();\n    const fileChunkList: Array<FileUploader> = [];\n    let fileSliceStart = 0;\n    let chunkedFileIndex = 0;\n    const chunks = Math.ceil(size / chunkSize);\n    while (fileSliceStart < file.size) {\n      chunkedFileIndex = chunkedFileIndex + 1;\n      const currentUploadOptions = uploadOptionsFunc?.(file, uploadOptions, chunkedFileIndex) || uploadOptions;\n      const slicedFile = file.slice(fileSliceStart, fileSliceStart + chunkSize);\n      const newChunkFile = new File([slicedFile], `${fileId}-${chunkedFileIndex}-${chunks}-${size}-${lastModified}-${name}`, { type });\n      fileChunkList.push(new FileUploader(newChunkFile, currentUploadOptions));\n      fileSliceStart += chunkSize;\n    }\n    return fileChunkList;\n  }\n\n  chunkRequestError(\n    error: any,\n    currentFile: FileUploader,\n    instance: SingleUploadComponent | MultipleUploadComponent,\n    viewInstance: SingleUploadViewComponent | MultipleUploadViewComponent,\n    isChunk = true\n  ) {\n    currentFile.status = UploadStatus.failed;\n    viewInstance.uploadedFilesComponent.cleanUploadedFiles();\n    if (isChunk) {\n      instance.errorChunkEvent.emit(error);\n    } else {\n      instance.errorEvent.emit(error);\n    }\n  }\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n  Component,\n  EventEmitter,\n  forwardRef,\n  HostBinding,\n  Inject,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  TemplateRef,\n  ViewChild\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { I18nInterface, I18nService } from 'ng-devui/i18n';\nimport { ToastService } from 'ng-devui/toast';\nimport { DevConfigService, WithConfig } from 'ng-devui/utils';\nimport { from, Observable, Subscription } from 'rxjs';\nimport { debounceTime, last, map, mergeMap } from 'rxjs/operators';\nimport { IFileOptions, IUploadOptions, UploadStatus } from './file-uploader.types';\nimport { MultipleUploadViewComponent } from './multiple-upload-view.component';\nimport { SelectFiles } from './select-files.utils';\nimport { SliceUploadService } from './slice-upload.service';\n\n@Component({\n  selector: 'd-multiple-upload',\n  templateUrl: './multiple-upload.component.html',\n  exportAs: 'dMultipleUpload',\n  styleUrls: ['./upload-view.component.scss'],\n  preserveWhitespaces: false,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => MultipleUploadComponent),\n      multi: true,\n    },\n  ],\n})\nexport class MultipleUploadComponent implements OnDestroy, OnInit {\n  @Input() uploadOptions: IUploadOptions;\n  @Input() fileOptions: IFileOptions;\n  @Input() autoUpload = false;\n  @Input() withoutBtn = false;\n  @Input() showTip = false;\n  @Input() uploadedFiles: Array<Object> = [];\n  @Input() uploadedFilesRef: TemplateRef<any>;\n  @Input() preloadFilesRef?: TemplateRef<any>;\n  @Input() filePath: string;\n  @Input() placeholderText: string;\n  @Input() uploadText: string;\n  /**\n   * @deprecated\n   */\n  @Input() confirmText: string;\n  @Input() oneTimeUpload = false;\n  @Input() disabled = false;\n  @Input() beforeUpload: (files) => boolean | Promise<boolean> | Observable<boolean>;\n  @Input() setCustomUploadOptions: (file, uploadOptions, chunkedFileIndex?) => IUploadOptions;\n  @Input() enableDrop = false;\n  @Input() @WithConfig() showGlowStyle = true;\n  @HostBinding('class.devui-glow-style') get hasGlowStyle() {\n    return this.showGlowStyle;\n  }\n  @Output() successEvent: EventEmitter<Array<{ file: File; response: any }>> = new EventEmitter<Array<{ file: File; response: any }>>();\n  @Output() errorEvent: EventEmitter<Array<{ file: File; response: any }>> = new EventEmitter<Array<{ file: File; response: any }>>();\n  @Output() errorChunkEvent: EventEmitter<{ file: File; response: any }> = new EventEmitter<{ file: File; response: any }>();\n  @Output() deleteUploadedFileEvent: EventEmitter<string> = new EventEmitter<string>();\n  @Output() fileDrop: EventEmitter<any> = new EventEmitter<any>();\n  @Output() fileOver: EventEmitter<boolean> = new EventEmitter<boolean>();\n  @Output() fileSelect: EventEmitter<File[]> = new EventEmitter<File[]>();\n  @ViewChild('dMultipleUploadView', { static: true }) multipleUploadViewComponent: MultipleUploadViewComponent;\n  i18nCommonText: I18nInterface['common'];\n  i18nText: I18nInterface['upload'];\n  isDropOVer = false;\n  i18nSubscription: Subscription;\n  errorMsg = [];\n  UploadStatus = UploadStatus;\n  uploadTips: string;\n  document: Document;\n\n  private onChange = (_: any) => null;\n  private onTouched = () => null;\n\n  constructor(\n    private selectFiles: SelectFiles,\n    private i18n: I18nService,\n    @Inject(DOCUMENT) private doc: any,\n    private sliceUploadService: SliceUploadService,\n    private devConfigService: DevConfigService,\n    private toastService: ToastService\n  ) {\n    this.document = this.doc;\n  }\n  ngOnInit(): void {\n    this.i18nText = this.i18n.getI18nText().upload;\n    this.i18nCommonText = this.i18n.getI18nText().common;\n    this.i18nSubscription = this.i18n.langChange().subscribe((data) => {\n      this.i18nText = data.upload;\n      this.i18nCommonText = data.common;\n    });\n  }\n\n  writeValue(files: any): void {\n    if (files) {\n      const simulateFiles = from(this.simulateSelectFiles(files)).pipe(mergeMap((file) => <any>file));\n      this._dealFiles(simulateFiles);\n    }\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  simulateSelectFiles(files) {\n    return new Promise((resolve) => {\n      resolve(Array.prototype.slice.call(files));\n    });\n  }\n\n  _dealFiles(observale) {\n    this.multipleUploadViewComponent.resetSameNameFiles();\n    observale\n      .pipe(\n        map((file) => this.multipleUploadViewComponent.addFile(file)),\n        debounceTime(100)\n      )\n      .subscribe(\n        () => {\n          this.checkValid();\n          const sameNameFiles = this.multipleUploadViewComponent.getSameNameFiles();\n          if (this.uploadOptions.checkSameName && sameNameFiles.length) {\n            this.alertMsg(this.i18nText.getExistSameNameFilesMsg(sameNameFiles));\n          }\n          this.onChange(this.multipleUploadViewComponent.fileUploaders.map((fileUploader) => fileUploader.file));\n          const selectedFiles = this.multipleUploadViewComponent.fileUploaders\n            .filter((fileUploader) => fileUploader.status === UploadStatus.preLoad)\n            .map((fileUploader) => fileUploader.file);\n          this.onFileSelect(selectedFiles);\n          if (this.autoUpload) {\n            this.upload();\n          }\n        },\n        (error: Error) => {\n          this.alertMsg(error.message);\n        }\n      );\n  }\n\n  checkValid() {\n    let totalFileSize = 0;\n    this.multipleUploadViewComponent.fileUploaders.forEach((fileUploader) => {\n      totalFileSize += fileUploader.file.size;\n      const checkResult = this.selectFiles._validateFiles(\n        this.multipleUploadViewComponent.fileUploaders.length,\n        fileUploader.file,\n        this.fileOptions.accept,\n        fileUploader.uploadOptions\n      );\n      if (checkResult && checkResult.checkError) {\n        this.multipleUploadViewComponent.deletePreUploadFile(fileUploader.file);\n        this.alertMsg(checkResult.errorMsg);\n        return;\n      }\n    });\n\n    if (this.oneTimeUpload) {\n      const checkResult = this.selectFiles.checkAllFilesSize(totalFileSize, this.uploadOptions.maximumSize);\n      if (checkResult && checkResult.checkError) {\n        this.multipleUploadViewComponent.removeFiles();\n        this.alertMsg(checkResult.errorMsg);\n      }\n    }\n  }\n\n  onClick(event) {\n    if (this.disabled) {\n      return;\n    }\n    this._dealFiles(this.selectFiles.triggerSelectFiles(this.fileOptions, this.uploadOptions));\n  }\n\n  onFileDrop(files) {\n    this.isDropOVer = false;\n    this._dealFiles(this.selectFiles.triggerDropFiles(this.fileOptions, this.uploadOptions, files));\n    this.fileDrop.emit(files);\n  }\n\n  onFileOver(event) {\n    this.isDropOVer = event;\n    this.fileOver.emit(event);\n  }\n\n  onFileSelect(files) {\n    this.fileSelect.emit(files);\n  }\n\n  handleOneTimeUpload(uploadObservable) {\n    uploadObservable.pipe(last()).subscribe(\n      (results: Array<{ file: File; response: any }>) => {\n        this.successEvent.emit(results);\n        results.forEach((result) => {\n          this.multipleUploadViewComponent.uploadedFilesComponent.addFile(result.file);\n        });\n      },\n      (error) => {\n        this.errorEvent.emit(error);\n      }\n    );\n  }\n\n  handleUpload(uploadObservable) {\n    uploadObservable.pipe(last()).subscribe((results: Array<{ file: File; response: any; status: UploadStatus }>) => {\n      const successResult = results\n        .filter((item) => item.status === UploadStatus.uploaded)\n        .map((item) => {\n          return { file: item.file, response: item.response };\n        });\n      const failResult = results\n        .filter((item) => item.status === UploadStatus.failed)\n        .map((item) => {\n          return { file: item.file, response: item.response };\n        });\n      if (failResult.length) {\n        this.errorEvent.emit(failResult);\n      }\n\n      if (successResult.length) {\n        this.successEvent.emit(successResult);\n        successResult.forEach((result) => {\n          this.multipleUploadViewComponent.uploadedFilesComponent.addFile(result.file);\n        });\n      }\n    });\n  }\n\n  upload(event?, fileUploader?) {\n    if (event) {\n      event.stopPropagation();\n    }\n    this.canUpload().then((canUpload) => {\n      if (!canUpload) {\n        this.multipleUploadViewComponent.removeFiles();\n        return;\n      }\n      const tempNode = this.document.getElementById('d-upload-temp');\n      if (tempNode) {\n        this.document.body.removeChild(tempNode);\n      }\n      if (\n        this.uploadOptions.isChunked &&\n        this.sliceUploadService.isNeedChunk(this.multipleUploadViewComponent.fileUploaders, this.uploadOptions)\n      ) {\n        this.sliceUploadService.sliceUpload(this, this.multipleUploadViewComponent);\n      } else if (this.oneTimeUpload) {\n        const oneTimeUploadObservable = this.multipleUploadViewComponent.oneTimeUpload();\n        this.handleOneTimeUpload(oneTimeUploadObservable);\n      } else {\n        const uploadObservable = this.multipleUploadViewComponent.upload(fileUploader, true);\n        this.handleUpload(uploadObservable);\n      }\n    });\n  }\n\n  canUpload() {\n    let uploadResult = Promise.resolve(true);\n    if (this.beforeUpload) {\n      const result: any = this.beforeUpload(this.multipleUploadViewComponent.getFullFiles());\n      if (typeof result !== 'undefined') {\n        if (result.then) {\n          uploadResult = result;\n        } else if (result.subscribe) {\n          uploadResult = (result as Observable<boolean>).toPromise();\n        } else {\n          uploadResult = Promise.resolve(result);\n        }\n      }\n    }\n    return uploadResult;\n  }\n\n  _onDeleteUploadedFile(filePath: string) {\n    this.deleteUploadedFileEvent.emit(filePath);\n    this.onChange(this.multipleUploadViewComponent.fileUploaders.map((fileUploader) => fileUploader.file));\n  }\n\n  deleteFile($event, file) {\n    $event.stopPropagation();\n    this.multipleUploadViewComponent.deleteFile(file);\n  }\n\n  alertMsg(errorMsg) {\n    this.toastService.open({\n      value: [{ severity: 'warn', content: errorMsg }],\n    });\n  }\n\n  getStatus() {\n    let uploadingCount = 0;\n    let uploadedCount = 0;\n    let failedCount = 0;\n    const filesCount = this.multipleUploadViewComponent.fileUploaders.length;\n    this.multipleUploadViewComponent.fileUploaders.forEach((fileUploader) => {\n      if (fileUploader.status === UploadStatus.uploading) {\n        uploadingCount++;\n      } else if (fileUploader.status === UploadStatus.uploaded) {\n        uploadedCount++;\n      } else if (fileUploader.status === UploadStatus.failed) {\n        failedCount++;\n      }\n    });\n    if (failedCount > 0) {\n      this.uploadTips = this.i18nText.getFailedFilesCount(failedCount);\n      return 'failed';\n    }\n    if (uploadingCount > 0) {\n      this.uploadTips = this.i18nText.getUploadingFilesCount(uploadingCount, filesCount);\n      return 'uploading';\n    }\n    if (uploadedCount === filesCount && uploadedCount !== 0) {\n      return 'uploaded';\n    }\n    if (filesCount !== 0) {\n      this.uploadTips = this.i18nText.getSelectedFilesCount(filesCount);\n      return 'selected';\n    }\n  }\n\n  cancelUpload() {\n    this.multipleUploadViewComponent.fileUploaders\n      .filter((fileUploader) => fileUploader.status === UploadStatus.uploading)\n      .forEach((fileUploader) => {\n        fileUploader.status = UploadStatus.failed;\n      });\n  }\n\n  ngOnDestroy() {\n    if (this.i18nSubscription) {\n      this.i18nSubscription.unsubscribe();\n    }\n  }\n}\n","<div\n  d-file-drop\n  [enableDrop]=\"enableDrop\"\n  (fileDrop)=\"onFileDrop($event)\"\n  (fileOver)=\"onFileOver($event)\"\n  (fileSelect)=\"onFileSelect($event)\"\n  [ngStyle]=\"{ border: isDropOVer ? '1px solid #15bf15' : '0' }\"\n  style=\"display: flex\"\n>\n  <div class=\"devui-input-group\" [class.disabled]=\"disabled\" [class.with-button]=\"!withoutBtn\" (click)=\"onClick($event)\">\n    <div *ngIf=\"dMultipleUploadView.fileUploaders.length === 0\" class=\"devui-form-control devui-upload-placeholder\">\n      {{ placeholderText ? placeholderText : i18nText?.chooseFile }}\n    </div>\n    <ul *ngIf=\"dMultipleUploadView.fileUploaders.length > 0\" class=\"devui-form-control devui-files-list\">\n      <li\n        *ngFor=\"let fileUploader of dMultipleUploadView.fileUploaders; let index = index\"\n        class=\"devui-file-item devui-file-tag\"\n        style=\"display: inline-block; margin: 0 2px 2px 0\"\n        title=\"{{ fileUploader.file.name }}\"\n      >\n        <span class=\"devui-filename {{ fileUploader.status === UploadStatus.failed ? 'devui-failed-color' : '' }}\">\n          {{ fileUploader.file.name }}\n        </span>\n        <span\n          class=\"icon devui-upload-remove {{ fileUploader.status === UploadStatus.failed ? 'devui-upload-delete-file-button' : '' }}\n          {{\n            fileUploader.status === UploadStatus.uploading || fileUploader.status === UploadStatus.uploaded ? 'devui-uploading-delete' : ''\n          }}\"\n          (click)=\"deleteFile($event, fileUploader.file)\"\n        >\n          <svg\n            width=\"16px\"\n            height=\"16px\"\n            viewBox=\"0 0 16 16\"\n            version=\"1.1\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n            xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n          >\n            <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n              <g transform=\"translate(-270.000000, -2376.000000)\">\n                <g transform=\"translate(198.000000, 1991.000000)\">\n                  <g transform=\"translate(0.000000, 383.000000)\">\n                    <g transform=\"translate(72.000000, 2.000000)\">\n                      <path\n                        d=\"M4.570404,4.06442993 L4.6207661,4.10650663 L8,7.48581818 L11.3792339,4.10650663 C11.5212427,3.96449779 11.7514845,3.96449779 11.8934934,4.10650663 C12.0197234,4.2327367 12.033749,4.42868172 11.9355701,4.570404 L11.8934934,4.6207661 L8.51418182,8 L11.8934934,11.3792339 C12.0355022,11.5212427 12.0355022,11.7514845 11.8934934,11.8934934 C11.7672633,12.0197234 11.5713183,12.033749 11.429596,11.9355701 L11.3792339,11.8934934 L8,8.51418182 L4.6207661,11.8934934 C4.47875727,12.0355022 4.24851546,12.0355022 4.10650663,11.8934934 C3.98027655,11.7672633 3.96625099,11.5713183 4.06442993,11.429596 L4.10650663,11.3792339 L7.48581818,8 L4.10650663,4.6207661 C3.96449779,4.47875727 3.96449779,4.24851546 4.10650663,4.10650663 C4.2327367,3.98027655 4.42868172,3.96625099 4.570404,4.06442993 Z\"\n                      ></path>\n                    </g>\n                  </g>\n                </g>\n              </g>\n            </g>\n          </svg>\n        </span>\n        <div *ngIf=\"fileUploader.status === UploadStatus.uploading\" class=\"icon devui-upload-progress\">\n          <d-progress\n            [type]=\"'circle'\"\n            [percentage]=\"fileUploader.percentage\"\n            [strokeColor]=\"'#029931'\"\n            [strokeWidth]=\"8\"\n            [showContent]=\"false\"\n          >\n          </d-progress>\n        </div>\n        <span *ngIf=\"fileUploader.status === UploadStatus.failed\" class=\"icon icon-running\" (click)=\"upload($event, fileUploader)\"> </span>\n        <span *ngIf=\"fileUploader.status === UploadStatus.uploaded\" class=\"icon icon-right\"></span>\n      </li>\n    </ul>\n    <span class=\"devui-input-group-addon\">\n      <svg class=\"svg-icon-dot\" height=\"1em\" width=\"1em\" viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\">\n        <path\n          d=\"m400.31892 176.970574c0-61.574381 50.113351-111.680569 111.679545-111.680569 61.576427 0 111.680569 50.106188 111.680569 111.680569 0 61.568241-50.104141 111.679545-111.680569 111.679545-61.566194 0-111.679545-50.111304-111.679545-111.679545zm0 335.028403c0-61.568241 50.113351-111.678522 111.679545-111.678522 61.576427 0 111.680569 50.110281 111.680569 111.678522 0 61.574381-50.105165 111.682615-111.680569 111.682615-61.566194 0-111.679545-50.108235-111.679545-111.682615zm0 335.037612c0-61.572334 50.113351-111.679545 111.679545-111.679545 61.575404 0 111.680569 50.107211 111.680569 111.679545 0 61.567217-50.105165 111.672382-111.680569 111.672382-61.566194 0-111.679545-50.105164-111.679545-111.672382zm0 0\"\n        />\n      </svg>\n    </span>\n  </div>\n  <d-button\n    *ngIf=\"!autoUpload && !withoutBtn\"\n    [disabled]=\"disabled\"\n    (btnClick)=\"upload($event)\"\n    [style.margin-left.px]=\"8\"\n    bsStyle=\"common\"\n  >\n    {{ uploadText || i18nText?.upload }}\n  </d-button>\n</div>\n<ng-container *ngIf=\"showTip\">\n  <div class=\"devui-upload-tip\">\n    <span *ngIf=\"getStatus() === 'selected'\" class=\"devui-loading\">{{ uploadTips }}</span>\n    <span *ngIf=\"getStatus() === 'uploading'\" class=\"devui-loading\">\n      <span style=\"margin-right: 8px\">{{ uploadTips }}</span>\n      <a (click)=\"cancelUpload()\">{{ i18nText?.cancelUpload }}</a>\n    </span>\n    <div *ngIf=\"getStatus() === 'uploaded'\" class=\"devui-loaded\">\n      <i class=\"icon icon-right-o\"></i>\n      <span style=\"vertical-align: middle\">{{ i18nText?.uploadSuccess }}</span>\n    </div>\n    <div *ngIf=\"getStatus() === 'failed'\" class=\"devui-upload-failed\">\n      <i class=\"icon icon-info-o\"></i>\n      <span style=\"vertical-align: middle\">\n        <span style=\"margin-right: 8px\">{{ uploadTips }}</span>\n        <a (click)=\"upload($event)\">{{ i18nText?.reUpload }}</a>\n      </span>\n    </div>\n  </div>\n</ng-container>\n<d-multiple-upload-view\n  #dMultipleUploadView\n  [uploadedFiles]=\"uploadedFiles\"\n  [uploadedFilesRef]=\"uploadedFilesRef\"\n  [preloadFilesRef]=\"preloadFilesRef\"\n  [uploadOptions]=\"uploadOptions\"\n  [filePath]=\"filePath\"\n  [setCustomUploadOptions]=\"setCustomUploadOptions\"\n  (deleteUploadedFileEvent)=\"_onDeleteUploadedFile($event)\"\n>\n</d-multiple-upload-view>\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  TemplateRef,\n  ViewChild\n} from '@angular/core';\nimport { FileUploader } from './file-uploader.class';\nimport {\n  IUploadOptions,\n  UploadStatus\n} from './file-uploader.types';\nimport { UploadComponent } from './upload.class';\nimport { UploadedFilesComponent } from './uploaded-files.component';\n\n@Component({\n  selector: 'd-single-upload-view',\n  exportAs: 'dSingleUploadView',\n  templateUrl: './single-upload-view.component.html',\n  preserveWhitespaces: false,\n})\nexport class SingleUploadViewComponent extends UploadComponent {\n  @Input() uploadOptions: IUploadOptions;\n  @Input() preloadFilesRef: TemplateRef<any>;\n  @Input() uploadedFiles: Array<Object> = [];\n  @Input() uploadedFilesRef: TemplateRef<any>;\n  @Input() filePath: string;\n  @Input() dynamicUploadOptionsFn: (files, uploadOptions, chunkedFileIndex?) => IUploadOptions;\n  @Output() deleteUploadedFileEvent: EventEmitter<any> = new EventEmitter<any>();\n  @ViewChild('dUploadedFiles', { static: true }) uploadedFilesComponent: UploadedFilesComponent;\n\n  UploadStatus = UploadStatus;\n  fileUploaders: Array<FileUploader> = [];\n\n  addFile(file: File) {\n    this.fileUploaders = [];\n    let uploadOptions = this.uploadOptions;\n    if (this.dynamicUploadOptionsFn) {\n      uploadOptions = this.dynamicUploadOptionsFn(file, this.uploadOptions);\n    }\n    super.addFile(file, uploadOptions);\n  }\n\n  deleteFile(file: File) {\n    super.deleteFile(file);\n    this.deleteUploadedFileEvent.emit(file);\n  }\n\n  deletePreUploadFile(file) {\n    super.deleteFile(file);\n  }\n\n  // 解决templateContext 传递method.bind(this)引发模板中内嵌组件initialize问题\n  deleteFileProxy = file => {\n    this.deleteFile(file);\n  };\n\n  _onDeleteUploadedFile(filePath: string) {\n    this.deleteUploadedFileEvent.emit(filePath);\n  }\n}\n","<d-uploaded-files\n  #dUploadedFiles\n  [uploadedFiles]=\"uploadedFiles\"\n  [filePath]=\"filePath\"\n  [uploadedFilesRef]=\"uploadedFilesRef\"\n  (deleteUploadedFileEvent)=\"_onDeleteUploadedFile($event)\"\n>\n</d-uploaded-files>\n<ng-template\n  [ngTemplateOutlet]=\"preloadFilesRef\"\n  [ngTemplateOutletContext]=\"{ $implicit: this, fileUploaders: fileUploaders, UploadStatus: UploadStatus, deleteFile: deleteFileProxy }\"\n>\n</ng-template>\n","import { DOCUMENT } from '@angular/common';\nimport {\n  Component,\n  EventEmitter,\n  forwardRef,\n  HostBinding,\n  Inject,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  TemplateRef,\n  ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { I18nInterface, I18nService } from 'ng-devui/i18n';\nimport { ToastService } from 'ng-devui/toast';\nimport { DevConfigService, WithConfig } from 'ng-devui/utils';\nimport { from, Observable, Subscription } from 'rxjs';\nimport { last, map, mergeMap } from 'rxjs/operators';\nimport { IFileOptions, IUploadOptions, UploadStatus } from './file-uploader.types';\nimport { SelectFiles } from './select-files.utils';\nimport { SingleUploadViewComponent } from './single-upload-view.component';\nimport { SliceUploadService } from './slice-upload.service';\n\n@Component({\n  selector: 'd-single-upload',\n  templateUrl: './single-upload.component.html',\n  exportAs: 'dSingleUpload',\n  styleUrls: ['./upload-view.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => SingleUploadComponent),\n      multi: true,\n    },\n  ],\n  preserveWhitespaces: false,\n})\nexport class SingleUploadComponent implements OnDestroy, OnInit, ControlValueAccessor {\n  dSingleUploadView;\n  @Input() uploadOptions: IUploadOptions;\n  @Input() fileOptions: IFileOptions;\n  @Input() autoUpload = false;\n  @Input() withoutBtn = false;\n  @Input() showTip = false;\n  @Input() uploadedFiles: Array<Object> = [];\n  @Input() uploadedFilesRef: TemplateRef<any>;\n  @Input() preloadFilesRef?: TemplateRef<any>;\n  @Input() filePath: string;\n  @Input() placeholderText: string;\n  @Input() uploadText: string;\n  /**\n   * @deprecated\n   */\n  @Input() confirmText: string;\n  @Input() beforeUpload: (file) => boolean | Promise<boolean> | Observable<boolean>;\n  @Input() dynamicUploadOptionsFn: (files, uploadOptions) => IUploadOptions;\n  @Input() enableDrop = false;\n  @Input() disabled = false;\n  @Output() successEvent: EventEmitter<Array<{ file: File; response: any }>> = new EventEmitter<Array<{ file: File; response: any }>>();\n  @Output() errorEvent: EventEmitter<{ file: File; response: any }> = new EventEmitter<{ file: File; response: any }>();\n  @Output() errorChunkEvent: EventEmitter<{ file: File; response: any }> = new EventEmitter<{ file: File; response: any }>();\n  @Output() deleteUploadedFileEvent: EventEmitter<string> = new EventEmitter<string>();\n  @Output() fileDrop: EventEmitter<any> = new EventEmitter<any>();\n  @Output() fileOver: EventEmitter<boolean> = new EventEmitter<boolean>();\n  @Output() fileSelect: EventEmitter<File> = new EventEmitter<File>();\n  @Input() @WithConfig() showGlowStyle = true;\n  @HostBinding('class.devui-glow-style') get hasGlowStyle() {\n    return this.showGlowStyle;\n  }\n  @ViewChild('dSingleUploadView', { static: true }) singleUploadViewComponent: SingleUploadViewComponent;\n  UploadStatus = UploadStatus;\n  isDropOVer = false;\n  i18nText: I18nInterface['upload'];\n  i18nCommonText: I18nInterface['common'];\n  i18nSubscription: Subscription;\n  errorMsg = [];\n  document: Document;\n  private onChange = (_: any) => null;\n  private onTouched = () => null;\n\n  constructor(\n    private i18n: I18nService,\n    private selectFiles: SelectFiles,\n    @Inject(DOCUMENT) private doc: any,\n    private toastService: ToastService,\n    private sliceUploadService: SliceUploadService,\n    private devConfigService: DevConfigService\n  ) {\n    this.document = this.doc;\n  }\n\n  writeValue(files: any): void {\n    if (files) {\n      const simulateFiles = from(this.simulateSelectFiles(files)).pipe(mergeMap((file) => <any>file));\n      this._dealFiles(simulateFiles);\n    }\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  simulateSelectFiles(files) {\n    return new Promise((resolve) => {\n      resolve(Array.prototype.slice.call(files));\n    });\n  }\n\n  ngOnInit(): void {\n    this.i18nText = this.i18n.getI18nText().upload;\n    this.i18nCommonText = this.i18n.getI18nText().common;\n    this.i18nSubscription = this.i18n.langChange().subscribe((data) => {\n      this.i18nText = data.upload;\n      this.i18nCommonText = data.common;\n    });\n  }\n\n  _dealFiles(observale) {\n    observale\n      .pipe(\n        map((file) => {\n          this.singleUploadViewComponent.addFile(<File>file);\n          return file;\n        })\n      )\n      .subscribe(\n        () => {\n          this.singleUploadViewComponent.uploadedFilesComponent.cleanUploadedFiles();\n          this.checkValid();\n          const file = this.singleUploadViewComponent.fileUploaders[0]?.file;\n          this.onChange(file);\n          if (file) {\n            this.onFileSelect(file);\n          }\n          if (this.autoUpload) {\n            this.upload();\n          }\n        },\n        (error: Error) => {\n          this.alertMsg(error.message);\n        }\n      );\n  }\n\n  checkValid() {\n    this.singleUploadViewComponent.fileUploaders.forEach((fileUploader) => {\n      const checkResult = this.selectFiles._validateFiles(\n        this.singleUploadViewComponent.fileUploaders.length,\n        fileUploader.file,\n        this.fileOptions.accept,\n        fileUploader.uploadOptions\n      );\n      if (checkResult.checkError) {\n        this.singleUploadViewComponent.deletePreUploadFile(fileUploader.file);\n        this.alertMsg(checkResult.errorMsg);\n      }\n    });\n  }\n\n  onClick($event) {\n    if (\n      this.disabled ||\n      (this.singleUploadViewComponent.fileUploaders[0] && this.singleUploadViewComponent.fileUploaders[0].status === UploadStatus.uploading)\n    ) {\n      return;\n    }\n    this._dealFiles(this.selectFiles.triggerSelectFiles(this.fileOptions, this.uploadOptions));\n  }\n\n  get filename() {\n    return (this.singleUploadViewComponent.getFiles()[0] || ({} as File)).name || '';\n  }\n\n  onFileDrop(files) {\n    this.isDropOVer = false;\n    this._dealFiles(this.selectFiles.triggerDropFiles(this.fileOptions, this.uploadOptions, files));\n    this.fileDrop.emit(files[0]);\n  }\n\n  onFileOver(event) {\n    this.isDropOVer = event;\n    this.fileOver.emit(event);\n  }\n\n  onFileSelect(file) {\n    this.fileSelect.emit(file);\n  }\n\n  upload() {\n    this.canUpload().then((canUpload) => {\n      if (!canUpload) {\n        return;\n      }\n      const tempNode = this.document.getElementById('d-upload-temp');\n      if (tempNode) {\n        this.document.body.removeChild(tempNode);\n      }\n      if (\n        this.uploadOptions.isChunked &&\n        this.sliceUploadService.isNeedChunk(this.singleUploadViewComponent.fileUploaders, this.uploadOptions)\n      ) {\n        this.sliceUploadService.sliceUpload(this, this.singleUploadViewComponent);\n      } else {\n        this.singleUploadViewComponent\n          .upload()\n          .pipe(last())\n          .subscribe(\n            (results: Array<{ file: File; response: any }>) => {\n              this.successEvent.emit(results);\n              results.forEach((result) => {\n                this.singleUploadViewComponent.uploadedFilesComponent.addAndOverwriteFile(result.file);\n              });\n            },\n            (error) => {\n              if (this.singleUploadViewComponent.fileUploaders[0]) {\n                this.singleUploadViewComponent.fileUploaders[0].percentage = 0;\n              }\n              this.singleUploadViewComponent.uploadedFilesComponent.cleanUploadedFiles();\n              this.errorEvent.emit(error);\n            }\n          );\n      }\n    });\n  }\n\n  canUpload() {\n    let uploadResult = Promise.resolve(true);\n    if (this.beforeUpload) {\n      const result: any = this.beforeUpload(this.singleUploadViewComponent.getFullFiles()[0] || ({} as File));\n      if (typeof result !== 'undefined') {\n        if (result.then) {\n          uploadResult = result;\n        } else if (result.subscribe) {\n          uploadResult = (result as Observable<boolean>).toPromise();\n        } else {\n          uploadResult = Promise.resolve(result);\n        }\n      }\n    }\n    return uploadResult;\n  }\n\n  _onDeleteUploadedFile(filePath: string) {\n    this.deleteUploadedFileEvent.emit(filePath);\n    this.onChange(null);\n  }\n\n  deleteFile($event) {\n    $event.stopPropagation();\n    const files = this.singleUploadViewComponent.getFiles();\n    this.singleUploadViewComponent.deleteFile(files[0]);\n  }\n\n  alertMsg(errorMsg) {\n    this.toastService.open({\n      value: [{ severity: 'warn', content: errorMsg }],\n    });\n  }\n\n  ngOnDestroy() {\n    if (this.i18nSubscription) {\n      this.i18nSubscription.unsubscribe();\n    }\n  }\n}\n","<div\n  d-file-drop\n  [enableDrop]=\"enableDrop\"\n  [isSingle]=\"true\"\n  (fileDrop)=\"onFileDrop($event)\"\n  (fileOver)=\"onFileOver($event)\"\n  (fileSelect)=\"onFileSelect($event)\"\n  [ngStyle]=\"{ border: isDropOVer ? '1px solid #15bf15' : '0' }\"\n  style=\"display: flex\"\n>\n  <div\n    class=\"devui-input-group\"\n    [class.disabled]=\"this.disabled || dSingleUploadView.fileUploaders[0]?.status === UploadStatus.uploading\"\n    [class.with-button]=\"!withoutBtn\"\n    (click)=\"onClick($event)\"\n  >\n    <div class=\"devui-form-control devui-files-list\">\n      <div *ngIf=\"!filename\" class=\"devui-file-item devui-upload-placeholder\">\n        {{ placeholderText ? placeholderText : i18nText?.chooseFile }}\n      </div>\n      <div *ngIf=\"!!filename\" class=\"devui-file-tag devui-file-item\" title=\"{{ filename }}\">\n        <span class=\"devui-filename {{ dSingleUploadView.fileUploaders[0]?.status === UploadStatus.failed ? 'devui-failed-color' : '' }}\">\n          {{ filename }}\n        </span>\n        <span\n          class=\"icon devui-upload-remove\n            {{ dSingleUploadView.fileUploaders[0]?.status === UploadStatus.failed ? 'devui-upload-delete-file-button' : '' }}\n            {{\n            dSingleUploadView.fileUploaders[0]?.status === UploadStatus.uploading ||\n            dSingleUploadView.fileUploaders[0]?.status === UploadStatus.uploaded\n              ? 'devui-uploading-delete'\n              : ''\n          }}\"\n          (click)=\"deleteFile($event)\"\n        >\n          <svg\n            width=\"16px\"\n            height=\"16px\"\n            viewBox=\"0 0 16 16\"\n            version=\"1.1\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n            xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n          >\n            <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n              <g transform=\"translate(-270.000000, -2376.000000)\">\n                <g transform=\"translate(198.000000, 1991.000000)\">\n                  <g transform=\"translate(0.000000, 383.000000)\">\n                    <g transform=\"translate(72.000000, 2.000000)\">\n                      <path\n                        d=\"M4.570404,4.06442993 L4.6207661,4.10650663 L8,7.48581818 L11.3792339,4.10650663 C11.5212427,3.96449779 11.7514845,3.96449779 11.8934934,4.10650663 C12.0197234,4.2327367 12.033749,4.42868172 11.9355701,4.570404 L11.8934934,4.6207661 L8.51418182,8 L11.8934934,11.3792339 C12.0355022,11.5212427 12.0355022,11.7514845 11.8934934,11.8934934 C11.7672633,12.0197234 11.5713183,12.033749 11.429596,11.9355701 L11.3792339,11.8934934 L8,8.51418182 L4.6207661,11.8934934 C4.47875727,12.0355022 4.24851546,12.0355022 4.10650663,11.8934934 C3.98027655,11.7672633 3.96625099,11.5713183 4.06442993,11.429596 L4.10650663,11.3792339 L7.48581818,8 L4.10650663,4.6207661 C3.96449779,4.47875727 3.96449779,4.24851546 4.10650663,4.10650663 C4.2327367,3.98027655 4.42868172,3.96625099 4.570404,4.06442993 Z\"\n                      ></path>\n                    </g>\n                  </g>\n                </g>\n              </g>\n            </g>\n          </svg>\n        </span>\n        <div *ngIf=\"dSingleUploadView.fileUploaders[0]?.status === UploadStatus.uploading\" class=\"icon devui-upload-progress\">\n          <d-progress\n            [type]=\"'circle'\"\n            [percentage]=\"dSingleUploadView.fileUploaders[0].percentage\"\n            [strokeColor]=\"'#029931'\"\n            [strokeWidth]=\"8\"\n            [showContent]=\"false\"\n          >\n          </d-progress>\n        </div>\n        <span *ngIf=\"dSingleUploadView.fileUploaders[0]?.status === UploadStatus.failed\" class=\"icon icon-running\" (click)=\"upload()\">\n        </span>\n        <span *ngIf=\"dSingleUploadView.fileUploaders[0]?.status === UploadStatus.uploaded\" class=\"icon icon-right\"></span>\n      </div>\n    </div>\n    <span class=\"devui-input-group-addon\">\n      <svg class=\"svg-icon-dot\" height=\"1em\" width=\"1em\" viewBox=\"0 0 1024 1024\" xmlns=\"http://www.w3.org/2000/svg\">\n        <path\n          d=\"m400.31892 176.970574c0-61.574381 50.113351-111.680569 111.679545-111.680569 61.576427 0 111.680569 50.106188 111.680569 111.680569 0 61.568241-50.104141 111.679545-111.680569 111.679545-61.566194 0-111.679545-50.111304-111.679545-111.679545zm0 335.028403c0-61.568241 50.113351-111.678522 111.679545-111.678522 61.576427 0 111.680569 50.110281 111.680569 111.678522 0 61.574381-50.105165 111.682615-111.680569 111.682615-61.566194 0-111.679545-50.108235-111.679545-111.682615zm0 335.037612c0-61.572334 50.113351-111.679545 111.679545-111.679545 61.575404 0 111.680569 50.107211 111.680569 111.679545 0 61.567217-50.105165 111.672382-111.680569 111.672382-61.566194 0-111.679545-50.105164-111.679545-111.672382zm0 0\"\n        />\n      </svg>\n    </span>\n  </div>\n  <d-button\n    *ngIf=\"!autoUpload && !withoutBtn\"\n    (btnClick)=\"upload()\"\n    bsStyle=\"common\"\n    [style.margin-left.px]=\"8\"\n    [disabled]=\"\n      disabled ||\n      dSingleUploadView.uploadedFilesComponent.uploadedFiles.length > 0 ||\n      dSingleUploadView.fileUploaders[0]?.status === UploadStatus.uploading\n    \"\n  >\n    <span *ngIf=\"!dSingleUploadView.fileUploaders[0] || dSingleUploadView.fileUploaders[0]?.status === UploadStatus.preLoad\">{{\n      uploadText || i18nText?.upload\n    }}</span>\n    <span *ngIf=\"dSingleUploadView.fileUploaders[0]?.status === UploadStatus.uploading\">{{ i18nText?.uploading }}</span>\n    <span *ngIf=\"dSingleUploadView.fileUploaders[0]?.status === UploadStatus.uploaded\">{{ i18nText?.uploaded }}</span>\n    <span *ngIf=\"dSingleUploadView.fileUploaders[0]?.status === UploadStatus.failed\">{{ i18nText?.uploadFailed }}</span>\n  </d-button>\n</div>\n<ng-container *ngIf=\"showTip\">\n  <div class=\"devui-upload-tip\">\n    <span *ngIf=\"dSingleUploadView.fileUploaders[0]?.status === UploadStatus.uploading\" class=\"devui-loading\">\n      {{ i18nText?.uploading }}\n    </span>\n    <div *ngIf=\"dSingleUploadView.fileUploaders[0]?.status === UploadStatus.uploaded\" class=\"devui-loaded\">\n      <i class=\"icon icon-right-o\"></i>\n      <span style=\"vertical-align: middle\">{{ i18nText?.uploadSuccess }}</span>\n    </div>\n    <div *ngIf=\"dSingleUploadView.fileUploaders[0]?.status === UploadStatus.failed\" class=\"devui-upload-failed\">\n      <i class=\"icon icon-info-o\"></i>\n      <span style=\"vertical-align: middle\">\n        <span style=\"margin-right: 8px\">{{ i18nText?.uploadFailed }}</span>\n        <a (click)=\"upload()\">{{ i18nText?.reUpload }}</a>\n      </span>\n    </div>\n  </div>\n</ng-container>\n<d-single-upload-view\n  #dSingleUploadView=\"dSingleUploadView\"\n  [uploadOptions]=\"uploadOptions\"\n  [filePath]=\"filePath\"\n  [uploadedFiles]=\"uploadedFiles\"\n  [uploadedFilesRef]=\"uploadedFilesRef\"\n  [preloadFilesRef]=\"preloadFilesRef\"\n  [dynamicUploadOptionsFn]=\"dynamicUploadOptionsFn\"\n  (deleteUploadedFileEvent)=\"_onDeleteUploadedFile($event)\"\n>\n</d-single-upload-view>\n","import { Directive, ElementRef, EventEmitter, forwardRef, HostListener, Input, OnDestroy, Output } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { I18nInterface, I18nService } from 'ng-devui/i18n';\nimport { Message } from 'ng-devui/toast';\nimport { from, Observable, Subscription } from 'rxjs';\nimport { debounceTime, last, map, mergeMap } from 'rxjs/operators';\nimport { FileUploader } from './file-uploader.class';\nimport { IFileOptions, IUploadOptions, UploadStatus } from './file-uploader.types';\nimport { SelectFiles } from './select-files.utils';\nimport { UploadComponent } from './upload.class';\n@Directive({\n  selector: '[dUpload]',\n  exportAs: 'dUpload',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => UploadDirective),\n      multi: true\n    }\n  ],\n})\nexport class UploadDirective extends UploadComponent implements OnDestroy {\n  @Input() uploadOptions: IUploadOptions;\n  @Input() fileOptions: IFileOptions;\n  @Input() uploadedFiles: Array<Object> = [];\n  @Input() fileUploaders: Array<FileUploader> = [];\n  @Input() enableDrop = false;\n  @Input() dynamicUploadOptionsFn: (files, uploadOptions) => IUploadOptions;\n  @Input() beforeUpload: (file) => boolean | Promise<boolean> | Observable<boolean>;\n  @Output() public fileOver: EventEmitter<boolean> = new EventEmitter<boolean>();\n  @Output() public fileDrop: EventEmitter<any> = new EventEmitter<any>();\n  @Output() successEvent: EventEmitter<Array<{ file: File; response: any }>> = new EventEmitter<Array<{ file: File; response: any }>>();\n  @Output() errorEvent: EventEmitter<{ file: File; response: any }> = new EventEmitter<{ file: File; response: any }>();\n  @Output() alertMsgEvent: EventEmitter<Message[]> = new EventEmitter<Message[]>();\n  @Output() fileSelect: EventEmitter<File[]> = new EventEmitter<File[]>();\n\n  errorMsg = [];\n  protected element: ElementRef;\n  i18nText: I18nInterface['upload'];\n  i18nSubscription: Subscription;\n  private onChange = (_: any) => null;\n  private onTouched = () => null;\n  constructor(private selectFiles: SelectFiles, private i18n: I18nService, element: ElementRef) {\n    super();\n    this.element = element;\n    this.i18nText = this.i18n.getI18nText().upload;\n    this.i18nSubscription = this.i18n.langChange().subscribe((data) => {\n      this.i18nText = data.upload;\n    });\n  }\n  writeValue(files: any): void {\n    if (files) {\n      const simulateFiles = from(this.simulateSelectFiles(files)).pipe(mergeMap(file => <any>file));\n      this._dealFiles(simulateFiles);\n    }\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  simulateSelectFiles(files) {\n    return new Promise((resolve) => {\n      resolve(Array.prototype.slice.call(files));\n    });\n  }\n\n  @HostListener('click')\n  onClick() {\n    this._dealFiles(this.selectFiles.triggerSelectFiles(this.fileOptions, this.uploadOptions));\n  }\n\n  _dealFiles(observale) {\n    super.resetSameNameFiles();\n    observale.pipe(\n      map(file => {\n        let uploadOptions = this.uploadOptions;\n        if (this.dynamicUploadOptionsFn) {\n          uploadOptions = this.dynamicUploadOptionsFn(file, this.uploadOptions);\n        }\n        super.addFile(file, uploadOptions);\n      }),\n      debounceTime(100)\n    )\n      .subscribe(\n        () => {\n          this.checkValid();\n          this.checkSameName();\n          const selectedFiles = this.fileUploaders\n            .filter(fileUploader => fileUploader.status === UploadStatus.preLoad)\n            .map(fileUploader => fileUploader.file);\n          this.onFileSelect(selectedFiles);\n          this.uploadFiles();\n        },\n        (error: Error) => {\n          this.errorMsg = [{ severity: 'warn', detail: error.message }];\n          this.alertMsgEvent.emit(this.errorMsg);\n        }\n      );\n  }\n\n  checkSameName() {\n    const sameNameFiles = super.getSameNameFiles();\n    if (this.uploadOptions.checkSameName && sameNameFiles.length) {\n      this.errorMsg = [{\n        severity: 'warn',\n        detail: this.i18nText.getExistSameNameFilesMsg(sameNameFiles)\n      }];\n      this.alertMsgEvent.emit(this.errorMsg);\n    }\n  }\n\n  // 文件大小、类型是否符合上传条件\n  checkValid() {\n    let totalFileSize = 0;\n    this.fileUploaders.forEach(fileUploader => {\n      totalFileSize += fileUploader.file.size;\n      const checkResult =  this.selectFiles._validateFiles(this.fileUploaders.length,fileUploader.file, this.fileOptions.accept, fileUploader.uploadOptions);\n      if (checkResult && checkResult.checkError) {\n        super.deleteFile(fileUploader.file);\n        this.errorMsg = [{ severity: 'warn', detail: checkResult.errorMsg }];\n        this.alertMsgEvent.emit(this.errorMsg);\n        return;\n      }\n    });\n  }\n  uploadFiles() {\n    this.canUpload().then((canUpload) => {\n      if (!canUpload) {\n        return;\n      }\n      const uploadObservable = super.upload();\n      uploadObservable\n        .pipe(\n          last()\n        )\n        .subscribe(\n          (results: Array<{ file: File; response: any }>) => {\n            this.successEvent.emit(results);\n            results.forEach((result) => {\n              this.uploadedFiles.push(result.file);\n            });\n          },\n          (error) => {\n            this.errorEvent.emit(error);\n          }\n        );\n    });\n  }\n\n  onFileSelect(files) {\n    this.fileSelect.emit(files);\n  }\n\n  @HostListener('drop', ['$event'])\n  public onDrop(event: any): void {\n    if (!this.enableDrop) {\n      return;\n    }\n    const transfer = this._getTransfer(event);\n    if (!transfer) {\n      return;\n    }\n    this._preventAndStop(event);\n    this._dealFiles(this.selectFiles.triggerDropFiles(this.fileOptions, this.uploadOptions, transfer.files));\n    this.fileDrop.emit(transfer.files);\n  }\n\n  @HostListener('dragover', ['$event'])\n  public onDragOver(event: any): void {\n    if (!this.enableDrop) {\n      return;\n    }\n    const transfer = this._getTransfer(event);\n    if (!this._haveFiles(transfer.types)) {\n      return;\n    }\n\n    this._preventAndStop(event);\n    this.fileOver.emit(true);\n  }\n\n  @HostListener('dragleave', ['$event'])\n  public onDragLeave(event: any): any {\n    if (!this.enableDrop) {\n      return;\n    }\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 ? event.dataTransfer : event.originalEvent.dataTransfer;\n  }\n\n  protected _preventAndStop(event: any): any {\n    event.preventDefault();\n    event.stopPropagation();\n  }\n\n  protected _haveFiles(types: any): any {\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  canUpload() {\n    let uploadResult = Promise.resolve(true);\n    if (this.beforeUpload) {\n      const result: any = this.beforeUpload(this.fileUploaders);\n      if (typeof result !== 'undefined') {\n        if (result.then) {\n          uploadResult = result;\n        } else if (result.subscribe) {\n          uploadResult = (result as Observable<boolean>).toPromise();\n        } else {\n          uploadResult = Promise.resolve(result);\n        }\n      }\n    }\n    return uploadResult;\n  }\n\n  ngOnDestroy() {\n    if (this.i18nSubscription) {\n      this.i18nSubscription.unsubscribe();\n    }\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ButtonModule } from 'ng-devui/button';\nimport { ProgressModule } from 'ng-devui/progress';\nimport { ToastModule } from 'ng-devui/toast';\nimport { FileDropDirective } from './file-drop.directive';\nimport { MultipleUploadViewComponent } from './multiple-upload-view.component';\nimport { MultipleUploadComponent } from './multiple-upload.component';\nimport { SelectFiles } from './select-files.utils';\nimport { SingleUploadViewComponent } from './single-upload-view.component';\nimport { SingleUploadComponent } from './single-upload.component';\nimport { SliceUploadService } from './slice-upload.service';\nimport { UploadDirective } from './upload.directive';\nimport { UploadedFilesComponent } from './uploaded-files.component';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    ButtonModule,\n    ToastModule,\n    ProgressModule\n  ],\n  exports: [\n    MultipleUploadViewComponent,\n    SingleUploadViewComponent,\n    SingleUploadComponent,\n    MultipleUploadComponent,\n    UploadedFilesComponent,\n    FileDropDirective,\n    UploadDirective,\n  ],\n  declarations: [\n    MultipleUploadViewComponent,\n    SingleUploadViewComponent,\n    SingleUploadComponent,\n    MultipleUploadComponent,\n    UploadedFilesComponent,\n    FileDropDirective,\n    UploadDirective,\n  ],\n\n  providers: [SelectFiles, SliceUploadService],\n})\nexport class UploadModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3.UploadedFilesComponent","i3.SliceUploadService","i9.MultipleUploadViewComponent","i10.FileDropDirective","i1","i2.UploadedFilesComponent","i3","i4.SliceUploadService","i5","i9.SingleUploadViewComponent","i1.SelectFiles"],"mappings":"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"}