{"version":3,"file":"vts-voffice-ng-vts-upload.mjs","sources":["../../components/upload/interface.ts","../../components/upload/upload-btn.component.ts","../../components/upload/upload-btn.component.html","../../components/upload/file-size-convert.ts","../../components/upload/upload-list.component.ts","../../components/upload/upload-list.component.html","../../components/upload/upload.component.ts","../../components/upload/upload.component.html","../../components/upload/upload.module.ts","../../components/upload/public-api.ts","../../components/upload/vts-voffice-ng-vts-upload.ts"],"sourcesContent":["/**\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\r\n */\r\n\r\nimport { TemplateRef } from '@angular/core';\r\nimport { IndexableObject, VtsSafeAny } from '@vts-voffice/ng-vts/core/types';\r\nimport { Observable, Subscription } from 'rxjs';\r\n\r\n/** Status */\r\nexport type VtsUploadFileStatus = 'error' | 'success' | 'done' | 'uploading' | 'removed';\r\n\r\nexport type VtsUploadType = 'select' | 'drag';\r\n\r\n/** Built-in styles of the uploading list. */\r\nexport type VtsUploadListType = 'row' | 'gallery';\r\n\r\nexport interface VtsUploadFile {\r\n  uid: string;\r\n  size?: number;\r\n  name: string;\r\n  filename?: string;\r\n  lastModified?: string;\r\n  lastModifiedDate?: Date;\r\n  url?: string;\r\n  status?: VtsUploadFileStatus;\r\n  originFileObj?: File;\r\n  percent?: number;\r\n  thumbUrl?: string;\r\n  response?: VtsSafeAny;\r\n  error?: VtsSafeAny;\r\n  linkProps?: { download: string };\r\n  type?: string;\r\n  rejectReason?: string;\r\n\r\n  [key: string]: VtsSafeAny;\r\n}\r\n\r\nexport interface VtsUploadChangeParam {\r\n  file: VtsUploadFile;\r\n  fileList: VtsUploadFile[];\r\n  event?: { percent: number };\r\n  /** Callback type. */\r\n  type?: string;\r\n}\r\n\r\nexport interface VtsUploadAfterFilterChanges {\r\n  rejected: VtsUploadFile[];\r\n  list: VtsUploadFile[];\r\n}\r\n\r\nexport interface VtsShowUploadList {\r\n  showRemoveIcon?: boolean;\r\n  showPreviewIcon?: boolean;\r\n  showDownloadIcon?: boolean;\r\n}\r\n\r\nexport type VtsUploadTransformFileType =\r\n  | string\r\n  | Blob\r\n  | VtsUploadFile\r\n  | Observable<string | Blob | File>;\r\n\r\nexport interface ZipButtonOptions {\r\n  disabled?: boolean;\r\n  accept?: string | string[];\r\n  action?: string | ((file: VtsUploadFile) => string | Observable<string>);\r\n  directory?: boolean;\r\n  openFileDialogOnClick?: boolean;\r\n  beforeUpload?(file: VtsUploadFile, fileList: VtsUploadFile[]): boolean | Observable<VtsSafeAny>;\r\n  customRequest?(item: VtsSafeAny): Subscription;\r\n  data?: {} | ((file: VtsUploadFile) => {} | Observable<{}>);\r\n  headers?: {} | ((file: VtsUploadFile) => {} | Observable<{}>);\r\n  name?: string;\r\n  multiple?: boolean;\r\n  withCredentials?: boolean;\r\n  filters?: VtsUploadFilter[];\r\n  transformFile?(file: VtsUploadFile): VtsUploadTransformFileType;\r\n  onStart?(file: VtsUploadFile): void;\r\n  onProgress?(e: VtsSafeAny, file: VtsUploadFile): void;\r\n  onSuccess?(ret: VtsSafeAny, file: VtsUploadFile, xhr: VtsSafeAny): void;\r\n  onError?(err: VtsSafeAny, file: VtsUploadFile): void;\r\n  afterFilter?(rejected: VtsUploadFile[], list: VtsUploadFile[]): void;\r\n}\r\n\r\nexport interface VtsUploadFilter {\r\n  name: string;\r\n  fn(fileList: VtsUploadFile[]): VtsUploadFile[] | Observable<VtsUploadFile[]>;\r\n}\r\n\r\nexport interface VtsUploadXHRArgs {\r\n  action?: string;\r\n  name?: string;\r\n  headers?: IndexableObject;\r\n  file: VtsUploadFile;\r\n  postFile: string | Blob | File | VtsUploadFile;\r\n  data?: IndexableObject;\r\n  withCredentials?: boolean;\r\n  onProgress?(e: VtsSafeAny, file: VtsUploadFile): void;\r\n  onSuccess?(ret: VtsSafeAny, file: VtsUploadFile, xhr: VtsSafeAny): void;\r\n  onError?(err: VtsSafeAny, file: VtsUploadFile): void;\r\n}\r\n\r\nexport type VtsIconRenderTemplate = TemplateRef<{ $implicit: VtsUploadFile }>;\r\n","/**\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\r\n */\r\n\r\nimport { ENTER } from '@angular/cdk/keycodes';\r\nimport {\r\n  HttpClient,\r\n  HttpEvent,\r\n  HttpEventType,\r\n  HttpHeaders,\r\n  HttpRequest,\r\n  HttpResponse\r\n} from '@angular/common/http';\r\nimport {\r\n  Component,\r\n  ElementRef,\r\n  Input,\r\n  OnDestroy,\r\n  Optional,\r\n  ViewChild,\r\n  ViewEncapsulation\r\n} from '@angular/core';\r\nimport { warn } from '@vts-voffice/ng-vts/core/logger';\r\nimport { VtsSafeAny } from '@vts-voffice/ng-vts/core/types';\r\nimport { Observable, of, Subscription } from 'rxjs';\r\nimport { map, switchMap, take } from 'rxjs/operators';\r\n\r\nimport { VtsUploadFile, VtsUploadXHRArgs, ZipButtonOptions } from './interface';\r\n\r\n@Component({\r\n  selector: '[vts-upload-btn]',\r\n  exportAs: 'vtsUploadBtn',\r\n  templateUrl: './upload-btn.component.html',\r\n  host: {\r\n    '[attr.tabindex]': '\"0\"',\r\n    '[attr.role]': '\"button\"',\r\n    '[class.vts-upload-disabled]': 'options.disabled',\r\n    '(click)': 'onClick()',\r\n    '(keydown)': 'onKeyDown($event)',\r\n    '(drop)': 'onFileDrop($event)',\r\n    '(dragover)': 'onFileDrop($event)'\r\n  },\r\n  preserveWhitespaces: false,\r\n  encapsulation: ViewEncapsulation.None\r\n})\r\nexport class VtsUploadBtnComponent implements OnDestroy {\r\n  reqs: { [key: string]: Subscription } = {};\r\n  private destroy = false;\r\n  @ViewChild('file', { static: false }) file!: ElementRef;\r\n  @Input() options!: ZipButtonOptions;\r\n\r\n  onClick(): void {\r\n    if (this.options.openFileDialogOnClick) this.openDialog();\r\n  }\r\n\r\n  onKeyDown(e: KeyboardEvent): void {\r\n    if (this.options.disabled) {\r\n      return;\r\n    }\r\n    if (e.key === 'Enter' || e.keyCode === ENTER) {\r\n      this.onClick();\r\n    }\r\n  }\r\n\r\n  // skip safari bug\r\n  onFileDrop(e: DragEvent): void {\r\n    if (this.options.disabled || e.type === 'dragover') {\r\n      e.preventDefault();\r\n      return;\r\n    }\r\n    if (this.options.directory) {\r\n      this.traverseFileTree(e.dataTransfer!.items);\r\n    } else {\r\n      const files: File[] = Array.prototype.slice\r\n        .call(e.dataTransfer!.files)\r\n        .filter((file: File) => this.attrAccept(file, this.options.accept));\r\n      if (files.length) {\r\n        this.uploadFiles(files);\r\n      }\r\n    }\r\n\r\n    e.preventDefault();\r\n  }\r\n\r\n  onChange(e: Event): void {\r\n    if (this.options.disabled) {\r\n      return;\r\n    }\r\n    const hie = e.target as HTMLInputElement;\r\n\r\n    this.uploadFiles(hie.files!);\r\n    hie.value = '';\r\n  }\r\n\r\n  private traverseFileTree(files: DataTransferItemList): void {\r\n    const _traverseFileTree = (item: VtsSafeAny, path: string) => {\r\n      if (item.isFile) {\r\n        item.file((file: File) => {\r\n          if (this.attrAccept(file, this.options.accept)) {\r\n            this.uploadFiles([file]);\r\n          }\r\n        });\r\n      } else if (item.isDirectory) {\r\n        const dirReader = item.createReader();\r\n\r\n        dirReader.readEntries((entries: VtsSafeAny) => {\r\n          for (const entrieItem of entries) {\r\n            _traverseFileTree(entrieItem, `${path}${item.name}/`);\r\n          }\r\n        });\r\n      }\r\n    };\r\n\r\n    for (const file of files as VtsSafeAny) {\r\n      _traverseFileTree(file.webkitGetAsEntry(), '');\r\n    }\r\n  }\r\n\r\n  openDialog() {\r\n    if (this.options.disabled) {\r\n      return;\r\n    }\r\n    (this.file.nativeElement as HTMLInputElement).click();\r\n  }\r\n\r\n  private attrAccept(file: File, acceptedFiles?: string | string[]): boolean {\r\n    if (file && acceptedFiles) {\r\n      const acceptedFilesArray = Array.isArray(acceptedFiles)\r\n        ? acceptedFiles\r\n        : acceptedFiles.split(',');\r\n      const fileName = '' + file.name;\r\n      const mimeType = '' + file.type;\r\n      const baseMimeType = mimeType.replace(/\\/.*$/, '');\r\n\r\n      return acceptedFilesArray.some(type => {\r\n        const validType = type.trim();\r\n        if (validType.charAt(0) === '.') {\r\n          return (\r\n            fileName\r\n              .toLowerCase()\r\n              .indexOf(\r\n                validType.toLowerCase(),\r\n                fileName.toLowerCase().length - validType.toLowerCase().length\r\n              ) !== -1\r\n          );\r\n        } else if (/\\/\\*$/.test(validType)) {\r\n          // This is something like a image/* mime type\r\n          return baseMimeType === validType.replace(/\\/.*$/, '');\r\n        }\r\n        return mimeType === validType;\r\n      });\r\n    }\r\n    return true;\r\n  }\r\n\r\n  private attachUid(file: VtsUploadFile): VtsUploadFile {\r\n    if (!file.uid) {\r\n      file.uid = Math.random().toString(36).substring(2);\r\n    }\r\n    return file;\r\n  }\r\n\r\n  uploadFiles(fileList: FileList | File[]): void {\r\n    let filters$: Observable<VtsUploadFile[]> = of(Array.prototype.slice.call(fileList));\r\n    const rejected: VtsUploadFile[] = [];\r\n    if (this.options.filters) {\r\n      this.options.filters.forEach(f => {\r\n        filters$ = filters$.pipe(\r\n          switchMap(list => {\r\n            const fnRes = f.fn(list);\r\n            const obs = fnRes instanceof Observable ? fnRes : of(fnRes);\r\n            obs.pipe(take(1)).subscribe(filtered => {\r\n              if (filtered.length != list.length) {\r\n                const rejectedFiles = list.filter(file => !filtered.includes(file));\r\n                rejectedFiles.forEach(file => {\r\n                  file.rejectReason = f.name;\r\n                  rejected.push(file);\r\n                });\r\n              }\r\n            });\r\n            return obs;\r\n          })\r\n        );\r\n      });\r\n    }\r\n    filters$.subscribe(\r\n      list => {\r\n        list.forEach((file: VtsUploadFile) => {\r\n          this.attachUid(file);\r\n          this.upload(file, list);\r\n        });\r\n        if (rejected.length && this.options.afterFilter) this.options.afterFilter(rejected, list);\r\n      },\r\n      e => {\r\n        warn(`Unhandled upload filter error`, e);\r\n      }\r\n    );\r\n  }\r\n\r\n  public upload(file: VtsUploadFile, fileList: VtsUploadFile[]): void {\r\n    if (!this.options.beforeUpload) {\r\n      return this.post(file);\r\n    }\r\n    const before = this.options.beforeUpload(file, fileList);\r\n    if (before instanceof Observable) {\r\n      before.subscribe(\r\n        (processedFile: VtsUploadFile) => {\r\n          const processedFileType = Object.prototype.toString.call(processedFile);\r\n          if (processedFileType === '[object File]' || processedFileType === '[object Blob]') {\r\n            this.attachUid(processedFile);\r\n            this.post(processedFile);\r\n          } else if (typeof processedFile === 'boolean' && processedFile !== false) {\r\n            this.post(file);\r\n          }\r\n        },\r\n        e => {\r\n          warn(`Unhandled upload beforeUpload error`, e);\r\n        }\r\n      );\r\n    } else if (before !== false) {\r\n      return this.post(file);\r\n    }\r\n  }\r\n\r\n  private post(file: VtsUploadFile): void {\r\n    if (this.destroy) {\r\n      return;\r\n    }\r\n    let process$: Observable<string | Blob | File | VtsUploadFile> = of(file);\r\n    const opt = this.options;\r\n    const { uid } = file;\r\n    const { action, data, headers, transformFile } = opt;\r\n\r\n    const args: VtsUploadXHRArgs = {\r\n      action: typeof action === 'string' ? action : '',\r\n      name: opt.name,\r\n      headers,\r\n      file,\r\n      postFile: file,\r\n      data,\r\n      withCredentials: opt.withCredentials,\r\n      onProgress: opt.onProgress\r\n        ? e => {\r\n            opt.onProgress!(e, file);\r\n          }\r\n        : undefined,\r\n      onSuccess: (ret, xhr) => {\r\n        this.clean(uid);\r\n        opt.onSuccess!(ret, file, xhr);\r\n      },\r\n      onError: xhr => {\r\n        this.clean(uid);\r\n        opt.onError!(xhr, file);\r\n      }\r\n    };\r\n\r\n    if (typeof action === 'function') {\r\n      const actionResult = (action as (file: VtsUploadFile) => string | Observable<string>)(file);\r\n      if (actionResult instanceof Observable) {\r\n        process$ = process$.pipe(\r\n          switchMap(() => actionResult),\r\n          map(res => {\r\n            args.action = res;\r\n            return file;\r\n          })\r\n        );\r\n      } else {\r\n        args.action = actionResult;\r\n      }\r\n    }\r\n\r\n    if (typeof transformFile === 'function') {\r\n      const transformResult = transformFile(file);\r\n      process$ = process$.pipe(\r\n        switchMap(() =>\r\n          transformResult instanceof Observable ? transformResult : of(transformResult)\r\n        )\r\n      );\r\n    }\r\n\r\n    if (typeof data === 'function') {\r\n      const dataResult = (data as (file: VtsUploadFile) => {} | Observable<{}>)(file);\r\n      if (dataResult instanceof Observable) {\r\n        process$ = process$.pipe(\r\n          switchMap(() => dataResult),\r\n          map(res => {\r\n            args.data = res;\r\n            return file;\r\n          })\r\n        );\r\n      } else {\r\n        args.data = dataResult;\r\n      }\r\n    }\r\n\r\n    if (typeof headers === 'function') {\r\n      const headersResult = (headers as (file: VtsUploadFile) => {} | Observable<{}>)(file);\r\n      if (headersResult instanceof Observable) {\r\n        process$ = process$.pipe(\r\n          switchMap(() => headersResult),\r\n          map(res => {\r\n            args.headers = res;\r\n            return file;\r\n          })\r\n        );\r\n      } else {\r\n        args.headers = headersResult;\r\n      }\r\n    }\r\n\r\n    process$.subscribe(newFile => {\r\n      args.postFile = newFile;\r\n      const req$ = (opt.customRequest || this.xhr).call(this, args);\r\n      if (!(req$ instanceof Subscription)) {\r\n        warn(`Must return Subscription type in '[vtsCustomRequest]' property`);\r\n      }\r\n      this.reqs[uid] = req$;\r\n      opt.onStart!(file);\r\n    });\r\n  }\r\n\r\n  private xhr(args: VtsUploadXHRArgs): Subscription {\r\n    const formData = new FormData();\r\n\r\n    if (args.data) {\r\n      Object.keys(args.data).map(key => {\r\n        formData.append(key, args.data![key]);\r\n      });\r\n    }\r\n\r\n    formData.append(args.name!, args.postFile as VtsSafeAny);\r\n\r\n    if (!args.headers) {\r\n      args.headers = {};\r\n    }\r\n    if (args.headers['X-Requested-With'] !== null) {\r\n      args.headers['X-Requested-With'] = `XMLHttpRequest`;\r\n    } else {\r\n      delete args.headers['X-Requested-With'];\r\n    }\r\n    const req = new HttpRequest('POST', args.action!, formData, {\r\n      reportProgress: true,\r\n      withCredentials: args.withCredentials,\r\n      headers: new HttpHeaders(args.headers)\r\n    });\r\n    return this.http.request(req).subscribe(\r\n      (event: HttpEvent<VtsSafeAny>) => {\r\n        if (event.type === HttpEventType.UploadProgress) {\r\n          if (event.total! > 0) {\r\n            (event as VtsSafeAny).percent = (event.loaded / event.total!) * 100;\r\n          }\r\n          args.onProgress!(event, args.file);\r\n        } else if (event instanceof HttpResponse) {\r\n          args.onSuccess!(event.body, args.file, event);\r\n        }\r\n      },\r\n      err => {\r\n        this.abort(args.file);\r\n        args.onError!(err, args.file);\r\n      }\r\n    );\r\n  }\r\n\r\n  private clean(uid: string): void {\r\n    const req$ = this.reqs[uid];\r\n    if (req$ instanceof Subscription) {\r\n      req$.unsubscribe();\r\n    }\r\n    delete this.reqs[uid];\r\n  }\r\n\r\n  abort(file?: VtsUploadFile): void {\r\n    if (file) {\r\n      this.clean(file && file.uid);\r\n    } else {\r\n      Object.keys(this.reqs).forEach(uid => this.clean(uid));\r\n    }\r\n  }\r\n\r\n  constructor(@Optional() private http: HttpClient) {\r\n    if (!http) {\r\n      throw new Error(\r\n        `Not found 'HttpClient', You can import 'HttpClientModule' in your root module.`\r\n      );\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.destroy = true;\r\n    this.abort();\r\n  }\r\n}\r\n","<input\r\n  type=\"file\"\r\n  #file\r\n  (change)=\"onChange($event)\"\r\n  [attr.accept]=\"options.accept\"\r\n  [attr.directory]=\"options.directory ? 'directory' : null\"\r\n  [attr.webkitdirectory]=\"options.directory ? 'webkitdirectory' : null\"\r\n  [multiple]=\"options.multiple\"\r\n  style=\"display: none;\"\r\n/>\r\n<ng-content></ng-content>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({ name: 'vtsFileSize' })\r\nexport class VtsFileSizeConvert implements PipeTransform {\r\n  transform(value: number | undefined, si = false, dp = 1): string {\r\n    if (value === undefined) return '0B';\r\n\r\n    const thresh = si ? 1000 : 1024;\r\n\r\n    if (Math.abs(value) < thresh) {\r\n      return value + ' B';\r\n    }\r\n\r\n    const units = si\r\n      ? ['kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']\r\n      : ['KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\r\n    let u = -1;\r\n    const r = 10 ** dp;\r\n\r\n    do {\r\n      value /= thresh;\r\n      ++u;\r\n    } while (Math.round(Math.abs(value) * r) / r >= thresh && u < units.length - 1);\r\n\r\n    return value.toFixed(dp) + ' ' + units[u];\r\n  }\r\n}\r\n","/**\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\r\n */\r\n\r\nimport { animate, animateChild, query, style, transition, trigger } from '@angular/animations';\r\nimport { Direction } from '@angular/cdk/bidi';\r\nimport { Platform } from '@angular/cdk/platform';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport {\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  Inject,\r\n  Input,\r\n  NgZone,\r\n  OnChanges,\r\n  ViewEncapsulation\r\n} from '@angular/core';\r\nimport { VtsSafeAny } from '@vts-voffice/ng-vts/core/types';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport {\r\n  VtsIconRenderTemplate,\r\n  VtsShowUploadList,\r\n  VtsUploadFile,\r\n  VtsUploadListType\r\n} from './interface';\r\n\r\nconst isImageFileType = (type: string): boolean => !!type && type.indexOf('image/') === 0;\r\n\r\nconst MEASURE_SIZE = 200;\r\n\r\ntype UploadListIconType = '' | 'uploading' | 'thumbnail';\r\n\r\ninterface UploadListFile extends VtsUploadFile {\r\n  isImageUrl?: boolean;\r\n  isUploading?: boolean;\r\n  iconType?: UploadListIconType;\r\n  showDownload?: boolean;\r\n}\r\n\r\n@Component({\r\n  selector: 'vts-upload-list',\r\n  exportAs: 'vtsUploadList',\r\n  templateUrl: './upload-list.component.html',\r\n  animations: [\r\n    trigger('listAnimation', [transition('* => *', [query('@*', animateChild())])]),\r\n    trigger('itemAnimation', [\r\n      transition(':enter', [\r\n        style({ height: '0', opacity: 0 }),\r\n        animate(300, style({ height: '*', opacity: 1 }))\r\n      ]),\r\n      transition(':leave', [\r\n        style({ height: '*', opacity: 0 }),\r\n        animate(100, style({ height: '0' }))\r\n      ])\r\n    ])\r\n  ],\r\n  host: {\r\n    '[class.vts-upload-list-rtl]': `dir === 'rtl'`,\r\n    '[class.vts-upload-list-text]': `listType === 'text'`,\r\n    '[class.vts-upload-list-picture]': `listType === 'picture'`,\r\n    '[class.vts-upload-list-picture-card]': `listType === 'picture-card'`\r\n  },\r\n  preserveWhitespaces: false,\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class VtsUploadListComponent implements OnChanges {\r\n  list: UploadListFile[] = [];\r\n\r\n  private get showPic(): boolean {\r\n    return this.listType === 'gallery';\r\n  }\r\n\r\n  @Input() locale: VtsSafeAny = {};\r\n  @Input() listType!: VtsUploadListType;\r\n  @Input()\r\n  set items(list: VtsUploadFile[]) {\r\n    this.list = list;\r\n  }\r\n  @Input() icons!: VtsShowUploadList;\r\n  @Input() onPreview?: (file: VtsUploadFile) => void;\r\n  @Input() onRemove!: (file: VtsUploadFile) => void;\r\n  @Input() onEdit!: (file: VtsUploadFile) => void;\r\n  @Input() onDownload?: (file: VtsUploadFile) => void;\r\n  @Input() onRetry!: (file: VtsUploadFile) => void;\r\n  @Input() previewFile?: (file: VtsUploadFile) => Observable<string>;\r\n  @Input() previewIsImage?: (file: VtsUploadFile) => boolean;\r\n  @Input() iconRender: VtsIconRenderTemplate | null = null;\r\n  @Input() dir: Direction = 'ltr';\r\n  @Input() listTitle?: string | null;\r\n\r\n  private genErr(file: VtsUploadFile): string {\r\n    if (file.response && typeof file.response === 'string') {\r\n      return file.response;\r\n    }\r\n    return (file.error && file.error.statusText) || this.locale.uploadError;\r\n  }\r\n\r\n  private extname(url: string): string {\r\n    const temp = url.split('/');\r\n    const filename = temp[temp.length - 1];\r\n    const filenameWithoutSuffix = filename.split(/#|\\?/)[0];\r\n    return (/\\.[^./\\\\]*$/.exec(filenameWithoutSuffix) || [''])[0];\r\n  }\r\n\r\n  isImageUrl(file: VtsUploadFile): boolean {\r\n    if (isImageFileType(file.type!)) {\r\n      return true;\r\n    }\r\n    const url: string = (file.thumbUrl || file.url || '') as string;\r\n    if (!url) {\r\n      return false;\r\n    }\r\n    const extension = this.extname(url);\r\n    if (/^data:image\\//.test(url) || /(webp|svg|png|gif|jpg|jpeg|jfif|bmp|dpg)$/i.test(extension)) {\r\n      return true;\r\n    } else if (/^data:/.test(url)) {\r\n      // other file types of base64\r\n      return false;\r\n    } else if (extension) {\r\n      // other file types which have extension\r\n      return false;\r\n    }\r\n    return true;\r\n  }\r\n\r\n  private getIconType(file: UploadListFile): UploadListIconType {\r\n    if (!this.showPic) {\r\n      return '';\r\n    }\r\n    if (file.isUploading || (!file.thumbUrl && !file.url)) {\r\n      return 'uploading';\r\n    } else {\r\n      return 'thumbnail';\r\n    }\r\n  }\r\n\r\n  private previewImage(file: File | Blob): Promise<string> {\r\n    return new Promise(resolve => {\r\n      if (!isImageFileType(file.type)) {\r\n        resolve('');\r\n        return;\r\n      }\r\n      this.ngZone.runOutsideAngular(() => {\r\n        const canvas = this.doc.createElement('canvas');\r\n        canvas.width = MEASURE_SIZE;\r\n        canvas.height = MEASURE_SIZE;\r\n        canvas.style.cssText = `position: fixed; left: 0; top: 0; width: ${MEASURE_SIZE}px; height: ${MEASURE_SIZE}px; z-index: 9999; display: none;`;\r\n        this.doc.body.appendChild(canvas);\r\n        const ctx = canvas.getContext('2d');\r\n        const img = new Image();\r\n        img.onload = () => {\r\n          const { width, height } = img;\r\n\r\n          let drawWidth = MEASURE_SIZE;\r\n          let drawHeight = MEASURE_SIZE;\r\n          let offsetX = 0;\r\n          let offsetY = 0;\r\n\r\n          if (width < height) {\r\n            drawHeight = height * (MEASURE_SIZE / width);\r\n            offsetY = -(drawHeight - drawWidth) / 2;\r\n          } else {\r\n            drawWidth = width * (MEASURE_SIZE / height);\r\n            offsetX = -(drawWidth - drawHeight) / 2;\r\n          }\r\n\r\n          try {\r\n            ctx!.drawImage(img, offsetX, offsetY, drawWidth, drawHeight);\r\n          } catch {}\r\n          const dataURL = canvas.toDataURL();\r\n          this.doc.body.removeChild(canvas);\r\n\r\n          resolve(dataURL);\r\n        };\r\n        img.src = window.URL.createObjectURL(file);\r\n      });\r\n    });\r\n  }\r\n\r\n  private genThumb(): void {\r\n    if (!this.platform.isBrowser) {\r\n      return;\r\n    }\r\n\r\n    const win = window as VtsSafeAny;\r\n    if (\r\n      !this.showPic ||\r\n      typeof document === 'undefined' ||\r\n      typeof win === 'undefined' ||\r\n      !win.FileReader ||\r\n      !win.File\r\n    ) {\r\n      return;\r\n    }\r\n    this.list\r\n      .filter(file => file.originFileObj instanceof File && file.thumbUrl === undefined)\r\n      .forEach(file => {\r\n        file.thumbUrl = '';\r\n        (this.previewFile\r\n          ? this.previewFile(file).toPromise()\r\n          : this.previewImage(file.originFileObj!)\r\n        ).then(dataUrl => {\r\n          file.thumbUrl = dataUrl;\r\n          this.detectChanges();\r\n        });\r\n      });\r\n  }\r\n\r\n  private showDownload(file: VtsUploadFile): boolean {\r\n    return !!(this.icons.showDownloadIcon && file.status === 'done');\r\n  }\r\n\r\n  private fixData(): void {\r\n    this.list.forEach(file => {\r\n      file.isUploading = file.status === 'uploading';\r\n      file.message = this.genErr(file);\r\n      file.linkProps =\r\n        typeof file.linkProps === 'string' ? JSON.parse(file.linkProps) : file.linkProps;\r\n      file.isImageUrl = this.previewIsImage ? this.previewIsImage(file) : this.isImageUrl(file);\r\n      file.iconType = this.getIconType(file);\r\n      file.showDownload = this.showDownload(file);\r\n    });\r\n  }\r\n\r\n  handlePreview(file: VtsUploadFile, e: Event): void {\r\n    if (!this.onPreview) {\r\n      return;\r\n    }\r\n\r\n    e.preventDefault();\r\n    return this.onPreview(file);\r\n  }\r\n\r\n  handleRemove(file: VtsUploadFile, e: Event): void {\r\n    e.preventDefault();\r\n    if (this.onRemove) {\r\n      this.onRemove(file);\r\n    }\r\n    return;\r\n  }\r\n\r\n  handleEdit(file: VtsUploadFile, e: Event): void {\r\n    e.preventDefault();\r\n    if (this.onEdit) {\r\n      this.onEdit(file);\r\n    }\r\n    return;\r\n  }\r\n\r\n  handleRetry(file: VtsUploadFile, e: Event): void {\r\n    e.preventDefault();\r\n    if (this.onRetry) {\r\n      this.onRetry(file);\r\n    }\r\n    return;\r\n  }\r\n\r\n  handleDownload(file: VtsUploadFile): void {\r\n    if (typeof this.onDownload === 'function') {\r\n      this.onDownload(file);\r\n    } else if (file.url) {\r\n      window.open(file.url);\r\n    }\r\n  }\r\n\r\n  // #endregion\r\n\r\n  constructor(\r\n    private cdr: ChangeDetectorRef,\r\n    @Inject(DOCUMENT) private doc: VtsSafeAny,\r\n    private ngZone: NgZone,\r\n    private platform: Platform,\r\n    private elementRef: ElementRef\r\n  ) {\r\n    this.elementRef.nativeElement.classList.add('vts-upload-list');\r\n  }\r\n\r\n  detectChanges(): void {\r\n    this.fixData();\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  ngOnChanges(): void {\r\n    this.fixData();\r\n    this.genThumb();\r\n  }\r\n\r\n  fileTrackBy(_idx: number, file: VtsUploadFile) {\r\n    return file.uid;\r\n  }\r\n}\r\n","<div *ngIf=\"listTitle && list.length\" class=\"vts-upload-list-title\">\r\n  <span>{{listTitle}} ({{list.length}})</span>\r\n</div>\r\n\r\n<div class=\"vts-upload-list-{{ listType }}-container\" @listAnimation>\r\n  <div *ngFor=\"let file of list;trackBy: fileTrackBy\"\r\n    class=\"vts-upload-list-item vts-upload-list-item-{{ file.status }}\" [attr.data-key]=\"file.key\" @itemAnimation>\r\n    <ng-template [ngTemplateOutlet]=\"itemIcon\" [ngTemplateOutletContext]=\"{ $implicit: file }\"></ng-template>\r\n    <ng-container [ngSwitch]=\"listType\">\r\n      <ng-container *ngSwitchCase=\"'row'\">\r\n        <ng-container [ngTemplateOutlet]=\"rowItemDetail\" [ngTemplateOutletContext]=\"{ $implicit: file }\"></ng-container>\r\n      </ng-container>\r\n      <ng-container *ngSwitchDefault>\r\n        <ng-container [ngTemplateOutlet]=\"galleryItemDetail\"\r\n          [ngTemplateOutletContext]=\"{ $implicit: file }\"></ng-container>\r\n      </ng-container>\r\n    </ng-container>\r\n    <ng-template *ngIf=\"file.status !== 'uploading'\" [ngTemplateOutlet]=\"actions\"\r\n      [ngTemplateOutletContext]=\"{ $implicit: file }\"></ng-template>\r\n  </div>\r\n</div>\r\n\r\n<ng-template #itemIcon let-file>\r\n  <ng-container *ngIf=\"file.iconType == 'thumbnail'; else rowIcon\">\r\n    <a *ngIf=\"file.status !== 'error'\" class=\"vts-upload-list-item-thumbnail\"\r\n      [class.vts-upload-list-item-file]=\"!file.isImageUrl\" target=\"_blank\" rel=\"noopener noreferrer\"\r\n      [href]=\"file.url || file.thumbUrl\" (click)=\"handlePreview(file, $event)\">\r\n      <img *ngIf=\"file.isImageUrl\" class=\"vts-upload-list-item-image\" [src]=\"file.thumbUrl || file.url\"\r\n        [attr.alt]=\"file.name\" />\r\n    </a>\r\n  </ng-container>\r\n  <ng-template #rowIcon>\r\n    <div class=\"vts-upload-list-item-illustrate\"></div>\r\n  </ng-template>\r\n</ng-template>\r\n\r\n<ng-template #rowItemDetail let-file>\r\n  <div class=\"vts-upload-list-item-info\">\r\n    <div class=\"vts-upload-list-item-title-row\">\r\n      <span [class.uploaded]=\"file.status === 'done'\" class=\"name\">\r\n        {{ file.name }}\r\n      </span>\r\n      <i *ngIf=\"file.status === 'uploading'\" (click)=\"handleRemove(file, $event)\"\r\n        class=\"vts-upload-action-icon vts-upload-action-icon-remove\" vts-icon vtsType=\"Delete\"></i>\r\n    </div>\r\n    <div *ngIf=\"file.isUploading\" class=\"vts-upload-list-item-progress-row\">\r\n      <vts-progress [vtsPercent]=\"file.percent!\" vtsType=\"line\" [vtsShowInfo]=\"false\"\r\n        [vtsStrokeWidth]=\"8\"></vts-progress>\r\n    </div>\r\n    <div class=\"vts-upload-list-item-description-row\">\r\n      <span *ngIf=\"file.isUploading\" class=\"vts-upload-list-item-size\">\r\n        {{ ((file.size || 0) * (file.percent || 0) / 100) | vtsFileSize }} of {{ file.size | vtsFileSize }}\r\n        ({{file.percent! | number : '1.0-2'}}%)\r\n      </span>\r\n      <span *ngIf=\"!file.isUploading\" class=\"size\">\r\n        {{ file.size | vtsFileSize }}\r\n      </span>\r\n\r\n      <span *ngIf=\"file.status === 'error'\" class=\"error\">\r\n        {{ file.message }}\r\n      </span>\r\n    </div>\r\n  </div>\r\n</ng-template>\r\n\r\n\r\n<ng-template #galleryItemDetail let-file>\r\n  <ng-container *ngIf=\"file.isUploading; else done\">\r\n    <div *ngIf=\"file.isUploading\" class=\"vts-upload-list-item-progress-row\">\r\n      <vts-progress [vtsPercent]=\"file.percent!\" vtsType=\"line\" [vtsShowInfo]=\"false\"\r\n        [vtsStrokeWidth]=\"8\"></vts-progress>\r\n      <span>\r\n        {{file.percent! | number : '1.0-2'}}%\r\n      </span>\r\n    </div>\r\n    <div class=\"vts-upload-list-item-backdrop\" vts-tooltip [vtsTooltipTitle]=\"tooltipTpl\">\r\n      <ng-template [ngTemplateOutlet]=\"actions\" [ngTemplateOutletContext]=\"{ $implicit: file }\"></ng-template>\r\n    </div>\r\n  </ng-container>\r\n  <ng-template #done>\r\n    <ng-container *ngIf=\"file.status == 'error'; else uploaded\">\r\n      <div class=\"vts-upload-list-item-error-row\">\r\n        <i vts-icon vtsType=\"ImageNotSupportedOutline:mat\"></i>\r\n      </div>\r\n    </ng-container>\r\n    <div class=\"vts-upload-list-item-backdrop\" vts-tooltip [vtsTooltipTitle]=\"tooltipTpl\">\r\n      <ng-template #uploaded></ng-template>\r\n    </div>\r\n  </ng-template>\r\n\r\n  <ng-template #tooltipTpl>\r\n    <div>{{file.name}}</div>\r\n    <div *ngIf=\"file.status == 'error'\">{{file.message}}</div>\r\n  </ng-template>\r\n</ng-template>\r\n\r\n<ng-template #actions let-file>\r\n  <vts-space vtsPreset=\"2\" class=\"vts-upload-list-item-actions\">\r\n    <ng-container *ngIf=\"file.status === 'error'\">\r\n      <i *vtsSpaceItem (click)=\"handleRetry(file, $event)\" class=\"vts-upload-action-icon vts-upload-action-icon-reup\"\r\n        vts-icon vtsType=\"AutoRenew\"></i>\r\n    </ng-container>\r\n    <ng-container *ngIf=\"!file.isUploading\">\r\n      <i *vtsSpaceItem (click)=\"handleEdit(file, $event)\" class=\"vts-upload-action-icon vts-upload-action-icon-edit\"\r\n        vts-icon vtsType=\"Edit\"></i>\r\n    </ng-container>\r\n    <i *vtsSpaceItem (click)=\"handleRemove(file, $event)\" class=\"vts-upload-action-icon vts-upload-action-icon-remove\"\r\n      vts-icon vtsType=\"Delete\"></i>\r\n  </vts-space>\r\n</ng-template>","/**\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\r\n */\r\nimport { Direction, Directionality } from '@angular/cdk/bidi';\r\nimport {\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  Optional,\r\n  Output,\r\n  TemplateRef,\r\n  ViewChild,\r\n  ViewEncapsulation\r\n} from '@angular/core';\r\nimport { BooleanInput, NumberInput, VtsSafeAny } from '@vts-voffice/ng-vts/core/types';\r\nimport { Observable, of, Subject, Subscription } from 'rxjs';\r\nimport { filter, takeUntil } from 'rxjs/operators';\r\n\r\nimport { InputBoolean, InputNumber, toBoolean } from '@vts-voffice/ng-vts/core/util';\r\nimport { VtsI18nService, VtsUploadI18nInterface } from '@vts-voffice/ng-vts/i18n';\r\n\r\nimport {\r\n  VtsIconRenderTemplate,\r\n  VtsShowUploadList,\r\n  VtsUploadChangeParam,\r\n  VtsUploadFile,\r\n  VtsUploadListType,\r\n  VtsUploadTransformFileType,\r\n  VtsUploadType,\r\n  VtsUploadXHRArgs,\r\n  VtsUploadFilter,\r\n  ZipButtonOptions,\r\n  VtsUploadAfterFilterChanges\r\n} from './interface';\r\nimport { VtsUploadBtnComponent } from './upload-btn.component';\r\nimport { VtsUploadListComponent } from './upload-list.component';\r\n\r\n@Component({\r\n  selector: 'vts-upload',\r\n  exportAs: 'vtsUpload',\r\n  templateUrl: './upload.component.html',\r\n  preserveWhitespaces: false,\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  host: {\r\n    '[class.vts-upload-block]': 'vtsBlock'\r\n  }\r\n})\r\nexport class VtsUploadComponent implements OnInit, OnChanges, OnDestroy {\r\n  static ngAcceptInputType_vtsLimit: NumberInput;\r\n  static ngAcceptInputType_vtsSize: NumberInput;\r\n  static ngAcceptInputType_vtsDirectory: BooleanInput;\r\n  static ngAcceptInputType_vtsOpenFileDialogOnClick: BooleanInput;\r\n  static ngAcceptInputType_vtsDisabled: BooleanInput;\r\n  static ngAcceptInputType_vtsMultiple: BooleanInput;\r\n  static ngAcceptInputType_vtsShowUploadList: BooleanInput | VtsShowUploadList;\r\n  static ngAcceptInputType_vtsShowButton: BooleanInput;\r\n  static ngAcceptInputType_vtsWithCredentials: BooleanInput;\r\n  static ngAcceptInputType_vtsBlock: BooleanInput;\r\n\r\n  private destroy$ = new Subject<void>();\r\n  @ViewChild('uploadComp', { static: false })\r\n  uploadComp!: VtsUploadBtnComponent;\r\n  @ViewChild('listComp', { static: false }) listComp!: VtsUploadListComponent;\r\n\r\n  locale!: VtsUploadI18nInterface;\r\n  dir: Direction = 'ltr';\r\n\r\n  replaceIndex: number = -1; // In case File Changing at same position\r\n\r\n  // #region fields\r\n\r\n  @Input() vtsType: VtsUploadType = 'select';\r\n  @Input() @InputNumber() vtsLimit = 0;\r\n  @Input() @InputNumber() vtsSize = 0;\r\n\r\n  @Input() vtsFileType?: string;\r\n  @Input() vtsAccept?: string | string[];\r\n  @Input() vtsAction?: string | ((file: VtsUploadFile) => string | Observable<string>);\r\n  @Input() @InputBoolean() vtsDirectory = false;\r\n  @Input() @InputBoolean() vtsOpenFileDialogOnClick = true;\r\n  @Input() vtsBeforeUpload?: (\r\n    file: VtsUploadFile,\r\n    fileList: VtsUploadFile[]\r\n  ) => boolean | Observable<boolean>;\r\n  @Input() vtsCustomRequest?: (item: VtsUploadXHRArgs) => Subscription;\r\n  @Input() vtsData?: {} | ((file: VtsUploadFile) => {} | Observable<{}>);\r\n  @Input() vtsFilter: VtsUploadFilter[] = [];\r\n  @Input() vtsFileList: VtsUploadFile[] = [];\r\n  @Input() @InputBoolean() vtsDisabled = false;\r\n  @Input() vtsHeaders?: {} | ((file: VtsUploadFile) => {} | Observable<{}>);\r\n  @Input() vtsListType: VtsUploadListType = 'row';\r\n  @Input() @InputBoolean() vtsMultiple = false;\r\n  @Input() @InputBoolean() vtsBlock = false;\r\n  @Input() vtsName = 'file';\r\n  @Input() vtsListTitle?: string | null = 'Attachments';\r\n\r\n  private _showUploadList: boolean | VtsShowUploadList = true;\r\n\r\n  @Input()\r\n  set vtsShowUploadList(value: boolean | VtsShowUploadList) {\r\n    this._showUploadList = typeof value === 'boolean' ? toBoolean(value) : value;\r\n  }\r\n\r\n  get vtsShowUploadList(): boolean | VtsShowUploadList {\r\n    return this._showUploadList;\r\n  }\r\n\r\n  @Input() @InputBoolean() vtsShowButton = true;\r\n  @Input() @InputBoolean() vtsWithCredentials = false;\r\n\r\n  @Input() vtsEdit?: (file: VtsUploadFile) => boolean | Observable<boolean>;\r\n  @Input() vtsRemove?: (file: VtsUploadFile) => boolean | Observable<boolean>;\r\n  @Input() vtsPreview?: (file: VtsUploadFile) => void;\r\n  @Input() vtsPreviewFile?: (file: VtsUploadFile) => Observable<string>;\r\n  @Input() vtsPreviewIsImage?: (file: VtsUploadFile) => boolean;\r\n  @Input() vtsTransformFile?: (file: VtsUploadFile) => VtsUploadTransformFileType;\r\n  @Input() vtsDownload?: (file: VtsUploadFile) => void;\r\n  @Input() vtsIconRender: VtsIconRenderTemplate | null = null;\r\n  @Input() vtsFileListRender: TemplateRef<void> | null = null;\r\n\r\n  @Output()\r\n  readonly vtsChange: EventEmitter<VtsUploadChangeParam> = new EventEmitter<VtsUploadChangeParam>();\r\n  @Output() readonly vtsFileListChange: EventEmitter<VtsUploadFile[]> = new EventEmitter<\r\n    VtsUploadFile[]\r\n  >();\r\n\r\n  @Output() readonly vtsAfterFilter = new EventEmitter<VtsUploadAfterFilterChanges>();\r\n\r\n  _btnOptions?: ZipButtonOptions;\r\n\r\n  private zipOptions(): this {\r\n    if (typeof this.vtsShowUploadList === 'boolean' && this.vtsShowUploadList) {\r\n      this.vtsShowUploadList = {\r\n        showPreviewIcon: true,\r\n        showRemoveIcon: true,\r\n        showDownloadIcon: true\r\n      };\r\n    }\r\n    // filters\r\n    const filters: VtsUploadFilter[] = this.vtsFilter.slice();\r\n    if (\r\n      this.vtsMultiple &&\r\n      this.vtsLimit > 0 &&\r\n      filters.findIndex(w => w.name === 'limit') === -1\r\n    ) {\r\n      filters.push({\r\n        name: 'limit',\r\n        fn: (fileList: VtsUploadFile[]) => fileList.slice(-this.vtsLimit)\r\n      });\r\n    }\r\n    if (this.vtsSize > 0 && filters.findIndex(w => w.name === 'size') === -1) {\r\n      filters.push({\r\n        name: 'size',\r\n        fn: (fileList: VtsUploadFile[]) => fileList.filter(w => w.size! / 1024 <= this.vtsSize)\r\n      });\r\n    }\r\n    if (\r\n      this.vtsFileType &&\r\n      this.vtsFileType.length > 0 &&\r\n      filters.findIndex(w => w.name === 'type') === -1\r\n    ) {\r\n      const types = this.vtsFileType.split(',');\r\n      filters.push({\r\n        name: 'type',\r\n        fn: (fileList: VtsUploadFile[]) => fileList.filter(w => ~types.indexOf(w.type!))\r\n      });\r\n    }\r\n\r\n    // After filter\r\n    const afterFilter = (rejected: VtsUploadFile[], list: VtsUploadFile[]) =>\r\n      this.vtsAfterFilter.emit({ rejected, list });\r\n\r\n    this._btnOptions = {\r\n      disabled: this.vtsDisabled,\r\n      accept: this.vtsAccept,\r\n      action: this.vtsAction,\r\n      directory: this.vtsDirectory,\r\n      openFileDialogOnClick: this.vtsOpenFileDialogOnClick,\r\n      beforeUpload: this.vtsBeforeUpload,\r\n      customRequest: this.vtsCustomRequest,\r\n      data: this.vtsData,\r\n      headers: this.vtsHeaders,\r\n      name: this.vtsName,\r\n      multiple: this.vtsMultiple,\r\n      withCredentials: this.vtsWithCredentials,\r\n      filters,\r\n      transformFile: this.vtsTransformFile,\r\n      onStart: this.onStart,\r\n      onProgress: this.onProgress,\r\n      onSuccess: this.onSuccess,\r\n      onError: this.onError,\r\n      afterFilter\r\n    };\r\n    return this;\r\n  }\r\n\r\n  // #endregion\r\n\r\n  constructor(\r\n    private cdr: ChangeDetectorRef,\r\n    private i18n: VtsI18nService,\r\n    @Optional() private directionality: Directionality\r\n  ) {}\r\n\r\n  // #region upload\r\n\r\n  private fileToObject(file: VtsUploadFile): VtsUploadFile {\r\n    return {\r\n      lastModified: file.lastModified,\r\n      lastModifiedDate: file.lastModifiedDate,\r\n      name: file.filename || file.name,\r\n      size: file.size,\r\n      type: file.type,\r\n      uid: file.uid,\r\n      response: file.response,\r\n      error: file.error,\r\n      percent: 0,\r\n      originFileObj: file as VtsSafeAny\r\n    };\r\n  }\r\n\r\n  private getFileItem(file: VtsUploadFile, fileList: VtsUploadFile[]): VtsUploadFile {\r\n    return fileList.filter(item => item.uid === file.uid)[0];\r\n  }\r\n\r\n  private removeFileItem(file: VtsUploadFile, fileList: VtsUploadFile[]): VtsUploadFile[] {\r\n    return fileList.filter(item => item.uid !== file.uid);\r\n  }\r\n\r\n  private onStart = (file: VtsUploadFile): void => {\r\n    if (!this.vtsFileList) {\r\n      this.vtsFileList = [];\r\n    }\r\n    const targetItem = this.fileToObject(file);\r\n    targetItem.status = 'uploading';\r\n    if (this.replaceIndex == -1) this.vtsFileList = this.vtsFileList.concat(targetItem);\r\n    else {\r\n      this.onRemove(this.vtsFileList[this.replaceIndex]);\r\n      const newList = [...this.vtsFileList];\r\n      newList.splice(this.replaceIndex, 0, targetItem);\r\n      this.vtsFileList = newList;\r\n      this.replaceIndex = -1;\r\n    }\r\n    this.vtsFileListChange.emit(this.vtsFileList);\r\n    this.vtsChange.emit({\r\n      file: targetItem,\r\n      fileList: this.vtsFileList,\r\n      type: 'start'\r\n    });\r\n    this.detectChangesList();\r\n  };\r\n\r\n  private onProgress = (e: { percent: number }, file: VtsUploadFile): void => {\r\n    const fileList = this.vtsFileList;\r\n    const targetItem = this.getFileItem(file, fileList);\r\n    targetItem.percent = e.percent;\r\n    this.vtsChange.emit({\r\n      event: e,\r\n      file: { ...targetItem },\r\n      fileList: this.vtsFileList,\r\n      type: 'progress'\r\n    });\r\n    this.detectChangesList();\r\n  };\r\n\r\n  private onSuccess = (res: {}, file: VtsUploadFile): void => {\r\n    const fileList = this.vtsFileList;\r\n    const targetItem = this.getFileItem(file, fileList);\r\n    targetItem.status = 'done';\r\n    targetItem.response = res;\r\n    this.vtsChange.emit({\r\n      file: { ...targetItem },\r\n      fileList,\r\n      type: 'success'\r\n    });\r\n    this.detectChangesList();\r\n  };\r\n\r\n  private onError = (err: {}, file: VtsUploadFile): void => {\r\n    const fileList = this.vtsFileList;\r\n    const targetItem = this.getFileItem(file, fileList);\r\n    targetItem.error = err;\r\n    targetItem.status = 'error';\r\n    this.vtsChange.emit({\r\n      file: { ...targetItem },\r\n      fileList,\r\n      type: 'error'\r\n    });\r\n    this.detectChangesList();\r\n  };\r\n\r\n  // #endregion\r\n\r\n  // #region drag\r\n\r\n  private dragState?: string;\r\n\r\n  // skip safari bug\r\n  fileDrop(e: DragEvent): void {\r\n    if (e.type === this.dragState) {\r\n      return;\r\n    }\r\n    this.dragState = e.type;\r\n    this.setClassMap();\r\n  }\r\n\r\n  // #endregion\r\n\r\n  // #region list\r\n\r\n  private detectChangesList(): void {\r\n    this.cdr.detectChanges();\r\n    this.listComp?.detectChanges();\r\n  }\r\n\r\n  onRemove = (file: VtsUploadFile): void => {\r\n    this.uploadComp.abort(file);\r\n    file.status = 'removed';\r\n    const fnRes =\r\n      typeof this.vtsRemove === 'function'\r\n        ? this.vtsRemove(file)\r\n        : this.vtsRemove == null\r\n        ? true\r\n        : this.vtsRemove;\r\n    (fnRes instanceof Observable ? fnRes : of(fnRes))\r\n      .pipe(filter((res: boolean) => res))\r\n      .subscribe(() => {\r\n        this.vtsFileList = this.removeFileItem(file, this.vtsFileList);\r\n        this.vtsChange.emit({\r\n          file,\r\n          fileList: this.vtsFileList,\r\n          type: 'removed'\r\n        });\r\n        this.vtsFileListChange.emit(this.vtsFileList);\r\n        this.cdr.detectChanges();\r\n      });\r\n  };\r\n\r\n  onEdit = (file: VtsUploadFile): void => {\r\n    const index = this.vtsFileList.indexOf(file);\r\n    this.replaceIndex = index;\r\n    this.openDialog();\r\n  };\r\n\r\n  onRetry = (file: VtsUploadFile): void => {\r\n    //@ts-ignore\r\n    const clone = new File([file], file.name);\r\n    const index = this.vtsFileList.indexOf(file);\r\n    this.replaceIndex = index;\r\n    this.uploadComp.uploadFiles([clone]);\r\n  };\r\n\r\n  // #endregion\r\n\r\n  // #region styles\r\n\r\n  private prefixCls = 'vts-upload';\r\n  classList: string[] = [];\r\n\r\n  private setClassMap(): void {\r\n    let subCls: string[] = [];\r\n    if (this.vtsType === 'drag') {\r\n      if (this.vtsFileList.some(file => file.status === 'uploading')) {\r\n        subCls.push(`${this.prefixCls}-drag-uploading`);\r\n      }\r\n      if (this.dragState === 'dragover') {\r\n        subCls.push(`${this.prefixCls}-drag-hover`);\r\n      }\r\n    } else {\r\n      subCls = [`${this.prefixCls}-select-${this.vtsListType}`];\r\n    }\r\n\r\n    this.classList = [\r\n      this.prefixCls,\r\n      `${this.prefixCls}-${this.vtsType}`,\r\n      !this.vtsOpenFileDialogOnClick ? `${this.prefixCls}-${this.vtsType}-mute-dialog` : ``,\r\n      ...subCls,\r\n      (this.vtsDisabled && `${this.prefixCls}-disabled`) || '',\r\n      (this.dir === 'rtl' && `${this.prefixCls}-rtl`) || ''\r\n    ].filter(item => !!item);\r\n\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  // #endregion\r\n\r\n  ngOnInit(): void {\r\n    this.dir = this.directionality.value;\r\n    this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction: Direction) => {\r\n      this.dir = direction;\r\n      this.setClassMap();\r\n      this.cdr.detectChanges();\r\n    });\r\n\r\n    this.i18n.localeChange.pipe(takeUntil(this.destroy$)).subscribe(() => {\r\n      this.locale = this.i18n.getLocaleData('Upload');\r\n      this.detectChangesList();\r\n    });\r\n  }\r\n\r\n  ngOnChanges(): void {\r\n    this.zipOptions().setClassMap();\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next();\r\n    this.destroy$.complete();\r\n  }\r\n\r\n  openDialog() {\r\n    this.uploadComp.openDialog();\r\n  }\r\n}\r\n","<ng-template #list>\r\n  <vts-upload-list *ngIf=\"locale && !vtsFileListRender\" #listComp [style.display]=\"vtsShowUploadList ? '' : 'none'\"\r\n    [locale]=\"locale\" [listType]=\"vtsListType\" [items]=\"vtsFileList || []\" [icons]=\"$any(vtsShowUploadList)\"\r\n    [iconRender]=\"vtsIconRender\" [previewFile]=\"vtsPreviewFile\" [previewIsImage]=\"vtsPreviewIsImage\"\r\n    [onPreview]=\"vtsPreview\" [onRemove]=\"onRemove\" [onEdit]=\"onEdit\" [onRetry]=\"onRetry\" [onDownload]=\"vtsDownload\"\r\n    [dir]=\"dir\" [listTitle]=\"vtsListTitle\"></vts-upload-list>\r\n  <ng-container *ngIf=\"vtsFileListRender\">\r\n    <ng-container></ng-container>\r\n    <!-- <ng-container *ngTemplateOutlet=\"vtsFileListRender; context: { $implicit: vtsFileList }\"></ng-container> -->\r\n  </ng-container>\r\n</ng-template>\r\n<ng-template #con><ng-content></ng-content></ng-template>\r\n\r\n<ng-template #btn>\r\n  <div [ngClass]=\"classList\" [style.display]=\"vtsShowButton ? '' : 'none'\">\r\n    <div vts-upload-btn #uploadComp [options]=\"_btnOptions!\" class=\"vts-upload-btn\">\r\n      <ng-template [ngTemplateOutlet]=\"con\"></ng-template>\r\n    </div>\r\n  </div>\r\n</ng-template>\r\n\r\n<ng-template #select>\r\n  <ng-container *ngIf=\"vtsListType === 'gallery'; else row\">\r\n    <ng-template [ngTemplateOutlet]=\"list\"></ng-template>\r\n    <ng-template [ngTemplateOutlet]=\"btn\"></ng-template>\r\n  </ng-container>\r\n  <ng-template #row>\r\n    <ng-template [ngTemplateOutlet]=\"btn\"></ng-template>\r\n    <ng-template [ngTemplateOutlet]=\"list\"></ng-template>\r\n  </ng-template>\r\n</ng-template>\r\n\r\n<ng-container *ngIf=\"vtsType === 'drag'; else select\">\r\n  <div [ngClass]=\"classList\" (drop)=\"fileDrop($event)\" (dragover)=\"fileDrop($event)\" (dragleave)=\"fileDrop($event)\">\r\n    <div vts-upload-btn #uploadComp [options]=\"_btnOptions!\" class=\"vts-upload-btn\">\r\n      <div class=\"vts-upload-drag-container\">\r\n        <ng-template [ngTemplateOutlet]=\"con\"></ng-template>\r\n      </div>\r\n    </div>\r\n  </div>\r\n  <ng-template [ngTemplateOutlet]=\"list\"></ng-template>\r\n</ng-container>","/**\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\r\n */\r\nimport { BidiModule } from '@angular/cdk/bidi';\r\nimport { PlatformModule } from '@angular/cdk/platform';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { VtsButtonModule } from '@vts-voffice/ng-vts/button';\r\nimport { VtsI18nModule } from '@vts-voffice/ng-vts/i18n';\r\nimport { VtsIconModule } from '@vts-voffice/ng-vts/icon';\r\nimport { VtsProgressModule } from '@vts-voffice/ng-vts/progress';\r\nimport { VtsToolTipModule } from '@vts-voffice/ng-vts/tooltip';\r\nimport { VtsFileSizeConvert } from './file-size-convert';\r\n\r\nimport { VtsUploadBtnComponent } from './upload-btn.component';\r\nimport { VtsUploadListComponent } from './upload-list.component';\r\nimport { VtsUploadComponent } from './upload.component';\r\nimport { VtsSpaceModule } from '@vts-voffice/ng-vts/space';\r\n\r\n@NgModule({\r\n  imports: [\r\n    BidiModule,\r\n    CommonModule,\r\n    FormsModule,\r\n    PlatformModule,\r\n    VtsToolTipModule,\r\n    VtsProgressModule,\r\n    VtsI18nModule,\r\n    VtsIconModule,\r\n    VtsButtonModule,\r\n    VtsSpaceModule\r\n  ],\r\n  declarations: [\r\n    VtsUploadComponent,\r\n    VtsUploadBtnComponent,\r\n    VtsUploadListComponent,\r\n    VtsFileSizeConvert\r\n  ],\r\n  exports: [VtsUploadComponent]\r\n})\r\nexport class VtsUploadModule {}\r\n","/**\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\r\n */\r\n\r\nexport * from './interface';\r\nexport * from './upload-btn.component';\r\nexport * from './upload-list.component';\r\nexport * from './upload.component';\r\nexport * from './upload.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i8.VtsFileSizeConvert","i2","i3","i4.VtsUploadBtnComponent","i5.VtsUploadListComponent"],"mappings":"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"}