{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/upload/src/index.vue"],"sourcesContent":["<script lang=\"ts\">\nimport {\n  computed,\n  defineComponent,\n  h,\n  getCurrentInstance,\n  inject,\n  ref,\n  provide,\n  onBeforeUnmount,\n} from 'vue'\nimport { NOOP } from '@vue/shared'\nimport { elFormKey } from '@element-plus/tokens'\n\nimport ajax from './ajax'\nimport UploadList from './upload-list.vue'\nimport Upload from './upload.vue'\nimport useHandlers from './useHandlers'\n\nimport type { PropType } from 'vue'\nimport type { ElFormContext } from '@element-plus/tokens'\nimport type { Nullable } from '@element-plus/utils'\nimport type {\n  ListType,\n  UploadFile,\n  FileHandler,\n  FileResultHandler,\n} from './upload.type'\n\ntype PFileHandler<T> = PropType<FileHandler<T>>\ntype PFileResultHandler<T = any> = PropType<FileResultHandler<T>>\n\nexport default defineComponent({\n  name: 'ElUpload',\n  components: {\n    Upload,\n    UploadList,\n  },\n  props: {\n    action: {\n      type: String,\n      required: true,\n    },\n    headers: {\n      type: Object as PropType<Headers>,\n      default: () => ({}),\n    },\n    method: {\n      type: String,\n      default: 'post',\n    },\n    data: {\n      type: Object,\n      default: () => ({}),\n    },\n    multiple: {\n      type: Boolean,\n      default: false,\n    },\n    name: {\n      type: String,\n      default: 'file',\n    },\n    drag: {\n      type: Boolean,\n      default: false,\n    },\n    withCredentials: Boolean,\n    showFileList: {\n      type: Boolean,\n      default: true,\n    },\n    accept: {\n      type: String,\n      default: '',\n    },\n    type: {\n      type: String,\n      default: 'select',\n    },\n    beforeUpload: {\n      type: Function as PFileHandler<void>,\n      default: NOOP,\n    },\n    beforeRemove: {\n      type: Function as PFileHandler<boolean>,\n      default: NOOP,\n    },\n    onRemove: {\n      type: Function as PFileHandler<void>,\n      default: NOOP,\n    },\n    onChange: {\n      type: Function as PFileHandler<void>,\n      default: NOOP,\n    },\n    onPreview: {\n      type: Function as PropType<() => void>,\n      default: NOOP,\n    },\n    onSuccess: {\n      type: Function as PFileResultHandler,\n      default: NOOP,\n    },\n    onProgress: {\n      type: Function as PFileResultHandler<ProgressEvent>,\n      default: NOOP,\n    },\n    onError: {\n      type: Function as PFileResultHandler<Error>,\n      default: NOOP,\n    },\n    fileList: {\n      type: Array as PropType<UploadFile[]>,\n      default: () => {\n        return [] as UploadFile[]\n      },\n    },\n    autoUpload: {\n      type: Boolean,\n      default: true,\n    },\n    listType: {\n      type: String as PropType<ListType>,\n      default: 'text' as ListType, // text,picture,picture-card\n    },\n    httpRequest: {\n      type: Function,\n      default: ajax,\n    },\n    disabled: Boolean,\n    limit: {\n      type: Number as PropType<Nullable<number>>,\n      default: null,\n    },\n    onExceed: {\n      type: Function,\n      default: () => NOOP,\n    },\n  },\n  setup(props) {\n    const elForm = inject(elFormKey, {} as ElFormContext)\n\n    const uploadDisabled = computed(() => {\n      return props.disabled || elForm.disabled\n    })\n\n    const {\n      abort,\n      clearFiles,\n      handleError,\n      handleProgress,\n      handleStart,\n      handleSuccess,\n      handleRemove,\n      submit,\n      uploadRef,\n      uploadFiles,\n    } = useHandlers(props)\n\n    provide('uploader', getCurrentInstance())\n\n    onBeforeUnmount(() => {\n      uploadFiles.value.forEach((file) => {\n        if (file.url && file.url.indexOf('blob:') === 0) {\n          URL.revokeObjectURL(file.url)\n        }\n      })\n    })\n\n    return {\n      abort,\n      dragOver: ref(false),\n      draging: ref(false),\n      handleError,\n      handleProgress,\n      handleRemove,\n      handleStart,\n      handleSuccess,\n      uploadDisabled,\n      uploadFiles,\n      uploadRef,\n      submit,\n      clearFiles,\n    }\n  },\n  render() {\n    let uploadList\n    if (this.showFileList) {\n      uploadList = h(\n        UploadList,\n        {\n          disabled: this.uploadDisabled,\n          listType: this.listType,\n          files: this.uploadFiles,\n          onRemove: this.handleRemove,\n          handlePreview: this.onPreview,\n        },\n        this.$slots.file\n          ? {\n              default: (props: { file: UploadFile }) => {\n                return this.$slots.file({\n                  file: props.file,\n                })\n              },\n            }\n          : null\n      )\n    } else {\n      uploadList = null\n    }\n\n    const uploadData = {\n      type: this.type,\n      drag: this.drag,\n      action: this.action,\n      multiple: this.multiple,\n      'before-upload': this.beforeUpload,\n      'with-credentials': this.withCredentials,\n      headers: this.headers,\n      method: this.method,\n      name: this.name,\n      data: this.data,\n      accept: this.accept,\n      fileList: this.uploadFiles,\n      autoUpload: this.autoUpload,\n      listType: this.listType,\n      disabled: this.uploadDisabled,\n      limit: this.limit,\n      'on-exceed': this.onExceed,\n      'on-start': this.handleStart,\n      'on-progress': this.handleProgress,\n      'on-success': this.handleSuccess,\n      'on-error': this.handleError,\n      'on-preview': this.onPreview,\n      'on-remove': this.handleRemove,\n      'http-request': this.httpRequest,\n      ref: 'uploadRef',\n    }\n    const trigger = this.$slots.trigger || this.$slots.default\n    const uploadComponent = h(Upload, uploadData, {\n      default: () => trigger?.(),\n    })\n    return h('div', [\n      this.listType === 'picture-card' ? uploadList : null,\n      this.$slots.trigger\n        ? [uploadComponent, this.$slots.default()]\n        : uploadComponent,\n      this.$slots.tip?.(),\n      this.listType !== 'picture-card' ? uploadList : null,\n    ])\n  },\n})\n</script>\n"],"names":["ajax"],"mappings":"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"}