使用VUE重构项目
Some checks failed
build / build (api, amd64, linux) (push) Failing after -51s
build / build (api, arm64, linux) (push) Failing after -52s
build / build (api.exe, amd64, windows) (push) Failing after -51s

This commit is contained in:
2026-04-20 00:19:11 +08:00
parent c080bb8d4a
commit db7f1ba82f
12743 changed files with 1250466 additions and 359982 deletions

View File

@@ -0,0 +1,13 @@
import { SFCWithInstall } from "../../utils/vue/typescript.js";
import "../../utils/index.js";
import { Crossorigin, ListType, UploadBaseProps, UploadData, UploadFile, UploadFiles, UploadHooks, UploadInstance, UploadProgressEvent, UploadProps, UploadPropsPublic, UploadRawFile, UploadRequestHandler, UploadRequestOptions, UploadStatus, UploadUserFile, genFileId, uploadBaseProps, uploadBasePropsDefaults, uploadListTypes, uploadProps, uploadPropsDefaults } from "./src/upload.js";
import { _default } from "./src/upload.vue.js";
import { UploadContentInstance, UploadContentProps, UploadContentPropsPublic, uploadContentProps, uploadContentPropsDefaults } from "./src/upload-content.js";
import { UploadListEmits, UploadListInstance, UploadListProps, UploadListPropsPublic, uploadListEmits, uploadListProps } from "./src/upload-list.js";
import { UploadDraggerEmits, UploadDraggerInstance, UploadDraggerProps, UploadDraggerPropsPublic, uploadDraggerEmits, uploadDraggerProps } from "./src/upload-dragger.js";
import { UploadContext, uploadContextKey } from "./src/constants.js";
//#region ../../packages/components/upload/index.d.ts
declare const ElUpload: SFCWithInstall<typeof _default>;
//#endregion
export { Crossorigin, ElUpload, ElUpload as default, ListType, UploadBaseProps, UploadContentInstance, UploadContentProps, UploadContentPropsPublic, UploadContext, UploadData, UploadDraggerEmits, UploadDraggerInstance, UploadDraggerProps, UploadDraggerPropsPublic, UploadFile, UploadFiles, UploadHooks, UploadInstance, UploadListEmits, UploadListInstance, UploadListProps, UploadListPropsPublic, UploadProgressEvent, UploadProps, UploadPropsPublic, UploadRawFile, UploadRequestHandler, UploadRequestOptions, UploadStatus, UploadUserFile, genFileId, uploadBaseProps, uploadBasePropsDefaults, uploadContentProps, uploadContentPropsDefaults, uploadContextKey, uploadDraggerEmits, uploadDraggerProps, uploadListEmits, uploadListProps, uploadListTypes, uploadProps, uploadPropsDefaults };

View File

@@ -0,0 +1,29 @@
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
const require_install = require('../../utils/vue/install.js');
const require_upload = require('./src/upload.js');
const require_constants = require('./src/constants.js');
const require_upload_list = require('./src/upload-list.js');
const require_upload_content = require('./src/upload-content.js');
const require_upload_dragger = require('./src/upload-dragger.js');
const require_upload$1 = require('./src/upload2.js');
//#region ../../packages/components/upload/index.ts
const ElUpload = require_install.withInstall(require_upload$1.default);
//#endregion
exports.ElUpload = ElUpload;
exports.default = ElUpload;
exports.genFileId = require_upload.genFileId;
exports.uploadBaseProps = require_upload.uploadBaseProps;
exports.uploadBasePropsDefaults = require_upload.uploadBasePropsDefaults;
exports.uploadContentProps = require_upload_content.uploadContentProps;
exports.uploadContentPropsDefaults = require_upload_content.uploadContentPropsDefaults;
exports.uploadContextKey = require_constants.uploadContextKey;
exports.uploadDraggerEmits = require_upload_dragger.uploadDraggerEmits;
exports.uploadDraggerProps = require_upload_dragger.uploadDraggerProps;
exports.uploadListEmits = require_upload_list.uploadListEmits;
exports.uploadListProps = require_upload_list.uploadListProps;
exports.uploadListTypes = require_upload.uploadListTypes;
exports.uploadProps = require_upload.uploadProps;
exports.uploadPropsDefaults = require_upload.uploadPropsDefaults;
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.js","names":["withInstall","Upload"],"sources":["../../../../../packages/components/upload/index.ts"],"sourcesContent":["import { withInstall } from '@element-plus/utils'\nimport Upload from './src/upload.vue'\n\nimport type { SFCWithInstall } from '@element-plus/utils'\n\nexport const ElUpload: SFCWithInstall<typeof Upload> = withInstall(Upload)\nexport default ElUpload\n\nexport * from './src/upload'\nexport * from './src/upload-content'\nexport * from './src/upload-list'\nexport * from './src/upload-dragger'\nexport * from './src/constants'\n"],"mappings":";;;;;;;;;;AAKA,MAAa,WAA0CA,4BAAYC,yBAAO"}

View File

@@ -0,0 +1,12 @@
import "./upload.js";
//#region ../../packages/components/upload/src/ajax.d.ts
declare class UploadAjaxError extends Error {
name: string;
status: number;
method: string;
url: string;
constructor(message: string, status: number, method: string, url: string);
}
//#endregion
export { UploadAjaxError };

View File

@@ -0,0 +1,72 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_runtime = require('../../../_virtual/_rolldown/runtime.js');
const require_error = require('../../../utils/error.js');
let lodash_unified = require("lodash-unified");
let _vue_shared = require("@vue/shared");
//#region ../../packages/components/upload/src/ajax.ts
const SCOPE = "ElUpload";
var UploadAjaxError = class extends Error {
constructor(message, status, method, url) {
super(message);
this.name = "UploadAjaxError";
this.status = status;
this.method = method;
this.url = url;
}
};
function getError(action, option, xhr) {
let msg;
if (xhr.response) msg = `${xhr.response.error || xhr.response}`;
else if (xhr.responseText) msg = `${xhr.responseText}`;
else msg = `fail to ${option.method} ${action} ${xhr.status}`;
return new UploadAjaxError(msg, xhr.status, option.method, action);
}
function getBody(xhr) {
const text = xhr.responseText || xhr.response;
if (!text) return text;
try {
return JSON.parse(text);
} catch {
return text;
}
}
const ajaxUpload = (option) => {
if (typeof XMLHttpRequest === "undefined") require_error.throwError(SCOPE, "XMLHttpRequest is undefined");
const xhr = new XMLHttpRequest();
const action = option.action;
if (xhr.upload) xhr.upload.addEventListener("progress", (evt) => {
const progressEvt = evt;
progressEvt.percent = evt.total > 0 ? evt.loaded / evt.total * 100 : 0;
option.onProgress(progressEvt);
});
const formData = new FormData();
if (option.data) for (const [key, value] of Object.entries(option.data)) if ((0, _vue_shared.isArray)(value)) if (value.length === 2 && value[0] instanceof Blob && (0, _vue_shared.isString)(value[1])) formData.append(key, value[0], value[1]);
else value.forEach((item) => {
formData.append(key, item);
});
else formData.append(key, value);
formData.append(option.filename, option.file, option.file.name);
xhr.addEventListener("error", () => {
option.onError(getError(action, option, xhr));
});
xhr.addEventListener("load", () => {
if (xhr.status < 200 || xhr.status >= 300) return option.onError(getError(action, option, xhr));
option.onSuccess(getBody(xhr));
});
xhr.open(option.method, action, true);
if (option.withCredentials && "withCredentials" in xhr) xhr.withCredentials = true;
const headers = option.headers || {};
if (headers instanceof Headers) headers.forEach((value, key) => xhr.setRequestHeader(key, value));
else for (const [key, value] of Object.entries(headers)) {
if ((0, lodash_unified.isNil)(value)) continue;
xhr.setRequestHeader(key, String(value));
}
xhr.send(formData);
return xhr;
};
//#endregion
exports.UploadAjaxError = UploadAjaxError;
exports.ajaxUpload = ajaxUpload;
//# sourceMappingURL=ajax.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"ajax.js","names":[],"sources":["../../../../../../packages/components/upload/src/ajax.ts"],"sourcesContent":["import { isNil } from 'lodash-unified'\nimport { isArray, isString, throwError } from '@element-plus/utils'\n\nimport type {\n UploadProgressEvent,\n UploadRequestHandler,\n UploadRequestOptions,\n} from './upload'\n\nconst SCOPE = 'ElUpload'\n\nexport class UploadAjaxError extends Error {\n name = 'UploadAjaxError'\n status: number\n method: string\n url: string\n\n constructor(message: string, status: number, method: string, url: string) {\n super(message)\n this.status = status\n this.method = method\n this.url = url\n }\n}\n\nfunction getError(\n action: string,\n option: UploadRequestOptions,\n xhr: XMLHttpRequest\n) {\n let msg: string\n if (xhr.response) {\n msg = `${xhr.response.error || xhr.response}`\n } else if (xhr.responseText) {\n msg = `${xhr.responseText}`\n } else {\n msg = `fail to ${option.method} ${action} ${xhr.status}`\n }\n\n return new UploadAjaxError(msg, xhr.status, option.method, action)\n}\n\nfunction getBody(xhr: XMLHttpRequest): XMLHttpRequestResponseType {\n const text = xhr.responseText || xhr.response\n if (!text) {\n return text\n }\n\n try {\n return JSON.parse(text)\n } catch {\n return text\n }\n}\n\nexport const ajaxUpload: UploadRequestHandler = (option) => {\n if (typeof XMLHttpRequest === 'undefined')\n throwError(SCOPE, 'XMLHttpRequest is undefined')\n\n const xhr = new XMLHttpRequest()\n const action = option.action\n\n if (xhr.upload) {\n xhr.upload.addEventListener('progress', (evt) => {\n const progressEvt = evt as UploadProgressEvent\n progressEvt.percent = evt.total > 0 ? (evt.loaded / evt.total) * 100 : 0\n option.onProgress(progressEvt)\n })\n }\n\n const formData = new FormData()\n if (option.data) {\n for (const [key, value] of Object.entries(option.data)) {\n if (isArray(value)) {\n if (\n value.length === 2 &&\n value[0] instanceof Blob &&\n isString(value[1])\n ) {\n formData.append(key, value[0], value[1])\n } else {\n value.forEach((item) => {\n formData.append(key, item)\n })\n }\n } else formData.append(key, value)\n }\n }\n formData.append(option.filename, option.file, option.file.name)\n\n xhr.addEventListener('error', () => {\n option.onError(getError(action, option, xhr))\n })\n\n xhr.addEventListener('load', () => {\n if (xhr.status < 200 || xhr.status >= 300) {\n return option.onError(getError(action, option, xhr))\n }\n option.onSuccess(getBody(xhr))\n })\n\n xhr.open(option.method, action, true)\n\n if (option.withCredentials && 'withCredentials' in xhr) {\n xhr.withCredentials = true\n }\n\n const headers = option.headers || {}\n if (headers instanceof Headers) {\n headers.forEach((value, key) => xhr.setRequestHeader(key, value))\n } else {\n for (const [key, value] of Object.entries(headers)) {\n if (isNil(value)) continue\n xhr.setRequestHeader(key, String(value))\n }\n }\n\n xhr.send(formData)\n return xhr\n}\n"],"mappings":";;;;;;;AASA,MAAM,QAAQ;AAEd,IAAa,kBAAb,cAAqC,MAAM;CAMzC,YAAY,SAAiB,QAAgB,QAAgB,KAAa;AACxE,QAAM,QAAQ;cANT;AAOL,OAAK,SAAS;AACd,OAAK,SAAS;AACd,OAAK,MAAM;;;AAIf,SAAS,SACP,QACA,QACA,KACA;CACA,IAAI;AACJ,KAAI,IAAI,SACN,OAAM,GAAG,IAAI,SAAS,SAAS,IAAI;UAC1B,IAAI,aACb,OAAM,GAAG,IAAI;KAEb,OAAM,WAAW,OAAO,OAAO,GAAG,OAAO,GAAG,IAAI;AAGlD,QAAO,IAAI,gBAAgB,KAAK,IAAI,QAAQ,OAAO,QAAQ,OAAO;;AAGpE,SAAS,QAAQ,KAAiD;CAChE,MAAM,OAAO,IAAI,gBAAgB,IAAI;AACrC,KAAI,CAAC,KACH,QAAO;AAGT,KAAI;AACF,SAAO,KAAK,MAAM,KAAK;SACjB;AACN,SAAO;;;AAIX,MAAa,cAAoC,WAAW;AAC1D,KAAI,OAAO,mBAAmB,YAC5B,0BAAW,OAAO,8BAA8B;CAElD,MAAM,MAAM,IAAI,gBAAgB;CAChC,MAAM,SAAS,OAAO;AAEtB,KAAI,IAAI,OACN,KAAI,OAAO,iBAAiB,aAAa,QAAQ;EAC/C,MAAM,cAAc;AACpB,cAAY,UAAU,IAAI,QAAQ,IAAK,IAAI,SAAS,IAAI,QAAS,MAAM;AACvE,SAAO,WAAW,YAAY;GAC9B;CAGJ,MAAM,WAAW,IAAI,UAAU;AAC/B,KAAI,OAAO,KACT,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,OAAO,KAAK,CACpD,8BAAY,MAAM,CAChB,KACE,MAAM,WAAW,KACjB,MAAM,cAAc,kCACX,MAAM,GAAG,CAElB,UAAS,OAAO,KAAK,MAAM,IAAI,MAAM,GAAG;KAExC,OAAM,SAAS,SAAS;AACtB,WAAS,OAAO,KAAK,KAAK;GAC1B;KAEC,UAAS,OAAO,KAAK,MAAM;AAGtC,UAAS,OAAO,OAAO,UAAU,OAAO,MAAM,OAAO,KAAK,KAAK;AAE/D,KAAI,iBAAiB,eAAe;AAClC,SAAO,QAAQ,SAAS,QAAQ,QAAQ,IAAI,CAAC;GAC7C;AAEF,KAAI,iBAAiB,cAAc;AACjC,MAAI,IAAI,SAAS,OAAO,IAAI,UAAU,IACpC,QAAO,OAAO,QAAQ,SAAS,QAAQ,QAAQ,IAAI,CAAC;AAEtD,SAAO,UAAU,QAAQ,IAAI,CAAC;GAC9B;AAEF,KAAI,KAAK,OAAO,QAAQ,QAAQ,KAAK;AAErC,KAAI,OAAO,mBAAmB,qBAAqB,IACjD,KAAI,kBAAkB;CAGxB,MAAM,UAAU,OAAO,WAAW,EAAE;AACpC,KAAI,mBAAmB,QACrB,SAAQ,SAAS,OAAO,QAAQ,IAAI,iBAAiB,KAAK,MAAM,CAAC;KAEjE,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,QAAQ,EAAE;AAClD,gCAAU,MAAM,CAAE;AAClB,MAAI,iBAAiB,KAAK,OAAO,MAAM,CAAC;;AAI5C,KAAI,KAAK,SAAS;AAClB,QAAO"}

