{"version":3,"file":"upload2.mjs","sources":["../../../../../../packages/components/upload/src/upload.ts"],"sourcesContent":["import { NOOP } from '@vue/shared'\r\nimport { buildProps, definePropType, mutable } from '@sgui-plus/utils'\r\nimport { ajaxUpload } from './ajax'\r\n\r\nimport type { UploadAjaxError } from './ajax'\r\nimport type { Awaitable } from '@sgui-plus/utils/types'\r\nimport type { ExtractPropTypes } from 'vue'\r\nimport type Upload from './upload.vue'\r\n\r\nexport const uploadListTypes = ['text', 'picture', 'picture-card'] as const\r\n\r\nlet fileId = 1\r\n\r\nexport const genFileId = () => Date.now() + fileId++\r\n\r\nexport type UploadStatus = 'ready' | 'uploading' | 'success' | 'fail'\r\n\r\nexport interface UploadProgressEvent extends ProgressEvent {\r\n  percent: number\r\n}\r\n\r\nexport interface UploadRequestOptions {\r\n  action: string\r\n  method: string\r\n  data: Record<string, string | Blob | [string | Blob, string]>\r\n  filename: string\r\n  file: File\r\n  headers: Headers | Record<string, string | number | null | undefined>\r\n  onError: (evt: UploadAjaxError) => void\r\n  onProgress: (evt: UploadProgressEvent) => void\r\n  onSuccess: (response: any) => void\r\n  withCredentials: boolean\r\n}\r\n\r\nexport interface UploadFile {\r\n  name: string\r\n  percentage?: number\r\n  status: UploadStatus\r\n  size?: number\r\n  response?: unknown\r\n  uid: number\r\n  url?: string\r\n  raw?: UploadRawFile\r\n}\r\n\r\nexport type UploadUserFile = Omit<UploadFile, 'status' | 'uid'> &\r\n  Partial<Pick<UploadFile, 'status' | 'uid'>>\r\n\r\nexport type UploadFiles = UploadFile[]\r\n\r\nexport interface UploadRawFile extends File {\r\n  uid: number\r\n}\r\nexport type UploadRequestHandler = (\r\n  options: UploadRequestOptions\r\n) => XMLHttpRequest | Promise<unknown>\r\n\r\nexport interface UploadHooks {\r\n  beforeUpload: (\r\n    rawFile: UploadRawFile\r\n  ) => Awaitable<void | undefined | null | boolean | File | Blob>\r\n  beforeRemove: (\r\n    uploadFile: UploadFile,\r\n    uploadFiles: UploadFiles\r\n  ) => Awaitable<boolean>\r\n  onRemove: (uploadFile: UploadFile, uploadFiles: UploadFiles) => void\r\n  onChange: (uploadFile: UploadFile, uploadFiles: UploadFiles) => void\r\n  onPreview: (uploadFile: UploadFile) => void\r\n  onSuccess: (\r\n    response: any,\r\n    uploadFile: UploadFile,\r\n    uploadFiles: UploadFiles\r\n  ) => void\r\n  onProgress: (\r\n    evt: UploadProgressEvent,\r\n    uploadFile: UploadFile,\r\n    uploadFiles: UploadFiles\r\n  ) => void\r\n  onError: (\r\n    error: Error,\r\n    uploadFile: UploadFile,\r\n    uploadFiles: UploadFiles\r\n  ) => void\r\n  onExceed: (files: File[], uploadFiles: UploadUserFile[]) => void\r\n}\r\n\r\nexport const uploadBaseProps = buildProps({\r\n  action: {\r\n    type: String,\r\n    default: '#',\r\n  },\r\n  headers: {\r\n    type: definePropType<Headers | Record<string, any>>(Object),\r\n  },\r\n  method: {\r\n    type: String,\r\n    default: 'post',\r\n  },\r\n  data: {\r\n    type: Object,\r\n    default: () => mutable({} as const),\r\n  },\r\n  multiple: {\r\n    type: Boolean,\r\n    default: false,\r\n  },\r\n  name: {\r\n    type: String,\r\n    default: 'file',\r\n  },\r\n  drag: {\r\n    type: Boolean,\r\n    default: false,\r\n  },\r\n  withCredentials: Boolean,\r\n  showFileList: {\r\n    type: Boolean,\r\n    default: true,\r\n  },\r\n  accept: {\r\n    type: String,\r\n    default: '',\r\n  },\r\n  type: {\r\n    type: String,\r\n    default: 'select',\r\n  },\r\n  fileList: {\r\n    type: definePropType<UploadUserFile[]>(Array),\r\n    default: () => mutable([] as const),\r\n  },\r\n  autoUpload: {\r\n    type: Boolean,\r\n    default: true,\r\n  },\r\n  listType: {\r\n    type: String,\r\n    values: uploadListTypes,\r\n    default: 'text',\r\n  },\r\n  httpRequest: {\r\n    type: definePropType<UploadRequestHandler>(Function),\r\n    default: ajaxUpload,\r\n  },\r\n  disabled: Boolean,\r\n  limit: Number,\r\n  placeholder: {\r\n    type: String,\r\n    default: '请选择上传文件'\r\n  },\r\n  directory: {\r\n    type: Boolean,\r\n    default: false\r\n  }\r\n} as const)\r\n\r\nexport const uploadProps = buildProps({\r\n  ...uploadBaseProps,\r\n  beforeUpload: {\r\n    type: definePropType<UploadHooks['beforeUpload']>(Function),\r\n    default: NOOP,\r\n  },\r\n  beforeRemove: {\r\n    type: definePropType<UploadHooks['beforeRemove']>(Function),\r\n  },\r\n  onRemove: {\r\n    type: definePropType<UploadHooks['onRemove']>(Function),\r\n    default: NOOP,\r\n  },\r\n  onChange: {\r\n    type: definePropType<UploadHooks['onChange']>(Function),\r\n    default: NOOP,\r\n  },\r\n  onPreview: {\r\n    type: definePropType<UploadHooks['onPreview']>(Function),\r\n    default: NOOP,\r\n  },\r\n  onSuccess: {\r\n    type: definePropType<UploadHooks['onSuccess']>(Function),\r\n    default: NOOP,\r\n  },\r\n  onProgress: {\r\n    type: definePropType<UploadHooks['onProgress']>(Function),\r\n    default: NOOP,\r\n  },\r\n  onError: {\r\n    type: definePropType<UploadHooks['onError']>(Function),\r\n    default: NOOP,\r\n  },\r\n  onExceed: {\r\n    type: definePropType<UploadHooks['onExceed']>(Function),\r\n    default: NOOP,\r\n  },\r\n} as const)\r\n\r\nexport type UploadProps = ExtractPropTypes<typeof uploadProps>\r\n\r\nexport type UploadInstance = InstanceType<typeof Upload>\r\n"],"names":[],"mappings":"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"}