{"version":3,"file":"ng-zorro-antd-upload.mjs","sources":["../../components/upload/interface.ts","../../components/upload/upload-btn.component.ts","../../components/upload/upload-btn.component.html","../../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/ng-zorro-antd-upload.ts"],"sourcesContent":["/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { TemplateRef } from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\n\nimport { IndexableObject, NzSafeAny } from 'ng-zorro-antd/core/types';\n\n/** Status */\nexport type UploadFileStatus = 'error' | 'success' | 'done' | 'uploading' | 'removed';\n\nexport type NzUploadType = 'select' | 'drag';\n\n/** Built-in styles of the uploading list. */\nexport type NzUploadListType = 'text' | 'picture' | 'picture-card';\n\nexport interface NzUploadFile {\n  uid: string;\n  size?: number;\n  name: string;\n  filename?: string;\n  lastModified?: string;\n  lastModifiedDate?: Date;\n  url?: string;\n  status?: UploadFileStatus;\n  originFileObj?: File;\n  percent?: number;\n  thumbUrl?: string;\n  response?: NzSafeAny;\n  error?: NzSafeAny;\n  linkProps?: { download: string };\n  type?: string;\n\n  [key: string]: NzSafeAny;\n}\n\nexport interface NzUploadChangeParam {\n  file: NzUploadFile;\n  fileList: NzUploadFile[];\n  event?: { percent: number };\n  /** Callback type. */\n  type?: string;\n}\n\nexport interface NzShowUploadList {\n  showRemoveIcon?: boolean;\n  showPreviewIcon?: boolean;\n  showDownloadIcon?: boolean;\n}\n\n/**\n * @deprecated will be removed in v22.0.0\n * Use `NzBeforeUploadFileType` instead.\n */\nexport type NzUploadTransformFileType = string | Blob | NzUploadFile | Observable<string | Blob | File>;\n\nexport type NzBeforeUploadFileType =\n  | boolean\n  | Observable<boolean | NzUploadFile | Blob | File | boolean>\n  | Promise<boolean | NzUploadFile | Blob | File | boolean>;\n\nexport interface ZipButtonOptions {\n  disabled?: boolean;\n  accept?: string | string[];\n  action?: string | ((file: NzUploadFile) => string | Observable<string>);\n  directory?: boolean;\n  openFileDialogOnClick?: boolean;\n  beforeUpload?(file: NzUploadFile, fileList: NzUploadFile[]): NzBeforeUploadFileType;\n  customRequest?(item: NzSafeAny): Subscription;\n  data?: {} | ((file: NzUploadFile) => {} | Observable<{}>);\n  headers?: {} | ((file: NzUploadFile) => {} | Observable<{}>);\n  name?: string;\n  multiple?: boolean;\n  withCredentials?: boolean;\n  filters?: UploadFilter[];\n  transformFile?(file: NzUploadFile): NzUploadTransformFileType;\n  onStart?(file: NzUploadFile): void;\n  onProgress?(e: NzSafeAny, file: NzUploadFile): void;\n  onSuccess?(ret: NzSafeAny, file: NzUploadFile, xhr: NzSafeAny): void;\n  onError?(err: NzSafeAny, file: NzUploadFile): void;\n}\n\nexport interface UploadFilter {\n  name: string;\n  fn(fileList: NzUploadFile[]): NzUploadFile[] | Observable<NzUploadFile[]>;\n}\n\nexport interface NzUploadXHRArgs {\n  action?: string;\n  name?: string;\n  headers?: IndexableObject;\n  file: NzUploadFile;\n  postFile: string | Blob | File | NzUploadFile;\n  data?: IndexableObject;\n  withCredentials?: boolean;\n  onProgress?(e: NzSafeAny, file: NzUploadFile): void;\n  onSuccess?(ret: NzSafeAny, file: NzUploadFile, xhr: NzSafeAny): void;\n  onError?(err: NzSafeAny, file: NzUploadFile): void;\n}\n\nexport type NzIconRenderTemplate = TemplateRef<{ $implicit: NzUploadFile }>;\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { ENTER } from '@angular/cdk/keycodes';\nimport { HttpClient, HttpEvent, HttpEventType, HttpHeaders, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { Component, DestroyRef, ElementRef, inject, Input, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Observable, of, Subscription } from 'rxjs';\nimport { filter, map, switchMap, tap } from 'rxjs/operators';\n\nimport { warn } from 'ng-zorro-antd/core/logger';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { fromEventOutsideAngular } from 'ng-zorro-antd/core/util';\n\nimport { NzUploadFile, NzUploadXHRArgs, ZipButtonOptions } from './interface';\n\n@Component({\n  selector: '[nz-upload-btn]',\n  exportAs: 'nzUploadBtn',\n  templateUrl: './upload-btn.component.html',\n  host: {\n    class: 'ant-upload',\n    '[attr.tabindex]': '\"0\"',\n    '[attr.role]': '\"button\"',\n    '[class.ant-upload-disabled]': 'options.disabled',\n    '(drop)': 'onFileDrop($event)',\n    '(dragover)': 'onFileDrop($event)'\n  },\n  encapsulation: ViewEncapsulation.None\n})\nexport class NzUploadBtnComponent implements OnInit {\n  reqs: Record<string, Subscription> = {};\n  private destroyed = false;\n  @ViewChild('file', { static: true }) file!: ElementRef<HTMLInputElement>;\n  @Input() options!: ZipButtonOptions;\n\n  onClick(): void {\n    if (this.options.disabled || !this.options.openFileDialogOnClick) {\n      return;\n    }\n    this.file.nativeElement.click();\n  }\n\n  // skip safari bug\n  onFileDrop(e: DragEvent): void {\n    if (this.options.disabled || e.type === 'dragover') {\n      e.preventDefault();\n      return;\n    }\n    if (this.options.directory) {\n      this.traverseFileTree(e.dataTransfer!.items);\n    } else {\n      const files: File[] = Array.prototype.slice\n        .call(e.dataTransfer!.files)\n        .filter((file: File) => this.attrAccept(file, this.options.accept));\n      if (files.length) {\n        this.uploadFiles(files);\n      }\n    }\n\n    e.preventDefault();\n  }\n\n  onChange(e: Event): void {\n    if (this.options.disabled) {\n      return;\n    }\n    const hie = e.target as HTMLInputElement;\n    this.uploadFiles(hie.files!);\n    hie.value = '';\n  }\n\n  private traverseFileTree(files: DataTransferItemList): void {\n    const _traverseFileTree = (item: NzSafeAny, path: string): void => {\n      if (item.isFile) {\n        item.file((file: File) => {\n          if (this.attrAccept(file, this.options.accept)) {\n            this.uploadFiles([file]);\n          }\n        });\n      } else if (item.isDirectory) {\n        const dirReader = item.createReader();\n\n        dirReader.readEntries((entries: NzSafeAny) => {\n          for (const entrieItem of entries) {\n            _traverseFileTree(entrieItem, `${path}${item.name}/`);\n          }\n        });\n      }\n    };\n\n    for (const file of files as NzSafeAny) {\n      _traverseFileTree(file.webkitGetAsEntry(), '');\n    }\n  }\n\n  private attrAccept(file: File, acceptedFiles?: string | string[]): boolean {\n    if (file && acceptedFiles) {\n      const acceptedFilesArray = Array.isArray(acceptedFiles) ? acceptedFiles : acceptedFiles.split(',');\n      const fileName = `${file.name}`;\n      const mimeType = `${file.type}`;\n      const baseMimeType = mimeType.replace(/\\/.*$/, '');\n\n      return acceptedFilesArray.some(type => {\n        const validType = type.trim();\n        if (validType.charAt(0) === '.') {\n          return (\n            fileName\n              .toLowerCase()\n              .indexOf(validType.toLowerCase(), fileName.toLowerCase().length - validType.toLowerCase().length) !== -1\n          );\n        } else if (/\\/\\*$/.test(validType)) {\n          // This is something like an image/* mime type\n          return baseMimeType === validType.replace(/\\/.*$/, '');\n        }\n        return mimeType === validType;\n      });\n    }\n    return true;\n  }\n\n  private attachUid(file: NzUploadFile): NzUploadFile {\n    if (!file.uid) {\n      file.uid = Math.random().toString(36).substring(2);\n    }\n    return file;\n  }\n\n  uploadFiles(fileList: FileList | File[]): void {\n    let filters$: Observable<NzUploadFile[]> = of(Array.prototype.slice.call(fileList));\n    if (this.options.filters) {\n      this.options.filters.forEach(f => {\n        filters$ = filters$.pipe(\n          switchMap(list => {\n            const fnRes = f.fn(list);\n            return fnRes instanceof Observable ? fnRes : of(fnRes);\n          })\n        );\n      });\n    }\n    filters$.subscribe({\n      next: list => {\n        list.forEach((file: NzUploadFile) => {\n          this.attachUid(file);\n          this.upload(file, list);\n        });\n      },\n      error: e => {\n        warn(`Unhandled upload filter error`, e);\n      }\n    });\n  }\n\n  private upload(file: NzUploadFile, fileList: NzUploadFile[]): void {\n    if (!this.options.beforeUpload) {\n      return this.post(file);\n    }\n    const before = this.options.beforeUpload(file, fileList);\n    const successBeforeLoadHook = (processedFile: NzUploadFile | boolean | Blob | File): void => {\n      const processedFileType = Object.prototype.toString.call(processedFile);\n      if (\n        typeof processedFile !== 'boolean' &&\n        (processedFileType === '[object File]' || processedFileType === '[object Blob]')\n      ) {\n        (processedFile as NzUploadFile).uid = file.uid; // we are sure that the file has already an uid, now nzBeforeUpload is used to transform the file, the transform file needs to have the same uid as the original file\n        this.post(file, processedFile as NzUploadFile);\n      } else if (processedFile) {\n        this.post(file);\n      }\n    };\n    const errorBeforeLoadHook = (error: NzSafeAny): void => {\n      warn(`Unhandled upload beforeUpload error`, error);\n    };\n\n    if (before instanceof Observable) {\n      before.subscribe({\n        next: successBeforeLoadHook,\n        error: errorBeforeLoadHook\n      });\n    } else if (before instanceof Promise) {\n      before.then(successBeforeLoadHook).catch(errorBeforeLoadHook);\n    } else if (before) {\n      return this.post(file);\n    }\n  }\n\n  private post(file: NzUploadFile, processedFile?: string | Blob | File | NzUploadFile): void {\n    if (this.destroyed) {\n      return;\n    }\n    let process$: Observable<string | Blob | File | NzUploadFile> = of(processedFile || file);\n    let transformedFile: string | Blob | File | NzUploadFile | undefined;\n    const opt = this.options;\n    const { uid } = file;\n    const { action, data, headers, transformFile } = opt;\n\n    const args: NzUploadXHRArgs = {\n      action: typeof action === 'string' ? action : '',\n      name: opt.name,\n      headers,\n      file,\n      postFile: file,\n      data,\n      withCredentials: opt.withCredentials,\n      onProgress: opt.onProgress\n        ? e => {\n            opt.onProgress!(e, file);\n          }\n        : undefined,\n      onSuccess: (ret, xhr) => {\n        this.clean(uid);\n        opt.onSuccess!(ret, file, xhr);\n      },\n      onError: xhr => {\n        this.clean(uid);\n        opt.onError!(xhr, file);\n      }\n    };\n\n    if (typeof action === 'function') {\n      const actionResult = (action as (file: NzUploadFile) => string | Observable<string>)(file);\n      if (actionResult instanceof Observable) {\n        process$ = process$.pipe(\n          switchMap(() => actionResult),\n          map(res => {\n            args.action = res;\n            return file;\n          })\n        );\n      } else {\n        args.action = actionResult;\n      }\n    }\n\n    if (typeof transformFile === 'function') {\n      const transformResult = transformFile(file);\n      process$ = process$.pipe(\n        switchMap(() => (transformResult instanceof Observable ? transformResult : of(transformResult))),\n        tap(newFile => (transformedFile = newFile))\n      );\n    }\n\n    /**\n     * TODO\n     * All this part of code needs to be removed in v22.0.0 when we will remove the `nzTransformFile` hook\n     */\n    if (typeof data === 'function') {\n      const dataResult = (data as (file: NzUploadFile) => {} | Observable<{}>)(file);\n      if (dataResult instanceof Observable) {\n        process$ = process$.pipe(\n          /**\n           * this is a little bit tricky but here is the explanation:\n           * Potentially, people can use the `beforeUpload` hook to transform the file, and also `nzTransformFile` hook to transform the file,\n           * if beforeUpload hook transform the file, so nzTransformFile hook must not be called, otherwise the file will be transformed twice\n           * Normally this can not happen, but it is possible until we remove the `nzTransformFile` hook\n           */\n          filter(() => !processedFile),\n          switchMap(() => dataResult),\n          map(res => {\n            args.data = res;\n            return transformedFile ?? file;\n          })\n        );\n      } else {\n        args.data = dataResult;\n      }\n    }\n\n    if (typeof headers === 'function') {\n      const headersResult = (headers as (file: NzUploadFile) => {} | Observable<{}>)(file);\n      if (headersResult instanceof Observable) {\n        process$ = process$.pipe(\n          switchMap(() => headersResult),\n          map(res => {\n            args.headers = res;\n            return transformedFile ?? file;\n          })\n        );\n      } else {\n        args.headers = headersResult;\n      }\n    }\n\n    process$.subscribe(newFile => {\n      args.postFile = newFile;\n      const req$ = (opt.customRequest || this.xhr).call(this, args);\n      if (!(req$ instanceof Subscription)) {\n        warn(`Must return Subscription type in '[nzCustomRequest]' property`);\n      }\n      this.reqs[uid] = req$;\n      opt.onStart!(file);\n    });\n  }\n\n  private xhr(args: NzUploadXHRArgs): Subscription {\n    const formData = new FormData();\n\n    if (args.data) {\n      Object.keys(args.data).map(key => {\n        formData.append(key, args.data![key]);\n      });\n    }\n\n    formData.append(args.name!, args.postFile as NzSafeAny);\n\n    if (!args.headers) {\n      args.headers = {};\n    }\n    if (args.headers['X-Requested-With'] !== null) {\n      args.headers['X-Requested-With'] = `XMLHttpRequest`;\n    } else {\n      delete args.headers['X-Requested-With'];\n    }\n    const req = new HttpRequest('POST', args.action!, formData, {\n      reportProgress: true,\n      withCredentials: args.withCredentials,\n      headers: new HttpHeaders(args.headers)\n    });\n    return this.http!.request(req).subscribe({\n      next: (event: HttpEvent<NzSafeAny>) => {\n        if (event.type === HttpEventType.UploadProgress) {\n          if (event.total! > 0) {\n            (event as NzSafeAny).percent = (event.loaded / event.total!) * 100;\n          }\n          args.onProgress!(event, args.file);\n        } else if (event instanceof HttpResponse) {\n          args.onSuccess!(event.body, args.file, event);\n        }\n      },\n      error: err => {\n        this.abort(args.file);\n        args.onError!(err, args.file);\n      }\n    });\n  }\n\n  private clean(uid: string): void {\n    const req$ = this.reqs[uid];\n    if (req$ instanceof Subscription) {\n      req$.unsubscribe();\n    }\n    delete this.reqs[uid];\n  }\n\n  abort(file?: NzUploadFile): void {\n    if (file) {\n      this.clean(file && file.uid);\n    } else {\n      Object.keys(this.reqs).forEach(uid => this.clean(uid));\n    }\n  }\n\n  private http = inject(HttpClient, { optional: true });\n  private elementRef = inject(ElementRef);\n  private destroyRef = inject(DestroyRef);\n\n  constructor() {\n    if (!this.http) {\n      throw new Error(\n        `Not found 'HttpClient', You can configure 'HttpClient' with 'provideHttpClient()' in your root module.`\n      );\n    }\n    this.destroyRef.onDestroy(() => {\n      this.destroyed = true;\n      this.abort();\n    });\n  }\n\n  ngOnInit(): void {\n    // Caretaker note: `input[type=file].click()` will open a native OS file picker,\n    // it doesn't require Angular to run `ApplicationRef.tick()`.\n    fromEventOutsideAngular(this.elementRef.nativeElement, 'click')\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(() => this.onClick());\n\n    fromEventOutsideAngular<KeyboardEvent>(this.elementRef.nativeElement, 'keydown')\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(event => {\n        if (this.options.disabled) {\n          return;\n        }\n        if (event.key === 'Enter' || event.keyCode === ENTER) {\n          this.onClick();\n        }\n      });\n  }\n}\n","<!--\n  We explicitly bind `style.display` to avoid using an inline style\n  attribute property (which is not allowed when CSP `unsafe-inline`\n  is not specified).\n-->\n<input\n  type=\"file\"\n  #file\n  (change)=\"onChange($event)\"\n  [attr.accept]=\"options.accept\"\n  [attr.directory]=\"options.directory ? 'directory' : null\"\n  [attr.webkitdirectory]=\"options.directory ? 'webkitdirectory' : null\"\n  [multiple]=\"options.multiple\"\n  [style.display]=\"'none'\"\n/>\n<ng-content />\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Directionality } from '@angular/cdk/bidi';\nimport { Platform } from '@angular/cdk/platform';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  computed,\n  DestroyRef,\n  DOCUMENT,\n  inject,\n  input,\n  Input,\n  NgZone,\n  OnChanges,\n  ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { NzButtonModule } from 'ng-zorro-antd/button';\nimport { withAnimationCheck } from 'ng-zorro-antd/core/animation';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { fromEventOutsideAngular, generateClassName } from 'ng-zorro-antd/core/util';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzProgressModule } from 'ng-zorro-antd/progress';\nimport { NzTooltipModule } from 'ng-zorro-antd/tooltip';\n\nimport { NzIconRenderTemplate, NzShowUploadList, NzUploadFile, NzUploadListType } from './interface';\n\nconst isImageFileType = (type: string): boolean => !!type && type.indexOf('image/') === 0;\n\nconst CLASS_NAME = 'ant-upload-list';\nconst MEASURE_SIZE = 200;\n\ntype UploadListIconType = '' | 'uploading' | 'thumbnail';\n\ninterface UploadListFile extends NzUploadFile {\n  isImageUrl?: boolean;\n  isUploading?: boolean;\n  iconType?: UploadListIconType;\n  showDownload?: boolean;\n}\n\n@Component({\n  selector: 'nz-upload-list',\n  exportAs: 'nzUploadList',\n  templateUrl: './upload-list.component.html',\n  host: {\n    '[class]': 'class()'\n  },\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [NzTooltipModule, NgTemplateOutlet, NzIconModule, NzButtonModule, NzProgressModule]\n})\nexport class NzUploadListComponent implements OnChanges {\n  list: UploadListFile[] = [];\n\n  readonly listType = input<NzUploadListType>('text');\n  @Input() locale: NzSafeAny = {};\n  @Input()\n  set items(list: NzUploadFile[]) {\n    this.list = list;\n  }\n  @Input() icons!: NzShowUploadList;\n  @Input() onPreview?: (file: NzUploadFile) => void;\n  @Input() onRemove!: (file: NzUploadFile) => void;\n  @Input() onDownload?: (file: NzUploadFile) => void;\n  @Input() previewFile?: (file: NzUploadFile) => Observable<string>;\n  @Input() previewIsImage?: (file: NzUploadFile) => boolean;\n  @Input() iconRender: NzIconRenderTemplate | null = null;\n\n  private readonly document = inject(DOCUMENT);\n  private readonly destroyRef = inject(DestroyRef);\n  private readonly ngZone = inject(NgZone);\n  private readonly cdr = inject(ChangeDetectorRef);\n  private readonly platform = inject(Platform);\n  private readonly dir = inject(Directionality).valueSignal;\n\n  protected readonly class = computed(() => {\n    const cls = [CLASS_NAME, this.generateClass(this.listType())];\n    if (this.dir() === 'rtl') {\n      cls.push(this.generateClass('rtl'));\n    }\n    return cls;\n  });\n  private readonly showPic = computed(() => {\n    return this.listType() === 'picture' || this.listType() === 'picture-card';\n  });\n\n  protected readonly itemAnimationEnter = withAnimationCheck(\n    () => `ant-upload-${this.showPic() ? 'animate-inline' : 'animate'}-enter`\n  );\n  protected readonly itemAnimationLeave = withAnimationCheck(\n    () => `ant-upload-${this.showPic() ? 'animate-inline' : 'animate'}-leave`\n  );\n\n  private genErr(file: NzUploadFile): string {\n    if (file.response && typeof file.response === 'string') {\n      return file.response;\n    }\n    return (file.error && file.error.statusText) || this.locale.uploadError;\n  }\n\n  private extname(url: string): string {\n    const temp = url.split('/');\n    const filename = temp[temp.length - 1];\n    const filenameWithoutSuffix = filename.split(/#|\\?/)[0];\n    return (/\\.[^./\\\\]*$/.exec(filenameWithoutSuffix) || [''])[0];\n  }\n\n  isImageUrl(file: NzUploadFile): boolean {\n    if (isImageFileType(file.type!)) {\n      return true;\n    }\n    const url: string = (file.thumbUrl || file.url || '') as string;\n    if (!url) {\n      return false;\n    }\n    const extension = this.extname(url);\n    if (/^data:image\\//.test(url) || /(webp|svg|png|gif|jpg|jpeg|jfif|bmp|dpg)$/i.test(extension)) {\n      return true;\n    } else if (/^data:/.test(url)) {\n      // other file types of base64\n      return false;\n    } else if (extension) {\n      // other file types which have extension\n      return false;\n    }\n    return true;\n  }\n\n  private getIconType(file: UploadListFile): UploadListIconType {\n    if (!this.showPic()) {\n      return '';\n    }\n    if (file.isUploading || (!file.thumbUrl && !file.url)) {\n      return 'uploading';\n    } else {\n      return 'thumbnail';\n    }\n  }\n\n  private previewImage(file: File | Blob): Observable<string> {\n    if (!isImageFileType(file.type) || !this.platform.isBrowser) {\n      return of('');\n    }\n\n    const canvas = this.document.createElement('canvas');\n    canvas.width = MEASURE_SIZE;\n    canvas.height = MEASURE_SIZE;\n    canvas.style.cssText = `position: fixed; left: 0; top: 0; width: ${MEASURE_SIZE}px; height: ${MEASURE_SIZE}px; z-index: 9999; display: none;`;\n    this.document.body.appendChild(canvas);\n    const ctx = canvas.getContext('2d');\n    const img = new Image();\n    const objectUrl = URL.createObjectURL(file);\n    img.src = objectUrl;\n    return fromEventOutsideAngular(img, 'load').pipe(\n      map(() => {\n        const { width, height } = img;\n\n        let drawWidth = MEASURE_SIZE;\n        let drawHeight = MEASURE_SIZE;\n        let offsetX = 0;\n        let offsetY = 0;\n\n        if (width < height) {\n          drawHeight = height * (MEASURE_SIZE / width);\n          offsetY = -(drawHeight - drawWidth) / 2;\n        } else {\n          drawWidth = width * (MEASURE_SIZE / height);\n          offsetX = -(drawWidth - drawHeight) / 2;\n        }\n\n        try {\n          ctx!.drawImage(img, offsetX, offsetY, drawWidth, drawHeight);\n        } catch {\n          // noop\n        }\n        const dataURL = canvas.toDataURL();\n        this.document.body.removeChild(canvas);\n\n        URL.revokeObjectURL(objectUrl);\n        return dataURL;\n      })\n    );\n  }\n\n  private genThumb(): void {\n    if (!this.platform.isBrowser) {\n      return;\n    }\n\n    const win = window as NzSafeAny;\n    if (\n      !this.showPic() ||\n      typeof document === 'undefined' ||\n      typeof win === 'undefined' ||\n      !win.FileReader ||\n      !win.File\n    ) {\n      return;\n    }\n    this.list\n      .filter(file => file.originFileObj instanceof File && file.thumbUrl === undefined)\n      .forEach(file => {\n        file.thumbUrl = '';\n        // Caretaker note: we shouldn't use promises here since they're not cancellable.\n        // A promise microtask can be resolved after the view is destroyed. Thus, running `detectChanges()`\n        // will cause a runtime exception (`detectChanges()` cannot be run on destroyed views).\n        const dataUrl$ = (this.previewFile ? this.previewFile(file) : this.previewImage(file.originFileObj!)).pipe(\n          takeUntilDestroyed(this.destroyRef)\n        );\n        this.ngZone.runOutsideAngular(() => {\n          dataUrl$.subscribe(dataUrl => {\n            this.ngZone.run(() => {\n              file.thumbUrl = dataUrl;\n              this.detectChanges();\n            });\n          });\n        });\n      });\n  }\n\n  private showDownload(file: NzUploadFile): boolean {\n    return !!(this.icons.showDownloadIcon && file.status === 'done');\n  }\n\n  private fixData(): void {\n    this.list.forEach(file => {\n      file.isUploading = file.status === 'uploading';\n      file.message = this.genErr(file);\n      file.linkProps = typeof file.linkProps === 'string' ? JSON.parse(file.linkProps) : file.linkProps;\n      file.isImageUrl = this.previewIsImage ? this.previewIsImage(file) : this.isImageUrl(file);\n      file.iconType = this.getIconType(file);\n      file.showDownload = this.showDownload(file);\n    });\n  }\n\n  handlePreview(file: NzUploadFile, e: Event): void {\n    if (!this.onPreview) {\n      return;\n    }\n\n    e.preventDefault();\n    return this.onPreview(file);\n  }\n\n  handleRemove(file: NzUploadFile, e: Event): void {\n    e.preventDefault();\n    if (this.onRemove) {\n      this.onRemove(file);\n    }\n  }\n\n  handleDownload(file: NzUploadFile): void {\n    if (typeof this.onDownload === 'function') {\n      this.onDownload(file);\n    } else if (file.url) {\n      window.open(file.url);\n    }\n  }\n\n  detectChanges(): void {\n    this.fixData();\n    this.cdr.detectChanges();\n  }\n\n  ngOnChanges(): void {\n    this.fixData();\n    this.genThumb();\n  }\n\n  private generateClass(suffix: string): string {\n    return generateClassName(CLASS_NAME, suffix);\n  }\n}\n","@let _listType = listType();\n@for (file of list; track file) {\n  <div class=\"ant-upload-list-{{ _listType }}-container\">\n    <div\n      class=\"ant-upload-list-item ant-upload-list-item-{{ file.status }} ant-upload-list-item-list-type-{{ _listType }}\"\n      [attr.data-key]=\"file.key\"\n      [animate.enter]=\"itemAnimationEnter()\"\n      [animate.leave]=\"itemAnimationLeave()\"\n      nz-tooltip\n      [nzTooltipTitle]=\"file.status === 'error' ? file.message : null\"\n    >\n      <ng-template #icon>\n        @switch (file.iconType) {\n          @case ('uploading') {\n            <div class=\"ant-upload-list-item-thumbnail\" [class.ant-upload-list-item-file]=\"!file.isUploading\">\n              <ng-template [ngTemplateOutlet]=\"iconNode\" [ngTemplateOutletContext]=\"{ $implicit: file }\" />\n            </div>\n          }\n          @case ('thumbnail') {\n            <a\n              class=\"ant-upload-list-item-thumbnail\"\n              [class.ant-upload-list-item-file]=\"!file.isImageUrl\"\n              target=\"_blank\"\n              rel=\"noopener noreferrer\"\n              [href]=\"file.url || file.thumbUrl\"\n              (click)=\"handlePreview(file, $event)\"\n            >\n              @if (file.isImageUrl) {\n                <img class=\"ant-upload-list-item-image\" [src]=\"file.thumbUrl || file.url\" [attr.alt]=\"file.name\" />\n              } @else {\n                <ng-template [ngTemplateOutlet]=\"iconNode\" [ngTemplateOutletContext]=\"{ $implicit: file }\" />\n              }\n            </a>\n          }\n          @default {\n            <div class=\"ant-upload-text-icon\">\n              <ng-template [ngTemplateOutlet]=\"iconNode\" [ngTemplateOutletContext]=\"{ $implicit: file }\" />\n            </div>\n          }\n        }\n      </ng-template>\n\n      <ng-template #iconNode let-file>\n        @if (!iconRender) {\n          @switch (_listType) {\n            @case ('picture') {\n              @if (file.isUploading) {\n                <nz-icon nzType=\"loading\" />\n              } @else {\n                <nz-icon [nzType]=\"file.isImageUrl ? 'picture' : 'file'\" nzTheme=\"twotone\" />\n              }\n            }\n            @case ('picture-card') {\n              @if (file.isUploading) {\n                {{ locale.uploading }}\n              } @else {\n                <nz-icon [nzType]=\"file.isImageUrl ? 'picture' : 'file'\" nzTheme=\"twotone\" />\n              }\n            }\n            @default {\n              <nz-icon [nzType]=\"file.isUploading ? 'loading' : 'paper-clip'\" />\n            }\n          }\n        } @else {\n          <ng-template [ngTemplateOutlet]=\"iconRender\" [ngTemplateOutletContext]=\"{ $implicit: file }\" />\n        }\n      </ng-template>\n\n      <ng-template #removeIcon>\n        @if (icons.showRemoveIcon) {\n          <button\n            type=\"button\"\n            nz-button\n            nzType=\"text\"\n            nzSize=\"small\"\n            (click)=\"handleRemove(file, $event)\"\n            [attr.title]=\"locale.removeFile\"\n            class=\"ant-upload-list-item-card-actions-btn\"\n          >\n            <nz-icon nzType=\"delete\" />\n          </button>\n        }\n      </ng-template>\n\n      <ng-template #downloadIcon>\n        @if (file.showDownload) {\n          <button\n            type=\"button\"\n            nz-button\n            nzType=\"text\"\n            nzSize=\"small\"\n            (click)=\"handleDownload(file)\"\n            [attr.title]=\"locale.downloadFile\"\n            class=\"ant-upload-list-item-card-actions-btn\"\n          >\n            <nz-icon nzType=\"download\" />\n          </button>\n        }\n      </ng-template>\n\n      <ng-template #downloadOrDelete>\n        @if (_listType !== 'picture-card') {\n          <span class=\"ant-upload-list-item-card-actions\" [class.picture]=\"_listType === 'picture'\">\n            <ng-template [ngTemplateOutlet]=\"downloadIcon\" />\n            <ng-template [ngTemplateOutlet]=\"removeIcon\" />\n          </span>\n        }\n      </ng-template>\n\n      <ng-template #preview>\n        @if (file.url) {\n          <a\n            target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            class=\"ant-upload-list-item-name\"\n            [attr.title]=\"file.name\"\n            [href]=\"file.url\"\n            [attr.download]=\"file.linkProps && file.linkProps.download\"\n            (click)=\"handlePreview(file, $event)\"\n          >\n            {{ file.name }}\n          </a>\n        } @else {\n          <span class=\"ant-upload-list-item-name\" [attr.title]=\"file.name\" (click)=\"handlePreview(file, $event)\">\n            {{ file.name }}\n          </span>\n        }\n        <ng-template [ngTemplateOutlet]=\"downloadOrDelete\" />\n      </ng-template>\n\n      <div class=\"ant-upload-list-item-info\">\n        <span class=\"ant-upload-span\">\n          <ng-template [ngTemplateOutlet]=\"icon\" />\n          <ng-template [ngTemplateOutlet]=\"preview\" />\n        </span>\n      </div>\n      @if (!file.isUploading) {\n        @if (_listType === 'picture-card') {\n          <span class=\"ant-upload-list-item-actions\">\n            @if (icons.showPreviewIcon) {\n              <a\n                [href]=\"file.url || file.thumbUrl\"\n                target=\"_blank\"\n                rel=\"noopener noreferrer\"\n                [attr.title]=\"locale.previewFile\"\n                [style]=\"!(file.url || file.thumbUrl) ? { opacity: 0.5, 'pointer-events': 'none' } : null\"\n                (click)=\"handlePreview(file, $event)\"\n              >\n                <nz-icon nzType=\"eye\" />\n              </a>\n            }\n            @if (file.status === 'done') {\n              <ng-template [ngTemplateOutlet]=\"downloadIcon\" />\n            }\n            <ng-template [ngTemplateOutlet]=\"removeIcon\" />\n          </span>\n        }\n      } @else {\n        <div class=\"ant-upload-list-item-progress\">\n          <nz-progress [nzPercent]=\"file.percent!\" nzType=\"line\" [nzShowInfo]=\"false\" [nzStrokeWidth]=\"2\" />\n        </div>\n      }\n    </div>\n  </div>\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Directionality } from '@angular/cdk/bidi';\nimport { Platform } from '@angular/cdk/platform';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n  AfterViewInit,\n  booleanAttribute,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  DestroyRef,\n  DOCUMENT,\n  EventEmitter,\n  inject,\n  input,\n  Input,\n  numberAttribute,\n  OnChanges,\n  OnInit,\n  Output,\n  signal,\n  TemplateRef,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Observable, of, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { BooleanInput, NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { fromEventOutsideAngular, generateClassName, toBoolean } from 'ng-zorro-antd/core/util';\nimport { NzI18nService, NzUploadI18nInterface } from 'ng-zorro-antd/i18n';\n\nimport {\n  NzIconRenderTemplate,\n  NzShowUploadList,\n  NzUploadChangeParam,\n  NzUploadFile,\n  NzUploadListType,\n  NzUploadTransformFileType,\n  NzUploadType,\n  NzUploadXHRArgs,\n  UploadFilter,\n  ZipButtonOptions,\n  type NzBeforeUploadFileType\n} from './interface';\nimport { NzUploadBtnComponent } from './upload-btn.component';\nimport { NzUploadListComponent } from './upload-list.component';\n\nconst CLASS_NAME = 'ant-upload';\n\n@Component({\n  selector: 'nz-upload',\n  exportAs: 'nzUpload',\n  templateUrl: './upload.component.html',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    '[class.ant-upload-picture-card-wrapper]': 'nzListType === \"picture-card\"'\n  },\n  imports: [NzUploadListComponent, NgTemplateOutlet, NzUploadBtnComponent]\n})\nexport class NzUploadComponent implements OnInit, AfterViewInit, OnChanges {\n  static ngAcceptInputType_nzShowUploadList: BooleanInput | NzShowUploadList;\n\n  private readonly cdr = inject(ChangeDetectorRef);\n  private readonly i18n = inject(NzI18nService);\n  private readonly destroyRef = inject(DestroyRef);\n  private readonly document = inject(DOCUMENT);\n  private readonly platform = inject(Platform);\n  protected readonly dir = inject(Directionality).valueSignal;\n\n  @ViewChild('uploadComp', { static: false }) uploadComp!: NzUploadBtnComponent;\n  @ViewChild('listComp', { static: false }) listComp!: NzUploadListComponent;\n\n  locale!: NzUploadI18nInterface;\n\n  // #region fields\n\n  @Input() nzType: NzUploadType = 'select';\n  @Input({ transform: numberAttribute }) nzLimit = 0;\n  @Input({ transform: numberAttribute }) nzSize = 0;\n\n  @Input() nzFileType?: string;\n  @Input() nzAccept?: string | string[];\n  @Input() nzAction?: string | ((file: NzUploadFile) => string | Observable<string>);\n  @Input({ transform: booleanAttribute }) nzDirectory = false;\n  @Input({ transform: booleanAttribute }) nzOpenFileDialogOnClick = true;\n  @Input() nzBeforeUpload?: (file: NzUploadFile, fileList: NzUploadFile[]) => NzBeforeUploadFileType;\n  @Input() nzCustomRequest?: (item: NzUploadXHRArgs) => Subscription;\n  @Input() nzData?: {} | ((file: NzUploadFile) => {} | Observable<{}>);\n  @Input() nzFilter: UploadFilter[] = [];\n  @Input() nzFileList: NzUploadFile[] = [];\n  @Input({ transform: booleanAttribute }) nzDisabled = false;\n  @Input() nzHeaders?: {} | ((file: NzUploadFile) => {} | Observable<{}>);\n  @Input() nzListType: NzUploadListType = 'text';\n  @Input({ transform: booleanAttribute }) nzMultiple = false;\n  @Input() nzName = 'file';\n\n  private _showUploadList: boolean | NzShowUploadList = true;\n\n  @Input()\n  set nzShowUploadList(value: boolean | NzShowUploadList) {\n    this._showUploadList = typeof value === 'boolean' ? toBoolean(value) : value;\n  }\n\n  get nzShowUploadList(): boolean | NzShowUploadList {\n    return this._showUploadList;\n  }\n\n  @Input({ transform: booleanAttribute }) nzShowButton = true;\n  @Input({ transform: booleanAttribute }) nzWithCredentials = false;\n\n  @Input() nzRemove?: (file: NzUploadFile) => boolean | Observable<boolean>;\n  @Input() nzPreview?: (file: NzUploadFile) => void;\n  @Input() nzPreviewFile?: (file: NzUploadFile) => Observable<string>;\n  @Input() nzPreviewIsImage?: (file: NzUploadFile) => boolean;\n  /**\n   * @deprecated will be removed in v22.0.0\n   * Use `nzBeforeUpload` instead.\n   */\n  @Input() nzTransformFile?: (file: NzUploadFile) => NzUploadTransformFileType;\n  @Input() nzDownload?: (file: NzUploadFile) => void;\n  @Input() nzIconRender: NzIconRenderTemplate | null = null;\n  @Input() nzFileListRender: TemplateRef<{ $implicit: NzUploadFile[] }> | null = null;\n\n  readonly nzMaxCount = input<number>();\n\n  @Output() readonly nzChange: EventEmitter<NzUploadChangeParam> = new EventEmitter<NzUploadChangeParam>();\n  @Output() readonly nzFileListChange: EventEmitter<NzUploadFile[]> = new EventEmitter<NzUploadFile[]>();\n\n  _btnOptions?: ZipButtonOptions;\n\n  private zipOptions(): this {\n    if (typeof this.nzShowUploadList === 'boolean' && this.nzShowUploadList) {\n      this.nzShowUploadList = {\n        showPreviewIcon: true,\n        showRemoveIcon: true,\n        showDownloadIcon: true\n      };\n    }\n    // filters\n    const filters: UploadFilter[] = this.nzFilter.slice();\n    if (this.nzMultiple && this.nzLimit > 0 && filters.findIndex(w => w.name === 'limit') === -1) {\n      filters.push({\n        name: 'limit',\n        fn: (fileList: NzUploadFile[]) => fileList.slice(-this.nzLimit)\n      });\n    }\n    if (this.nzSize > 0 && filters.findIndex(w => w.name === 'size') === -1) {\n      filters.push({\n        name: 'size',\n        fn: (fileList: NzUploadFile[]) => fileList.filter(w => w.size! / 1024 <= this.nzSize)\n      });\n    }\n    if (this.nzFileType && this.nzFileType.length > 0 && filters.findIndex(w => w.name === 'type') === -1) {\n      const types = this.nzFileType.split(',');\n      filters.push({\n        name: 'type',\n        fn: (fileList: NzUploadFile[]) => fileList.filter(w => ~types.indexOf(w.type!))\n      });\n    }\n    this._btnOptions = {\n      disabled: this.nzDisabled,\n      accept: this.nzAccept,\n      action: this.nzAction,\n      directory: this.nzDirectory,\n      openFileDialogOnClick: this.nzOpenFileDialogOnClick,\n      beforeUpload: this.nzBeforeUpload,\n      customRequest: this.nzCustomRequest,\n      data: this.nzData,\n      headers: this.nzHeaders,\n      name: this.nzName,\n      multiple: this.nzMultiple,\n      withCredentials: this.nzWithCredentials,\n      filters,\n      transformFile: this.nzTransformFile,\n      onStart: this.onStart,\n      onProgress: this.onProgress,\n      onSuccess: this.onSuccess,\n      onError: this.onError\n    };\n    return this;\n  }\n\n  // #endregion\n\n  // #region upload\n\n  private fileToObject(file: NzUploadFile): NzUploadFile {\n    return {\n      lastModified: file.lastModified,\n      lastModifiedDate: file.lastModifiedDate,\n      name: file.filename || file.name,\n      size: file.size,\n      type: file.type,\n      uid: file.uid,\n      response: file.response,\n      error: file.error,\n      percent: 0,\n      originFileObj: file as NzSafeAny\n    };\n  }\n\n  private getFileItem(file: NzUploadFile, fileList: NzUploadFile[]): NzUploadFile {\n    return fileList.filter(item => item.uid === file.uid)[0];\n  }\n\n  private removeFileItem(file: NzUploadFile, fileList: NzUploadFile[]): NzUploadFile[] {\n    return fileList.filter(item => item.uid !== file.uid);\n  }\n\n  private onStart = (file: NzUploadFile): void => {\n    const maxCount = this.nzMaxCount();\n    if (!this.nzFileList) {\n      this.nzFileList = [];\n    }\n    const targetItem = this.fileToObject(file);\n    targetItem.status = 'uploading';\n    if (maxCount === 1) {\n      this.nzFileList = [targetItem];\n    } else if (!maxCount || maxCount <= 0 || this.nzFileList.length < maxCount) {\n      this.nzFileList = [...this.nzFileList, targetItem];\n    }\n    this.nzFileListChange.emit(this.nzFileList);\n    this.nzChange.emit({ file: targetItem, fileList: this.nzFileList, type: 'start' });\n    this.detectChangesList();\n  };\n\n  private onProgress = (e: { percent: number }, file: NzUploadFile): void => {\n    const fileList = this.nzFileList;\n    const targetItem = this.getFileItem(file, fileList);\n\n    if (!targetItem) {\n      return;\n    }\n\n    targetItem.percent = e.percent;\n    this.nzChange.emit({\n      event: e,\n      file: targetItem,\n      fileList: this.nzFileList,\n      type: 'progress'\n    });\n    this.detectChangesList();\n  };\n\n  private onSuccess = (res: {}, file: NzUploadFile): void => {\n    const fileList = this.nzFileList;\n    const targetItem = this.getFileItem(file, fileList);\n    if (!targetItem) {\n      return;\n    }\n    targetItem.status = 'done';\n    targetItem.response = res;\n    this.nzChange.emit({\n      file: targetItem,\n      fileList,\n      type: 'success'\n    });\n    this.detectChangesList();\n  };\n\n  private onError = (err: {}, file: NzUploadFile): void => {\n    const fileList = this.nzFileList;\n    const targetItem = this.getFileItem(file, fileList);\n\n    if (!targetItem) {\n      return;\n    }\n\n    targetItem.error = err;\n    targetItem.status = 'error';\n    this.nzChange.emit({\n      file: { ...targetItem },\n      fileList,\n      type: 'error'\n    });\n    this.detectChangesList();\n  };\n\n  // #endregion\n\n  // #region drag\n\n  private dragState?: string;\n\n  // skip safari bug\n  fileDrop(e: DragEvent): void {\n    if (e.type === this.dragState) {\n      return;\n    }\n    this.dragState = e.type;\n    this.setClassMap();\n  }\n\n  // #endregion\n\n  // #region list\n\n  private detectChangesList(): void {\n    this.cdr.detectChanges();\n    this.listComp?.detectChanges();\n  }\n\n  onRemove = (file: NzUploadFile): void => {\n    this.uploadComp.abort(file);\n    file.status = 'removed';\n    const fnRes =\n      typeof this.nzRemove === 'function' ? this.nzRemove(file) : this.nzRemove == null ? true : this.nzRemove;\n    (fnRes instanceof Observable ? fnRes : of(fnRes)).pipe(filter((res: boolean) => res)).subscribe(() => {\n      this.nzFileList = this.removeFileItem(file, this.nzFileList);\n      this.nzChange.emit({\n        file,\n        fileList: this.nzFileList,\n        type: 'removed'\n      });\n      this.nzFileListChange.emit(this.nzFileList);\n      this.cdr.detectChanges();\n    });\n  };\n\n  // #endregion\n\n  // #region styles\n\n  protected readonly classList = signal<string[]>([]);\n\n  private setClassMap(): void {\n    let subCls: string[] = [];\n    if (this.nzType === 'drag') {\n      if (this.nzFileList.some(file => file.status === 'uploading')) {\n        subCls.push(this.generateClass('drag-uploading'));\n      }\n      if (this.dragState === 'dragover') {\n        subCls.push(this.generateClass('drag-hover'));\n      }\n    } else {\n      subCls = [this.generateClass(`select-${this.nzListType}`)];\n    }\n\n    if (this.nzDisabled) {\n      subCls.push(this.generateClass('disabled'));\n    }\n\n    this.classList.set([CLASS_NAME, this.generateClass(this.nzType), ...subCls]);\n  }\n\n  // #endregion\n\n  ngOnInit(): void {\n    this.i18n.localeChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n      this.locale = this.i18n.getLocaleData('Upload');\n      this.detectChangesList();\n    });\n  }\n\n  ngAfterViewInit(): void {\n    if (this.platform.FIREFOX) {\n      // fix firefox drop open new tab\n      fromEventOutsideAngular<MouseEvent>(this.document.body, 'drop')\n        .pipe(takeUntilDestroyed(this.destroyRef))\n        .subscribe(event => {\n          event.preventDefault();\n          event.stopPropagation();\n        });\n    }\n  }\n\n  ngOnChanges(): void {\n    this.zipOptions().setClassMap();\n  }\n\n  private generateClass(suffix: string): string {\n    return generateClassName(CLASS_NAME, suffix);\n  }\n}\n","<ng-template #list>\n  @if (locale && !nzFileListRender) {\n    <nz-upload-list\n      #listComp\n      [style.display]=\"nzShowUploadList ? '' : 'none'\"\n      [locale]=\"locale\"\n      [listType]=\"nzListType\"\n      [items]=\"nzFileList || []\"\n      [icons]=\"$any(nzShowUploadList)\"\n      [iconRender]=\"nzIconRender\"\n      [previewFile]=\"nzPreviewFile\"\n      [previewIsImage]=\"nzPreviewIsImage\"\n      [onPreview]=\"nzPreview\"\n      [onRemove]=\"onRemove\"\n      [onDownload]=\"nzDownload\"\n    />\n  }\n  @if (nzFileListRender) {\n    <ng-container *ngTemplateOutlet=\"nzFileListRender; context: { $implicit: nzFileList }\" />\n  }\n</ng-template>\n<ng-template #con><ng-content /></ng-template>\n<ng-template #btn>\n  <div [class]=\"classList()\" [class.ant-upload-rtl]=\"dir() === 'rtl'\" [style.display]=\"nzShowButton ? '' : 'none'\">\n    <div nz-upload-btn #uploadComp [options]=\"_btnOptions!\">\n      <ng-template [ngTemplateOutlet]=\"con\" />\n    </div>\n  </div>\n</ng-template>\n@if (nzType === 'drag') {\n  <div\n    [class]=\"classList()\"\n    [class.ant-upload-rtl]=\"dir() === 'rtl'\"\n    (drop)=\"fileDrop($event)\"\n    (dragover)=\"fileDrop($event)\"\n    (dragleave)=\"fileDrop($event)\"\n  >\n    <div nz-upload-btn #uploadComp [options]=\"_btnOptions!\" class=\"ant-upload-btn\">\n      <div class=\"ant-upload-drag-container\">\n        <ng-template [ngTemplateOutlet]=\"con\" />\n      </div>\n    </div>\n  </div>\n  <ng-template [ngTemplateOutlet]=\"list\" />\n} @else {\n  @if (nzListType === 'picture-card') {\n    <ng-template [ngTemplateOutlet]=\"list\" />\n    <ng-template [ngTemplateOutlet]=\"btn\" />\n  } @else {\n    <ng-template [ngTemplateOutlet]=\"btn\" />\n    <ng-template [ngTemplateOutlet]=\"list\" />\n  }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NzUploadBtnComponent } from './upload-btn.component';\nimport { NzUploadListComponent } from './upload-list.component';\nimport { NzUploadComponent } from './upload.component';\n\n@NgModule({\n  imports: [NzUploadComponent, NzUploadBtnComponent, NzUploadListComponent],\n  exports: [NzUploadComponent]\n})\nexport class NzUploadModule {}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport * from './interface';\nexport * from './upload-btn.component';\nexport * from './upload-list.component';\nexport * from './upload.component';\nexport * from './upload.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["CLASS_NAME"],"mappings":"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"}