{"version":3,"file":"index.vue2.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 { formKey } from '@element-ultra/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 { FormContext } from '@element-ultra/tokens'\nimport type { Nullable } from '@element-ultra/utils'\nimport type {\n  ListType,\n  UploadFile,\n  FileHandler,\n  FileResultHandler\n} from './upload.type'\nimport { useDisabled } from '@element-ultra/hooks'\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: {\n      type: Boolean,\n      default: undefined\n    },\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\n    const uploadDisabled = useDisabled({ props })\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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"}