View File

@@ -0,0 +1,9 @@
import { InjectionKey, Ref } from "vue";
//#region ../../packages/components/upload/src/constants.d.ts
interface UploadContext {
accept: Ref<string>;
}
declare const uploadContextKey: InjectionKey<UploadContext>;
//#endregion
export { UploadContext, uploadContextKey };

View File

@@ -0,0 +1,8 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
//#region ../../packages/components/upload/src/constants.ts
const uploadContextKey = Symbol("uploadContextKey");
//#endregion
exports.uploadContextKey = uploadContextKey;
//# sourceMappingURL=constants.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"constants.js","names":[],"sources":["../../../../../../packages/components/upload/src/constants.ts"],"sourcesContent":["import type { InjectionKey, Ref } from 'vue'\n\nexport interface UploadContext {\n accept: Ref<string>\n}\n\nexport const uploadContextKey: InjectionKey<UploadContext> =\n Symbol('uploadContextKey')\n"],"mappings":";;;AAMA,MAAa,mBACX,OAAO,mBAAmB"}

View File

@@ -0,0 +1,144 @@
import { EpPropFinalized, EpPropMergeType } from "../../../utils/vue/props/types.js";
import { Awaitable, Mutable } from "../../../utils/typescript.js";
import "../../../utils/index.js";
import { UploadAjaxError } from "./ajax.js";
import { UploadBaseProps, UploadData, UploadFile, UploadHooks, UploadProgressEvent, UploadRawFile, UploadRequestHandler, UploadUserFile } from "./upload.js";
import { _default } from "./upload-content.vue.js";
import * as vue from "vue";
import { ExtractPublicPropTypes } from "vue";
//#region ../../packages/components/upload/src/upload-content.d.ts
interface UploadContentProps extends UploadBaseProps {
beforeUpload?: UploadHooks['beforeUpload'];
onRemove?: (file: UploadFile | UploadRawFile) => void;
onStart?: (rawFile: UploadRawFile) => void;
onSuccess?: (response: any, rawFile: UploadRawFile) => unknown;
onProgress?: (evt: UploadProgressEvent, rawFile: UploadRawFile) => void;
onError?: (err: UploadAjaxError, rawFile: UploadRawFile) => void;
onExceed?: UploadHooks['onExceed'];
}
/**
* @deprecated Removed after 3.0.0, Use `UploadContentProps` instead.
*/
declare const uploadContentProps: {
readonly beforeUpload: EpPropFinalized<(new (...args: any[]) => (rawFile: UploadRawFile) => Awaitable<void | undefined | null | boolean | File | Blob>) | (() => (rawFile: UploadRawFile) => Awaitable<void | undefined | null | boolean | File | Blob>) | {
(): (rawFile: UploadRawFile) => Awaitable<void | undefined | null | boolean | File | Blob>;
new (): any;
readonly prototype: any;
} | (((new (...args: any[]) => (rawFile: UploadRawFile) => Awaitable<void | undefined | null | boolean | File | Blob>) | (() => (rawFile: UploadRawFile) => Awaitable<void | undefined | null | boolean | File | Blob>) | {
(): (rawFile: UploadRawFile) => Awaitable<void | undefined | null | boolean | File | Blob>;
new (): any;
readonly prototype: any;
}) | null)[], unknown, unknown, () => void, boolean>;
readonly onRemove: EpPropFinalized<(new (...args: any[]) => (file: UploadFile | UploadRawFile) => void) | (() => (file: UploadFile | UploadRawFile) => void) | {
(): (file: UploadFile | UploadRawFile) => void;
new (): any;
readonly prototype: any;
} | (((new (...args: any[]) => (file: UploadFile | UploadRawFile) => void) | (() => (file: UploadFile | UploadRawFile) => void) | {
(): (file: UploadFile | UploadRawFile) => void;
new (): any;
readonly prototype: any;
}) | null)[], unknown, unknown, () => void, boolean>;
readonly onStart: EpPropFinalized<(new (...args: any[]) => (rawFile: UploadRawFile) => void) | (() => (rawFile: UploadRawFile) => void) | {
(): (rawFile: UploadRawFile) => void;
new (): any;
readonly prototype: any;
} | (((new (...args: any[]) => (rawFile: UploadRawFile) => void) | (() => (rawFile: UploadRawFile) => void) | {
(): (rawFile: UploadRawFile) => void;
new (): any;
readonly prototype: any;
}) | null)[], unknown, unknown, () => void, boolean>;
readonly onSuccess: EpPropFinalized<(new (...args: any[]) => (response: any, rawFile: UploadRawFile) => unknown) | (() => (response: any, rawFile: UploadRawFile) => unknown) | {
(): (response: any, rawFile: UploadRawFile) => unknown;
new (): any;
readonly prototype: any;
} | (((new (...args: any[]) => (response: any, rawFile: UploadRawFile) => unknown) | (() => (response: any, rawFile: UploadRawFile) => unknown) | {
(): (response: any, rawFile: UploadRawFile) => unknown;
new (): any;
readonly prototype: any;
}) | null)[], unknown, unknown, () => void, boolean>;
readonly onProgress: EpPropFinalized<(new (...args: any[]) => (evt: UploadProgressEvent, rawFile: UploadRawFile) => void) | (() => (evt: UploadProgressEvent, rawFile: UploadRawFile) => void) | {
(): (evt: UploadProgressEvent, rawFile: UploadRawFile) => void;
new (): any;
readonly prototype: any;
} | (((new (...args: any[]) => (evt: UploadProgressEvent, rawFile: UploadRawFile) => void) | (() => (evt: UploadProgressEvent, rawFile: UploadRawFile) => void) | {
(): (evt: UploadProgressEvent, rawFile: UploadRawFile) => void;
new (): any;
readonly prototype: any;
}) | null)[], unknown, unknown, () => void, boolean>;
readonly onError: EpPropFinalized<(new (...args: any[]) => (err: UploadAjaxError, rawFile: UploadRawFile) => void) | (() => (err: UploadAjaxError, rawFile: UploadRawFile) => void) | {
(): (err: UploadAjaxError, rawFile: UploadRawFile) => void;
new (): any;
readonly prototype: any;
} | (((new (...args: any[]) => (err: UploadAjaxError, rawFile: UploadRawFile) => void) | (() => (err: UploadAjaxError, rawFile: UploadRawFile) => void) | {
(): (err: UploadAjaxError, rawFile: UploadRawFile) => void;
new (): any;
readonly prototype: any;
}) | null)[], unknown, unknown, () => void, boolean>;
readonly onExceed: EpPropFinalized<(new (...args: any[]) => (files: File[], uploadFiles: UploadUserFile[]) => void) | (() => (files: File[], uploadFiles: UploadUserFile[]) => void) | {
(): (files: File[], uploadFiles: UploadUserFile[]) => void;
new (): any;
readonly prototype: any;
} | (((new (...args: any[]) => (files: File[], uploadFiles: UploadUserFile[]) => void) | (() => (files: File[], uploadFiles: UploadUserFile[]) => void) | {
(): (files: File[], uploadFiles: UploadUserFile[]) => void;
new (): any;
readonly prototype: any;
}) | null)[], unknown, unknown, () => void, boolean>;
readonly action: EpPropFinalized<StringConstructor, unknown, unknown, "#", boolean>;
readonly headers: {
readonly type: vue.PropType<EpPropMergeType<(new (...args: any[]) => Record<string, any> | Headers) | (() => Record<string, any> | Headers) | (((new (...args: any[]) => Record<string, any> | Headers) | (() => Record<string, any> | Headers)) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly method: EpPropFinalized<StringConstructor, unknown, unknown, "post", boolean>;
readonly data: EpPropFinalized<(new (...args: any[]) => Mutable<Record<string, any>> | Promise<Mutable<Record<string, any>>> | ((rawFile: UploadRawFile) => Awaitable<UploadData>)) | (() => Awaitable<Mutable<Record<string, any>>> | ((rawFile: UploadRawFile) => Awaitable<UploadData>)) | (((new (...args: any[]) => Mutable<Record<string, any>> | Promise<Mutable<Record<string, any>>> | ((rawFile: UploadRawFile) => Awaitable<UploadData>)) | (() => Awaitable<Mutable<Record<string, any>>> | ((rawFile: UploadRawFile) => Awaitable<UploadData>))) | null)[], unknown, unknown, () => Mutable<{}>, boolean>;
readonly multiple: BooleanConstructor;
readonly name: EpPropFinalized<StringConstructor, unknown, unknown, "file", boolean>;
readonly drag: BooleanConstructor;
readonly withCredentials: BooleanConstructor;
readonly showFileList: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly accept: EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
readonly fileList: EpPropFinalized<(new (...args: any[]) => UploadUserFile[]) | (() => UploadUserFile[]) | (((new (...args: any[]) => UploadUserFile[]) | (() => UploadUserFile[])) | null)[], unknown, unknown, () => [], boolean>;
readonly autoUpload: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly listType: EpPropFinalized<StringConstructor, "text" | "picture" | "picture-card", unknown, "text", boolean>;
readonly httpRequest: EpPropFinalized<(new (...args: any[]) => UploadRequestHandler) | (() => UploadRequestHandler) | {
(): UploadRequestHandler;
new (): any;
readonly prototype: any;
} | (((new (...args: any[]) => UploadRequestHandler) | (() => UploadRequestHandler) | {
(): UploadRequestHandler;
new (): any;
readonly prototype: any;
}) | null)[], unknown, unknown, UploadRequestHandler, boolean>;
readonly disabled: EpPropFinalized<BooleanConstructor, unknown, unknown, undefined, boolean>;
readonly limit: NumberConstructor;
readonly directory: BooleanConstructor;
};
/**
* @deprecated Removed after 3.0.0, Use `UploadContentProps` instead.
*/
type UploadContentPropsPublic = ExtractPublicPropTypes<typeof uploadContentProps>;
type UploadContentInstance = InstanceType<typeof _default> & unknown;
declare const uploadContentPropsDefaults: {
readonly beforeUpload: () => void;
readonly onRemove: () => void;
readonly onStart: () => void;
readonly onSuccess: () => void;
readonly onProgress: () => void;
readonly onError: () => void;
readonly onExceed: () => void;
readonly action: "#";
readonly method: "post";
readonly data: () => Mutable<{}>;
readonly name: "file";
readonly showFileList: true;
readonly accept: "";
readonly fileList: () => never[];
readonly autoUpload: true;
readonly listType: "text";
readonly httpRequest: UploadRequestHandler;
readonly disabled: undefined;
};
//#endregion
export { UploadContentInstance, UploadContentProps, UploadContentPropsPublic, uploadContentProps, uploadContentPropsDefaults };

View File

@@ -0,0 +1,56 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_runtime = require('../../../_virtual/_rolldown/runtime.js');
const require_runtime$1 = require('../../../utils/vue/props/runtime.js');
const require_upload = require('./upload.js');
let _vue_shared = require("@vue/shared");
//#region ../../packages/components/upload/src/upload-content.ts
/**
* @deprecated Removed after 3.0.0, Use `UploadContentProps` instead.
*/
const uploadContentProps = require_runtime$1.buildProps({
...require_upload.uploadBaseProps,
beforeUpload: {
type: require_runtime$1.definePropType(Function),
default: _vue_shared.NOOP
},
onRemove: {
type: require_runtime$1.definePropType(Function),
default: _vue_shared.NOOP
},
onStart: {
type: require_runtime$1.definePropType(Function),
default: _vue_shared.NOOP
},
onSuccess: {
type: require_runtime$1.definePropType(Function),
default: _vue_shared.NOOP
},
onProgress: {
type: require_runtime$1.definePropType(Function),
default: _vue_shared.NOOP
},
onError: {
type: require_runtime$1.definePropType(Function),
default: _vue_shared.NOOP
},
onExceed: {
type: require_runtime$1.definePropType(Function),
default: _vue_shared.NOOP
}
});
const uploadContentPropsDefaults = {
...require_upload.uploadBasePropsDefaults,
beforeUpload: _vue_shared.NOOP,
onRemove: _vue_shared.NOOP,
onStart: _vue_shared.NOOP,
onSuccess: _vue_shared.NOOP,
onProgress: _vue_shared.NOOP,
onError: _vue_shared.NOOP,
onExceed: _vue_shared.NOOP
};
//#endregion
exports.uploadContentProps = uploadContentProps;
exports.uploadContentPropsDefaults = uploadContentPropsDefaults;
//# sourceMappingURL=upload-content.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"upload-content.js","names":["buildProps","uploadBaseProps","definePropType","NOOP","uploadBasePropsDefaults"],"sources":["../../../../../../packages/components/upload/src/upload-content.ts"],"sourcesContent":["import { NOOP, buildProps, definePropType } from '@element-plus/utils'\nimport { uploadBaseProps, uploadBasePropsDefaults } from './upload'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type {\n UploadBaseProps,\n UploadFile,\n UploadHooks,\n UploadProgressEvent,\n UploadRawFile,\n} from './upload'\nimport type UploadContent from './upload-content.vue'\nimport type { UploadAjaxError } from './ajax'\n\nexport interface UploadContentProps extends UploadBaseProps {\n beforeUpload?: UploadHooks['beforeUpload']\n onRemove?: (file: UploadFile | UploadRawFile) => void\n onStart?: (rawFile: UploadRawFile) => void\n onSuccess?: (response: any, rawFile: UploadRawFile) => unknown\n onProgress?: (evt: UploadProgressEvent, rawFile: UploadRawFile) => void\n onError?: (err: UploadAjaxError, rawFile: UploadRawFile) => void\n onExceed?: UploadHooks['onExceed']\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `UploadContentProps` instead.\n */\nexport const uploadContentProps = buildProps({\n ...uploadBaseProps,\n\n beforeUpload: {\n type: definePropType<UploadHooks['beforeUpload']>(Function),\n default: NOOP,\n },\n onRemove: {\n type: definePropType<(file: UploadFile | UploadRawFile) => void>(Function),\n default: NOOP,\n },\n onStart: {\n type: definePropType<(rawFile: UploadRawFile) => void>(Function),\n default: NOOP,\n },\n onSuccess: {\n type: definePropType<(response: any, rawFile: UploadRawFile) => unknown>(\n Function\n ),\n default: NOOP,\n },\n onProgress: {\n type: definePropType<\n (evt: UploadProgressEvent, rawFile: UploadRawFile) => void\n >(Function),\n default: NOOP,\n },\n onError: {\n type: definePropType<\n (err: UploadAjaxError, rawFile: UploadRawFile) => void\n >(Function),\n default: NOOP,\n },\n onExceed: {\n type: definePropType<UploadHooks['onExceed']>(Function),\n default: NOOP,\n },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `UploadContentProps` instead.\n */\nexport type UploadContentPropsPublic = ExtractPublicPropTypes<\n typeof uploadContentProps\n>\n\nexport type UploadContentInstance = InstanceType<typeof UploadContent> & unknown\n\nexport const uploadContentPropsDefaults = {\n ...uploadBasePropsDefaults,\n beforeUpload: NOOP,\n onRemove: NOOP,\n onStart: NOOP,\n onSuccess: NOOP,\n onProgress: NOOP,\n onError: NOOP,\n onExceed: NOOP,\n} as const\n"],"mappings":";;;;;;;;;;AA2BA,MAAa,qBAAqBA,6BAAW;CAC3C,GAAGC;CAEH,cAAc;EACZ,MAAMC,iCAA4C,SAAS;EAC3D,SAASC;EACV;CACD,UAAU;EACR,MAAMD,iCAA2D,SAAS;EAC1E,SAASC;EACV;CACD,SAAS;EACP,MAAMD,iCAAiD,SAAS;EAChE,SAASC;EACV;CACD,WAAW;EACT,MAAMD,iCACJ,SACD;EACD,SAASC;EACV;CACD,YAAY;EACV,MAAMD,iCAEJ,SAAS;EACX,SAASC;EACV;CACD,SAAS;EACP,MAAMD,iCAEJ,SAAS;EACX,SAASC;EACV;CACD,UAAU;EACR,MAAMD,iCAAwC,SAAS;EACvD,SAASC;EACV;CACF,CAAU;AAWX,MAAa,6BAA6B;CACxC,GAAGC;CACH,cAAcD;CACd,UAAUA;CACV,SAASA;CACT,WAAWA;CACX,YAAYA;CACZ,SAASA;CACT,UAAUA;CACX"}

View File

@@ -0,0 +1,46 @@
import { Awaitable } from "../../../utils/typescript.js";
import "../../../utils/index.js";
import { UploadAjaxError } from "./ajax.js";
import { ListType, UploadData, UploadFile, UploadHooks, UploadProgressEvent, UploadRawFile, UploadRequestHandler, UploadUserFile } from "./upload.js";
import { UploadContentProps } from "./upload-content.js";
import * as vue from "vue";
//#region ../../packages/components/upload/src/upload-content.vue.d.ts
declare var __VLS_9: {}, __VLS_11: {};
type __VLS_Slots = {} & {
default?: (props: typeof __VLS_9) => any;
} & {
default?: (props: typeof __VLS_11) => any;
};
declare const __VLS_base: vue.DefineComponent<UploadContentProps, {
abort: (file?: UploadFile) => void;
upload: (rawFile: UploadRawFile) => Promise<void>;
}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<UploadContentProps> & Readonly<{}>, {
disabled: boolean;
name: string;
onError: (err: UploadAjaxError, rawFile: UploadRawFile) => void;
onProgress: (evt: UploadProgressEvent, rawFile: UploadRawFile) => void;
data: Awaitable<UploadData> | ((rawFile: UploadRawFile) => Awaitable<UploadData>);
beforeUpload: UploadHooks["beforeUpload"];
onRemove: (file: UploadFile | UploadRawFile) => void;
onSuccess: (response: any, rawFile: UploadRawFile) => unknown;
onExceed: UploadHooks["onExceed"];
action: string;
method: string;
showFileList: boolean;
accept: string;
fileList: UploadUserFile[];
autoUpload: boolean;
listType: ListType;
httpRequest: UploadRequestHandler;
onStart: (rawFile: UploadRawFile) => void;
}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
declare const _default: typeof __VLS_export;
type __VLS_WithSlots<T, S> = T & {
new (): {
$slots: S;
};
};
//#endregion
export { _default };

View File

@@ -0,0 +1,175 @@
const require_runtime = require('../../../_virtual/_rolldown/runtime.js');
const require_objects = require('../../../utils/objects.js');
const require_index = require('../../../hooks/use-namespace/index.js');
const require_use_form_common_props = require('../../form/src/hooks/use-form-common-props.js');
const require_upload = require('./upload.js');
const require_upload_content = require('./upload-content.js');
const require_upload_dragger = require('./upload-dragger2.js');
let lodash_unified = require("lodash-unified");
let vue = require("vue");
let _vue_shared = require("@vue/shared");
//#region ../../packages/components/upload/src/upload-content.vue?vue&type=script&setup=true&lang.ts
const _hoisted_1 = [
"tabindex",
"aria-disabled",
"onKeydown"
];
const _hoisted_2 = [
"name",
"disabled",
"multiple",
"accept",
"webkitdirectory"
];
var upload_content_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({
name: "ElUploadContent",
inheritAttrs: false,
__name: "upload-content",
props: require_upload_content.uploadContentProps,
setup(__props, { expose: __expose }) {
const props = __props;
const ns = require_index.useNamespace("upload");
const disabled = require_use_form_common_props.useFormDisabled();
const requests = (0, vue.shallowRef)({});
const inputRef = (0, vue.shallowRef)();
const uploadFiles = (files) => {
if (files.length === 0) return;
const { autoUpload, limit, fileList, multiple, onStart, onExceed } = props;
if (limit && fileList.length + files.length > limit) {
onExceed(files, fileList);
return;
}
if (!multiple) files = files.slice(0, 1);
for (const file of files) {
const rawFile = file;
rawFile.uid = require_upload.genFileId();
onStart(rawFile);
if (autoUpload) upload(rawFile);
}
};
const upload = async (rawFile) => {
inputRef.value.value = "";
if (!props.beforeUpload) return doUpload(rawFile);
let hookResult;
let beforeData = {};
try {
const originData = props.data;
const beforeUploadPromise = props.beforeUpload(rawFile);
beforeData = (0, _vue_shared.isPlainObject)(props.data) ? (0, lodash_unified.cloneDeep)(props.data) : props.data;
hookResult = await beforeUploadPromise;
if ((0, _vue_shared.isPlainObject)(props.data) && (0, lodash_unified.isEqual)(originData, beforeData)) beforeData = (0, lodash_unified.cloneDeep)(props.data);
} catch {
hookResult = false;
}
if (hookResult === false) {
props.onRemove(rawFile);
return;
}
let file = rawFile;
if (hookResult instanceof Blob) if (hookResult instanceof File) file = hookResult;
else file = new File([hookResult], rawFile.name, { type: rawFile.type });
doUpload(Object.assign(file, { uid: rawFile.uid }), beforeData);
};
const resolveData = async (data, rawFile) => {
if ((0, _vue_shared.isFunction)(data)) return data(rawFile);
return data;
};
const doUpload = async (rawFile, beforeData) => {
const { headers, data, method, withCredentials, name: filename, action, onProgress, onSuccess, onError, httpRequest } = props;
try {
beforeData = await resolveData(beforeData ?? data, rawFile);
} catch {
props.onRemove(rawFile);
return;
}
const { uid } = rawFile;
const options = {
headers: headers || {},
withCredentials,
file: rawFile,
data: beforeData,
method,
filename,
action,
onProgress: (evt) => {
onProgress(evt, rawFile);
},
onSuccess: (res) => {
onSuccess(res, rawFile);
delete requests.value[uid];
},
onError: (err) => {
onError(err, rawFile);
delete requests.value[uid];
}
};
const request = httpRequest(options);
requests.value[uid] = request;
if (request instanceof Promise) request.then(options.onSuccess, options.onError);
};
const handleChange = (e) => {
const files = e.target.files;
if (!files) return;
uploadFiles(Array.from(files));
};
const handleClick = () => {
if (!disabled.value) {
inputRef.value.value = "";
inputRef.value.click();
}
};
const handleKeydown = () => {
handleClick();
};
const abort = (file) => {
require_objects.entriesOf(requests.value).filter(file ? ([uid]) => String(file.uid) === uid : () => true).forEach(([uid, req]) => {
if (req instanceof XMLHttpRequest) req.abort();
delete requests.value[uid];
});
};
__expose({
abort,
upload
});
return (_ctx, _cache) => {
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
class: (0, vue.normalizeClass)([
(0, vue.unref)(ns).b(),
(0, vue.unref)(ns).m(__props.listType),
(0, vue.unref)(ns).is("drag", __props.drag),
(0, vue.unref)(ns).is("disabled", (0, vue.unref)(disabled))
]),
tabindex: (0, vue.unref)(disabled) ? void 0 : 0,
"aria-disabled": (0, vue.unref)(disabled),
role: "button",
onClick: handleClick,
onKeydown: (0, vue.withKeys)((0, vue.withModifiers)(handleKeydown, ["self"]), ["enter", "space"])
}, [__props.drag ? ((0, vue.openBlock)(), (0, vue.createBlock)(require_upload_dragger.default, {
key: 0,
disabled: (0, vue.unref)(disabled),
directory: __props.directory,
onFile: uploadFiles
}, {
default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default")]),
_: 3
}, 8, ["disabled", "directory"])) : (0, vue.renderSlot)(_ctx.$slots, "default", { key: 1 }), (0, vue.createElementVNode)("input", {
ref_key: "inputRef",
ref: inputRef,
class: (0, vue.normalizeClass)((0, vue.unref)(ns).e("input")),
name: __props.name,
disabled: (0, vue.unref)(disabled),
multiple: __props.multiple,
accept: __props.accept,
webkitdirectory: __props.directory || void 0,
type: "file",
onChange: handleChange,
onClick: _cache[0] || (_cache[0] = (0, vue.withModifiers)(() => {}, ["stop"]))
}, null, 42, _hoisted_2)], 42, _hoisted_1);
};
}
});
//#endregion
exports.default = upload_content_vue_vue_type_script_setup_true_lang_default;
//# sourceMappingURL=upload-content.vue_vue_type_script_setup_true_lang.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,9 @@
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
const require_upload_content_vue_vue_type_script_setup_true_lang = require('./upload-content.vue_vue_type_script_setup_true_lang.js');
//#region ../../packages/components/upload/src/upload-content.vue
var upload_content_default = require_upload_content_vue_vue_type_script_setup_true_lang.default;
//#endregion
exports.default = upload_content_default;
//# sourceMappingURL=upload-content2.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,28 @@
import { EpPropFinalized } from "../../../utils/vue/props/types.js";
import "../../../utils/index.js";
import { _default } from "./upload-dragger.vue.js";
import { ExtractPublicPropTypes } from "vue";
//#region ../../packages/components/upload/src/upload-dragger.d.ts
interface UploadDraggerProps {
disabled?: boolean;
directory?: boolean;
}
/**
* @deprecated Removed after 3.0.0, Use `UploadDraggerProps` instead.
*/
declare const uploadDraggerProps: {
readonly disabled: EpPropFinalized<BooleanConstructor, unknown, unknown, undefined, boolean>;
readonly directory: BooleanConstructor;
};
/**
* @deprecated Removed after 3.0.0, Use `UploadDraggerProps` instead.
*/
type UploadDraggerPropsPublic = ExtractPublicPropTypes<typeof uploadDraggerProps>;
declare const uploadDraggerEmits: {
file: (file: File[]) => boolean;
};
type UploadDraggerEmits = typeof uploadDraggerEmits;
type UploadDraggerInstance = InstanceType<typeof _default> & unknown;
//#endregion
export { UploadDraggerEmits, UploadDraggerInstance, UploadDraggerProps, UploadDraggerPropsPublic, uploadDraggerEmits, uploadDraggerProps };

