2
This commit is contained in:
3
normal-admin/node_modules/element-plus/es/utils/vue/props/index.d.ts
generated
vendored
Normal file
3
normal-admin/node_modules/element-plus/es/utils/vue/props/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
export * from './util';
|
||||
export * from './types';
|
||||
export * from './runtime';
|
||||
2
normal-admin/node_modules/element-plus/es/utils/vue/props/index.mjs
generated
vendored
Normal file
2
normal-admin/node_modules/element-plus/es/utils/vue/props/index.mjs
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
export { buildProp, buildProps, definePropType, epPropKey, isEpProp } from './runtime.mjs';
|
||||
//# sourceMappingURL=index.mjs.map
|
||||
1
normal-admin/node_modules/element-plus/es/utils/vue/props/index.mjs.map
generated
vendored
Normal file
1
normal-admin/node_modules/element-plus/es/utils/vue/props/index.mjs.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
||||
29
normal-admin/node_modules/element-plus/es/utils/vue/props/runtime.d.ts
generated
vendored
Normal file
29
normal-admin/node_modules/element-plus/es/utils/vue/props/runtime.d.ts
generated
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
import type { PropType } from 'vue';
|
||||
import type { EpProp, EpPropConvert, EpPropFinalized, EpPropInput, EpPropMergeType, IfEpProp, IfNativePropType, NativePropType } from './types';
|
||||
export declare const epPropKey = "__epPropKey";
|
||||
export declare const definePropType: <T>(val: any) => PropType<T>;
|
||||
export declare const isEpProp: (val: unknown) => val is EpProp<any, any, any>;
|
||||
/**
|
||||
* @description Build prop. It can better optimize prop types
|
||||
* @description 生成 prop,能更好地优化类型
|
||||
* @example
|
||||
// limited options
|
||||
// the type will be PropType<'light' | 'dark'>
|
||||
buildProp({
|
||||
type: String,
|
||||
values: ['light', 'dark'],
|
||||
} as const)
|
||||
* @example
|
||||
// limited options and other types
|
||||
// the type will be PropType<'small' | 'large' | number>
|
||||
buildProp({
|
||||
type: [String, Number],
|
||||
values: ['small', 'large'],
|
||||
validator: (val: unknown): val is number => typeof val === 'number',
|
||||
} as const)
|
||||
@link see more: https://github.com/element-plus/element-plus/pull/3341
|
||||
*/
|
||||
export declare const buildProp: <Type = never, Value = never, Validator = never, Default extends EpPropMergeType<Type, Value, Validator> = never, Required extends boolean = false>(prop: EpPropInput<Type, Value, Validator, Default, Required>, key?: string) => EpPropFinalized<Type, Value, Validator, Default, Required>;
|
||||
export declare const buildProps: <Props extends Record<string, {
|
||||
[epPropKey]: true;
|
||||
} | NativePropType | EpPropInput<any, any, any, any, any>>>(props: Props) => { [K in keyof Props]: IfEpProp<Props[K], Props[K], IfNativePropType<Props[K], Props[K], EpPropConvert<Props[K]>>>; };
|
||||
46
normal-admin/node_modules/element-plus/es/utils/vue/props/runtime.mjs
generated
vendored
Normal file
46
normal-admin/node_modules/element-plus/es/utils/vue/props/runtime.mjs
generated
vendored
Normal file
@@ -0,0 +1,46 @@
|
||||
import { warn } from 'vue';
|
||||
import { fromPairs } from 'lodash-unified';
|
||||
import { isObject, hasOwn } from '@vue/shared';
|
||||
|
||||
const epPropKey = "__epPropKey";
|
||||
const definePropType = (val) => val;
|
||||
const isEpProp = (val) => isObject(val) && !!val[epPropKey];
|
||||
const buildProp = (prop, key) => {
|
||||
if (!isObject(prop) || isEpProp(prop))
|
||||
return prop;
|
||||
const { values, required, default: defaultValue, type, validator } = prop;
|
||||
const _validator = values || validator ? (val) => {
|
||||
let valid = false;
|
||||
let allowedValues = [];
|
||||
if (values) {
|
||||
allowedValues = Array.from(values);
|
||||
if (hasOwn(prop, "default")) {
|
||||
allowedValues.push(defaultValue);
|
||||
}
|
||||
valid || (valid = allowedValues.includes(val));
|
||||
}
|
||||
if (validator)
|
||||
valid || (valid = validator(val));
|
||||
if (!valid && allowedValues.length > 0) {
|
||||
const allowValuesText = [...new Set(allowedValues)].map((value) => JSON.stringify(value)).join(", ");
|
||||
warn(`Invalid prop: validation failed${key ? ` for prop "${key}"` : ""}. Expected one of [${allowValuesText}], got value ${JSON.stringify(val)}.`);
|
||||
}
|
||||
return valid;
|
||||
} : void 0;
|
||||
const epProp = {
|
||||
type,
|
||||
required: !!required,
|
||||
validator: _validator,
|
||||
[epPropKey]: true
|
||||
};
|
||||
if (hasOwn(prop, "default"))
|
||||
epProp.default = defaultValue;
|
||||
return epProp;
|
||||
};
|
||||
const buildProps = (props) => fromPairs(Object.entries(props).map(([key, option]) => [
|
||||
key,
|
||||
buildProp(option, key)
|
||||
]));
|
||||
|
||||
export { buildProp, buildProps, definePropType, epPropKey, isEpProp };
|
||||
//# sourceMappingURL=runtime.mjs.map
|
||||
1
normal-admin/node_modules/element-plus/es/utils/vue/props/runtime.mjs.map
generated
vendored
Normal file
1
normal-admin/node_modules/element-plus/es/utils/vue/props/runtime.mjs.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
120
normal-admin/node_modules/element-plus/es/utils/vue/props/types.d.ts
generated
vendored
Normal file
120
normal-admin/node_modules/element-plus/es/utils/vue/props/types.d.ts
generated
vendored
Normal file
@@ -0,0 +1,120 @@
|
||||
import type { epPropKey } from './runtime';
|
||||
import type { ExtractPropTypes, PropType } from 'vue';
|
||||
import type { IfNever, UnknownToNever, WritableArray } from './util';
|
||||
type Value<T> = T[keyof T];
|
||||
/**
|
||||
* Extract the type of a single prop
|
||||
*
|
||||
* 提取单个 prop 的参数类型
|
||||
*
|
||||
* @example
|
||||
* ExtractPropType<{ type: StringConstructor }> => string | undefined
|
||||
* ExtractPropType<{ type: StringConstructor, required: true }> => string
|
||||
* ExtractPropType<{ type: BooleanConstructor }> => boolean
|
||||
*/
|
||||
export type ExtractPropType<T extends object> = Value<ExtractPropTypes<{
|
||||
key: T;
|
||||
}>>;
|
||||
/**
|
||||
* Extracts types via `ExtractPropTypes`, accepting `PropType<T>`, `XXXConstructor`, `never`...
|
||||
*
|
||||
* 通过 `ExtractPropTypes` 提取类型,接受 `PropType<T>`、`XXXConstructor`、`never`...
|
||||
*
|
||||
* @example
|
||||
* ResolvePropType<BooleanConstructor> => boolean
|
||||
* ResolvePropType<PropType<T>> => T
|
||||
**/
|
||||
export type ResolvePropType<T> = IfNever<T, never, ExtractPropType<{
|
||||
type: WritableArray<T>;
|
||||
required: true;
|
||||
}>>;
|
||||
/**
|
||||
* Merge Type, Value, Validator types
|
||||
* 合并 Type、Value、Validator 的类型
|
||||
*
|
||||
* @example
|
||||
* EpPropMergeType<StringConstructor, '1', 1> => 1 | "1" // ignores StringConstructor
|
||||
* EpPropMergeType<StringConstructor, never, number> => string | number
|
||||
*/
|
||||
export type EpPropMergeType<Type, Value, Validator> = IfNever<UnknownToNever<Value>, ResolvePropType<Type>, never> | UnknownToNever<Value> | UnknownToNever<Validator>;
|
||||
/**
|
||||
* Handling default values for input (constraints)
|
||||
*
|
||||
* 处理输入参数的默认值(约束)
|
||||
*/
|
||||
export type EpPropInputDefault<Required extends boolean, Default> = Required extends true ? never : Default extends Record<string, unknown> | Array<any> ? () => Default : (() => Default) | Default;
|
||||
/**
|
||||
* Native prop types, e.g: `BooleanConstructor`, `StringConstructor`, `null`, `undefined`, etc.
|
||||
*
|
||||
* 原生 prop `类型,BooleanConstructor`、`StringConstructor`、`null`、`undefined` 等
|
||||
*/
|
||||
export type NativePropType = ((...args: any) => any) | {
|
||||
new (...args: any): any;
|
||||
} | undefined | null;
|
||||
export type IfNativePropType<T, Y, N> = [T] extends [NativePropType] ? Y : N;
|
||||
/**
|
||||
* input prop `buildProp` or `buildProps` (constraints)
|
||||
*
|
||||
* prop 输入参数(约束)
|
||||
*
|
||||
* @example
|
||||
* EpPropInput<StringConstructor, 'a', never, never, true>
|
||||
* ⬇️
|
||||
* {
|
||||
type?: StringConstructor | undefined;
|
||||
required?: true | undefined;
|
||||
values?: readonly "a"[] | undefined;
|
||||
validator?: ((val: any) => boolean) | ((val: any) => val is never) | undefined;
|
||||
default?: undefined;
|
||||
}
|
||||
*/
|
||||
export type EpPropInput<Type, Value, Validator, Default extends EpPropMergeType<Type, Value, Validator>, Required extends boolean> = {
|
||||
type?: Type;
|
||||
required?: Required;
|
||||
values?: readonly Value[];
|
||||
validator?: ((val: any) => val is Validator) | ((val: any) => boolean);
|
||||
default?: EpPropInputDefault<Required, Default>;
|
||||
};
|
||||
/**
|
||||
* output prop `buildProp` or `buildProps`.
|
||||
*
|
||||
* prop 输出参数。
|
||||
*
|
||||
* @example
|
||||
* EpProp<'a', 'b', true>
|
||||
* ⬇️
|
||||
* {
|
||||
readonly type: PropType<"a">;
|
||||
readonly required: true;
|
||||
readonly validator: ((val: unknown) => boolean) | undefined;
|
||||
readonly default: "b";
|
||||
__epPropKey: true;
|
||||
}
|
||||
*/
|
||||
export type EpProp<Type, Default, Required> = {
|
||||
readonly type: PropType<Type>;
|
||||
readonly required: [Required] extends [true] ? true : false;
|
||||
readonly validator: ((val: unknown) => boolean) | undefined;
|
||||
[epPropKey]: true;
|
||||
} & IfNever<Default, unknown, {
|
||||
readonly default: Default;
|
||||
}>;
|
||||
/**
|
||||
* Determine if it is `EpProp`
|
||||
*/
|
||||
export type IfEpProp<T, Y, N> = T extends {
|
||||
[epPropKey]: true;
|
||||
} ? Y : N;
|
||||
/**
|
||||
* Converting input to output.
|
||||
*
|
||||
* 将输入转换为输出
|
||||
*/
|
||||
export type EpPropConvert<Input> = Input extends EpPropInput<infer Type, infer Value, infer Validator, any, infer Required> ? EpPropFinalized<Type, Value, Validator, Input['default'], Required> : never;
|
||||
/**
|
||||
* Finalized conversion output
|
||||
*
|
||||
* 最终转换 EpProp
|
||||
*/
|
||||
export type EpPropFinalized<Type, Value, Validator, Default, Required> = EpProp<EpPropMergeType<Type, Value, Validator>, UnknownToNever<Default>, Required>;
|
||||
export {};
|
||||
2
normal-admin/node_modules/element-plus/es/utils/vue/props/types.mjs
generated
vendored
Normal file
2
normal-admin/node_modules/element-plus/es/utils/vue/props/types.mjs
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
|
||||
//# sourceMappingURL=types.mjs.map
|
||||
1
normal-admin/node_modules/element-plus/es/utils/vue/props/types.mjs.map
generated
vendored
Normal file
1
normal-admin/node_modules/element-plus/es/utils/vue/props/types.mjs.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"types.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
||||
8
normal-admin/node_modules/element-plus/es/utils/vue/props/util.d.ts
generated
vendored
Normal file
8
normal-admin/node_modules/element-plus/es/utils/vue/props/util.d.ts
generated
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
export type Writable<T> = {
|
||||
-readonly [P in keyof T]: T[P];
|
||||
};
|
||||
export type WritableArray<T> = T extends readonly any[] ? Writable<T> : T;
|
||||
export type IfNever<T, Y = true, N = false> = [T] extends [never] ? Y : N;
|
||||
export type IfUnknown<T, Y, N> = [unknown] extends [T] ? Y : N;
|
||||
export type UnknownToNever<T> = IfUnknown<T, never, T>;
|
||||
export {};
|
||||
2
normal-admin/node_modules/element-plus/es/utils/vue/props/util.mjs
generated
vendored
Normal file
2
normal-admin/node_modules/element-plus/es/utils/vue/props/util.mjs
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
|
||||
//# sourceMappingURL=util.mjs.map
|
||||
1
normal-admin/node_modules/element-plus/es/utils/vue/props/util.mjs.map
generated
vendored
Normal file
1
normal-admin/node_modules/element-plus/es/utils/vue/props/util.mjs.map
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"util.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
||||
Reference in New Issue
Block a user