View File

@@ -0,0 +1,22 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_runtime = require('../../../_virtual/_rolldown/runtime.js');
const require_runtime$1 = require('../../../utils/vue/props/runtime.js');
let _vue_shared = require("@vue/shared");
//#region ../../packages/components/upload/src/upload-dragger.ts
/**
* @deprecated Removed after 3.0.0, Use `UploadDraggerProps` instead.
*/
const uploadDraggerProps = require_runtime$1.buildProps({
disabled: {
type: Boolean,
default: void 0
},
directory: Boolean
});
const uploadDraggerEmits = { file: (file) => (0, _vue_shared.isArray)(file) };
//#endregion
exports.uploadDraggerEmits = uploadDraggerEmits;
exports.uploadDraggerProps = uploadDraggerProps;
//# sourceMappingURL=upload-dragger.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"upload-dragger.js","names":["buildProps"],"sources":["../../../../../../packages/components/upload/src/upload-dragger.ts"],"sourcesContent":["import { buildProps, isArray } from '@element-plus/utils'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type UploadDragger from './upload-dragger.vue'\n\nexport interface UploadDraggerProps {\n disabled?: boolean\n directory?: boolean\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `UploadDraggerProps` instead.\n */\nexport const uploadDraggerProps = buildProps({\n disabled: {\n type: Boolean,\n default: undefined,\n },\n directory: Boolean,\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `UploadDraggerProps` instead.\n */\nexport type UploadDraggerPropsPublic = ExtractPublicPropTypes<\n typeof uploadDraggerProps\n>\n\nexport const uploadDraggerEmits = {\n file: (file: File[]) => isArray(file),\n}\nexport type UploadDraggerEmits = typeof uploadDraggerEmits\n\nexport type UploadDraggerInstance = InstanceType<typeof UploadDragger> & unknown\n"],"mappings":";;;;;;;;;AAaA,MAAa,qBAAqBA,6BAAW;CAC3C,UAAU;EACR,MAAM;EACN,SAAS;EACV;CACD,WAAW;CACZ,CAAU;AASX,MAAa,qBAAqB,EAChC,OAAO,kCAAyB,KAAK,EACtC"}

View File

@@ -0,0 +1,24 @@
import { UploadDraggerProps } from "./upload-dragger.js";
import * as vue from "vue";
//#region ../../packages/components/upload/src/upload-dragger.vue.d.ts
declare var __VLS_1: {};
type __VLS_Slots = {} & {
default?: (props: typeof __VLS_1) => any;
};
declare const __VLS_base: vue.DefineComponent<UploadDraggerProps, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
file: (file: File[]) => void;
}, string, vue.PublicProps, Readonly<UploadDraggerProps> & Readonly<{
onFile?: ((file: File[]) => any) | undefined;
}>, {
disabled: boolean;
}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
declare const _default: typeof __VLS_export;
type __VLS_WithSlots<T, S> = T & {
new (): {
$slots: S;
};
};
//#endregion
export { _default };

View File

@@ -0,0 +1,93 @@
const require_runtime = require('../../../_virtual/_rolldown/runtime.js');
const require_error = require('../../../utils/error.js');
const require_index = require('../../../hooks/use-namespace/index.js');
const require_use_form_common_props = require('../../form/src/hooks/use-form-common-props.js');
const require_constants = require('./constants.js');
const require_upload_dragger = require('./upload-dragger.js');
let lodash_unified = require("lodash-unified");
let vue = require("vue");
//#region ../../packages/components/upload/src/upload-dragger.vue?vue&type=script&setup=true&lang.ts
const COMPONENT_NAME = "ElUploadDrag";
var upload_dragger_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({
name: COMPONENT_NAME,
__name: "upload-dragger",
props: require_upload_dragger.uploadDraggerProps,
emits: require_upload_dragger.uploadDraggerEmits,
setup(__props, { emit: __emit }) {
const props = __props;
const emit = __emit;
if (!(0, vue.inject)(require_constants.uploadContextKey)) require_error.throwError(COMPONENT_NAME, "usage: <el-upload><el-upload-dragger /></el-upload>");
const ns = require_index.useNamespace("upload");
const dragover = (0, vue.ref)(false);
const disabled = require_use_form_common_props.useFormDisabled();
const getFile = (entry) => {
return new Promise((resolve, reject) => entry.file(resolve, reject));
};
const getAllFiles = async (entry) => {
try {
if (entry.isFile) {
const file = await getFile(entry);
file.isDirectory = false;
return [file];
}
if (entry.isDirectory) {
const dirReader = entry.createReader();
const getEntries = () => {
return new Promise((resolve, reject) => dirReader.readEntries(resolve, reject));
};
const entries = [];
let readEntries = await getEntries();
/**
* In Chromium-based browsers, readEntries() will only return the first 100 FileSystemEntry instances.
* https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryReader/readEntries#:~:text=In%20Chromium%2Dbased%20browsers%2C%20readEntries()%20will%20only%20return%20the%20first%20100%20FileSystemEntry%20instances.%20In%20order%20to%20obtain%20all%20of%20the%20instances%2C%20readEntries()%20must%20be%20called%20multiple%20times.
*/
while (readEntries.length > 0) {
entries.push(...readEntries);
readEntries = await getEntries();
}
const filePromises = entries.map((entry) => getAllFiles(entry).catch(() => []));
return (0, lodash_unified.flatten)(await Promise.all(filePromises));
}
} catch {
return [];
}
return [];
};
const onDrop = async (e) => {
if (disabled.value) return;
dragover.value = false;
e.stopPropagation();
const files = Array.from(e.dataTransfer.files);
const items = e.dataTransfer.items || [];
if (props.directory) {
const entries = Array.from(items).map((item) => item?.webkitGetAsEntry?.()).filter((entry) => entry);
emit("file", (0, lodash_unified.flatten)(await Promise.all(entries.map(getAllFiles))));
return;
}
files.forEach((file, index) => {
const entry = items[index]?.webkitGetAsEntry?.();
if (entry) file.isDirectory = entry.isDirectory;
});
emit("file", files);
};
const onDragover = () => {
if (!disabled.value) dragover.value = true;
};
const onDragleave = (e) => {
if (!e.currentTarget.contains(e.relatedTarget)) dragover.value = false;
};
return (_ctx, _cache) => {
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
class: (0, vue.normalizeClass)([(0, vue.unref)(ns).b("dragger"), (0, vue.unref)(ns).is("dragover", dragover.value)]),
onDrop: (0, vue.withModifiers)(onDrop, ["prevent"]),
onDragover: (0, vue.withModifiers)(onDragover, ["prevent"]),
onDragleave: (0, vue.withModifiers)(onDragleave, ["prevent"])
}, [(0, vue.renderSlot)(_ctx.$slots, "default")], 34);
};
}
});
//#endregion
exports.default = upload_dragger_vue_vue_type_script_setup_true_lang_default;
//# sourceMappingURL=upload-dragger.vue_vue_type_script_setup_true_lang.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,9 @@
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
const require_upload_dragger_vue_vue_type_script_setup_true_lang = require('./upload-dragger.vue_vue_type_script_setup_true_lang.js');
//#region ../../packages/components/upload/src/upload-dragger.vue
var upload_dragger_default = require_upload_dragger_vue_vue_type_script_setup_true_lang.default;
//#endregion
exports.default = upload_dragger_default;
//# sourceMappingURL=upload-dragger2.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"upload-dragger2.js","names":[],"sources":["../../../../../../packages/components/upload/src/upload-dragger.vue"],"sourcesContent":["<template>\n <div\n :class=\"[ns.b('dragger'), ns.is('dragover', dragover)]\"\n @drop.prevent=\"onDrop\"\n @dragover.prevent=\"onDragover\"\n @dragleave.prevent=\"onDragleave\"\n >\n <slot />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { inject, ref } from 'vue'\nimport { useNamespace } from '@element-plus/hooks'\nimport { useFormDisabled } from '@element-plus/components/form'\nimport { throwError } from '@element-plus/utils/error'\nimport { flatten } from 'lodash-unified'\nimport { uploadContextKey } from './constants'\nimport { uploadDraggerEmits } from './upload-dragger'\n\nimport type { UploadDraggerProps } from './upload-dragger'\nimport type { UploadRawFile } from './upload'\n\nconst COMPONENT_NAME = 'ElUploadDrag'\n\ndefineOptions({\n name: COMPONENT_NAME,\n})\n\nconst props = withDefaults(defineProps<UploadDraggerProps>(), {\n disabled: undefined,\n})\nconst emit = defineEmits(uploadDraggerEmits)\n\nconst uploaderContext = inject(uploadContextKey)\nif (!uploaderContext) {\n throwError(\n COMPONENT_NAME,\n 'usage: <el-upload><el-upload-dragger /></el-upload>'\n )\n}\n\nconst ns = useNamespace('upload')\nconst dragover = ref(false)\nconst disabled = useFormDisabled()\n\nconst getFile = (entry: FileSystemFileEntry): Promise<File> => {\n return new Promise((resolve, reject) => entry.file(resolve, reject))\n}\n\nconst getAllFiles = async (\n entry: FileSystemEntry\n): Promise<UploadRawFile[]> => {\n try {\n if (entry.isFile) {\n const file = (await getFile(\n entry as FileSystemFileEntry\n )) as UploadRawFile\n file.isDirectory = false\n return [file]\n }\n if (entry.isDirectory) {\n const dirReader = (entry as FileSystemDirectoryEntry).createReader()\n const getEntries = (): Promise<FileSystemEntry[]> => {\n return new Promise((resolve, reject) =>\n dirReader.readEntries(resolve, reject)\n )\n }\n\n const entries: FileSystemEntry[] = []\n let readEntries = await getEntries()\n /**\n * In Chromium-based browsers, readEntries() will only return the first 100 FileSystemEntry instances.\n * https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryReader/readEntries#:~:text=In%20Chromium%2Dbased%20browsers%2C%20readEntries()%20will%20only%20return%20the%20first%20100%20FileSystemEntry%20instances.%20In%20order%20to%20obtain%20all%20of%20the%20instances%2C%20readEntries()%20must%20be%20called%20multiple%20times.\n */\n while (readEntries.length > 0) {\n entries.push(...readEntries)\n readEntries = await getEntries()\n }\n\n const filePromises = entries.map((entry) =>\n getAllFiles(entry).catch(() => [])\n )\n\n const files = await Promise.all(filePromises)\n return flatten(files)\n }\n } catch {\n return []\n }\n return []\n}\n\nconst onDrop = async (e: DragEvent) => {\n if (disabled.value) return\n dragover.value = false\n\n e.stopPropagation()\n\n const files = Array.from(e.dataTransfer!.files) as UploadRawFile[]\n const items = e.dataTransfer!.items || []\n\n if (props.directory) {\n const entries = Array.from(items)\n .map((item) => item?.webkitGetAsEntry?.())\n .filter((entry) => entry) as FileSystemEntry[]\n\n const allFiles = await Promise.all(entries.map(getAllFiles))\n emit('file', flatten(allFiles))\n return\n }\n\n files.forEach((file, index) => {\n const item = items[index]\n const entry = item?.webkitGetAsEntry?.()\n if (entry) {\n file.isDirectory = entry.isDirectory\n }\n })\n emit('file', files)\n}\n\nconst onDragover = () => {\n if (!disabled.value) dragover.value = true\n}\n\nconst onDragleave = (e: DragEvent) => {\n if (!(e.currentTarget as Element).contains(e.relatedTarget as Element))\n dragover.value = false\n}\n</script>\n"],"mappings":""}

View File

@@ -0,0 +1,52 @@
import { EpPropFinalized, EpPropMergeType } from "../../../utils/vue/props/types.js";
import "../../../utils/index.js";
import { Crossorigin, ListType, UploadFile, UploadFiles, UploadHooks } from "./upload.js";
import { _default } from "./upload-list.vue.js";
import * as vue from "vue";
import { ExtractPublicPropTypes } from "vue";
//#region ../../packages/components/upload/src/upload-list.d.ts
interface UploadListProps {
files?: UploadFiles;
disabled?: boolean;
handlePreview?: UploadHooks['onPreview'];
listType?: ListType;
/**
* @description set HTML attribute: crossorigin.
*/
crossorigin?: Crossorigin;
}
/**
* @deprecated Removed after 3.0.0, Use `UploadListProps` instead.
*/
declare const uploadListProps: {
readonly files: EpPropFinalized<(new (...args: any[]) => UploadFiles) | (() => UploadFiles) | (((new (...args: any[]) => UploadFiles) | (() => UploadFiles)) | null)[], unknown, unknown, () => never[], boolean>;
readonly disabled: EpPropFinalized<BooleanConstructor, unknown, unknown, undefined, boolean>;
readonly handlePreview: EpPropFinalized<(new (...args: any[]) => (uploadFile: UploadFile) => void) | (() => (uploadFile: UploadFile) => void) | {
(): (uploadFile: UploadFile) => void;
new (): any;
readonly prototype: any;
} | (((new (...args: any[]) => (uploadFile: UploadFile) => void) | (() => (uploadFile: UploadFile) => void) | {
(): (uploadFile: UploadFile) => void;
new (): any;
readonly prototype: any;
}) | null)[], unknown, unknown, () => void, boolean>;
readonly listType: EpPropFinalized<StringConstructor, "text" | "picture" | "picture-card", unknown, "text", boolean>;
readonly crossorigin: {
readonly type: vue.PropType<EpPropMergeType<(new (...args: any[]) => "" | "anonymous" | "use-credentials") | (() => "" | "anonymous" | "use-credentials") | (((new (...args: any[]) => "" | "anonymous" | "use-credentials") | (() => "" | "anonymous" | "use-credentials")) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
};
/**
* @deprecated Removed after 3.0.0, Use `UploadListProps` instead.
*/
type UploadListPropsPublic = ExtractPublicPropTypes<typeof uploadListProps>;
declare const uploadListEmits: {
remove: (file: UploadFile) => boolean;
};
type UploadListEmits = typeof uploadListEmits;
type UploadListInstance = InstanceType<typeof _default> & unknown;
//#endregion
export { UploadListEmits, UploadListInstance, UploadListProps, UploadListPropsPublic, uploadListEmits, uploadListProps };

View File

@@ -0,0 +1,37 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_runtime = require('../../../_virtual/_rolldown/runtime.js');
const require_runtime$1 = require('../../../utils/vue/props/runtime.js');
const require_typescript = require('../../../utils/typescript.js');
const require_upload = require('./upload.js');
let _vue_shared = require("@vue/shared");
//#region ../../packages/components/upload/src/upload-list.ts
/**
* @deprecated Removed after 3.0.0, Use `UploadListProps` instead.
*/
const uploadListProps = require_runtime$1.buildProps({
files: {
type: require_runtime$1.definePropType(Array),
default: () => require_typescript.mutable([])
},
disabled: {
type: Boolean,
default: void 0
},
handlePreview: {
type: require_runtime$1.definePropType(Function),
default: _vue_shared.NOOP
},
listType: {
type: String,
values: require_upload.uploadListTypes,
default: "text"
},
crossorigin: { type: require_runtime$1.definePropType(String) }
});
const uploadListEmits = { remove: (file) => !!file };
//#endregion
exports.uploadListEmits = uploadListEmits;
exports.uploadListProps = uploadListProps;
//# sourceMappingURL=upload-list.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"upload-list.js","names":["buildProps","definePropType","mutable","NOOP","uploadListTypes"],"sources":["../../../../../../packages/components/upload/src/upload-list.ts"],"sourcesContent":["import { NOOP, buildProps, definePropType, mutable } from '@element-plus/utils'\nimport { uploadListTypes } from './upload'\n\nimport type { ExtractPublicPropTypes } from 'vue'\nimport type {\n Crossorigin,\n ListType,\n UploadFile,\n UploadFiles,\n UploadHooks,\n} from './upload'\nimport type UploadList from './upload-list.vue'\n\nexport interface UploadListProps {\n files?: UploadFiles\n disabled?: boolean\n handlePreview?: UploadHooks['onPreview']\n listType?: ListType\n /**\n * @description set HTML attribute: crossorigin.\n */\n crossorigin?: Crossorigin\n}\n\n/**\n * @deprecated Removed after 3.0.0, Use `UploadListProps` instead.\n */\nexport const uploadListProps = buildProps({\n files: {\n type: definePropType<UploadFiles>(Array),\n default: () => mutable([]),\n },\n disabled: {\n type: Boolean,\n default: undefined,\n },\n handlePreview: {\n type: definePropType<UploadHooks['onPreview']>(Function),\n default: NOOP,\n },\n listType: {\n type: String,\n values: uploadListTypes,\n default: 'text',\n },\n /**\n * @description set HTML attribute: crossorigin.\n */\n crossorigin: {\n type: definePropType<'anonymous' | 'use-credentials' | ''>(String),\n },\n} as const)\n\n/**\n * @deprecated Removed after 3.0.0, Use `UploadListProps` instead.\n */\nexport type UploadListPropsPublic = ExtractPublicPropTypes<\n typeof uploadListProps\n>\nexport const uploadListEmits = {\n remove: (file: UploadFile) => !!file,\n}\nexport type UploadListEmits = typeof uploadListEmits\nexport type UploadListInstance = InstanceType<typeof UploadList> & unknown\n"],"mappings":";;;;;;;;;;;AA2BA,MAAa,kBAAkBA,6BAAW;CACxC,OAAO;EACL,MAAMC,iCAA4B,MAAM;EACxC,eAAeC,2BAAQ,EAAE,CAAC;EAC3B;CACD,UAAU;EACR,MAAM;EACN,SAAS;EACV;CACD,eAAe;EACb,MAAMD,iCAAyC,SAAS;EACxD,SAASE;EACV;CACD,UAAU;EACR,MAAM;EACN,QAAQC;EACR,SAAS;EACV;CAID,aAAa,EACX,MAAMH,iCAAqD,OAAO,EACnE;CACF,CAAU;AAQX,MAAa,kBAAkB,EAC7B,SAAS,SAAqB,CAAC,CAAC,MACjC"}

View File

@@ -0,0 +1,33 @@
import { ListType, UploadFile, UploadFiles, UploadHooks } from "./upload.js";
import { UploadListProps } from "./upload-list.js";
import * as vue from "vue";
//#region ../../packages/components/upload/src/upload-list.vue.d.ts
declare var __VLS_8: {
file: UploadFile;
index: number;
}, __VLS_84: {};
type __VLS_Slots = {} & {
default?: (props: typeof __VLS_8) => any;
} & {
append?: (props: typeof __VLS_84) => any;
};
declare const __VLS_base: vue.DefineComponent<UploadListProps, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
remove: (file: UploadFile) => void;
}, string, vue.PublicProps, Readonly<UploadListProps> & Readonly<{
onRemove?: ((file: UploadFile) => any) | undefined;
}>, {
disabled: boolean;
listType: ListType;
files: UploadFiles;
handlePreview: UploadHooks["onPreview"];
}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
declare const _default: typeof __VLS_export;
type __VLS_WithSlots<T, S> = T & {
new (): {
$slots: S;
};
};
//#endregion
export { _default };

View File

@@ -0,0 +1,161 @@
const require_runtime = require('../../../_virtual/_rolldown/runtime.js');
const require_index = require('../../../hooks/use-locale/index.js');
const require_index$1 = require('../../../hooks/use-namespace/index.js');
const require_index$2 = require('../../icon/index.js');
const require_use_form_common_props = require('../../form/src/hooks/use-form-common-props.js');
const require_index$3 = require('../../progress/index.js');
const require_upload_list = require('./upload-list.js');
let _element_plus_icons_vue = require("@element-plus/icons-vue");
let vue = require("vue");
//#region ../../packages/components/upload/src/upload-list.vue?vue&type=script&setup=true&lang.ts
const _hoisted_1 = [
"tabindex",
"aria-disabled",
"onKeydown"
];
const _hoisted_2 = ["src", "crossorigin"];
const _hoisted_3 = ["onClick"];
const _hoisted_4 = ["title"];
const _hoisted_5 = ["onClick"];
const _hoisted_6 = ["onClick"];
var upload_list_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({
name: "ElUploadList",
__name: "upload-list",
props: require_upload_list.uploadListProps,
emits: require_upload_list.uploadListEmits,
setup(__props, { emit: __emit }) {
const props = __props;
const emit = __emit;
const { t } = require_index.useLocale();
const nsUpload = require_index$1.useNamespace("upload");
const nsIcon = require_index$1.useNamespace("icon");
const nsList = require_index$1.useNamespace("list");
const disabled = require_use_form_common_props.useFormDisabled();
const focusing = (0, vue.ref)(false);
const containerKls = (0, vue.computed)(() => [
nsUpload.b("list"),
nsUpload.bm("list", props.listType),
nsUpload.is("disabled", disabled.value)
]);
const handleRemove = (file) => {
emit("remove", file);
};
return (_ctx, _cache) => {
return (0, vue.openBlock)(), (0, vue.createBlock)(vue.TransitionGroup, {
tag: "ul",
class: (0, vue.normalizeClass)(containerKls.value),
name: (0, vue.unref)(nsList).b()
}, {
default: (0, vue.withCtx)(() => [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(__props.files, (file, index) => {
return (0, vue.openBlock)(), (0, vue.createElementBlock)("li", {
key: file.uid || file.name,
class: (0, vue.normalizeClass)([
(0, vue.unref)(nsUpload).be("list", "item"),
(0, vue.unref)(nsUpload).is(file.status),
{ focusing: focusing.value }
]),
tabindex: (0, vue.unref)(disabled) ? void 0 : 0,
"aria-disabled": (0, vue.unref)(disabled),
role: "button",
onKeydown: (0, vue.withKeys)(($event) => !(0, vue.unref)(disabled) && handleRemove(file), ["delete"]),
onFocus: _cache[0] || (_cache[0] = ($event) => focusing.value = true),
onBlur: _cache[1] || (_cache[1] = ($event) => focusing.value = false),
onClick: _cache[2] || (_cache[2] = ($event) => focusing.value = false)
}, [(0, vue.renderSlot)(_ctx.$slots, "default", {
file,
index
}, () => [
__props.listType === "picture" || file.status !== "uploading" && __props.listType === "picture-card" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("img", {
key: 0,
class: (0, vue.normalizeClass)((0, vue.unref)(nsUpload).be("list", "item-thumbnail")),
src: file.url,
crossorigin: __props.crossorigin,
alt: ""
}, null, 10, _hoisted_2)) : (0, vue.createCommentVNode)("v-if", true),
file.status === "uploading" || __props.listType !== "picture-card" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
key: 1,
class: (0, vue.normalizeClass)((0, vue.unref)(nsUpload).be("list", "item-info"))
}, [(0, vue.createElementVNode)("a", {
class: (0, vue.normalizeClass)((0, vue.unref)(nsUpload).be("list", "item-name")),
onClick: (0, vue.withModifiers)(($event) => __props.handlePreview(file), ["prevent"])
}, [(0, vue.createVNode)((0, vue.unref)(require_index$2.ElIcon), { class: (0, vue.normalizeClass)((0, vue.unref)(nsIcon).m("document")) }, {
default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(_element_plus_icons_vue.Document))]),
_: 1
}, 8, ["class"]), (0, vue.createElementVNode)("span", {
class: (0, vue.normalizeClass)((0, vue.unref)(nsUpload).be("list", "item-file-name")),
title: file.name
}, (0, vue.toDisplayString)(file.name), 11, _hoisted_4)], 10, _hoisted_3), file.status === "uploading" ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(require_index$3.ElProgress), {
key: 0,
type: __props.listType === "picture-card" ? "circle" : "line",
"stroke-width": __props.listType === "picture-card" ? 6 : 2,
percentage: Number(file.percentage),
style: (0, vue.normalizeStyle)(__props.listType === "picture-card" ? "" : "margin-top: 0.5rem")
}, null, 8, [
"type",
"stroke-width",
"percentage",
"style"
])) : (0, vue.createCommentVNode)("v-if", true)], 2)) : (0, vue.createCommentVNode)("v-if", true),
(0, vue.createElementVNode)("label", { class: (0, vue.normalizeClass)((0, vue.unref)(nsUpload).be("list", "item-status-label")) }, [__props.listType === "text" ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(require_index$2.ElIcon), {
key: 0,
class: (0, vue.normalizeClass)([(0, vue.unref)(nsIcon).m("upload-success"), (0, vue.unref)(nsIcon).m("circle-check")])
}, {
default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(_element_plus_icons_vue.CircleCheck))]),
_: 1
}, 8, ["class"])) : ["picture-card", "picture"].includes(__props.listType) ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(require_index$2.ElIcon), {
key: 1,
class: (0, vue.normalizeClass)([(0, vue.unref)(nsIcon).m("upload-success"), (0, vue.unref)(nsIcon).m("check")])
}, {
default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(_element_plus_icons_vue.Check))]),
_: 1
}, 8, ["class"])) : (0, vue.createCommentVNode)("v-if", true)], 2),
!(0, vue.unref)(disabled) ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(require_index$2.ElIcon), {
key: 2,
class: (0, vue.normalizeClass)((0, vue.unref)(nsIcon).m("close")),
"aria-label": (0, vue.unref)(t)("el.upload.delete"),
role: "button",
tabindex: "0",
onClick: ($event) => handleRemove(file),
onKeydown: (0, vue.withKeys)((0, vue.withModifiers)(($event) => handleRemove(file), ["prevent"]), ["enter", "space"])
}, {
default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(_element_plus_icons_vue.Close))]),
_: 1
}, 8, [
"class",
"aria-label",
"onClick",
"onKeydown"
])) : (0, vue.createCommentVNode)("v-if", true),
!(0, vue.unref)(disabled) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("i", {
key: 3,
class: (0, vue.normalizeClass)((0, vue.unref)(nsIcon).m("close-tip"))
}, (0, vue.toDisplayString)((0, vue.unref)(t)("el.upload.deleteTip")), 3)) : (0, vue.createCommentVNode)("v-if", true),
__props.listType === "picture-card" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", {
key: 4,
class: (0, vue.normalizeClass)((0, vue.unref)(nsUpload).be("list", "item-actions"))
}, [(0, vue.createElementVNode)("span", {
class: (0, vue.normalizeClass)((0, vue.unref)(nsUpload).be("list", "item-preview")),
onClick: ($event) => __props.handlePreview(file)
}, [(0, vue.createVNode)((0, vue.unref)(require_index$2.ElIcon), { class: (0, vue.normalizeClass)((0, vue.unref)(nsIcon).m("zoom-in")) }, {
default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(_element_plus_icons_vue.ZoomIn))]),
_: 1
}, 8, ["class"])], 10, _hoisted_5), !(0, vue.unref)(disabled) ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", {
key: 0,
class: (0, vue.normalizeClass)((0, vue.unref)(nsUpload).be("list", "item-delete")),
onClick: ($event) => handleRemove(file)
}, [(0, vue.createVNode)((0, vue.unref)(require_index$2.ElIcon), { class: (0, vue.normalizeClass)((0, vue.unref)(nsIcon).m("delete")) }, {
default: (0, vue.withCtx)(() => [(0, vue.createVNode)((0, vue.unref)(_element_plus_icons_vue.Delete))]),
_: 1
}, 8, ["class"])], 10, _hoisted_6)) : (0, vue.createCommentVNode)("v-if", true)], 2)) : (0, vue.createCommentVNode)("v-if", true)
])], 42, _hoisted_1);
}), 128)), (0, vue.renderSlot)(_ctx.$slots, "append")]),
_: 3
}, 8, ["class", "name"]);
};
}
});
//#endregion
exports.default = upload_list_vue_vue_type_script_setup_true_lang_default;
//# sourceMappingURL=upload-list.vue_vue_type_script_setup_true_lang.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,9 @@
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
const require_upload_list_vue_vue_type_script_setup_true_lang = require('./upload-list.vue_vue_type_script_setup_true_lang.js');
//#region ../../packages/components/upload/src/upload-list.vue
var upload_list_default = require_upload_list_vue_vue_type_script_setup_true_lang.default;
//#endregion
exports.default = upload_list_default;
//# sourceMappingURL=upload-list2.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,368 @@
import { EpPropFinalized, EpPropMergeType } from "../../../utils/vue/props/types.js";
import { Awaitable, Mutable } from "../../../utils/typescript.js";
import "../../../utils/index.js";
import { UploadAjaxError } from "./ajax.js";
import { _default } from "./upload.vue.js";
import * as vue from "vue";
import { ExtractPublicPropTypes } from "vue";
//#region ../../packages/components/upload/src/upload.d.ts
/**
* @deprecated Removed after 3.0.0, Use `UploadProps` instead.
*/
declare const uploadListTypes: readonly ["text", "picture", "picture-card"];
declare const genFileId: () => number;
type UploadStatus = 'ready' | 'uploading' | 'success' | 'fail';
interface UploadProgressEvent extends ProgressEvent {
percent: number;
}
interface UploadRequestOptions {
action: string;
method: string;
data: Record<string, string | Blob | [string | Blob, string] | string[]>;
filename: string;
file: UploadRawFile;
headers: Headers | Record<string, string | number | null | undefined>;
onError: (evt: UploadAjaxError) => void;
onProgress: (evt: UploadProgressEvent) => void;
onSuccess: (response: any) => void;
withCredentials: boolean;
}
interface UploadFile {
name: string;
percentage?: number;
status: UploadStatus;
size?: number;
response?: unknown;
uid: number;
url?: string;
raw?: UploadRawFile;
}
type UploadUserFile = Omit<UploadFile, 'status' | 'uid'> & Partial<Pick<UploadFile, 'status' | 'uid'>>;
type UploadFiles = UploadFile[];
interface UploadRawFile extends File {
uid: number;
isDirectory?: boolean;
}
type UploadRequestHandler = (options: UploadRequestOptions) => XMLHttpRequest | Promise<unknown>;
interface UploadHooks {
beforeUpload: (rawFile: UploadRawFile) => Awaitable<void | undefined | null | boolean | File | Blob>;
beforeRemove: (uploadFile: UploadFile, uploadFiles: UploadFiles) => Awaitable<boolean>;
onRemove: (uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
onChange: (uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
onPreview: (uploadFile: UploadFile) => void;
onSuccess: (response: any, uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
onProgress: (evt: UploadProgressEvent, uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
onError: (error: Error, uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
onExceed: (files: File[], uploadFiles: UploadUserFile[]) => void;
}
type UploadData = Mutable<Record<string, any>>;
type ListType = 'text' | 'picture' | 'picture-card';
type Crossorigin = 'anonymous' | 'use-credentials' | '';
interface UploadBaseProps {
/**
* @description request URL
*/
action?: string;
/**
* @description request headers
*/
headers?: Headers | Record<string, any>;
/**
* @description set upload request method
*/
method?: string;
/**
* @description additions options of request
*/
data?: Awaitable<UploadData> | ((rawFile: UploadRawFile) => Awaitable<UploadData>);
/**
* @description whether uploading multiple files is permitted
*/
multiple?: boolean;
/**
* @description key name for uploaded file
*/
name?: string;
/**
* @description whether to activate drag and drop mode
*/
drag?: boolean;
/**
* @description whether cookies are sent
*/
withCredentials?: boolean;
/**
* @description whether to show the uploaded file list
*/
showFileList?: boolean;
/**
* @description accepted [file types](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-accept), will not work when `thumbnail-mode === true`
*/
accept?: string;
/**
* @description default uploaded files
*/
fileList?: UploadUserFile[];
/**
* @description whether to auto upload file
*/
autoUpload?: boolean;
/**
* @description type of file list
*/
listType?: ListType;
/**
* @description override default xhr behavior, allowing you to implement your own upload-file's request
*/
httpRequest?: UploadRequestHandler;
/**
* @description whether to disable upload
*/
disabled?: boolean;
/**
* @description maximum number of uploads allowed
*/
limit?: number;
/**
* @description whether to support uploading directory
*/
directory?: boolean;
}
interface UploadProps extends UploadBaseProps {
/**
* @description hook function before uploading with the file to be uploaded as its parameter. If `false` is returned or a `Promise` is returned and then is rejected, uploading will be aborted
*/
beforeUpload?: UploadHooks['beforeUpload'];
/**
* @description hook function before removing a file with the file and file list as its parameters. If `false` is returned or a `Promise` is returned and then is rejected, removing will be aborted
*/
beforeRemove?: UploadHooks['beforeRemove'];
/**
* @description hook function when files are removed
*/
onRemove?: UploadHooks['onRemove'];
/**
* @description hook function when select file or upload file success or upload file fail
*/
onChange?: UploadHooks['onChange'];
/**
* @description hook function when clicking the uploaded files
*/
onPreview?: UploadHooks['onPreview'];
/**
* @description hook function when uploaded successfully
*/
onSuccess?: UploadHooks['onSuccess'];
/**
* @description hook function when some progress occurs
*/
onProgress?: UploadHooks['onProgress'];
/**
* @description hook function when some errors occurs
*/
onError?: UploadHooks['onError'];
/**
* @description hook function when limit is exceeded
*/
onExceed?: UploadHooks['onExceed'];
/**
* @description set HTML attribute: crossorigin.
*/
crossorigin?: Crossorigin;
}
/**
* @deprecated Removed after 3.0.0, Use `UploadBaseProps` instead.
*/
declare const uploadBaseProps: {
readonly action: EpPropFinalized<StringConstructor, unknown, unknown, "#", boolean>;
readonly headers: {
readonly type: vue.PropType<EpPropMergeType<(new (...args: any[]) => Record<string, any> | Headers) | (() => Record<string, any> | Headers) | (((new (...args: any[]) => Record<string, any> | Headers) | (() => Record<string, any> | Headers)) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly method: EpPropFinalized<StringConstructor, unknown, unknown, "post", boolean>;
readonly data: EpPropFinalized<(new (...args: any[]) => Mutable<Record<string, any>> | Promise<Mutable<Record<string, any>>> | ((rawFile: UploadRawFile) => Awaitable<UploadData>)) | (() => Awaitable<Mutable<Record<string, any>>> | ((rawFile: UploadRawFile) => Awaitable<UploadData>)) | (((new (...args: any[]) => Mutable<Record<string, any>> | Promise<Mutable<Record<string, any>>> | ((rawFile: UploadRawFile) => Awaitable<UploadData>)) | (() => Awaitable<Mutable<Record<string, any>>> | ((rawFile: UploadRawFile) => Awaitable<UploadData>))) | null)[], unknown, unknown, () => Mutable<{}>, boolean>;
readonly multiple: BooleanConstructor;
readonly name: EpPropFinalized<StringConstructor, unknown, unknown, "file", boolean>;
readonly drag: BooleanConstructor;
readonly withCredentials: BooleanConstructor;
readonly showFileList: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly accept: EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
readonly fileList: EpPropFinalized<(new (...args: any[]) => UploadUserFile[]) | (() => UploadUserFile[]) | (((new (...args: any[]) => UploadUserFile[]) | (() => UploadUserFile[])) | null)[], unknown, unknown, () => [], boolean>;
readonly autoUpload: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly listType: EpPropFinalized<StringConstructor, "text" | "picture" | "picture-card", unknown, "text", boolean>;
readonly httpRequest: EpPropFinalized<(new (...args: any[]) => UploadRequestHandler) | (() => UploadRequestHandler) | {
(): UploadRequestHandler;
new (): any;
readonly prototype: any;
} | (((new (...args: any[]) => UploadRequestHandler) | (() => UploadRequestHandler) | {
(): UploadRequestHandler;
new (): any;
readonly prototype: any;
}) | null)[], unknown, unknown, UploadRequestHandler, boolean>;
readonly disabled: EpPropFinalized<BooleanConstructor, unknown, unknown, undefined, boolean>;
readonly limit: NumberConstructor;
readonly directory: BooleanConstructor;
};
/**
* @deprecated Removed after 3.0.0, Use `UploadProps` instead.
*/
declare const uploadProps: {
readonly beforeUpload: EpPropFinalized<(new (...args: any[]) => (rawFile: UploadRawFile) => Awaitable<void | undefined | null | boolean | File | Blob>) | (() => (rawFile: UploadRawFile) => Awaitable<void | undefined | null | boolean | File | Blob>) | {
(): (rawFile: UploadRawFile) => Awaitable<void | undefined | null | boolean | File | Blob>;
new (): any;
readonly prototype: any;
} | (((new (...args: any[]) => (rawFile: UploadRawFile) => Awaitable<void | undefined | null | boolean | File | Blob>) | (() => (rawFile: UploadRawFile) => Awaitable<void | undefined | null | boolean | File | Blob>) | {
(): (rawFile: UploadRawFile) => Awaitable<void | undefined | null | boolean | File | Blob>;
new (): any;
readonly prototype: any;
}) | null)[], unknown, unknown, () => void, boolean>;
readonly beforeRemove: {
readonly type: vue.PropType<(uploadFile: UploadFile, uploadFiles: UploadFiles) => Awaitable<boolean>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly onRemove: EpPropFinalized<(new (...args: any[]) => (uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | (() => (uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | {
(): (uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
new (): any;
readonly prototype: any;
} | (((new (...args: any[]) => (uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | (() => (uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | {
(): (uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
new (): any;
readonly prototype: any;
}) | null)[], unknown, unknown, () => void, boolean>;
readonly onChange: EpPropFinalized<(new (...args: any[]) => (uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | (() => (uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | {
(): (uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
new (): any;
readonly prototype: any;
} | (((new (...args: any[]) => (uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | (() => (uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | {
(): (uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
new (): any;
readonly prototype: any;
}) | null)[], unknown, unknown, () => void, boolean>;
readonly onPreview: EpPropFinalized<(new (...args: any[]) => (uploadFile: UploadFile) => void) | (() => (uploadFile: UploadFile) => void) | {
(): (uploadFile: UploadFile) => void;
new (): any;
readonly prototype: any;
} | (((new (...args: any[]) => (uploadFile: UploadFile) => void) | (() => (uploadFile: UploadFile) => void) | {
(): (uploadFile: UploadFile) => void;
new (): any;
readonly prototype: any;
}) | null)[], unknown, unknown, () => void, boolean>;
readonly onSuccess: EpPropFinalized<(new (...args: any[]) => (response: any, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | (() => (response: any, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | {
(): (response: any, uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
new (): any;
readonly prototype: any;
} | (((new (...args: any[]) => (response: any, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | (() => (response: any, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | {
(): (response: any, uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
new (): any;
readonly prototype: any;
}) | null)[], unknown, unknown, () => void, boolean>;
readonly onProgress: EpPropFinalized<(new (...args: any[]) => (evt: UploadProgressEvent, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | (() => (evt: UploadProgressEvent, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | {
(): (evt: UploadProgressEvent, uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
new (): any;
readonly prototype: any;
} | (((new (...args: any[]) => (evt: UploadProgressEvent, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | (() => (evt: UploadProgressEvent, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | {
(): (evt: UploadProgressEvent, uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
new (): any;
readonly prototype: any;
}) | null)[], unknown, unknown, () => void, boolean>;
readonly onError: EpPropFinalized<(new (...args: any[]) => (error: Error, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | (() => (error: Error, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | {
(): (error: Error, uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
new (): any;
readonly prototype: any;
} | (((new (...args: any[]) => (error: Error, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | (() => (error: Error, uploadFile: UploadFile, uploadFiles: UploadFiles) => void) | {
(): (error: Error, uploadFile: UploadFile, uploadFiles: UploadFiles) => void;
new (): any;
readonly prototype: any;
}) | null)[], unknown, unknown, () => void, boolean>;
readonly onExceed: EpPropFinalized<(new (...args: any[]) => (files: File[], uploadFiles: UploadUserFile[]) => void) | (() => (files: File[], uploadFiles: UploadUserFile[]) => void) | {
(): (files: File[], uploadFiles: UploadUserFile[]) => void;
new (): any;
readonly prototype: any;
} | (((new (...args: any[]) => (files: File[], uploadFiles: UploadUserFile[]) => void) | (() => (files: File[], uploadFiles: UploadUserFile[]) => void) | {
(): (files: File[], uploadFiles: UploadUserFile[]) => void;
new (): any;
readonly prototype: any;
}) | null)[], unknown, unknown, () => void, boolean>;
readonly crossorigin: {
readonly type: vue.PropType<EpPropMergeType<(new (...args: any[]) => "" | "anonymous" | "use-credentials") | (() => "" | "anonymous" | "use-credentials") | (((new (...args: any[]) => "" | "anonymous" | "use-credentials") | (() => "" | "anonymous" | "use-credentials")) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly action: EpPropFinalized<StringConstructor, unknown, unknown, "#", boolean>;
readonly headers: {
readonly type: vue.PropType<EpPropMergeType<(new (...args: any[]) => Record<string, any> | Headers) | (() => Record<string, any> | Headers) | (((new (...args: any[]) => Record<string, any> | Headers) | (() => Record<string, any> | Headers)) | null)[], unknown, unknown>>;
readonly required: false;
readonly validator: ((val: unknown) => boolean) | undefined;
__epPropKey: true;
};
readonly method: EpPropFinalized<StringConstructor, unknown, unknown, "post", boolean>;
readonly data: EpPropFinalized<(new (...args: any[]) => Mutable<Record<string, any>> | Promise<Mutable<Record<string, any>>> | ((rawFile: UploadRawFile) => Awaitable<UploadData>)) | (() => Awaitable<Mutable<Record<string, any>>> | ((rawFile: UploadRawFile) => Awaitable<UploadData>)) | (((new (...args: any[]) => Mutable<Record<string, any>> | Promise<Mutable<Record<string, any>>> | ((rawFile: UploadRawFile) => Awaitable<UploadData>)) | (() => Awaitable<Mutable<Record<string, any>>> | ((rawFile: UploadRawFile) => Awaitable<UploadData>))) | null)[], unknown, unknown, () => Mutable<{}>, boolean>;
readonly multiple: BooleanConstructor;
readonly name: EpPropFinalized<StringConstructor, unknown, unknown, "file", boolean>;
readonly drag: BooleanConstructor;
readonly withCredentials: BooleanConstructor;
readonly showFileList: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly accept: EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
readonly fileList: EpPropFinalized<(new (...args: any[]) => UploadUserFile[]) | (() => UploadUserFile[]) | (((new (...args: any[]) => UploadUserFile[]) | (() => UploadUserFile[])) | null)[], unknown, unknown, () => [], boolean>;
readonly autoUpload: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
readonly listType: EpPropFinalized<StringConstructor, "text" | "picture" | "picture-card", unknown, "text", boolean>;
readonly httpRequest: EpPropFinalized<(new (...args: any[]) => UploadRequestHandler) | (() => UploadRequestHandler) | {
(): UploadRequestHandler;
new (): any;
readonly prototype: any;
} | (((new (...args: any[]) => UploadRequestHandler) | (() => UploadRequestHandler) | {
(): UploadRequestHandler;
new (): any;
readonly prototype: any;
}) | null)[], unknown, unknown, UploadRequestHandler, boolean>;
readonly disabled: EpPropFinalized<BooleanConstructor, unknown, unknown, undefined, boolean>;
readonly limit: NumberConstructor;
readonly directory: BooleanConstructor;
};
/**
* @deprecated Removed after 3.0.0, Use `UploadProps` instead.
*/
type UploadPropsPublic = ExtractPublicPropTypes<typeof uploadProps>;
type UploadInstance = InstanceType<typeof _default> & unknown;
declare const uploadBasePropsDefaults: {
readonly action: "#";
readonly method: "post";
readonly data: () => Mutable<{}>;
readonly name: "file";
readonly showFileList: true;
readonly accept: "";
readonly fileList: () => never[];
readonly autoUpload: true;
readonly listType: "text";
readonly httpRequest: UploadRequestHandler;
readonly disabled: undefined;
};
declare const uploadPropsDefaults: {
readonly beforeUpload: () => void;
readonly onRemove: () => void;
readonly onChange: () => void;
readonly onPreview: () => void;
readonly onSuccess: () => void;
readonly onProgress: () => void;
readonly onError: () => void;
readonly onExceed: () => void;
readonly action: "#";
readonly method: "post";
readonly data: () => Mutable<{}>;
readonly name: "file";
readonly showFileList: true;
readonly accept: "";
readonly fileList: () => never[];
readonly autoUpload: true;
readonly listType: "text";
readonly httpRequest: UploadRequestHandler;
readonly disabled: undefined;
};
//#endregion
export { Crossorigin, ListType, UploadBaseProps, UploadData, UploadFile, UploadFiles, UploadHooks, UploadInstance, UploadProgressEvent, UploadProps, UploadPropsPublic, UploadRawFile, UploadRequestHandler, UploadRequestOptions, UploadStatus, UploadUserFile, genFileId, uploadBaseProps, uploadBasePropsDefaults, uploadListTypes, uploadProps, uploadPropsDefaults };

View File

@@ -0,0 +1,151 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_runtime = require('../../../_virtual/_rolldown/runtime.js');
const require_runtime$1 = require('../../../utils/vue/props/runtime.js');
const require_typescript = require('../../../utils/typescript.js');
const require_ajax = require('./ajax.js');
let _vue_shared = require("@vue/shared");
//#region ../../packages/components/upload/src/upload.ts
/**
* @deprecated Removed after 3.0.0, Use `UploadProps` instead.
*/
const uploadListTypes = [
"text",
"picture",
"picture-card"
];
let fileId = 1;
const genFileId = () => Date.now() + fileId++;
/**
* @deprecated Removed after 3.0.0, Use `UploadBaseProps` instead.
*/
const uploadBaseProps = require_runtime$1.buildProps({
action: {
type: String,
default: "#"
},
headers: { type: require_runtime$1.definePropType(Object) },
method: {
type: String,
default: "post"
},
data: {
type: require_runtime$1.definePropType([
Object,
Function,
Promise
]),
default: () => require_typescript.mutable({})
},
multiple: Boolean,
name: {
type: String,
default: "file"
},
drag: Boolean,
withCredentials: Boolean,
showFileList: {
type: Boolean,
default: true
},
accept: {
type: String,
default: ""
},
fileList: {
type: require_runtime$1.definePropType(Array),
default: () => require_typescript.mutable([])
},
autoUpload: {
type: Boolean,
default: true
},
listType: {
type: String,
values: uploadListTypes,
default: "text"
},
httpRequest: {
type: require_runtime$1.definePropType(Function),
default: require_ajax.ajaxUpload
},
disabled: {
type: Boolean,
default: void 0
},
limit: Number,
directory: Boolean
});
/**
* @deprecated Removed after 3.0.0, Use `UploadProps` instead.
*/
const uploadProps = require_runtime$1.buildProps({
...uploadBaseProps,
beforeUpload: {
type: require_runtime$1.definePropType(Function),
default: _vue_shared.NOOP
},
beforeRemove: { type: require_runtime$1.definePropType(Function) },
onRemove: {
type: require_runtime$1.definePropType(Function),
default: _vue_shared.NOOP
},
onChange: {
type: require_runtime$1.definePropType(Function),
default: _vue_shared.NOOP
},
onPreview: {
type: require_runtime$1.definePropType(Function),
default: _vue_shared.NOOP
},
onSuccess: {
type: require_runtime$1.definePropType(Function),
default: _vue_shared.NOOP
},
onProgress: {
type: require_runtime$1.definePropType(Function),
default: _vue_shared.NOOP
},
onError: {
type: require_runtime$1.definePropType(Function),
default: _vue_shared.NOOP
},
onExceed: {
type: require_runtime$1.definePropType(Function),
default: _vue_shared.NOOP
},
crossorigin: { type: require_runtime$1.definePropType(String) }
});
const uploadBasePropsDefaults = {
action: "#",
method: "post",
data: () => require_typescript.mutable({}),
name: "file",
showFileList: true,
accept: "",
fileList: () => require_typescript.mutable([]),
autoUpload: true,
listType: "text",
httpRequest: require_ajax.ajaxUpload,
disabled: void 0
};
const uploadPropsDefaults = {
...uploadBasePropsDefaults,
beforeUpload: _vue_shared.NOOP,
onRemove: _vue_shared.NOOP,
onChange: _vue_shared.NOOP,
onPreview: _vue_shared.NOOP,
onSuccess: _vue_shared.NOOP,
onProgress: _vue_shared.NOOP,
onError: _vue_shared.NOOP,
onExceed: _vue_shared.NOOP
};
//#endregion
exports.genFileId = genFileId;
exports.uploadBaseProps = uploadBaseProps;
exports.uploadBasePropsDefaults = uploadBasePropsDefaults;
exports.uploadListTypes = uploadListTypes;
exports.uploadProps = uploadProps;
exports.uploadPropsDefaults = uploadPropsDefaults;
//# sourceMappingURL=upload.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,66 @@
import { Awaitable } from "../../../utils/typescript.js";
import "../../../utils/index.js";
import { ListType, UploadData, UploadFile, UploadHooks, UploadProps, UploadRawFile, UploadRequestHandler, UploadStatus, UploadUserFile } from "./upload.js";
import * as vue from "vue";
//#region ../../packages/components/upload/src/upload.vue.d.ts
declare var __VLS_10: {
file: UploadFile;
index: number;
}, __VLS_21: {}, __VLS_23: {}, __VLS_33: {}, __VLS_35: {}, __VLS_37: {}, __VLS_39: {}, __VLS_50: {
file: UploadFile;
index: number;
};
type __VLS_Slots = {} & {
file?: (props: typeof __VLS_10) => any;
} & {
trigger?: (props: typeof __VLS_21) => any;
} & {
default?: (props: typeof __VLS_23) => any;
} & {
trigger?: (props: typeof __VLS_33) => any;
} & {
default?: (props: typeof __VLS_35) => any;
} & {
default?: (props: typeof __VLS_37) => any;
} & {
tip?: (props: typeof __VLS_39) => any;
} & {
file?: (props: typeof __VLS_50) => any;
};
declare const __VLS_base: vue.DefineComponent<UploadProps, {
/** @description cancel upload request */abort: (file?: UploadFile) => void; /** @description upload the file list manually */
submit: () => void; /** @description clear the file list */
clearFiles: (states?: UploadStatus[]) => void; /** @description select the file manually */
handleStart: (rawFile: UploadRawFile) => void; /** @description remove the file manually */
handleRemove: (file: UploadFile | UploadRawFile) => void;
}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<UploadProps> & Readonly<{}>, {
onChange: UploadHooks["onChange"];
disabled: boolean;
name: string;
onError: UploadHooks["onError"];
onProgress: UploadHooks["onProgress"];
data: Awaitable<UploadData> | ((rawFile: UploadRawFile) => Awaitable<UploadData>);
beforeUpload: UploadHooks["beforeUpload"];
onRemove: UploadHooks["onRemove"];
onPreview: UploadHooks["onPreview"];
onSuccess: UploadHooks["onSuccess"];
onExceed: UploadHooks["onExceed"];
action: string;
method: string;
showFileList: boolean;
accept: string;
fileList: UploadUserFile[];
autoUpload: boolean;
listType: ListType;
httpRequest: UploadRequestHandler;
}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
declare const _default: typeof __VLS_export;
type __VLS_WithSlots<T, S> = T & {
new (): {
$slots: S;
};
};
//#endregion
export { _default };

View File

@@ -0,0 +1,115 @@
const require_runtime = require('../../../_virtual/_rolldown/runtime.js');
const require_use_form_common_props = require('../../form/src/hooks/use-form-common-props.js');
const require_upload = require('./upload.js');
const require_constants = require('./constants.js');
const require_upload_list = require('./upload-list2.js');
const require_upload_content = require('./upload-content2.js');
const require_use_handlers = require('./use-handlers.js');
let vue = require("vue");
//#region ../../packages/components/upload/src/upload.vue?vue&type=script&setup=true&lang.ts
var upload_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ (0, vue.defineComponent)({
name: "ElUpload",
__name: "upload",
props: require_upload.uploadProps,
setup(__props, { expose: __expose }) {
const props = __props;
const disabled = require_use_form_common_props.useFormDisabled();
const uploadRef = (0, vue.shallowRef)();
const { abort, submit, clearFiles, uploadFiles, handleStart, handleError, handleRemove, handleSuccess, handleProgress, revokeFileObjectURL } = require_use_handlers.useHandlers(props, uploadRef);
const isPictureCard = (0, vue.computed)(() => props.listType === "picture-card");
const uploadContentProps = (0, vue.computed)(() => ({
...props,
fileList: uploadFiles.value,
onStart: handleStart,
onProgress: handleProgress,
onSuccess: handleSuccess,
onError: handleError,
onRemove: handleRemove
}));
(0, vue.onBeforeUnmount)(() => {
uploadFiles.value.forEach(revokeFileObjectURL);
});
(0, vue.provide)(require_constants.uploadContextKey, { accept: (0, vue.toRef)(props, "accept") });
__expose({
abort,
submit,
clearFiles,
handleStart,
handleRemove
});
return (_ctx, _cache) => {
return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", null, [
isPictureCard.value && __props.showFileList ? ((0, vue.openBlock)(), (0, vue.createBlock)(require_upload_list.default, {
key: 0,
disabled: (0, vue.unref)(disabled),
"list-type": __props.listType,
files: (0, vue.unref)(uploadFiles),
crossorigin: __props.crossorigin,
"handle-preview": __props.onPreview,
onRemove: (0, vue.unref)(handleRemove)
}, (0, vue.createSlots)({
append: (0, vue.withCtx)(() => [(0, vue.createVNode)(require_upload_content.default, (0, vue.mergeProps)({
ref_key: "uploadRef",
ref: uploadRef
}, uploadContentProps.value), {
default: (0, vue.withCtx)(() => [_ctx.$slots.trigger ? (0, vue.renderSlot)(_ctx.$slots, "trigger", { key: 0 }) : (0, vue.createCommentVNode)("v-if", true), !_ctx.$slots.trigger && _ctx.$slots.default ? (0, vue.renderSlot)(_ctx.$slots, "default", { key: 1 }) : (0, vue.createCommentVNode)("v-if", true)]),
_: 3
}, 16)]),
_: 2
}, [_ctx.$slots.file ? {
name: "default",
fn: (0, vue.withCtx)(({ file, index }) => [(0, vue.renderSlot)(_ctx.$slots, "file", {
file,
index
})]),
key: "0"
} : void 0]), 1032, [
"disabled",
"list-type",
"files",
"crossorigin",
"handle-preview",
"onRemove"
])) : (0, vue.createCommentVNode)("v-if", true),
!isPictureCard.value || isPictureCard.value && !__props.showFileList ? ((0, vue.openBlock)(), (0, vue.createBlock)(require_upload_content.default, (0, vue.mergeProps)({
key: 1,
ref_key: "uploadRef",
ref: uploadRef
}, uploadContentProps.value), {
default: (0, vue.withCtx)(() => [_ctx.$slots.trigger ? (0, vue.renderSlot)(_ctx.$slots, "trigger", { key: 0 }) : (0, vue.createCommentVNode)("v-if", true), !_ctx.$slots.trigger && _ctx.$slots.default ? (0, vue.renderSlot)(_ctx.$slots, "default", { key: 1 }) : (0, vue.createCommentVNode)("v-if", true)]),
_: 3
}, 16)) : (0, vue.createCommentVNode)("v-if", true),
_ctx.$slots.trigger ? (0, vue.renderSlot)(_ctx.$slots, "default", { key: 2 }) : (0, vue.createCommentVNode)("v-if", true),
(0, vue.renderSlot)(_ctx.$slots, "tip"),
!isPictureCard.value && __props.showFileList ? ((0, vue.openBlock)(), (0, vue.createBlock)(require_upload_list.default, {
key: 3,
disabled: (0, vue.unref)(disabled),
"list-type": __props.listType,
files: (0, vue.unref)(uploadFiles),
crossorigin: __props.crossorigin,
"handle-preview": __props.onPreview,
onRemove: (0, vue.unref)(handleRemove)
}, (0, vue.createSlots)({ _: 2 }, [_ctx.$slots.file ? {
name: "default",
fn: (0, vue.withCtx)(({ file, index }) => [(0, vue.renderSlot)(_ctx.$slots, "file", {
file,
index
})]),
key: "0"
} : void 0]), 1032, [
"disabled",
"list-type",
"files",
"crossorigin",
"handle-preview",
"onRemove"
])) : (0, vue.createCommentVNode)("v-if", true)
]);
};
}
});
//#endregion
exports.default = upload_vue_vue_type_script_setup_true_lang_default;
//# sourceMappingURL=upload.vue_vue_type_script_setup_true_lang.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"upload.vue_vue_type_script_setup_true_lang.js","names":["$slots"],"sources":["../../../../../../packages/components/upload/src/upload.vue"],"sourcesContent":["<template>\n <div>\n <upload-list\n v-if=\"isPictureCard && showFileList\"\n :disabled=\"disabled\"\n :list-type=\"listType\"\n :files=\"uploadFiles\"\n :crossorigin=\"crossorigin\"\n :handle-preview=\"onPreview\"\n @remove=\"handleRemove\"\n >\n <template v-if=\"$slots.file\" #default=\"{ file, index }\">\n <slot name=\"file\" :file=\"file\" :index=\"index\" />\n </template>\n <template #append>\n <upload-content ref=\"uploadRef\" v-bind=\"uploadContentProps\">\n <slot v-if=\"$slots.trigger\" name=\"trigger\" />\n <slot v-if=\"!$slots.trigger && $slots.default\" />\n </upload-content>\n </template>\n </upload-list>\n\n <upload-content\n v-if=\"!isPictureCard || (isPictureCard && !showFileList)\"\n ref=\"uploadRef\"\n v-bind=\"uploadContentProps\"\n >\n <slot v-if=\"$slots.trigger\" name=\"trigger\" />\n <slot v-if=\"!$slots.trigger && $slots.default\" />\n </upload-content>\n\n <slot v-if=\"$slots.trigger\" />\n <slot name=\"tip\" />\n <upload-list\n v-if=\"!isPictureCard && showFileList\"\n :disabled=\"disabled\"\n :list-type=\"listType\"\n :files=\"uploadFiles\"\n :crossorigin=\"crossorigin\"\n :handle-preview=\"onPreview\"\n @remove=\"handleRemove\"\n >\n <template v-if=\"$slots.file\" #default=\"{ file, index }\">\n <slot name=\"file\" :file=\"file\" :index=\"index\" />\n </template>\n </upload-list>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, onBeforeUnmount, provide, shallowRef, toRef } from 'vue'\nimport { useFormDisabled } from '@element-plus/components/form'\nimport { uploadContextKey } from './constants'\nimport UploadList from './upload-list.vue'\nimport UploadContent from './upload-content.vue'\nimport { useHandlers } from './use-handlers'\nimport { uploadPropsDefaults } from './upload'\n\nimport type { UploadProps } from './upload'\nimport type {\n UploadContentInstance,\n UploadContentProps,\n} from './upload-content'\n\ndefineOptions({\n name: 'ElUpload',\n})\n\nconst props = withDefaults(defineProps<UploadProps>(), uploadPropsDefaults)\n\nconst disabled = useFormDisabled()\n\nconst uploadRef = shallowRef<UploadContentInstance>()\nconst {\n abort,\n submit,\n clearFiles,\n uploadFiles,\n handleStart,\n handleError,\n handleRemove,\n handleSuccess,\n handleProgress,\n revokeFileObjectURL,\n} = useHandlers(props, uploadRef)\n\nconst isPictureCard = computed(() => props.listType === 'picture-card')\n\nconst uploadContentProps = computed<UploadContentProps>(() => ({\n ...props,\n fileList: uploadFiles.value,\n onStart: handleStart,\n onProgress: handleProgress,\n onSuccess: handleSuccess,\n onError: handleError,\n onRemove: handleRemove,\n}))\n\nonBeforeUnmount(() => {\n uploadFiles.value.forEach(revokeFileObjectURL)\n})\n\nprovide(uploadContextKey, {\n accept: toRef(props, 'accept'),\n})\n\ndefineExpose({\n /** @description cancel upload request */\n abort,\n /** @description upload the file list manually */\n submit,\n /** @description clear the file list */\n clearFiles,\n /** @description select the file manually */\n handleStart,\n /** @description remove the file manually */\n handleRemove,\n})\n</script>\n"],"mappings":";;;;;;;;;;;;;;;EAoEA,MAAM,QAAQ;EAEd,MAAM,WAAW,+CAAgB;EAEjC,MAAM,iCAA8C;EACpD,MAAM,EACJ,OACA,QACA,YACA,aACA,aACA,aACA,cACA,eACA,gBACA,wBACE,iCAAY,OAAO,UAAS;EAEhC,MAAM,wCAA+B,MAAM,aAAa,eAAc;EAEtE,MAAM,8CAAyD;GAC7D,GAAG;GACH,UAAU,YAAY;GACtB,SAAS;GACT,YAAY;GACZ,WAAW;GACX,SAAS;GACT,UAAU;GACX,EAAC;AAEF,iCAAsB;AACpB,eAAY,MAAM,QAAQ,oBAAmB;IAC9C;AAED,mBAAQ,oCAAkB,EACxB,uBAAc,OAAO,SAAS,EAC/B,CAAA;AAED,WAAa;GAEX;GAEA;GAEA;GAEA;GAEA;GACD,CAAA;;4DAvEO,OAAA,MAAA;IA3CI,cAAA,SAAiB,QAAA,2DAiBX,6BAAA;;KAhBX,yBAAU,SAAQ;KAClB,aAAW,QAAA;KACX,sBAAO,YAAW;KAClB,aAAa,QAAA;KACb,kBAAgB,QAAA;KAChB,yBAAQ,aAAA;;KAKE,+BAIQ,sBAAA,oDAAA;eAHG;MAAJ,KAAI;QAAoB,mBAAA,MAAkB,EAAA;sCACX,CAAjCA,KAAAA,OAAO,8BAA0B,KAAA,QAAA,WAAA,EAAA,KAAA,GAAA,CAAA,+CAChCA,KAAAA,OAAO,WAAWA,KAAAA,OAAO,8BAAW,KAAA,QAAA,WAAA,EAAA,KAAA,GAAA,CAAA;;;;QANrCA,KAAAA,OAAO;WAAO;2BACoB,EADT,MAAM,YAAK,qBACF,KAAA,QAAA,QAAA;MAAvB;MAAc;;;;;;;;;;;KAWlC,cAAA,SAAkB,cAAA,SAAa,CAAK,QAAA,2DAM5B,oDAAA;;cALX;KAAJ,KAAI;OACI,mBAAA,MAAkB,EAAA;qCAEmB,CAAjCA,KAAAA,OAAO,8BAA0B,KAAA,QAAA,WAAA,EAAA,KAAA,GAAA,CAAA,+CAChCA,KAAAA,OAAO,WAAWA,KAAAA,OAAO,8BAAW,KAAA,QAAA,WAAA,EAAA,KAAA,GAAA,CAAA;;;IAGvCA,KAAAA,OAAO,8BAAW,KAAA,QAAA,WAAA,EAAA,KAAA,GAAA,CAAA;wBACX,KAAA,QAAA,MAAA;KAEV,cAAA,SAAiB,QAAA,2DAWZ,6BAAA;;KAVX,yBAAU,SAAQ;KAClB,aAAW,QAAA;KACX,sBAAO,YAAW;KAClB,aAAa,QAAA;KACb,kBAAgB,QAAA;KAChB,yBAAQ,aAAA;uCAEOA,KAAAA,OAAO;WAAO;2BACoB,EADT,MAAM,YAAK,qBACF,KAAA,QAAA,QAAA;MAAvB;MAAc"}

View File

@@ -0,0 +1,9 @@
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
const require_upload_vue_vue_type_script_setup_true_lang = require('./upload.vue_vue_type_script_setup_true_lang.js');
//#region ../../packages/components/upload/src/upload.vue
var upload_default = require_upload_vue_vue_type_script_setup_true_lang.default;
//#endregion
exports.default = upload_default;
//# sourceMappingURL=upload2.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"upload2.js","names":[],"sources":["../../../../../../packages/components/upload/src/upload.vue"],"sourcesContent":["<template>\n <div>\n <upload-list\n v-if=\"isPictureCard && showFileList\"\n :disabled=\"disabled\"\n :list-type=\"listType\"\n :files=\"uploadFiles\"\n :crossorigin=\"crossorigin\"\n :handle-preview=\"onPreview\"\n @remove=\"handleRemove\"\n >\n <template v-if=\"$slots.file\" #default=\"{ file, index }\">\n <slot name=\"file\" :file=\"file\" :index=\"index\" />\n </template>\n <template #append>\n <upload-content ref=\"uploadRef\" v-bind=\"uploadContentProps\">\n <slot v-if=\"$slots.trigger\" name=\"trigger\" />\n <slot v-if=\"!$slots.trigger && $slots.default\" />\n </upload-content>\n </template>\n </upload-list>\n\n <upload-content\n v-if=\"!isPictureCard || (isPictureCard && !showFileList)\"\n ref=\"uploadRef\"\n v-bind=\"uploadContentProps\"\n >\n <slot v-if=\"$slots.trigger\" name=\"trigger\" />\n <slot v-if=\"!$slots.trigger && $slots.default\" />\n </upload-content>\n\n <slot v-if=\"$slots.trigger\" />\n <slot name=\"tip\" />\n <upload-list\n v-if=\"!isPictureCard && showFileList\"\n :disabled=\"disabled\"\n :list-type=\"listType\"\n :files=\"uploadFiles\"\n :crossorigin=\"crossorigin\"\n :handle-preview=\"onPreview\"\n @remove=\"handleRemove\"\n >\n <template v-if=\"$slots.file\" #default=\"{ file, index }\">\n <slot name=\"file\" :file=\"file\" :index=\"index\" />\n </template>\n </upload-list>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, onBeforeUnmount, provide, shallowRef, toRef } from 'vue'\nimport { useFormDisabled } from '@element-plus/components/form'\nimport { uploadContextKey } from './constants'\nimport UploadList from './upload-list.vue'\nimport UploadContent from './upload-content.vue'\nimport { useHandlers } from './use-handlers'\nimport { uploadPropsDefaults } from './upload'\n\nimport type { UploadProps } from './upload'\nimport type {\n UploadContentInstance,\n UploadContentProps,\n} from './upload-content'\n\ndefineOptions({\n name: 'ElUpload',\n})\n\nconst props = withDefaults(defineProps<UploadProps>(), uploadPropsDefaults)\n\nconst disabled = useFormDisabled()\n\nconst uploadRef = shallowRef<UploadContentInstance>()\nconst {\n abort,\n submit,\n clearFiles,\n uploadFiles,\n handleStart,\n handleError,\n handleRemove,\n handleSuccess,\n handleProgress,\n revokeFileObjectURL,\n} = useHandlers(props, uploadRef)\n\nconst isPictureCard = computed(() => props.listType === 'picture-card')\n\nconst uploadContentProps = computed<UploadContentProps>(() => ({\n ...props,\n fileList: uploadFiles.value,\n onStart: handleStart,\n onProgress: handleProgress,\n onSuccess: handleSuccess,\n onError: handleError,\n onRemove: handleRemove,\n}))\n\nonBeforeUnmount(() => {\n uploadFiles.value.forEach(revokeFileObjectURL)\n})\n\nprovide(uploadContextKey, {\n accept: toRef(props, 'accept'),\n})\n\ndefineExpose({\n /** @description cancel upload request */\n abort,\n /** @description upload the file list manually */\n submit,\n /** @description clear the file list */\n clearFiles,\n /** @description select the file manually */\n handleStart,\n /** @description remove the file manually */\n handleRemove,\n})\n</script>\n"],"mappings":""}

View File

@@ -0,0 +1,130 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_runtime = require('../../../_virtual/_rolldown/runtime.js');
const require_error = require('../../../utils/error.js');
const require_upload = require('./upload.js');
let _vueuse_core = require("@vueuse/core");
let lodash_unified = require("lodash-unified");
let vue = require("vue");
//#region ../../packages/components/upload/src/use-handlers.ts
const SCOPE = "ElUpload";
const revokeFileObjectURL = (file) => {
if (file.url?.startsWith("blob:")) URL.revokeObjectURL(file.url);
};
const useHandlers = (props, uploadRef) => {
const uploadFiles = (0, _vueuse_core.useVModel)(props, "fileList", void 0, { passive: true });
const getFile = (rawFile) => uploadFiles.value.find((file) => file.uid === rawFile.uid);
function abort(file) {
uploadRef.value?.abort(file);
}
function clearFiles(states = [
"ready",
"uploading",
"success",
"fail"
]) {
uploadFiles.value = uploadFiles.value.filter((row) => !states.includes(row.status));
}
function removeFile(file) {
uploadFiles.value = uploadFiles.value.filter((uploadFile) => uploadFile.uid !== file.uid);
}
const emitChange = (file) => {
(0, vue.nextTick)(() => props.onChange(file, uploadFiles.value));
};
const handleError = (err, rawFile) => {
const file = getFile(rawFile);
if (!file) return;
console.error(err);
file.status = "fail";
removeFile(file);
props.onError(err, file, uploadFiles.value);
emitChange(file);
};
const handleProgress = (evt, rawFile) => {
const file = getFile(rawFile);
if (!file) return;
props.onProgress(evt, file, uploadFiles.value);
file.status = "uploading";
file.percentage = Math.round(evt.percent);
};
const handleSuccess = (response, rawFile) => {
const file = getFile(rawFile);
if (!file) return;
file.status = "success";
file.response = response;
props.onSuccess(response, file, uploadFiles.value);
emitChange(file);
};
const handleStart = (file) => {
if ((0, lodash_unified.isNil)(file.uid)) file.uid = require_upload.genFileId();
const uploadFile = {
name: file.name,
percentage: 0,
status: "ready",
size: file.size,
raw: file,
uid: file.uid
};
if (props.listType === "picture-card" || props.listType === "picture") try {
uploadFile.url = URL.createObjectURL(file);
} catch (err) {
require_error.debugWarn(SCOPE, err.message);
props.onError(err, uploadFile, uploadFiles.value);
}
uploadFiles.value = [...uploadFiles.value, uploadFile];
emitChange(uploadFile);
};
const handleRemove = async (file) => {
const uploadFile = file instanceof File ? getFile(file) : file;
if (!uploadFile) require_error.throwError(SCOPE, "file to be removed not found");
const doRemove = (file) => {
abort(file);
removeFile(file);
props.onRemove(file, uploadFiles.value);
revokeFileObjectURL(file);
};
if (props.beforeRemove) {
if (await props.beforeRemove(uploadFile, uploadFiles.value) !== false) doRemove(uploadFile);
} else doRemove(uploadFile);
};
function submit() {
uploadFiles.value.filter(({ status }) => status === "ready").forEach(({ raw }) => raw && uploadRef.value?.upload(raw));
}
(0, vue.watch)(() => props.listType, (val) => {
if (val !== "picture-card" && val !== "picture") return;
uploadFiles.value = uploadFiles.value.map((file) => {
const { raw, url } = file;
if (!url && raw) try {
file.url = URL.createObjectURL(raw);
} catch (err) {
props.onError(err, file, uploadFiles.value);
}
return file;
});
});
(0, vue.watch)(uploadFiles, (files) => {
for (const file of files) {
file.uid ||= require_upload.genFileId();
file.status ||= "success";
}
}, {
immediate: true,
deep: true
});
return {
uploadFiles,
abort,
clearFiles,
handleError,
handleProgress,
handleStart,
handleSuccess,
handleRemove,
submit,
revokeFileObjectURL
};
};
//#endregion
exports.useHandlers = useHandlers;
//# sourceMappingURL=use-handlers.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,4 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
require('../../base/style/css.js');
require('../../progress/style/css.js');
require("element-plus/theme-chalk/el-upload.css");

View File

@@ -0,0 +1,4 @@
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
require('../../base/style/index.js');
require('../../progress/style/index.js');
require("element-plus/theme-chalk/src/upload.scss");