import './index.css';
var __defProp = Object.defineProperty;
var __defProps = Object.defineProperties;
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a2, b2) => {
for (var prop in b2 || (b2 = {}))
if (__hasOwnProp.call(b2, prop))
__defNormalProp(a2, prop, b2[prop]);
if (__getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(b2)) {
if (__propIsEnum.call(b2, prop))
__defNormalProp(a2, prop, b2[prop]);
}
return a2;
};
var __spreadProps = (a2, b2) => __defProps(a2, __getOwnPropDescs(b2));
var __objRest = (source, exclude) => {
var target = {};
for (var prop in source)
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
target[prop] = source[prop];
if (source != null && __getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(source)) {
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
target[prop] = source[prop];
}
return target;
};
import { ref, watch, getCurrentScope, onScopeDispose, unref, getCurrentInstance, computed, defineComponent, openBlock, createElementBlock, createElementVNode, warn, isVNode, Fragment, Comment, inject, provide, onMounted, watchEffect, onBeforeUnmount, isRef, onBeforeMount, mergeProps, renderSlot, useAttrs as useAttrs$1, useSlots, shallowRef, nextTick, onUpdated, toRef, withDirectives, normalizeClass, normalizeStyle, createCommentVNode, createBlock, withCtx, resolveDynamicComponent, withModifiers, createVNode, toDisplayString, vShow, Transition, resolveComponent, reactive, cloneVNode, Text, Teleport, createTextVNode, readonly, resolveDirective, renderList, h as h$1, vModelCheckbox, toRefs, withKeys, vModelRadio, onBeforeUpdate, vModelText, createSlots, markRaw, effectScope, toRaw, triggerRef, normalizeProps, guardReactiveProps, onUnmounted, TransitionGroup, pushScopeId, popScopeId, createPropsRestProxy } from "vue";
import { ElMessage } from "element-plus";
import Draggable from "vuedraggable";
var elMessage = "";
const rules$1 = {
trigger: "blur",
enum: "",
len: void 0,
max: void 0,
message: "",
min: void 0,
pattern: "",
required: false,
type: "any"
};
const getWidgetForm = () => ({
list: [],
config: {
size: "default",
hideRequiredAsterisk: false,
labelWidth: 100,
labelPosition: "right"
}
});
const basicComponents = [
{
label: "\u5355\u884C\u6587\u672C",
type: "input",
options: {
width: "100%",
defaultValue: "",
placeholder: "",
maxlength: null,
prefix: "",
suffix: "",
prepend: "",
append: "",
disabled: false,
clearable: false,
readonly: false,
rules: rules$1
}
},
{
label: "\u5BC6\u7801\u6846",
type: "password",
options: {
width: "100%",
defaultValue: "",
placeholder: "",
maxlength: null,
prefix: "",
suffix: "",
prepend: "",
append: "",
showPassword: true,
disabled: false,
clearable: false,
readonly: false,
rules: rules$1
}
},
{
label: "\u591A\u884C\u6587\u672C",
type: "textarea",
options: {
width: "100%",
defaultValue: "",
placeholder: "",
maxlength: null,
rows: 4,
autosize: false,
showWordLimit: false,
disabled: false,
clearable: false,
readonly: false,
rules: rules$1
}
},
{
label: "\u8BA1\u6570\u5668",
type: "number",
options: {
width: "",
defaultValue: 0,
min: 0,
max: 100,
step: 1,
disabled: false,
rules: rules$1
}
},
{
label: "\u5355\u9009\u6846\u7EC4",
type: "radio",
options: {
defaultValue: "",
width: "",
inline: true,
remote: false,
showLabel: true,
remoteFunc: "https://raw.githubusercontent.com/fuchengwei/vue-form-create/master/mock/mock.json",
options: [
{
value: "Option 1",
label: "Option 1"
},
{
value: "Option 2",
label: "Option 2"
},
{
value: "Option 3",
label: "Option 3"
}
],
remoteOptions: [],
props: {
value: "value",
label: "label"
},
disabled: false,
rules: rules$1
}
},
{
label: "\u591A\u9009\u6846\u7EC4",
type: "checkbox",
options: {
defaultValue: [],
width: "",
inline: true,
remote: false,
showLabel: true,
remoteFunc: "https://raw.githubusercontent.com/fuchengwei/vue-form-create/master/mock/mock.json",
options: [
{
label: "Option 1",
value: "Option 1"
},
{
label: "Option 2",
value: "Option 2"
},
{
label: "Option 3",
value: "Option 3"
}
],
remoteOptions: [],
props: {
value: "value",
label: "label"
},
disabled: false,
rules: rules$1
}
},
{
label: "\u65F6\u95F4\u9009\u62E9\u5668",
type: "time",
options: {
defaultValue: "",
width: "",
placeholder: "\u8BF7\u9009\u62E9\u65F6\u95F4",
format: "HH:mm:ss",
valueFormat: "HH:mm:ss",
readonly: false,
editable: true,
clearable: true,
disabled: false,
rules: rules$1
}
},
{
label: "\u65E5\u671F\u9009\u62E9\u5668",
type: "date",
options: {
defaultValue: "",
width: "",
placeholder: "\u8BF7\u9009\u62E9\u65F6\u95F4",
format: "YYYY-MM-DD",
readonly: false,
editable: true,
clearable: true,
disabled: false,
rules: rules$1
}
},
{
label: "\u8BC4\u5206",
type: "rate",
options: {
defaultValue: 0,
max: 5,
allowHalf: false,
disabled: false,
rules: rules$1
}
},
{
label: "\u4E0B\u62C9\u9009\u62E9\u6846",
type: "select",
options: {
defaultValue: "",
width: "200px",
multiple: false,
placeholder: "",
remote: false,
showLabel: true,
filterable: false,
clearable: false,
disabled: false,
props: {
label: "label",
value: "value"
},
options: [
{
label: "Option 1",
value: "Option 1"
},
{
label: "Option 2",
value: "Option 2"
},
{
label: "Option 3",
value: "Option 3"
}
],
remoteOptions: [],
remoteFunc: "https://raw.githubusercontent.com/fuchengwei/vue-form-create/master/mock/mock.json",
rules: rules$1
}
},
{
label: "\u5F00\u5173",
type: "switch",
options: {
defaultValue: false,
disabled: false,
activeText: "",
inactiveText: "",
rules: rules$1
}
},
{
label: "\u6ED1\u5757",
type: "slider",
options: {
defaultValue: 0,
width: "",
min: 0,
max: 100,
step: 1,
disabled: false,
range: false,
rules: rules$1
}
},
{
label: "\u6587\u5B57",
type: "text",
options: {
defaultValue: "This is a text"
}
}
];
const basicFields = basicComponents.map((i) => i.type);
const advanceComponents = [
{
label: "\u56FE\u7247",
type: "img-upload",
options: {
defaultValue: [],
name: "file",
action: "http://example.com/upload",
method: "post",
listType: "text",
accept: "image/*",
limit: 1,
multiple: false,
disabled: true,
rules: rules$1
}
},
{
label: "\u4E0B\u8F7D",
type: "download",
labelWidth: "auto",
options: {
defaultValue: "",
name: "file"
}
},
{
label: "\u7EA7\u8054\u9009\u62E9\u5668",
type: "cascader",
options: {
defaultValue: [],
width: "200px",
placeholder: "",
disabled: false,
clearable: false,
filterable: false,
remote: true,
remoteOptions: [],
props: {
label: "label",
value: "value",
children: "children"
},
remoteFunc: "https://raw.githubusercontent.com/fuchengwei/vue-form-create/master/mock/mock.json",
rules: rules$1
}
}
];
const advanceFields = advanceComponents.map((i) => i.type);
const layoutComponents = [
{
label: "\u6805\u683C\u5E03\u5C40",
type: "grid",
columns: [
{
span: 12,
list: []
},
{
span: 12,
list: []
}
],
options: {
gutter: 0,
align: "initial"
}
},
{
label: "\u6570\u636E\u8868\u683C",
type: "table",
columns: [
{ label: "\u540D\u79F0", prop: "name" },
{ label: "\u521B\u5EFA\u65F6\u95F4", prop: "createTime" }
],
options: {
defaultValue: [],
disabled: false,
size: "",
align: "center"
}
},
{
label: "\u5206\u5272\u7EBF",
type: "divider",
options: {}
}
];
const layoutFields = layoutComponents.map((i) => i.type);
var freeGlobal = typeof global == "object" && global && global.Object === Object && global;
var freeGlobal$1 = freeGlobal;
var freeSelf = typeof self == "object" && self && self.Object === Object && self;
var root = freeGlobal$1 || freeSelf || Function("return this")();
var root$1 = root;
var Symbol$1 = root$1.Symbol;
var Symbol$2 = Symbol$1;
var objectProto$e = Object.prototype;
var hasOwnProperty$c = objectProto$e.hasOwnProperty;
var nativeObjectToString$1 = objectProto$e.toString;
var symToStringTag$1 = Symbol$2 ? Symbol$2.toStringTag : void 0;
function getRawTag(value) {
var isOwn = hasOwnProperty$c.call(value, symToStringTag$1), tag = value[symToStringTag$1];
try {
value[symToStringTag$1] = void 0;
var unmasked = true;
} catch (e) {
}
var result = nativeObjectToString$1.call(value);
if (unmasked) {
if (isOwn) {
value[symToStringTag$1] = tag;
} else {
delete value[symToStringTag$1];
}
}
return result;
}
var objectProto$d = Object.prototype;
var nativeObjectToString = objectProto$d.toString;
function objectToString$1(value) {
return nativeObjectToString.call(value);
}
var nullTag = "[object Null]", undefinedTag = "[object Undefined]";
var symToStringTag = Symbol$2 ? Symbol$2.toStringTag : void 0;
function baseGetTag(value) {
if (value == null) {
return value === void 0 ? undefinedTag : nullTag;
}
return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString$1(value);
}
function isObjectLike(value) {
return value != null && typeof value == "object";
}
var symbolTag$3 = "[object Symbol]";
function isSymbol(value) {
return typeof value == "symbol" || isObjectLike(value) && baseGetTag(value) == symbolTag$3;
}
function arrayMap(array4, iteratee) {
var index = -1, length = array4 == null ? 0 : array4.length, result = Array(length);
while (++index < length) {
result[index] = iteratee(array4[index], index, array4);
}
return result;
}
var isArray$1 = Array.isArray;
var isArray$2 = isArray$1;
var INFINITY$3 = 1 / 0;
var symbolProto$2 = Symbol$2 ? Symbol$2.prototype : void 0, symbolToString = symbolProto$2 ? symbolProto$2.toString : void 0;
function baseToString(value) {
if (typeof value == "string") {
return value;
}
if (isArray$2(value)) {
return arrayMap(value, baseToString) + "";
}
if (isSymbol(value)) {
return symbolToString ? symbolToString.call(value) : "";
}
var result = value + "";
return result == "0" && 1 / value == -INFINITY$3 ? "-0" : result;
}
var reWhitespace = /\s/;
function trimmedEndIndex(string3) {
var index = string3.length;
while (index-- && reWhitespace.test(string3.charAt(index))) {
}
return index;
}
var reTrimStart = /^\s+/;
function baseTrim(string3) {
return string3 ? string3.slice(0, trimmedEndIndex(string3) + 1).replace(reTrimStart, "") : string3;
}
function isObject$2(value) {
var type4 = typeof value;
return value != null && (type4 == "object" || type4 == "function");
}
var NAN = 0 / 0;
var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
var reIsBinary = /^0b[01]+$/i;
var reIsOctal = /^0o[0-7]+$/i;
var freeParseInt = parseInt;
function toNumber(value) {
if (typeof value == "number") {
return value;
}
if (isSymbol(value)) {
return NAN;
}
if (isObject$2(value)) {
var other = typeof value.valueOf == "function" ? value.valueOf() : value;
value = isObject$2(other) ? other + "" : other;
}
if (typeof value != "string") {
return value === 0 ? value : +value;
}
value = baseTrim(value);
var isBinary = reIsBinary.test(value);
return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;
}
function identity(value) {
return value;
}
var asyncTag = "[object AsyncFunction]", funcTag$2 = "[object Function]", genTag$1 = "[object GeneratorFunction]", proxyTag = "[object Proxy]";
function isFunction$1(value) {
if (!isObject$2(value)) {
return false;
}
var tag = baseGetTag(value);
return tag == funcTag$2 || tag == genTag$1 || tag == asyncTag || tag == proxyTag;
}
var coreJsData = root$1["__core-js_shared__"];
var coreJsData$1 = coreJsData;
var maskSrcKey = function() {
var uid2 = /[^.]+$/.exec(coreJsData$1 && coreJsData$1.keys && coreJsData$1.keys.IE_PROTO || "");
return uid2 ? "Symbol(src)_1." + uid2 : "";
}();
function isMasked(func) {
return !!maskSrcKey && maskSrcKey in func;
}
var funcProto$1 = Function.prototype;
var funcToString$1 = funcProto$1.toString;
function toSource(func) {
if (func != null) {
try {
return funcToString$1.call(func);
} catch (e) {
}
try {
return func + "";
} catch (e) {
}
}
return "";
}
var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
var reIsHostCtor = /^\[object .+?Constructor\]$/;
var funcProto = Function.prototype, objectProto$c = Object.prototype;
var funcToString = funcProto.toString;
var hasOwnProperty$b = objectProto$c.hasOwnProperty;
var reIsNative = RegExp("^" + funcToString.call(hasOwnProperty$b).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$");
function baseIsNative(value) {
if (!isObject$2(value) || isMasked(value)) {
return false;
}
var pattern4 = isFunction$1(value) ? reIsNative : reIsHostCtor;
return pattern4.test(toSource(value));
}
function getValue$1(object4, key) {
return object4 == null ? void 0 : object4[key];
}
function getNative(object4, key) {
var value = getValue$1(object4, key);
return baseIsNative(value) ? value : void 0;
}
var WeakMap = getNative(root$1, "WeakMap");
var WeakMap$1 = WeakMap;
var objectCreate = Object.create;
var baseCreate = function() {
function object4() {
}
return function(proto) {
if (!isObject$2(proto)) {
return {};
}
if (objectCreate) {
return objectCreate(proto);
}
object4.prototype = proto;
var result = new object4();
object4.prototype = void 0;
return result;
};
}();
var baseCreate$1 = baseCreate;
function apply(func, thisArg, args) {
switch (args.length) {
case 0:
return func.call(thisArg);
case 1:
return func.call(thisArg, args[0]);
case 2:
return func.call(thisArg, args[0], args[1]);
case 3:
return func.call(thisArg, args[0], args[1], args[2]);
}
return func.apply(thisArg, args);
}
function noop$1() {
}
function copyArray(source, array4) {
var index = -1, length = source.length;
array4 || (array4 = Array(length));
while (++index < length) {
array4[index] = source[index];
}
return array4;
}
var HOT_COUNT = 800, HOT_SPAN = 16;
var nativeNow = Date.now;
function shortOut(func) {
var count = 0, lastCalled = 0;
return function() {
var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled);
lastCalled = stamp;
if (remaining > 0) {
if (++count >= HOT_COUNT) {
return arguments[0];
}
} else {
count = 0;
}
return func.apply(void 0, arguments);
};
}
function constant(value) {
return function() {
return value;
};
}
var defineProperty = function() {
try {
var func = getNative(Object, "defineProperty");
func({}, "", {});
return func;
} catch (e) {
}
}();
var defineProperty$1 = defineProperty;
var baseSetToString = !defineProperty$1 ? identity : function(func, string3) {
return defineProperty$1(func, "toString", {
"configurable": true,
"enumerable": false,
"value": constant(string3),
"writable": true
});
};
var baseSetToString$1 = baseSetToString;
var setToString = shortOut(baseSetToString$1);
var setToString$1 = setToString;
function arrayEach(array4, iteratee) {
var index = -1, length = array4 == null ? 0 : array4.length;
while (++index < length) {
if (iteratee(array4[index], index, array4) === false) {
break;
}
}
return array4;
}
function baseFindIndex(array4, predicate, fromIndex, fromRight) {
var length = array4.length, index = fromIndex + (fromRight ? 1 : -1);
while (fromRight ? index-- : ++index < length) {
if (predicate(array4[index], index, array4)) {
return index;
}
}
return -1;
}
function baseIsNaN(value) {
return value !== value;
}
function strictIndexOf(array4, value, fromIndex) {
var index = fromIndex - 1, length = array4.length;
while (++index < length) {
if (array4[index] === value) {
return index;
}
}
return -1;
}
function baseIndexOf(array4, value, fromIndex) {
return value === value ? strictIndexOf(array4, value, fromIndex) : baseFindIndex(array4, baseIsNaN, fromIndex);
}
function arrayIncludes(array4, value) {
var length = array4 == null ? 0 : array4.length;
return !!length && baseIndexOf(array4, value, 0) > -1;
}
var MAX_SAFE_INTEGER$1 = 9007199254740991;
var reIsUint = /^(?:0|[1-9]\d*)$/;
function isIndex(value, length) {
var type4 = typeof value;
length = length == null ? MAX_SAFE_INTEGER$1 : length;
return !!length && (type4 == "number" || type4 != "symbol" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length);
}
function baseAssignValue(object4, key, value) {
if (key == "__proto__" && defineProperty$1) {
defineProperty$1(object4, key, {
"configurable": true,
"enumerable": true,
"value": value,
"writable": true
});
} else {
object4[key] = value;
}
}
function eq(value, other) {
return value === other || value !== value && other !== other;
}
var objectProto$b = Object.prototype;
var hasOwnProperty$a = objectProto$b.hasOwnProperty;
function assignValue(object4, key, value) {
var objValue = object4[key];
if (!(hasOwnProperty$a.call(object4, key) && eq(objValue, value)) || value === void 0 && !(key in object4)) {
baseAssignValue(object4, key, value);
}
}
function copyObject(source, props, object4, customizer) {
var isNew = !object4;
object4 || (object4 = {});
var index = -1, length = props.length;
while (++index < length) {
var key = props[index];
var newValue = customizer ? customizer(object4[key], source[key], key, object4, source) : void 0;
if (newValue === void 0) {
newValue = source[key];
}
if (isNew) {
baseAssignValue(object4, key, newValue);
} else {
assignValue(object4, key, newValue);
}
}
return object4;
}
var nativeMax$1 = Math.max;
function overRest(func, start2, transform) {
start2 = nativeMax$1(start2 === void 0 ? func.length - 1 : start2, 0);
return function() {
var args = arguments, index = -1, length = nativeMax$1(args.length - start2, 0), array4 = Array(length);
while (++index < length) {
array4[index] = args[start2 + index];
}
index = -1;
var otherArgs = Array(start2 + 1);
while (++index < start2) {
otherArgs[index] = args[index];
}
otherArgs[start2] = transform(array4);
return apply(func, this, otherArgs);
};
}
function baseRest(func, start2) {
return setToString$1(overRest(func, start2, identity), func + "");
}
var MAX_SAFE_INTEGER = 9007199254740991;
function isLength(value) {
return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
}
function isArrayLike(value) {
return value != null && isLength(value.length) && !isFunction$1(value);
}
var objectProto$a = Object.prototype;
function isPrototype(value) {
var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto$a;
return value === proto;
}
function baseTimes(n, iteratee) {
var index = -1, result = Array(n);
while (++index < n) {
result[index] = iteratee(index);
}
return result;
}
var argsTag$3 = "[object Arguments]";
function baseIsArguments(value) {
return isObjectLike(value) && baseGetTag(value) == argsTag$3;
}
var objectProto$9 = Object.prototype;
var hasOwnProperty$9 = objectProto$9.hasOwnProperty;
var propertyIsEnumerable$1 = objectProto$9.propertyIsEnumerable;
var isArguments = baseIsArguments(function() {
return arguments;
}()) ? baseIsArguments : function(value) {
return isObjectLike(value) && hasOwnProperty$9.call(value, "callee") && !propertyIsEnumerable$1.call(value, "callee");
};
var isArguments$1 = isArguments;
function stubFalse() {
return false;
}
var freeExports$2 = typeof exports == "object" && exports && !exports.nodeType && exports;
var freeModule$2 = freeExports$2 && typeof module == "object" && module && !module.nodeType && module;
var moduleExports$2 = freeModule$2 && freeModule$2.exports === freeExports$2;
var Buffer$1 = moduleExports$2 ? root$1.Buffer : void 0;
var nativeIsBuffer = Buffer$1 ? Buffer$1.isBuffer : void 0;
var isBuffer = nativeIsBuffer || stubFalse;
var isBuffer$1 = isBuffer;
var argsTag$2 = "[object Arguments]", arrayTag$2 = "[object Array]", boolTag$3 = "[object Boolean]", dateTag$3 = "[object Date]", errorTag$2 = "[object Error]", funcTag$1 = "[object Function]", mapTag$5 = "[object Map]", numberTag$3 = "[object Number]", objectTag$3 = "[object Object]", regexpTag$3 = "[object RegExp]", setTag$5 = "[object Set]", stringTag$3 = "[object String]", weakMapTag$2 = "[object WeakMap]";
var arrayBufferTag$3 = "[object ArrayBuffer]", dataViewTag$4 = "[object DataView]", float32Tag$2 = "[object Float32Array]", float64Tag$2 = "[object Float64Array]", int8Tag$2 = "[object Int8Array]", int16Tag$2 = "[object Int16Array]", int32Tag$2 = "[object Int32Array]", uint8Tag$2 = "[object Uint8Array]", uint8ClampedTag$2 = "[object Uint8ClampedArray]", uint16Tag$2 = "[object Uint16Array]", uint32Tag$2 = "[object Uint32Array]";
var typedArrayTags = {};
typedArrayTags[float32Tag$2] = typedArrayTags[float64Tag$2] = typedArrayTags[int8Tag$2] = typedArrayTags[int16Tag$2] = typedArrayTags[int32Tag$2] = typedArrayTags[uint8Tag$2] = typedArrayTags[uint8ClampedTag$2] = typedArrayTags[uint16Tag$2] = typedArrayTags[uint32Tag$2] = true;
typedArrayTags[argsTag$2] = typedArrayTags[arrayTag$2] = typedArrayTags[arrayBufferTag$3] = typedArrayTags[boolTag$3] = typedArrayTags[dataViewTag$4] = typedArrayTags[dateTag$3] = typedArrayTags[errorTag$2] = typedArrayTags[funcTag$1] = typedArrayTags[mapTag$5] = typedArrayTags[numberTag$3] = typedArrayTags[objectTag$3] = typedArrayTags[regexpTag$3] = typedArrayTags[setTag$5] = typedArrayTags[stringTag$3] = typedArrayTags[weakMapTag$2] = false;
function baseIsTypedArray(value) {
return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
}
function baseUnary(func) {
return function(value) {
return func(value);
};
}
var freeExports$1 = typeof exports == "object" && exports && !exports.nodeType && exports;
var freeModule$1 = freeExports$1 && typeof module == "object" && module && !module.nodeType && module;
var moduleExports$1 = freeModule$1 && freeModule$1.exports === freeExports$1;
var freeProcess = moduleExports$1 && freeGlobal$1.process;
var nodeUtil = function() {
try {
var types2 = freeModule$1 && freeModule$1.require && freeModule$1.require("util").types;
if (types2) {
return types2;
}
return freeProcess && freeProcess.binding && freeProcess.binding("util");
} catch (e) {
}
}();
var nodeUtil$1 = nodeUtil;
var nodeIsTypedArray = nodeUtil$1 && nodeUtil$1.isTypedArray;
var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
var isTypedArray$1 = isTypedArray;
var objectProto$8 = Object.prototype;
var hasOwnProperty$8 = objectProto$8.hasOwnProperty;
function arrayLikeKeys(value, inherited) {
var isArr = isArray$2(value), isArg = !isArr && isArguments$1(value), isBuff = !isArr && !isArg && isBuffer$1(value), isType = !isArr && !isArg && !isBuff && isTypedArray$1(value), skipIndexes = isArr || isArg || isBuff || isType, result = skipIndexes ? baseTimes(value.length, String) : [], length = result.length;
for (var key in value) {
if ((inherited || hasOwnProperty$8.call(value, key)) && !(skipIndexes && (key == "length" || isBuff && (key == "offset" || key == "parent") || isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || isIndex(key, length)))) {
result.push(key);
}
}
return result;
}
function overArg(func, transform) {
return function(arg) {
return func(transform(arg));
};
}
var nativeKeys = overArg(Object.keys, Object);
var nativeKeys$1 = nativeKeys;
var objectProto$7 = Object.prototype;
var hasOwnProperty$7 = objectProto$7.hasOwnProperty;
function baseKeys(object4) {
if (!isPrototype(object4)) {
return nativeKeys$1(object4);
}
var result = [];
for (var key in Object(object4)) {
if (hasOwnProperty$7.call(object4, key) && key != "constructor") {
result.push(key);
}
}
return result;
}
function keys(object4) {
return isArrayLike(object4) ? arrayLikeKeys(object4) : baseKeys(object4);
}
function nativeKeysIn(object4) {
var result = [];
if (object4 != null) {
for (var key in Object(object4)) {
result.push(key);
}
}
return result;
}
var objectProto$6 = Object.prototype;
var hasOwnProperty$6 = objectProto$6.hasOwnProperty;
function baseKeysIn(object4) {
if (!isObject$2(object4)) {
return nativeKeysIn(object4);
}
var isProto = isPrototype(object4), result = [];
for (var key in object4) {
if (!(key == "constructor" && (isProto || !hasOwnProperty$6.call(object4, key)))) {
result.push(key);
}
}
return result;
}
function keysIn(object4) {
return isArrayLike(object4) ? arrayLikeKeys(object4, true) : baseKeysIn(object4);
}
var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/;
function isKey(value, object4) {
if (isArray$2(value)) {
return false;
}
var type4 = typeof value;
if (type4 == "number" || type4 == "symbol" || type4 == "boolean" || value == null || isSymbol(value)) {
return true;
}
return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object4 != null && value in Object(object4);
}
var nativeCreate = getNative(Object, "create");
var nativeCreate$1 = nativeCreate;
function hashClear() {
this.__data__ = nativeCreate$1 ? nativeCreate$1(null) : {};
this.size = 0;
}
function hashDelete(key) {
var result = this.has(key) && delete this.__data__[key];
this.size -= result ? 1 : 0;
return result;
}
var HASH_UNDEFINED$2 = "__lodash_hash_undefined__";
var objectProto$5 = Object.prototype;
var hasOwnProperty$5 = objectProto$5.hasOwnProperty;
function hashGet(key) {
var data2 = this.__data__;
if (nativeCreate$1) {
var result = data2[key];
return result === HASH_UNDEFINED$2 ? void 0 : result;
}
return hasOwnProperty$5.call(data2, key) ? data2[key] : void 0;
}
var objectProto$4 = Object.prototype;
var hasOwnProperty$4 = objectProto$4.hasOwnProperty;
function hashHas(key) {
var data2 = this.__data__;
return nativeCreate$1 ? data2[key] !== void 0 : hasOwnProperty$4.call(data2, key);
}
var HASH_UNDEFINED$1 = "__lodash_hash_undefined__";
function hashSet(key, value) {
var data2 = this.__data__;
this.size += this.has(key) ? 0 : 1;
data2[key] = nativeCreate$1 && value === void 0 ? HASH_UNDEFINED$1 : value;
return this;
}
function Hash(entries) {
var index = -1, length = entries == null ? 0 : entries.length;
this.clear();
while (++index < length) {
var entry = entries[index];
this.set(entry[0], entry[1]);
}
}
Hash.prototype.clear = hashClear;
Hash.prototype["delete"] = hashDelete;
Hash.prototype.get = hashGet;
Hash.prototype.has = hashHas;
Hash.prototype.set = hashSet;
function listCacheClear() {
this.__data__ = [];
this.size = 0;
}
function assocIndexOf(array4, key) {
var length = array4.length;
while (length--) {
if (eq(array4[length][0], key)) {
return length;
}
}
return -1;
}
var arrayProto = Array.prototype;
var splice = arrayProto.splice;
function listCacheDelete(key) {
var data2 = this.__data__, index = assocIndexOf(data2, key);
if (index < 0) {
return false;
}
var lastIndex = data2.length - 1;
if (index == lastIndex) {
data2.pop();
} else {
splice.call(data2, index, 1);
}
--this.size;
return true;
}
function listCacheGet(key) {
var data2 = this.__data__, index = assocIndexOf(data2, key);
return index < 0 ? void 0 : data2[index][1];
}
function listCacheHas(key) {
return assocIndexOf(this.__data__, key) > -1;
}
function listCacheSet(key, value) {
var data2 = this.__data__, index = assocIndexOf(data2, key);
if (index < 0) {
++this.size;
data2.push([key, value]);
} else {
data2[index][1] = value;
}
return this;
}
function ListCache(entries) {
var index = -1, length = entries == null ? 0 : entries.length;
this.clear();
while (++index < length) {
var entry = entries[index];
this.set(entry[0], entry[1]);
}
}
ListCache.prototype.clear = listCacheClear;
ListCache.prototype["delete"] = listCacheDelete;
ListCache.prototype.get = listCacheGet;
ListCache.prototype.has = listCacheHas;
ListCache.prototype.set = listCacheSet;
var Map$1 = getNative(root$1, "Map");
var Map$2 = Map$1;
function mapCacheClear() {
this.size = 0;
this.__data__ = {
"hash": new Hash(),
"map": new (Map$2 || ListCache)(),
"string": new Hash()
};
}
function isKeyable(value) {
var type4 = typeof value;
return type4 == "string" || type4 == "number" || type4 == "symbol" || type4 == "boolean" ? value !== "__proto__" : value === null;
}
function getMapData(map, key) {
var data2 = map.__data__;
return isKeyable(key) ? data2[typeof key == "string" ? "string" : "hash"] : data2.map;
}
function mapCacheDelete(key) {
var result = getMapData(this, key)["delete"](key);
this.size -= result ? 1 : 0;
return result;
}
function mapCacheGet(key) {
return getMapData(this, key).get(key);
}
function mapCacheHas(key) {
return getMapData(this, key).has(key);
}
function mapCacheSet(key, value) {
var data2 = getMapData(this, key), size = data2.size;
data2.set(key, value);
this.size += data2.size == size ? 0 : 1;
return this;
}
function MapCache(entries) {
var index = -1, length = entries == null ? 0 : entries.length;
this.clear();
while (++index < length) {
var entry = entries[index];
this.set(entry[0], entry[1]);
}
}
MapCache.prototype.clear = mapCacheClear;
MapCache.prototype["delete"] = mapCacheDelete;
MapCache.prototype.get = mapCacheGet;
MapCache.prototype.has = mapCacheHas;
MapCache.prototype.set = mapCacheSet;
var FUNC_ERROR_TEXT$2 = "Expected a function";
function memoize(func, resolver) {
if (typeof func != "function" || resolver != null && typeof resolver != "function") {
throw new TypeError(FUNC_ERROR_TEXT$2);
}
var memoized = function() {
var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache;
if (cache.has(key)) {
return cache.get(key);
}
var result = func.apply(this, args);
memoized.cache = cache.set(key, result) || cache;
return result;
};
memoized.cache = new (memoize.Cache || MapCache)();
return memoized;
}
memoize.Cache = MapCache;
var MAX_MEMOIZE_SIZE = 500;
function memoizeCapped(func) {
var result = memoize(func, function(key) {
if (cache.size === MAX_MEMOIZE_SIZE) {
cache.clear();
}
return key;
});
var cache = result.cache;
return result;
}
var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
var reEscapeChar = /\\(\\)?/g;
var stringToPath = memoizeCapped(function(string3) {
var result = [];
if (string3.charCodeAt(0) === 46) {
result.push("");
}
string3.replace(rePropName, function(match, number4, quote, subString) {
result.push(quote ? subString.replace(reEscapeChar, "$1") : number4 || match);
});
return result;
});
var stringToPath$1 = stringToPath;
function toString(value) {
return value == null ? "" : baseToString(value);
}
function castPath(value, object4) {
if (isArray$2(value)) {
return value;
}
return isKey(value, object4) ? [value] : stringToPath$1(toString(value));
}
var INFINITY$2 = 1 / 0;
function toKey(value) {
if (typeof value == "string" || isSymbol(value)) {
return value;
}
var result = value + "";
return result == "0" && 1 / value == -INFINITY$2 ? "-0" : result;
}
function baseGet(object4, path) {
path = castPath(path, object4);
var index = 0, length = path.length;
while (object4 != null && index < length) {
object4 = object4[toKey(path[index++])];
}
return index && index == length ? object4 : void 0;
}
function get(object4, path, defaultValue) {
var result = object4 == null ? void 0 : baseGet(object4, path);
return result === void 0 ? defaultValue : result;
}
function arrayPush(array4, values) {
var index = -1, length = values.length, offset2 = array4.length;
while (++index < length) {
array4[offset2 + index] = values[index];
}
return array4;
}
var spreadableSymbol = Symbol$2 ? Symbol$2.isConcatSpreadable : void 0;
function isFlattenable(value) {
return isArray$2(value) || isArguments$1(value) || !!(spreadableSymbol && value && value[spreadableSymbol]);
}
function baseFlatten(array4, depth, predicate, isStrict, result) {
var index = -1, length = array4.length;
predicate || (predicate = isFlattenable);
result || (result = []);
while (++index < length) {
var value = array4[index];
if (depth > 0 && predicate(value)) {
if (depth > 1) {
baseFlatten(value, depth - 1, predicate, isStrict, result);
} else {
arrayPush(result, value);
}
} else if (!isStrict) {
result[result.length] = value;
}
}
return result;
}
var getPrototype = overArg(Object.getPrototypeOf, Object);
var getPrototype$1 = getPrototype;
function castArray$1() {
if (!arguments.length) {
return [];
}
var value = arguments[0];
return isArray$2(value) ? value : [value];
}
function stackClear() {
this.__data__ = new ListCache();
this.size = 0;
}
function stackDelete(key) {
var data2 = this.__data__, result = data2["delete"](key);
this.size = data2.size;
return result;
}
function stackGet(key) {
return this.__data__.get(key);
}
function stackHas(key) {
return this.__data__.has(key);
}
var LARGE_ARRAY_SIZE$1 = 200;
function stackSet(key, value) {
var data2 = this.__data__;
if (data2 instanceof ListCache) {
var pairs = data2.__data__;
if (!Map$2 || pairs.length < LARGE_ARRAY_SIZE$1 - 1) {
pairs.push([key, value]);
this.size = ++data2.size;
return this;
}
data2 = this.__data__ = new MapCache(pairs);
}
data2.set(key, value);
this.size = data2.size;
return this;
}
function Stack(entries) {
var data2 = this.__data__ = new ListCache(entries);
this.size = data2.size;
}
Stack.prototype.clear = stackClear;
Stack.prototype["delete"] = stackDelete;
Stack.prototype.get = stackGet;
Stack.prototype.has = stackHas;
Stack.prototype.set = stackSet;
function baseAssign(object4, source) {
return object4 && copyObject(source, keys(source), object4);
}
function baseAssignIn(object4, source) {
return object4 && copyObject(source, keysIn(source), object4);
}
var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports;
var freeModule = freeExports && typeof module == "object" && module && !module.nodeType && module;
var moduleExports = freeModule && freeModule.exports === freeExports;
var Buffer2 = moduleExports ? root$1.Buffer : void 0, allocUnsafe = Buffer2 ? Buffer2.allocUnsafe : void 0;
function cloneBuffer(buffer, isDeep) {
if (isDeep) {
return buffer.slice();
}
var length = buffer.length, result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);
buffer.copy(result);
return result;
}
function arrayFilter(array4, predicate) {
var index = -1, length = array4 == null ? 0 : array4.length, resIndex = 0, result = [];
while (++index < length) {
var value = array4[index];
if (predicate(value, index, array4)) {
result[resIndex++] = value;
}
}
return result;
}
function stubArray() {
return [];
}
var objectProto$3 = Object.prototype;
var propertyIsEnumerable = objectProto$3.propertyIsEnumerable;
var nativeGetSymbols$1 = Object.getOwnPropertySymbols;
var getSymbols = !nativeGetSymbols$1 ? stubArray : function(object4) {
if (object4 == null) {
return [];
}
object4 = Object(object4);
return arrayFilter(nativeGetSymbols$1(object4), function(symbol) {
return propertyIsEnumerable.call(object4, symbol);
});
};
var getSymbols$1 = getSymbols;
function copySymbols(source, object4) {
return copyObject(source, getSymbols$1(source), object4);
}
var nativeGetSymbols = Object.getOwnPropertySymbols;
var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object4) {
var result = [];
while (object4) {
arrayPush(result, getSymbols$1(object4));
object4 = getPrototype$1(object4);
}
return result;
};
var getSymbolsIn$1 = getSymbolsIn;
function copySymbolsIn(source, object4) {
return copyObject(source, getSymbolsIn$1(source), object4);
}
function baseGetAllKeys(object4, keysFunc, symbolsFunc) {
var result = keysFunc(object4);
return isArray$2(object4) ? result : arrayPush(result, symbolsFunc(object4));
}
function getAllKeys(object4) {
return baseGetAllKeys(object4, keys, getSymbols$1);
}
function getAllKeysIn(object4) {
return baseGetAllKeys(object4, keysIn, getSymbolsIn$1);
}
var DataView = getNative(root$1, "DataView");
var DataView$1 = DataView;
var Promise$1 = getNative(root$1, "Promise");
var Promise$2 = Promise$1;
var Set$1 = getNative(root$1, "Set");
var Set$2 = Set$1;
var mapTag$4 = "[object Map]", objectTag$2 = "[object Object]", promiseTag = "[object Promise]", setTag$4 = "[object Set]", weakMapTag$1 = "[object WeakMap]";
var dataViewTag$3 = "[object DataView]";
var dataViewCtorString = toSource(DataView$1), mapCtorString = toSource(Map$2), promiseCtorString = toSource(Promise$2), setCtorString = toSource(Set$2), weakMapCtorString = toSource(WeakMap$1);
var getTag = baseGetTag;
if (DataView$1 && getTag(new DataView$1(new ArrayBuffer(1))) != dataViewTag$3 || Map$2 && getTag(new Map$2()) != mapTag$4 || Promise$2 && getTag(Promise$2.resolve()) != promiseTag || Set$2 && getTag(new Set$2()) != setTag$4 || WeakMap$1 && getTag(new WeakMap$1()) != weakMapTag$1) {
getTag = function(value) {
var result = baseGetTag(value), Ctor = result == objectTag$2 ? value.constructor : void 0, ctorString = Ctor ? toSource(Ctor) : "";
if (ctorString) {
switch (ctorString) {
case dataViewCtorString:
return dataViewTag$3;
case mapCtorString:
return mapTag$4;
case promiseCtorString:
return promiseTag;
case setCtorString:
return setTag$4;
case weakMapCtorString:
return weakMapTag$1;
}
}
return result;
};
}
var getTag$1 = getTag;
var objectProto$2 = Object.prototype;
var hasOwnProperty$3 = objectProto$2.hasOwnProperty;
function initCloneArray(array4) {
var length = array4.length, result = new array4.constructor(length);
if (length && typeof array4[0] == "string" && hasOwnProperty$3.call(array4, "index")) {
result.index = array4.index;
result.input = array4.input;
}
return result;
}
var Uint8Array2 = root$1.Uint8Array;
var Uint8Array$1 = Uint8Array2;
function cloneArrayBuffer(arrayBuffer) {
var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
new Uint8Array$1(result).set(new Uint8Array$1(arrayBuffer));
return result;
}
function cloneDataView(dataView, isDeep) {
var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
}
var reFlags = /\w*$/;
function cloneRegExp(regexp4) {
var result = new regexp4.constructor(regexp4.source, reFlags.exec(regexp4));
result.lastIndex = regexp4.lastIndex;
return result;
}
var symbolProto$1 = Symbol$2 ? Symbol$2.prototype : void 0, symbolValueOf$1 = symbolProto$1 ? symbolProto$1.valueOf : void 0;
function cloneSymbol(symbol) {
return symbolValueOf$1 ? Object(symbolValueOf$1.call(symbol)) : {};
}
function cloneTypedArray(typedArray, isDeep) {
var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
}
var boolTag$2 = "[object Boolean]", dateTag$2 = "[object Date]", mapTag$3 = "[object Map]", numberTag$2 = "[object Number]", regexpTag$2 = "[object RegExp]", setTag$3 = "[object Set]", stringTag$2 = "[object String]", symbolTag$2 = "[object Symbol]";
var arrayBufferTag$2 = "[object ArrayBuffer]", dataViewTag$2 = "[object DataView]", float32Tag$1 = "[object Float32Array]", float64Tag$1 = "[object Float64Array]", int8Tag$1 = "[object Int8Array]", int16Tag$1 = "[object Int16Array]", int32Tag$1 = "[object Int32Array]", uint8Tag$1 = "[object Uint8Array]", uint8ClampedTag$1 = "[object Uint8ClampedArray]", uint16Tag$1 = "[object Uint16Array]", uint32Tag$1 = "[object Uint32Array]";
function initCloneByTag(object4, tag, isDeep) {
var Ctor = object4.constructor;
switch (tag) {
case arrayBufferTag$2:
return cloneArrayBuffer(object4);
case boolTag$2:
case dateTag$2:
return new Ctor(+object4);
case dataViewTag$2:
return cloneDataView(object4, isDeep);
case float32Tag$1:
case float64Tag$1:
case int8Tag$1:
case int16Tag$1:
case int32Tag$1:
case uint8Tag$1:
case uint8ClampedTag$1:
case uint16Tag$1:
case uint32Tag$1:
return cloneTypedArray(object4, isDeep);
case mapTag$3:
return new Ctor();
case numberTag$2:
case stringTag$2:
return new Ctor(object4);
case regexpTag$2:
return cloneRegExp(object4);
case setTag$3:
return new Ctor();
case symbolTag$2:
return cloneSymbol(object4);
}
}
function initCloneObject(object4) {
return typeof object4.constructor == "function" && !isPrototype(object4) ? baseCreate$1(getPrototype$1(object4)) : {};
}
var mapTag$2 = "[object Map]";
function baseIsMap(value) {
return isObjectLike(value) && getTag$1(value) == mapTag$2;
}
var nodeIsMap = nodeUtil$1 && nodeUtil$1.isMap;
var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;
var isMap$1 = isMap;
var setTag$2 = "[object Set]";
function baseIsSet(value) {
return isObjectLike(value) && getTag$1(value) == setTag$2;
}
var nodeIsSet = nodeUtil$1 && nodeUtil$1.isSet;
var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;
var isSet$1 = isSet;
var CLONE_DEEP_FLAG$1 = 1, CLONE_FLAT_FLAG = 2, CLONE_SYMBOLS_FLAG$2 = 4;
var argsTag$1 = "[object Arguments]", arrayTag$1 = "[object Array]", boolTag$1 = "[object Boolean]", dateTag$1 = "[object Date]", errorTag$1 = "[object Error]", funcTag = "[object Function]", genTag = "[object GeneratorFunction]", mapTag$1 = "[object Map]", numberTag$1 = "[object Number]", objectTag$1 = "[object Object]", regexpTag$1 = "[object RegExp]", setTag$1 = "[object Set]", stringTag$1 = "[object String]", symbolTag$1 = "[object Symbol]", weakMapTag = "[object WeakMap]";
var arrayBufferTag$1 = "[object ArrayBuffer]", dataViewTag$1 = "[object DataView]", float32Tag = "[object Float32Array]", float64Tag = "[object Float64Array]", int8Tag = "[object Int8Array]", int16Tag = "[object Int16Array]", int32Tag = "[object Int32Array]", uint8Tag = "[object Uint8Array]", uint8ClampedTag = "[object Uint8ClampedArray]", uint16Tag = "[object Uint16Array]", uint32Tag = "[object Uint32Array]";
var cloneableTags = {};
cloneableTags[argsTag$1] = cloneableTags[arrayTag$1] = cloneableTags[arrayBufferTag$1] = cloneableTags[dataViewTag$1] = cloneableTags[boolTag$1] = cloneableTags[dateTag$1] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag$1] = cloneableTags[numberTag$1] = cloneableTags[objectTag$1] = cloneableTags[regexpTag$1] = cloneableTags[setTag$1] = cloneableTags[stringTag$1] = cloneableTags[symbolTag$1] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
cloneableTags[errorTag$1] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false;
function baseClone(value, bitmask, customizer, key, object4, stack) {
var result, isDeep = bitmask & CLONE_DEEP_FLAG$1, isFlat = bitmask & CLONE_FLAT_FLAG, isFull = bitmask & CLONE_SYMBOLS_FLAG$2;
if (customizer) {
result = object4 ? customizer(value, key, object4, stack) : customizer(value);
}
if (result !== void 0) {
return result;
}
if (!isObject$2(value)) {
return value;
}
var isArr = isArray$2(value);
if (isArr) {
result = initCloneArray(value);
if (!isDeep) {
return copyArray(value, result);
}
} else {
var tag = getTag$1(value), isFunc = tag == funcTag || tag == genTag;
if (isBuffer$1(value)) {
return cloneBuffer(value, isDeep);
}
if (tag == objectTag$1 || tag == argsTag$1 || isFunc && !object4) {
result = isFlat || isFunc ? {} : initCloneObject(value);
if (!isDeep) {
return isFlat ? copySymbolsIn(value, baseAssignIn(result, value)) : copySymbols(value, baseAssign(result, value));
}
} else {
if (!cloneableTags[tag]) {
return object4 ? value : {};
}
result = initCloneByTag(value, tag, isDeep);
}
}
stack || (stack = new Stack());
var stacked = stack.get(value);
if (stacked) {
return stacked;
}
stack.set(value, result);
if (isSet$1(value)) {
value.forEach(function(subValue) {
result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
});
} else if (isMap$1(value)) {
value.forEach(function(subValue, key2) {
result.set(key2, baseClone(subValue, bitmask, customizer, key2, value, stack));
});
}
var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys;
var props = isArr ? void 0 : keysFunc(value);
arrayEach(props || value, function(subValue, key2) {
if (props) {
key2 = subValue;
subValue = value[key2];
}
assignValue(result, key2, baseClone(subValue, bitmask, customizer, key2, value, stack));
});
return result;
}
var CLONE_SYMBOLS_FLAG$1 = 4;
function clone(value) {
return baseClone(value, CLONE_SYMBOLS_FLAG$1);
}
var CLONE_DEEP_FLAG = 1, CLONE_SYMBOLS_FLAG = 4;
function cloneDeep(value) {
return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);
}
var HASH_UNDEFINED = "__lodash_hash_undefined__";
function setCacheAdd(value) {
this.__data__.set(value, HASH_UNDEFINED);
return this;
}
function setCacheHas(value) {
return this.__data__.has(value);
}
function SetCache(values) {
var index = -1, length = values == null ? 0 : values.length;
this.__data__ = new MapCache();
while (++index < length) {
this.add(values[index]);
}
}
SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
SetCache.prototype.has = setCacheHas;
function arraySome(array4, predicate) {
var index = -1, length = array4 == null ? 0 : array4.length;
while (++index < length) {
if (predicate(array4[index], index, array4)) {
return true;
}
}
return false;
}
function cacheHas(cache, key) {
return cache.has(key);
}
var COMPARE_PARTIAL_FLAG$3 = 1, COMPARE_UNORDERED_FLAG$1 = 2;
function equalArrays(array4, other, bitmask, customizer, equalFunc, stack) {
var isPartial = bitmask & COMPARE_PARTIAL_FLAG$3, arrLength = array4.length, othLength = other.length;
if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
return false;
}
var arrStacked = stack.get(array4);
var othStacked = stack.get(other);
if (arrStacked && othStacked) {
return arrStacked == other && othStacked == array4;
}
var index = -1, result = true, seen = bitmask & COMPARE_UNORDERED_FLAG$1 ? new SetCache() : void 0;
stack.set(array4, other);
stack.set(other, array4);
while (++index < arrLength) {
var arrValue = array4[index], othValue = other[index];
if (customizer) {
var compared = isPartial ? customizer(othValue, arrValue, index, other, array4, stack) : customizer(arrValue, othValue, index, array4, other, stack);
}
if (compared !== void 0) {
if (compared) {
continue;
}
result = false;
break;
}
if (seen) {
if (!arraySome(other, function(othValue2, othIndex) {
if (!cacheHas(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) {
return seen.push(othIndex);
}
})) {
result = false;
break;
}
} else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
result = false;
break;
}
}
stack["delete"](array4);
stack["delete"](other);
return result;
}
function mapToArray(map) {
var index = -1, result = Array(map.size);
map.forEach(function(value, key) {
result[++index] = [key, value];
});
return result;
}
function setToArray(set2) {
var index = -1, result = Array(set2.size);
set2.forEach(function(value) {
result[++index] = value;
});
return result;
}
var COMPARE_PARTIAL_FLAG$2 = 1, COMPARE_UNORDERED_FLAG = 2;
var boolTag = "[object Boolean]", dateTag = "[object Date]", errorTag = "[object Error]", mapTag = "[object Map]", numberTag = "[object Number]", regexpTag = "[object RegExp]", setTag = "[object Set]", stringTag = "[object String]", symbolTag = "[object Symbol]";
var arrayBufferTag = "[object ArrayBuffer]", dataViewTag = "[object DataView]";
var symbolProto = Symbol$2 ? Symbol$2.prototype : void 0, symbolValueOf = symbolProto ? symbolProto.valueOf : void 0;
function equalByTag(object4, other, tag, bitmask, customizer, equalFunc, stack) {
switch (tag) {
case dataViewTag:
if (object4.byteLength != other.byteLength || object4.byteOffset != other.byteOffset) {
return false;
}
object4 = object4.buffer;
other = other.buffer;
case arrayBufferTag:
if (object4.byteLength != other.byteLength || !equalFunc(new Uint8Array$1(object4), new Uint8Array$1(other))) {
return false;
}
return true;
case boolTag:
case dateTag:
case numberTag:
return eq(+object4, +other);
case errorTag:
return object4.name == other.name && object4.message == other.message;
case regexpTag:
case stringTag:
return object4 == other + "";
case mapTag:
var convert = mapToArray;
case setTag:
var isPartial = bitmask & COMPARE_PARTIAL_FLAG$2;
convert || (convert = setToArray);
if (object4.size != other.size && !isPartial) {
return false;
}
var stacked = stack.get(object4);
if (stacked) {
return stacked == other;
}
bitmask |= COMPARE_UNORDERED_FLAG;
stack.set(object4, other);
var result = equalArrays(convert(object4), convert(other), bitmask, customizer, equalFunc, stack);
stack["delete"](object4);
return result;
case symbolTag:
if (symbolValueOf) {
return symbolValueOf.call(object4) == symbolValueOf.call(other);
}
}
return false;
}
var COMPARE_PARTIAL_FLAG$1 = 1;
var objectProto$1 = Object.prototype;
var hasOwnProperty$2 = objectProto$1.hasOwnProperty;
function equalObjects(object4, other, bitmask, customizer, equalFunc, stack) {
var isPartial = bitmask & COMPARE_PARTIAL_FLAG$1, objProps = getAllKeys(object4), objLength = objProps.length, othProps = getAllKeys(other), othLength = othProps.length;
if (objLength != othLength && !isPartial) {
return false;
}
var index = objLength;
while (index--) {
var key = objProps[index];
if (!(isPartial ? key in other : hasOwnProperty$2.call(other, key))) {
return false;
}
}
var objStacked = stack.get(object4);
var othStacked = stack.get(other);
if (objStacked && othStacked) {
return objStacked == other && othStacked == object4;
}
var result = true;
stack.set(object4, other);
stack.set(other, object4);
var skipCtor = isPartial;
while (++index < objLength) {
key = objProps[index];
var objValue = object4[key], othValue = other[key];
if (customizer) {
var compared = isPartial ? customizer(othValue, objValue, key, other, object4, stack) : customizer(objValue, othValue, key, object4, other, stack);
}
if (!(compared === void 0 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {
result = false;
break;
}
skipCtor || (skipCtor = key == "constructor");
}
if (result && !skipCtor) {
var objCtor = object4.constructor, othCtor = other.constructor;
if (objCtor != othCtor && ("constructor" in object4 && "constructor" in other) && !(typeof objCtor == "function" && objCtor instanceof objCtor && typeof othCtor == "function" && othCtor instanceof othCtor)) {
result = false;
}
}
stack["delete"](object4);
stack["delete"](other);
return result;
}
var COMPARE_PARTIAL_FLAG = 1;
var argsTag = "[object Arguments]", arrayTag = "[object Array]", objectTag = "[object Object]";
var objectProto = Object.prototype;
var hasOwnProperty$1 = objectProto.hasOwnProperty;
function baseIsEqualDeep(object4, other, bitmask, customizer, equalFunc, stack) {
var objIsArr = isArray$2(object4), othIsArr = isArray$2(other), objTag = objIsArr ? arrayTag : getTag$1(object4), othTag = othIsArr ? arrayTag : getTag$1(other);
objTag = objTag == argsTag ? objectTag : objTag;
othTag = othTag == argsTag ? objectTag : othTag;
var objIsObj = objTag == objectTag, othIsObj = othTag == objectTag, isSameTag = objTag == othTag;
if (isSameTag && isBuffer$1(object4)) {
if (!isBuffer$1(other)) {
return false;
}
objIsArr = true;
objIsObj = false;
}
if (isSameTag && !objIsObj) {
stack || (stack = new Stack());
return objIsArr || isTypedArray$1(object4) ? equalArrays(object4, other, bitmask, customizer, equalFunc, stack) : equalByTag(object4, other, objTag, bitmask, customizer, equalFunc, stack);
}
if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
var objIsWrapped = objIsObj && hasOwnProperty$1.call(object4, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty$1.call(other, "__wrapped__");
if (objIsWrapped || othIsWrapped) {
var objUnwrapped = objIsWrapped ? object4.value() : object4, othUnwrapped = othIsWrapped ? other.value() : other;
stack || (stack = new Stack());
return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
}
}
if (!isSameTag) {
return false;
}
stack || (stack = new Stack());
return equalObjects(object4, other, bitmask, customizer, equalFunc, stack);
}
function baseIsEqual(value, other, bitmask, customizer, stack) {
if (value === other) {
return true;
}
if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) {
return value !== value && other !== other;
}
return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
}
var now = function() {
return root$1.Date.now();
};
var now$1 = now;
var FUNC_ERROR_TEXT$1 = "Expected a function";
var nativeMax = Math.max, nativeMin = Math.min;
function debounce$1(func, wait, options) {
var lastArgs, lastThis, maxWait, result, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true;
if (typeof func != "function") {
throw new TypeError(FUNC_ERROR_TEXT$1);
}
wait = toNumber(wait) || 0;
if (isObject$2(options)) {
leading = !!options.leading;
maxing = "maxWait" in options;
maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
trailing = "trailing" in options ? !!options.trailing : trailing;
}
function invokeFunc(time) {
var args = lastArgs, thisArg = lastThis;
lastArgs = lastThis = void 0;
lastInvokeTime = time;
result = func.apply(thisArg, args);
return result;
}
function leadingEdge(time) {
lastInvokeTime = time;
timerId = setTimeout(timerExpired, wait);
return leading ? invokeFunc(time) : result;
}
function remainingWait(time) {
var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, timeWaiting = wait - timeSinceLastCall;
return maxing ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;
}
function shouldInvoke(time) {
var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime;
return lastCallTime === void 0 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;
}
function timerExpired() {
var time = now$1();
if (shouldInvoke(time)) {
return trailingEdge(time);
}
timerId = setTimeout(timerExpired, remainingWait(time));
}
function trailingEdge(time) {
timerId = void 0;
if (trailing && lastArgs) {
return invokeFunc(time);
}
lastArgs = lastThis = void 0;
return result;
}
function cancel() {
if (timerId !== void 0) {
clearTimeout(timerId);
}
lastInvokeTime = 0;
lastArgs = lastCallTime = lastThis = timerId = void 0;
}
function flush() {
return timerId === void 0 ? result : trailingEdge(now$1());
}
function debounced() {
var time = now$1(), isInvoking = shouldInvoke(time);
lastArgs = arguments;
lastThis = this;
lastCallTime = time;
if (isInvoking) {
if (timerId === void 0) {
return leadingEdge(lastCallTime);
}
if (maxing) {
clearTimeout(timerId);
timerId = setTimeout(timerExpired, wait);
return invokeFunc(lastCallTime);
}
}
if (timerId === void 0) {
timerId = setTimeout(timerExpired, wait);
}
return result;
}
debounced.cancel = cancel;
debounced.flush = flush;
return debounced;
}
function isArrayLikeObject(value) {
return isObjectLike(value) && isArrayLike(value);
}
function arrayIncludesWith(array4, value, comparator) {
var index = -1, length = array4 == null ? 0 : array4.length;
while (++index < length) {
if (comparator(value, array4[index])) {
return true;
}
}
return false;
}
var INFINITY$1 = 1 / 0;
function flattenDeep(array4) {
var length = array4 == null ? 0 : array4.length;
return length ? baseFlatten(array4, INFINITY$1) : [];
}
function fromPairs(pairs) {
var index = -1, length = pairs == null ? 0 : pairs.length, result = {};
while (++index < length) {
var pair = pairs[index];
result[pair[0]] = pair[1];
}
return result;
}
function isEqual(value, other) {
return baseIsEqual(value, other);
}
function isNil(value) {
return value == null;
}
function baseSet(object4, path, value, customizer) {
if (!isObject$2(object4)) {
return object4;
}
path = castPath(path, object4);
var index = -1, length = path.length, lastIndex = length - 1, nested = object4;
while (nested != null && ++index < length) {
var key = toKey(path[index]), newValue = value;
if (key === "__proto__" || key === "constructor" || key === "prototype") {
return object4;
}
if (index != lastIndex) {
var objValue = nested[key];
newValue = customizer ? customizer(objValue, key, nested) : void 0;
if (newValue === void 0) {
newValue = isObject$2(objValue) ? objValue : isIndex(path[index + 1]) ? [] : {};
}
}
assignValue(nested, key, newValue);
nested = nested[key];
}
return object4;
}
function set(object4, path, value) {
return object4 == null ? object4 : baseSet(object4, path, value);
}
var FUNC_ERROR_TEXT = "Expected a function";
function throttle(func, wait, options) {
var leading = true, trailing = true;
if (typeof func != "function") {
throw new TypeError(FUNC_ERROR_TEXT);
}
if (isObject$2(options)) {
leading = "leading" in options ? !!options.leading : leading;
trailing = "trailing" in options ? !!options.trailing : trailing;
}
return debounce$1(func, wait, {
"leading": leading,
"maxWait": wait,
"trailing": trailing
});
}
var INFINITY = 1 / 0;
var createSet = !(Set$2 && 1 / setToArray(new Set$2([, -0]))[1] == INFINITY) ? noop$1 : function(values) {
return new Set$2(values);
};
var createSet$1 = createSet;
var LARGE_ARRAY_SIZE = 200;
function baseUniq(array4, iteratee, comparator) {
var index = -1, includes = arrayIncludes, length = array4.length, isCommon = true, result = [], seen = result;
if (comparator) {
isCommon = false;
includes = arrayIncludesWith;
} else if (length >= LARGE_ARRAY_SIZE) {
var set2 = iteratee ? null : createSet$1(array4);
if (set2) {
return setToArray(set2);
}
isCommon = false;
includes = cacheHas;
seen = new SetCache();
} else {
seen = iteratee ? [] : result;
}
outer:
while (++index < length) {
var value = array4[index], computed2 = iteratee ? iteratee(value) : value;
value = comparator || value !== 0 ? value : 0;
if (isCommon && computed2 === computed2) {
var seenIndex = seen.length;
while (seenIndex--) {
if (seen[seenIndex] === computed2) {
continue outer;
}
}
if (iteratee) {
seen.push(computed2);
}
result.push(value);
} else if (!includes(seen, computed2, comparator)) {
if (seen !== result) {
seen.push(computed2);
}
result.push(value);
}
}
return result;
}
var union = baseRest(function(arrays) {
return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));
});
var union$1 = union;
const isLeaf = (el) => !el.getAttribute("aria-owns");
const getSibling = (el, distance, elClass) => {
const { parentNode } = el;
if (!parentNode)
return null;
const siblings = parentNode.querySelectorAll(elClass);
const index = Array.prototype.indexOf.call(siblings, el);
return siblings[index + distance] || null;
};
const focusNode = (el) => {
if (!el)
return;
el.focus();
!isLeaf(el) && el.click();
};
const on = (element, event, handler3, useCapture = false) => {
if (element && event && handler3) {
element == null ? void 0 : element.addEventListener(event, handler3, useCapture);
}
};
const off = (element, event, handler3, useCapture = false) => {
if (element && event && handler3) {
element == null ? void 0 : element.removeEventListener(event, handler3, useCapture);
}
};
const once = (el, event, fn2) => {
const listener = function(...args) {
if (fn2) {
fn2.apply(this, args);
}
off(el, event, listener);
};
on(el, event, listener);
};
const composeEventHandlers = (theirsHandler, oursHandler, { checkForDefaultPrevented = true } = {}) => {
const handleEvent = (event) => {
const shouldPrevent = theirsHandler == null ? void 0 : theirsHandler(event);
if (checkForDefaultPrevented === false || !shouldPrevent) {
return oursHandler == null ? void 0 : oursHandler(event);
}
};
return handleEvent;
};
function tryOnScopeDispose(fn2) {
if (getCurrentScope()) {
onScopeDispose(fn2);
return true;
}
return false;
}
const isClient = typeof window !== "undefined";
const isBoolean = (val) => typeof val === "boolean";
const isNumber = (val) => typeof val === "number";
const isString$1 = (val) => typeof val === "string";
const noop = () => {
};
function createFilterWrapper(filter, fn2) {
function wrapper(...args) {
filter(() => fn2.apply(this, args), { fn: fn2, thisArg: this, args });
}
return wrapper;
}
function debounceFilter(ms, options = {}) {
let timer;
let maxTimer;
const filter = (invoke) => {
const duration = unref(ms);
const maxDuration = unref(options.maxWait);
if (timer)
clearTimeout(timer);
if (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) {
if (maxTimer) {
clearTimeout(maxTimer);
maxTimer = null;
}
return invoke();
}
if (maxDuration && !maxTimer) {
maxTimer = setTimeout(() => {
if (timer)
clearTimeout(timer);
maxTimer = null;
invoke();
}, maxDuration);
}
timer = setTimeout(() => {
if (maxTimer)
clearTimeout(maxTimer);
maxTimer = null;
invoke();
}, duration);
};
return filter;
}
function throttleFilter(ms, trailing = true, leading = true) {
let lastExec = 0;
let timer;
let preventLeading = !leading;
const clear = () => {
if (timer) {
clearTimeout(timer);
timer = void 0;
}
};
const filter = (invoke) => {
const duration = unref(ms);
const elapsed = Date.now() - lastExec;
clear();
if (duration <= 0) {
lastExec = Date.now();
return invoke();
}
if (elapsed > duration) {
lastExec = Date.now();
if (preventLeading)
preventLeading = false;
else
invoke();
}
if (trailing) {
timer = setTimeout(() => {
lastExec = Date.now();
if (!leading)
preventLeading = true;
clear();
invoke();
}, duration);
}
if (!leading && !timer)
timer = setTimeout(() => preventLeading = true, duration);
};
return filter;
}
function useDebounceFn(fn2, ms = 200, options = {}) {
return createFilterWrapper(debounceFilter(ms, options), fn2);
}
function refDebounced(value, ms = 200, options = {}) {
if (ms <= 0)
return value;
const debounced = ref(value.value);
const updater = useDebounceFn(() => {
debounced.value = value.value;
}, ms, options);
watch(value, () => updater());
return debounced;
}
function useThrottleFn(fn2, ms = 200, trailing = true, leading = true) {
return createFilterWrapper(throttleFilter(ms, trailing, leading), fn2);
}
function useTimeoutFn(cb, interval, options = {}) {
const {
immediate = true
} = options;
const isPending = ref(false);
let timer = null;
function clear() {
if (timer) {
clearTimeout(timer);
timer = null;
}
}
function stop() {
isPending.value = false;
clear();
}
function start2(...args) {
clear();
isPending.value = true;
timer = setTimeout(() => {
isPending.value = false;
timer = null;
cb(...args);
}, unref(interval));
}
if (immediate) {
isPending.value = true;
if (isClient)
start2();
}
tryOnScopeDispose(stop);
return {
isPending,
start: start2,
stop
};
}
function unrefElement(elRef) {
var _a2;
const plain = unref(elRef);
return (_a2 = plain == null ? void 0 : plain.$el) != null ? _a2 : plain;
}
const defaultWindow = isClient ? window : void 0;
isClient ? window.document : void 0;
isClient ? window.navigator : void 0;
isClient ? window.location : void 0;
function useEventListener(...args) {
let target;
let event;
let listener;
let options;
if (isString$1(args[0])) {
[event, listener, options] = args;
target = defaultWindow;
} else {
[target, event, listener, options] = args;
}
if (!target)
return noop;
let cleanup = noop;
const stopWatch = watch(() => unrefElement(target), (el) => {
cleanup();
if (!el)
return;
el.addEventListener(event, listener, options);
cleanup = () => {
el.removeEventListener(event, listener, options);
cleanup = noop;
};
}, { immediate: true, flush: "post" });
const stop = () => {
stopWatch();
cleanup();
};
tryOnScopeDispose(stop);
return stop;
}
function onClickOutside(target, handler3, options = {}) {
const { window: window2 = defaultWindow, ignore, capture = true } = options;
if (!window2)
return;
const shouldListen = ref(true);
const listener = (event) => {
const el = unrefElement(target);
const composedPath = event.composedPath();
if (!el || el === event.target || composedPath.includes(el) || !shouldListen.value)
return;
if (ignore && ignore.length > 0) {
if (ignore.some((target2) => {
const el2 = unrefElement(target2);
return el2 && (event.target === el2 || composedPath.includes(el2));
}))
return;
}
handler3(event);
};
const cleanup = [
useEventListener(window2, "click", listener, { passive: true, capture }),
useEventListener(window2, "pointerdown", (e) => {
const el = unrefElement(target);
shouldListen.value = !!el && !e.composedPath().includes(el);
}, { passive: true })
];
const stop = () => cleanup.forEach((fn2) => fn2());
return stop;
}
const _global = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
const globalKey = "__vueuse_ssr_handlers__";
_global[globalKey] = _global[globalKey] || {};
_global[globalKey];
var __getOwnPropSymbols$c = Object.getOwnPropertySymbols;
var __hasOwnProp$c = Object.prototype.hasOwnProperty;
var __propIsEnum$c = Object.prototype.propertyIsEnumerable;
var __objRest$2 = (source, exclude) => {
var target = {};
for (var prop in source)
if (__hasOwnProp$c.call(source, prop) && exclude.indexOf(prop) < 0)
target[prop] = source[prop];
if (source != null && __getOwnPropSymbols$c)
for (var prop of __getOwnPropSymbols$c(source)) {
if (exclude.indexOf(prop) < 0 && __propIsEnum$c.call(source, prop))
target[prop] = source[prop];
}
return target;
};
function useResizeObserver(target, callback, options = {}) {
const _a2 = options, { window: window2 = defaultWindow } = _a2, observerOptions = __objRest$2(_a2, ["window"]);
let observer;
const isSupported = window2 && "ResizeObserver" in window2;
const cleanup = () => {
if (observer) {
observer.disconnect();
observer = void 0;
}
};
const stopWatch = watch(() => unrefElement(target), (el) => {
cleanup();
if (isSupported && window2 && el) {
observer = new ResizeObserver(callback);
observer.observe(el, observerOptions);
}
}, { immediate: true, flush: "post" });
const stop = () => {
cleanup();
stopWatch();
};
tryOnScopeDispose(stop);
return {
isSupported,
stop
};
}
var _a, _b;
isClient && (window == null ? void 0 : window.navigator) && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.platform) && /iP(ad|hone|od)/.test((_b = window == null ? void 0 : window.navigator) == null ? void 0 : _b.platform);
function useVModel(props, key, emit, options = {}) {
var _a2;
const {
passive: passive2 = false,
eventName,
deep = false
} = options;
const vm = getCurrentInstance();
const _emit = emit || (vm == null ? void 0 : vm.emit) || ((_a2 = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a2.bind(vm));
let event = eventName;
if (!key) {
{
key = "modelValue";
}
}
event = eventName || event || `update:${key}`;
if (passive2) {
const proxy = ref(props[key]);
watch(() => props[key], (v2) => proxy.value = v2);
watch(proxy, (v2) => {
if (v2 !== props[key] || deep)
_emit(event, v2);
}, {
deep
});
return proxy;
} else {
return computed({
get() {
return props[key];
},
set(value) {
_emit(event, value);
}
});
}
}
const isInContainer = (el, container) => {
if (!isClient || !el || !container)
return false;
const elRect = el.getBoundingClientRect();
let containerRect;
if (container instanceof Element) {
containerRect = container.getBoundingClientRect();
} else {
containerRect = {
top: 0,
right: window.innerWidth,
bottom: window.innerHeight,
left: 0
};
}
return elRect.top < containerRect.bottom && elRect.bottom > containerRect.top && elRect.right > containerRect.left && elRect.left < containerRect.right;
};
const resizeHandler = function(entries) {
for (const entry of entries) {
const listeners = entry.target.__resizeListeners__ || [];
if (listeners.length) {
listeners.forEach((fn2) => {
fn2();
});
}
}
};
const addResizeListener = function(element, fn2) {
if (!isClient || !element)
return;
if (!element.__resizeListeners__) {
element.__resizeListeners__ = [];
element.__ro__ = new ResizeObserver(resizeHandler);
element.__ro__.observe(element);
}
element.__resizeListeners__.push(fn2);
};
const removeResizeListener = function(element, fn2) {
var _a2;
if (!element || !element.__resizeListeners__)
return;
element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn2), 1);
if (!element.__resizeListeners__.length) {
(_a2 = element.__ro__) == null ? void 0 : _a2.disconnect();
}
};
const NOOP = () => {
};
const hasOwnProperty = Object.prototype.hasOwnProperty;
const hasOwn = (val, key) => hasOwnProperty.call(val, key);
const isArray = Array.isArray;
const isFunction = (val) => typeof val === "function";
const isString = (val) => typeof val === "string";
const isObject$1 = (val) => val !== null && typeof val === "object";
const isPromise = (val) => {
return isObject$1(val) && isFunction(val.then) && isFunction(val.catch);
};
const objectToString = Object.prototype.toString;
const toTypeString = (value) => objectToString.call(value);
const toRawType = (value) => {
return toTypeString(value).slice(8, -1);
};
const cacheStringFunction = (fn2) => {
const cache = /* @__PURE__ */ Object.create(null);
return (str) => {
const hit = cache[str];
return hit || (cache[str] = fn2(str));
};
};
const camelizeRE = /-(\w)/g;
const camelize = cacheStringFunction((str) => {
return str.replace(camelizeRE, (_2, c2) => c2 ? c2.toUpperCase() : "");
});
const capitalize = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1));
const isUndefined = (val) => val === void 0;
const isEmpty = (val) => !val && val !== 0 || isArray(val) && val.length === 0 || isObject$1(val) && !Object.keys(val).length;
const isElement$1 = (e) => {
if (typeof Element === "undefined")
return false;
return e instanceof Element;
};
const escapeStringRegexp = (string3 = "") => string3.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d");
const keysOf = (arr) => Object.keys(arr);
const entriesOf = (arr) => Object.entries(arr);
const getProp = (obj, path, defaultValue) => {
return {
get value() {
return get(obj, path, defaultValue);
},
set value(val) {
set(obj, path, val);
}
};
};
const classNameToArray = (cls = "") => cls.split(" ").filter((item) => !!item.trim());
const hasClass = (el, cls) => {
if (!el || !cls)
return false;
if (cls.includes(" "))
throw new Error("className should not contain space.");
return el.classList.contains(cls);
};
const addClass = (el, cls) => {
if (!el || !cls.trim())
return;
el.classList.add(...classNameToArray(cls));
};
const removeClass = (el, cls) => {
if (!el || !cls.trim())
return;
el.classList.remove(...classNameToArray(cls));
};
const getStyle = (element, styleName) => {
var _a2;
if (!isClient || !element || !styleName)
return "";
camelize(styleName);
try {
const style = element.style[styleName];
if (style)
return style;
const computed2 = (_a2 = document.defaultView) == null ? void 0 : _a2.getComputedStyle(element, "");
return computed2 ? computed2[styleName] : "";
} catch (e) {
return element.style[styleName];
}
};
const isScroll = (el, isVertical) => {
if (!isClient)
return false;
const key = {
undefined: "overflow",
true: "overflow-y",
false: "overflow-x"
}[String(isVertical)];
const overflow = getStyle(el, key);
return ["scroll", "auto", "overlay"].some((s2) => overflow.includes(s2));
};
const getScrollContainer = (el, isVertical) => {
if (!isClient)
return;
let parent = el;
while (parent) {
if ([window, document, document.documentElement].includes(parent))
return window;
if (isScroll(parent, isVertical))
return parent;
parent = parent.parentNode;
}
return parent;
};
let scrollBarWidth;
const getScrollBarWidth = () => {
var _a2;
if (!isClient)
return 0;
if (scrollBarWidth !== void 0)
return scrollBarWidth;
const outer = document.createElement("div");
outer.className = "el-scrollbar__wrap";
outer.style.visibility = "hidden";
outer.style.width = "100px";
outer.style.position = "absolute";
outer.style.top = "-9999px";
document.body.appendChild(outer);
const widthNoScroll = outer.offsetWidth;
outer.style.overflow = "scroll";
const inner = document.createElement("div");
inner.style.width = "100%";
outer.appendChild(inner);
const widthWithScroll = inner.offsetWidth;
(_a2 = outer.parentNode) == null ? void 0 : _a2.removeChild(outer);
scrollBarWidth = widthNoScroll - widthWithScroll;
return scrollBarWidth;
};
function scrollIntoView(container, selected) {
if (!isClient)
return;
if (!selected) {
container.scrollTop = 0;
return;
}
const offsetParents = [];
let pointer = selected.offsetParent;
while (pointer !== null && container !== pointer && container.contains(pointer)) {
offsetParents.push(pointer);
pointer = pointer.offsetParent;
}
const top2 = selected.offsetTop + offsetParents.reduce((prev, curr) => prev + curr.offsetTop, 0);
const bottom2 = top2 + selected.offsetHeight;
const viewRectTop = container.scrollTop;
const viewRectBottom = viewRectTop + container.clientHeight;
if (top2 < viewRectTop) {
container.scrollTop = top2;
} else if (bottom2 > viewRectBottom) {
container.scrollTop = bottom2 - container.clientHeight;
}
}
var _export_sfc$2 = (sfc, props) => {
const target = sfc.__vccOpts || sfc;
for (const [key, val] of props) {
target[key] = val;
}
return target;
};
const _sfc_main$1y = defineComponent({
name: "ArrowDown"
});
const _hoisted_1$13 = {
viewBox: "0 0 1024 1024",
xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$W = /* @__PURE__ */ createElementVNode("path", {
fill: "currentColor",
d: "M831.872 340.864 512 652.672 192.128 340.864a30.592 30.592 0 0 0-42.752 0 29.12 29.12 0 0 0 0 41.6L489.664 714.24a32 32 0 0 0 44.672 0l340.288-331.712a29.12 29.12 0 0 0 0-41.728 30.592 30.592 0 0 0-42.752 0z"
}, null, -1);
const _hoisted_3$J = [
_hoisted_2$W
];
function _sfc_render$13(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("svg", _hoisted_1$13, _hoisted_3$J);
}
var arrowDown = /* @__PURE__ */ _export_sfc$2(_sfc_main$1y, [["render", _sfc_render$13]]);
const _sfc_main$1x = defineComponent({
name: "ArrowLeft"
});
const _hoisted_1$12 = {
viewBox: "0 0 1024 1024",
xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$V = /* @__PURE__ */ createElementVNode("path", {
fill: "currentColor",
d: "M609.408 149.376 277.76 489.6a32 32 0 0 0 0 44.672l331.648 340.352a29.12 29.12 0 0 0 41.728 0 30.592 30.592 0 0 0 0-42.752L339.264 511.936l311.872-319.872a30.592 30.592 0 0 0 0-42.688 29.12 29.12 0 0 0-41.728 0z"
}, null, -1);
const _hoisted_3$I = [
_hoisted_2$V
];
function _sfc_render$12(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("svg", _hoisted_1$12, _hoisted_3$I);
}
var arrowLeft = /* @__PURE__ */ _export_sfc$2(_sfc_main$1x, [["render", _sfc_render$12]]);
const _sfc_main$1w = defineComponent({
name: "ArrowRight"
});
const _hoisted_1$11 = {
viewBox: "0 0 1024 1024",
xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$U = /* @__PURE__ */ createElementVNode("path", {
fill: "currentColor",
d: "M340.864 149.312a30.592 30.592 0 0 0 0 42.752L652.736 512 340.864 831.872a30.592 30.592 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-44.672L382.592 149.376a29.12 29.12 0 0 0-41.728 0z"
}, null, -1);
const _hoisted_3$H = [
_hoisted_2$U
];
function _sfc_render$11(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("svg", _hoisted_1$11, _hoisted_3$H);
}
var arrowRight = /* @__PURE__ */ _export_sfc$2(_sfc_main$1w, [["render", _sfc_render$11]]);
const _sfc_main$1v = defineComponent({
name: "ArrowUp"
});
const _hoisted_1$10 = {
viewBox: "0 0 1024 1024",
xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$T = /* @__PURE__ */ createElementVNode("path", {
fill: "currentColor",
d: "m488.832 344.32-339.84 356.672a32 32 0 0 0 0 44.16l.384.384a29.44 29.44 0 0 0 42.688 0l320-335.872 319.872 335.872a29.44 29.44 0 0 0 42.688 0l.384-.384a32 32 0 0 0 0-44.16L535.168 344.32a32 32 0 0 0-46.336 0z"
}, null, -1);
const _hoisted_3$G = [
_hoisted_2$T
];
function _sfc_render$10(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("svg", _hoisted_1$10, _hoisted_3$G);
}
var arrowUp = /* @__PURE__ */ _export_sfc$2(_sfc_main$1v, [["render", _sfc_render$10]]);
const _sfc_main$1u = defineComponent({
name: "Calendar"
});
const _hoisted_1$$ = {
viewBox: "0 0 1024 1024",
xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$S = /* @__PURE__ */ createElementVNode("path", {
fill: "currentColor",
d: "M128 384v512h768V192H768v32a32 32 0 1 1-64 0v-32H320v32a32 32 0 0 1-64 0v-32H128v128h768v64H128zm192-256h384V96a32 32 0 1 1 64 0v32h160a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h160V96a32 32 0 0 1 64 0v32zm-32 384h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64zm0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64zm192-192h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64zm0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64zm192-192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64zm0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64z"
}, null, -1);
const _hoisted_3$F = [
_hoisted_2$S
];
function _sfc_render$$(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("svg", _hoisted_1$$, _hoisted_3$F);
}
var calendar = /* @__PURE__ */ _export_sfc$2(_sfc_main$1u, [["render", _sfc_render$$]]);
const _sfc_main$1t = defineComponent({
name: "Check"
});
const _hoisted_1$_ = {
viewBox: "0 0 1024 1024",
xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$R = /* @__PURE__ */ createElementVNode("path", {
fill: "currentColor",
d: "M406.656 706.944 195.84 496.256a32 32 0 1 0-45.248 45.248l256 256 512-512a32 32 0 0 0-45.248-45.248L406.592 706.944z"
}, null, -1);
const _hoisted_3$E = [
_hoisted_2$R
];
function _sfc_render$_(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("svg", _hoisted_1$_, _hoisted_3$E);
}
var check = /* @__PURE__ */ _export_sfc$2(_sfc_main$1t, [["render", _sfc_render$_]]);
const _sfc_main$1s = defineComponent({
name: "CircleCheck"
});
const _hoisted_1$Z = {
viewBox: "0 0 1024 1024",
xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$Q = /* @__PURE__ */ createElementVNode("path", {
fill: "currentColor",
d: "M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896z"
}, null, -1);
const _hoisted_3$D = /* @__PURE__ */ createElementVNode("path", {
fill: "currentColor",
d: "M745.344 361.344a32 32 0 0 1 45.312 45.312l-288 288a32 32 0 0 1-45.312 0l-160-160a32 32 0 1 1 45.312-45.312L480 626.752l265.344-265.408z"
}, null, -1);
const _hoisted_4$i = [
_hoisted_2$Q,
_hoisted_3$D
];
function _sfc_render$Z(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("svg", _hoisted_1$Z, _hoisted_4$i);
}
var circleCheck = /* @__PURE__ */ _export_sfc$2(_sfc_main$1s, [["render", _sfc_render$Z]]);
const _sfc_main$1r = defineComponent({
name: "CircleClose"
});
const _hoisted_1$Y = {
viewBox: "0 0 1024 1024",
xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$P = /* @__PURE__ */ createElementVNode("path", {
fill: "currentColor",
d: "m466.752 512-90.496-90.496a32 32 0 0 1 45.248-45.248L512 466.752l90.496-90.496a32 32 0 1 1 45.248 45.248L557.248 512l90.496 90.496a32 32 0 1 1-45.248 45.248L512 557.248l-90.496 90.496a32 32 0 0 1-45.248-45.248L466.752 512z"
}, null, -1);
const _hoisted_3$C = /* @__PURE__ */ createElementVNode("path", {
fill: "currentColor",
d: "M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896z"
}, null, -1);
const _hoisted_4$h = [
_hoisted_2$P,
_hoisted_3$C
];
function _sfc_render$Y(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("svg", _hoisted_1$Y, _hoisted_4$h);
}
var circleClose = /* @__PURE__ */ _export_sfc$2(_sfc_main$1r, [["render", _sfc_render$Y]]);
const _sfc_main$1q = defineComponent({
name: "Clock"
});
const _hoisted_1$X = {
viewBox: "0 0 1024 1024",
xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$O = /* @__PURE__ */ createElementVNode("path", {
fill: "currentColor",
d: "M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768zm0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896z"
}, null, -1);
const _hoisted_3$B = /* @__PURE__ */ createElementVNode("path", {
fill: "currentColor",
d: "M480 256a32 32 0 0 1 32 32v256a32 32 0 0 1-64 0V288a32 32 0 0 1 32-32z"
}, null, -1);
const _hoisted_4$g = /* @__PURE__ */ createElementVNode("path", {
fill: "currentColor",
d: "M480 512h256q32 0 32 32t-32 32H480q-32 0-32-32t32-32z"
}, null, -1);
const _hoisted_5$d = [
_hoisted_2$O,
_hoisted_3$B,
_hoisted_4$g
];
function _sfc_render$X(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("svg", _hoisted_1$X, _hoisted_5$d);
}
var clock = /* @__PURE__ */ _export_sfc$2(_sfc_main$1q, [["render", _sfc_render$X]]);
const _sfc_main$1p = defineComponent({
name: "Close"
});
const _hoisted_1$W = {
viewBox: "0 0 1024 1024",
xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$N = /* @__PURE__ */ createElementVNode("path", {
fill: "currentColor",
d: "M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"
}, null, -1);
const _hoisted_3$A = [
_hoisted_2$N
];
function _sfc_render$W(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("svg", _hoisted_1$W, _hoisted_3$A);
}
var close = /* @__PURE__ */ _export_sfc$2(_sfc_main$1p, [["render", _sfc_render$W]]);
const _sfc_main$1o = defineComponent({
name: "DArrowLeft"
});
const _hoisted_1$V = {
viewBox: "0 0 1024 1024",
xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$M = /* @__PURE__ */ createElementVNode("path", {
fill: "currentColor",
d: "M529.408 149.376a29.12 29.12 0 0 1 41.728 0 30.592 30.592 0 0 1 0 42.688L259.264 511.936l311.872 319.936a30.592 30.592 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L197.76 534.272a32 32 0 0 1 0-44.672l331.648-340.224zm256 0a29.12 29.12 0 0 1 41.728 0 30.592 30.592 0 0 1 0 42.688L515.264 511.936l311.872 319.936a30.592 30.592 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L453.76 534.272a32 32 0 0 1 0-44.672l331.648-340.224z"
}, null, -1);
const _hoisted_3$z = [
_hoisted_2$M
];
function _sfc_render$V(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("svg", _hoisted_1$V, _hoisted_3$z);
}
var dArrowLeft = /* @__PURE__ */ _export_sfc$2(_sfc_main$1o, [["render", _sfc_render$V]]);
const _sfc_main$1n = defineComponent({
name: "DArrowRight"
});
const _hoisted_1$U = {
viewBox: "0 0 1024 1024",
xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$L = /* @__PURE__ */ createElementVNode("path", {
fill: "currentColor",
d: "M452.864 149.312a29.12 29.12 0 0 1 41.728.064L826.24 489.664a32 32 0 0 1 0 44.672L494.592 874.624a29.12 29.12 0 0 1-41.728 0 30.592 30.592 0 0 1 0-42.752L764.736 512 452.864 192a30.592 30.592 0 0 1 0-42.688zm-256 0a29.12 29.12 0 0 1 41.728.064L570.24 489.664a32 32 0 0 1 0 44.672L238.592 874.624a29.12 29.12 0 0 1-41.728 0 30.592 30.592 0 0 1 0-42.752L508.736 512 196.864 192a30.592 30.592 0 0 1 0-42.688z"
}, null, -1);
const _hoisted_3$y = [
_hoisted_2$L
];
function _sfc_render$U(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("svg", _hoisted_1$U, _hoisted_3$y);
}
var dArrowRight = /* @__PURE__ */ _export_sfc$2(_sfc_main$1n, [["render", _sfc_render$U]]);
const _sfc_main$1m = defineComponent({
name: "Delete"
});
const _hoisted_1$T = {
viewBox: "0 0 1024 1024",
xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$K = /* @__PURE__ */ createElementVNode("path", {
fill: "currentColor",
d: "M160 256H96a32 32 0 0 1 0-64h256V95.936a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V192h256a32 32 0 1 1 0 64h-64v672a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32V256zm448-64v-64H416v64h192zM224 896h576V256H224v640zm192-128a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32zm192 0a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32z"
}, null, -1);
const _hoisted_3$x = [
_hoisted_2$K
];
function _sfc_render$T(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("svg", _hoisted_1$T, _hoisted_3$x);
}
var _delete = /* @__PURE__ */ _export_sfc$2(_sfc_main$1m, [["render", _sfc_render$T]]);
const _sfc_main$1l = defineComponent({
name: "Document"
});
const _hoisted_1$S = {
viewBox: "0 0 1024 1024",
xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$J = /* @__PURE__ */ createElementVNode("path", {
fill: "currentColor",
d: "M832 384H576V128H192v768h640V384zm-26.496-64L640 154.496V320h165.504zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm160 448h384v64H320v-64zm0-192h160v64H320v-64zm0 384h384v64H320v-64z"
}, null, -1);
const _hoisted_3$w = [
_hoisted_2$J
];
function _sfc_render$S(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("svg", _hoisted_1$S, _hoisted_3$w);
}
var document$1 = /* @__PURE__ */ _export_sfc$2(_sfc_main$1l, [["render", _sfc_render$S]]);
const _sfc_main$1k = defineComponent({
name: "FullScreen"
});
const _hoisted_1$R = {
viewBox: "0 0 1024 1024",
xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$I = /* @__PURE__ */ createElementVNode("path", {
fill: "currentColor",
d: "m160 96.064 192 .192a32 32 0 0 1 0 64l-192-.192V352a32 32 0 0 1-64 0V96h64v.064zm0 831.872V928H96V672a32 32 0 1 1 64 0v191.936l192-.192a32 32 0 1 1 0 64l-192 .192zM864 96.064V96h64v256a32 32 0 1 1-64 0V160.064l-192 .192a32 32 0 1 1 0-64l192-.192zm0 831.872-192-.192a32 32 0 0 1 0-64l192 .192V672a32 32 0 1 1 64 0v256h-64v-.064z"
}, null, -1);
const _hoisted_3$v = [
_hoisted_2$I
];
function _sfc_render$R(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("svg", _hoisted_1$R, _hoisted_3$v);
}
var fullScreen = /* @__PURE__ */ _export_sfc$2(_sfc_main$1k, [["render", _sfc_render$R]]);
const _sfc_main$1j = defineComponent({
name: "Hide"
});
const _hoisted_1$Q = {
viewBox: "0 0 1024 1024",
xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$H = /* @__PURE__ */ createElementVNode("path", {
d: "M876.8 156.8c0-9.6-3.2-16-9.6-22.4-6.4-6.4-12.8-9.6-22.4-9.6-9.6 0-16 3.2-22.4 9.6L736 220.8c-64-32-137.6-51.2-224-60.8-160 16-288 73.6-377.6 176C44.8 438.4 0 496 0 512s48 73.6 134.4 176c22.4 25.6 44.8 48 73.6 67.2l-86.4 89.6c-6.4 6.4-9.6 12.8-9.6 22.4 0 9.6 3.2 16 9.6 22.4 6.4 6.4 12.8 9.6 22.4 9.6 9.6 0 16-3.2 22.4-9.6l704-710.4c3.2-6.4 6.4-12.8 6.4-22.4Zm-646.4 528c-76.8-70.4-128-128-153.6-172.8 28.8-48 80-105.6 153.6-172.8C304 272 400 230.4 512 224c64 3.2 124.8 19.2 176 44.8l-54.4 54.4C598.4 300.8 560 288 512 288c-64 0-115.2 22.4-160 64s-64 96-64 160c0 48 12.8 89.6 35.2 124.8L256 707.2c-9.6-6.4-19.2-16-25.6-22.4Zm140.8-96c-12.8-22.4-19.2-48-19.2-76.8 0-44.8 16-83.2 48-112 32-28.8 67.2-48 112-48 28.8 0 54.4 6.4 73.6 19.2L371.2 588.8ZM889.599 336c-12.8-16-28.8-28.8-41.6-41.6l-48 48c73.6 67.2 124.8 124.8 150.4 169.6-28.8 48-80 105.6-153.6 172.8-73.6 67.2-172.8 108.8-284.8 115.2-51.2-3.2-99.2-12.8-140.8-28.8l-48 48c57.6 22.4 118.4 38.4 188.8 44.8 160-16 288-73.6 377.6-176C979.199 585.6 1024 528 1024 512s-48.001-73.6-134.401-176Z",
fill: "currentColor"
}, null, -1);
const _hoisted_3$u = /* @__PURE__ */ createElementVNode("path", {
d: "M511.998 672c-12.8 0-25.6-3.2-38.4-6.4l-51.2 51.2c28.8 12.8 57.6 19.2 89.6 19.2 64 0 115.2-22.4 160-64 41.6-41.6 64-96 64-160 0-32-6.4-64-19.2-89.6l-51.2 51.2c3.2 12.8 6.4 25.6 6.4 38.4 0 44.8-16 83.2-48 112-32 28.8-67.2 48-112 48Z",
fill: "currentColor"
}, null, -1);
const _hoisted_4$f = [
_hoisted_2$H,
_hoisted_3$u
];
function _sfc_render$Q(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("svg", _hoisted_1$Q, _hoisted_4$f);
}
var hide$2 = /* @__PURE__ */ _export_sfc$2(_sfc_main$1j, [["render", _sfc_render$Q]]);
const _sfc_main$1i = defineComponent({
name: "Loading"
});
const _hoisted_1$P = {
viewBox: "0 0 1024 1024",
xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$G = /* @__PURE__ */ createElementVNode("path", {
fill: "currentColor",
d: "M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32zm0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32zm448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32zm-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32zM195.2 195.2a32 32 0 0 1 45.248 0L376.32 331.008a32 32 0 0 1-45.248 45.248L195.2 240.448a32 32 0 0 1 0-45.248zm452.544 452.544a32 32 0 0 1 45.248 0L828.8 783.552a32 32 0 0 1-45.248 45.248L647.744 692.992a32 32 0 0 1 0-45.248zM828.8 195.264a32 32 0 0 1 0 45.184L692.992 376.32a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0zm-452.544 452.48a32 32 0 0 1 0 45.248L240.448 828.8a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0z"
}, null, -1);
const _hoisted_3$t = [
_hoisted_2$G
];
function _sfc_render$P(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("svg", _hoisted_1$P, _hoisted_3$t);
}
var loading = /* @__PURE__ */ _export_sfc$2(_sfc_main$1i, [["render", _sfc_render$P]]);
const _sfc_main$1h = defineComponent({
name: "Minus"
});
const _hoisted_1$O = {
viewBox: "0 0 1024 1024",
xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$F = /* @__PURE__ */ createElementVNode("path", {
fill: "currentColor",
d: "M128 544h768a32 32 0 1 0 0-64H128a32 32 0 0 0 0 64z"
}, null, -1);
const _hoisted_3$s = [
_hoisted_2$F
];
function _sfc_render$O(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("svg", _hoisted_1$O, _hoisted_3$s);
}
var minus = /* @__PURE__ */ _export_sfc$2(_sfc_main$1h, [["render", _sfc_render$O]]);
const _sfc_main$1g = defineComponent({
name: "Plus"
});
const _hoisted_1$N = {
viewBox: "0 0 1024 1024",
xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$E = /* @__PURE__ */ createElementVNode("path", {
fill: "currentColor",
d: "M480 480V128a32 32 0 0 1 64 0v352h352a32 32 0 1 1 0 64H544v352a32 32 0 1 1-64 0V544H128a32 32 0 0 1 0-64h352z"
}, null, -1);
const _hoisted_3$r = [
_hoisted_2$E
];
function _sfc_render$N(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("svg", _hoisted_1$N, _hoisted_3$r);
}
var plus = /* @__PURE__ */ _export_sfc$2(_sfc_main$1g, [["render", _sfc_render$N]]);
const _sfc_main$1f = defineComponent({
name: "RefreshLeft"
});
const _hoisted_1$M = {
viewBox: "0 0 1024 1024",
xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$D = /* @__PURE__ */ createElementVNode("path", {
fill: "currentColor",
d: "M289.088 296.704h92.992a32 32 0 0 1 0 64H232.96a32 32 0 0 1-32-32V179.712a32 32 0 0 1 64 0v50.56a384 384 0 0 1 643.84 282.88 384 384 0 0 1-383.936 384 384 384 0 0 1-384-384h64a320 320 0 1 0 640 0 320 320 0 0 0-555.712-216.448z"
}, null, -1);
const _hoisted_3$q = [
_hoisted_2$D
];
function _sfc_render$M(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("svg", _hoisted_1$M, _hoisted_3$q);
}
var refreshLeft = /* @__PURE__ */ _export_sfc$2(_sfc_main$1f, [["render", _sfc_render$M]]);
const _sfc_main$1e = defineComponent({
name: "RefreshRight"
});
const _hoisted_1$L = {
viewBox: "0 0 1024 1024",
xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$C = /* @__PURE__ */ createElementVNode("path", {
fill: "currentColor",
d: "M784.512 230.272v-50.56a32 32 0 1 1 64 0v149.056a32 32 0 0 1-32 32H667.52a32 32 0 1 1 0-64h92.992A320 320 0 1 0 524.8 833.152a320 320 0 0 0 320-320h64a384 384 0 0 1-384 384 384 384 0 0 1-384-384 384 384 0 0 1 643.712-282.88z"
}, null, -1);
const _hoisted_3$p = [
_hoisted_2$C
];
function _sfc_render$L(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("svg", _hoisted_1$L, _hoisted_3$p);
}
var refreshRight = /* @__PURE__ */ _export_sfc$2(_sfc_main$1e, [["render", _sfc_render$L]]);
const _sfc_main$1d = defineComponent({
name: "ScaleToOriginal"
});
const _hoisted_1$K = {
viewBox: "0 0 1024 1024",
xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$B = /* @__PURE__ */ createElementVNode("path", {
fill: "currentColor",
d: "M813.176 180.706a60.235 60.235 0 0 1 60.236 60.235v481.883a60.235 60.235 0 0 1-60.236 60.235H210.824a60.235 60.235 0 0 1-60.236-60.235V240.94a60.235 60.235 0 0 1 60.236-60.235h602.352zm0-60.235H210.824A120.47 120.47 0 0 0 90.353 240.94v481.883a120.47 120.47 0 0 0 120.47 120.47h602.353a120.47 120.47 0 0 0 120.471-120.47V240.94a120.47 120.47 0 0 0-120.47-120.47zm-120.47 180.705a30.118 30.118 0 0 0-30.118 30.118v301.177a30.118 30.118 0 0 0 60.236 0V331.294a30.118 30.118 0 0 0-30.118-30.118zm-361.412 0a30.118 30.118 0 0 0-30.118 30.118v301.177a30.118 30.118 0 1 0 60.236 0V331.294a30.118 30.118 0 0 0-30.118-30.118zM512 361.412a30.118 30.118 0 0 0-30.118 30.117v30.118a30.118 30.118 0 0 0 60.236 0V391.53A30.118 30.118 0 0 0 512 361.412zM512 512a30.118 30.118 0 0 0-30.118 30.118v30.117a30.118 30.118 0 0 0 60.236 0v-30.117A30.118 30.118 0 0 0 512 512z"
}, null, -1);
const _hoisted_3$o = [
_hoisted_2$B
];
function _sfc_render$K(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("svg", _hoisted_1$K, _hoisted_3$o);
}
var scaleToOriginal = /* @__PURE__ */ _export_sfc$2(_sfc_main$1d, [["render", _sfc_render$K]]);
const _sfc_main$1c = defineComponent({
name: "StarFilled"
});
const _hoisted_1$J = {
viewBox: "0 0 1024 1024",
xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$A = /* @__PURE__ */ createElementVNode("path", {
fill: "currentColor",
d: "M283.84 867.84 512 747.776l228.16 119.936a6.4 6.4 0 0 0 9.28-6.72l-43.52-254.08 184.512-179.904a6.4 6.4 0 0 0-3.52-10.88l-255.104-37.12L517.76 147.904a6.4 6.4 0 0 0-11.52 0L392.192 379.072l-255.104 37.12a6.4 6.4 0 0 0-3.52 10.88L318.08 606.976l-43.584 254.08a6.4 6.4 0 0 0 9.28 6.72z"
}, null, -1);
const _hoisted_3$n = [
_hoisted_2$A
];
function _sfc_render$J(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("svg", _hoisted_1$J, _hoisted_3$n);
}
var starFilled = /* @__PURE__ */ _export_sfc$2(_sfc_main$1c, [["render", _sfc_render$J]]);
const _sfc_main$1b = defineComponent({
name: "Star"
});
const _hoisted_1$I = {
viewBox: "0 0 1024 1024",
xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$z = /* @__PURE__ */ createElementVNode("path", {
fill: "currentColor",
d: "m512 747.84 228.16 119.936a6.4 6.4 0 0 0 9.28-6.72l-43.52-254.08 184.512-179.904a6.4 6.4 0 0 0-3.52-10.88l-255.104-37.12L517.76 147.904a6.4 6.4 0 0 0-11.52 0L392.192 379.072l-255.104 37.12a6.4 6.4 0 0 0-3.52 10.88L318.08 606.976l-43.584 254.08a6.4 6.4 0 0 0 9.28 6.72L512 747.84zM313.6 924.48a70.4 70.4 0 0 1-102.144-74.24l37.888-220.928L88.96 472.96A70.4 70.4 0 0 1 128 352.896l221.76-32.256 99.2-200.96a70.4 70.4 0 0 1 126.208 0l99.2 200.96 221.824 32.256a70.4 70.4 0 0 1 39.04 120.064L774.72 629.376l37.888 220.928a70.4 70.4 0 0 1-102.144 74.24L512 820.096l-198.4 104.32z"
}, null, -1);
const _hoisted_3$m = [
_hoisted_2$z
];
function _sfc_render$I(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("svg", _hoisted_1$I, _hoisted_3$m);
}
var star = /* @__PURE__ */ _export_sfc$2(_sfc_main$1b, [["render", _sfc_render$I]]);
const _sfc_main$1a = defineComponent({
name: "View"
});
const _hoisted_1$H = {
viewBox: "0 0 1024 1024",
xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$y = /* @__PURE__ */ createElementVNode("path", {
fill: "currentColor",
d: "M512 160c320 0 512 352 512 352S832 864 512 864 0 512 0 512s192-352 512-352zm0 64c-225.28 0-384.128 208.064-436.8 288 52.608 79.872 211.456 288 436.8 288 225.28 0 384.128-208.064 436.8-288-52.608-79.872-211.456-288-436.8-288zm0 64a224 224 0 1 1 0 448 224 224 0 0 1 0-448zm0 64a160.192 160.192 0 0 0-160 160c0 88.192 71.744 160 160 160s160-71.808 160-160-71.744-160-160-160z"
}, null, -1);
const _hoisted_3$l = [
_hoisted_2$y
];
function _sfc_render$H(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("svg", _hoisted_1$H, _hoisted_3$l);
}
var view = /* @__PURE__ */ _export_sfc$2(_sfc_main$1a, [["render", _sfc_render$H]]);
const _sfc_main$19 = defineComponent({
name: "WarningFilled"
});
const _hoisted_1$G = {
viewBox: "0 0 1024 1024",
xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$x = /* @__PURE__ */ createElementVNode("path", {
fill: "currentColor",
d: "M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm0 192a58.432 58.432 0 0 0-58.24 63.744l23.36 256.384a35.072 35.072 0 0 0 69.76 0l23.296-256.384A58.432 58.432 0 0 0 512 256zm0 512a51.2 51.2 0 1 0 0-102.4 51.2 51.2 0 0 0 0 102.4z"
}, null, -1);
const _hoisted_3$k = [
_hoisted_2$x
];
function _sfc_render$G(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("svg", _hoisted_1$G, _hoisted_3$k);
}
var warningFilled = /* @__PURE__ */ _export_sfc$2(_sfc_main$19, [["render", _sfc_render$G]]);
const _sfc_main$18 = defineComponent({
name: "ZoomIn"
});
const _hoisted_1$F = {
viewBox: "0 0 1024 1024",
xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$w = /* @__PURE__ */ createElementVNode("path", {
fill: "currentColor",
d: "m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704zm-32-384v-96a32 32 0 0 1 64 0v96h96a32 32 0 0 1 0 64h-96v96a32 32 0 0 1-64 0v-96h-96a32 32 0 0 1 0-64h96z"
}, null, -1);
const _hoisted_3$j = [
_hoisted_2$w
];
function _sfc_render$F(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("svg", _hoisted_1$F, _hoisted_3$j);
}
var zoomIn = /* @__PURE__ */ _export_sfc$2(_sfc_main$18, [["render", _sfc_render$F]]);
const _sfc_main$17 = defineComponent({
name: "ZoomOut"
});
const _hoisted_1$E = {
viewBox: "0 0 1024 1024",
xmlns: "http://www.w3.org/2000/svg"
};
const _hoisted_2$v = /* @__PURE__ */ createElementVNode("path", {
fill: "currentColor",
d: "m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704zM352 448h256a32 32 0 0 1 0 64H352a32 32 0 0 1 0-64z"
}, null, -1);
const _hoisted_3$i = [
_hoisted_2$v
];
function _sfc_render$E(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("svg", _hoisted_1$E, _hoisted_3$i);
}
var zoomOut = /* @__PURE__ */ _export_sfc$2(_sfc_main$17, [["render", _sfc_render$E]]);
const wrapperKey = Symbol();
const propKey = "__elPropsReservedKey";
function buildProp(option, key) {
if (!isObject$1(option) || !!option[propKey])
return option;
const { values, required: required4, default: defaultValue, type: type4, validator } = option;
const _validator = values || validator ? (val) => {
let valid = false;
let allowedValues = [];
if (values) {
allowedValues = Array.from(values);
if (hasOwn(option, "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 prop = {
type: isObject$1(type4) && Object.getOwnPropertySymbols(type4).includes(wrapperKey) ? type4[wrapperKey] : type4,
required: !!required4,
validator: _validator,
[propKey]: true
};
if (hasOwn(option, "default"))
prop.default = defaultValue;
return prop;
}
const buildProps = (props) => fromPairs(Object.entries(props).map(([key, option]) => [
key,
buildProp(option, key)
]));
const definePropType = (val) => ({ [wrapperKey]: val });
const iconPropType = definePropType([
String,
Object,
Function
]);
const CloseComponents = {
Close: close
};
const ValidateComponentsMap = {
validating: loading,
success: circleCheck,
error: circleClose
};
const withInstall = (main2, extra) => {
main2.install = (app) => {
for (const comp of [main2, ...Object.values(extra != null ? extra : {})]) {
app.component(comp.name, comp);
}
};
if (extra) {
for (const [key, comp] of Object.entries(extra)) {
main2[key] = comp;
}
}
return main2;
};
const withNoopInstall = (component) => {
component.install = NOOP;
return component;
};
class ElementPlusError extends Error {
constructor(m2) {
super(m2);
this.name = "ElementPlusError";
}
}
function throwError(scope, m2) {
throw new ElementPlusError(`[${scope}] ${m2}`);
}
function debugWarn(scope, message) {
}
function addUnit(value, defaultUnit = "px") {
if (!value)
return "";
if (isString(value)) {
return value;
} else if (isNumber(value)) {
return `${value}${defaultUnit}`;
}
}
const EVENT_CODE = {
tab: "Tab",
enter: "Enter",
space: "Space",
left: "ArrowLeft",
up: "ArrowUp",
right: "ArrowRight",
down: "ArrowDown",
esc: "Escape",
delete: "Delete",
backspace: "Backspace",
numpadEnter: "NumpadEnter",
pageUp: "PageUp",
pageDown: "PageDown",
home: "Home",
end: "End"
};
const datePickTypes = [
"year",
"month",
"date",
"dates",
"week",
"datetime",
"datetimerange",
"daterange",
"monthrange"
];
const UPDATE_MODEL_EVENT = "update:modelValue";
const CHANGE_EVENT = "change";
const INPUT_EVENT = "input";
const componentSizes = ["", "default", "small", "large"];
const componentSizeMap = {
large: 40,
default: 32,
small: 24
};
const getComponentSize = (size = "default") => {
return componentSizeMap[size || "default"];
};
const isValidComponentSize = (val) => ["", ...componentSizes].includes(val);
const isValidDatePickType = (val) => [...datePickTypes].includes(val);
var PatchFlags = /* @__PURE__ */ ((PatchFlags2) => {
PatchFlags2[PatchFlags2["TEXT"] = 1] = "TEXT";
PatchFlags2[PatchFlags2["CLASS"] = 2] = "CLASS";
PatchFlags2[PatchFlags2["STYLE"] = 4] = "STYLE";
PatchFlags2[PatchFlags2["PROPS"] = 8] = "PROPS";
PatchFlags2[PatchFlags2["FULL_PROPS"] = 16] = "FULL_PROPS";
PatchFlags2[PatchFlags2["HYDRATE_EVENTS"] = 32] = "HYDRATE_EVENTS";
PatchFlags2[PatchFlags2["STABLE_FRAGMENT"] = 64] = "STABLE_FRAGMENT";
PatchFlags2[PatchFlags2["KEYED_FRAGMENT"] = 128] = "KEYED_FRAGMENT";
PatchFlags2[PatchFlags2["UNKEYED_FRAGMENT"] = 256] = "UNKEYED_FRAGMENT";
PatchFlags2[PatchFlags2["NEED_PATCH"] = 512] = "NEED_PATCH";
PatchFlags2[PatchFlags2["DYNAMIC_SLOTS"] = 1024] = "DYNAMIC_SLOTS";
PatchFlags2[PatchFlags2["HOISTED"] = -1] = "HOISTED";
PatchFlags2[PatchFlags2["BAIL"] = -2] = "BAIL";
return PatchFlags2;
})(PatchFlags || {});
function isFragment(node) {
return isVNode(node) && node.type === Fragment;
}
function isComment(node) {
return isVNode(node) && node.type === Comment;
}
function isValidElementNode(node) {
return isVNode(node) && !isFragment(node) && !isComment(node);
}
const unique = (arr) => [...new Set(arr)];
const castArray = (arr) => {
if (!arr && arr !== 0)
return [];
return Array.isArray(arr) ? arr : [arr];
};
const isFirefox = () => isClient && /firefox/i.test(window.navigator.userAgent);
const isKorean = (text) => /([(\uAC00-\uD7AF)|(\u3130-\u318F)])+/gi.test(text);
const generateId = () => Math.floor(Math.random() * 1e4);
const mutable = (val) => val;
const DEFAULT_EXCLUDE_KEYS = ["class", "style"];
const LISTENER_PREFIX = /^on[A-Z]/;
const useAttrs = (params = {}) => {
const { excludeListeners = false, excludeKeys = [] } = params;
const allExcludeKeys = excludeKeys.concat(DEFAULT_EXCLUDE_KEYS);
const instance = getCurrentInstance();
if (!instance) {
return computed(() => ({}));
}
return computed(() => {
var _a2;
return fromPairs(Object.entries((_a2 = instance.proxy) == null ? void 0 : _a2.$attrs).filter(([key]) => !allExcludeKeys.includes(key) && !(excludeListeners && LISTENER_PREFIX.test(key))));
});
};
const buttonGroupContextKey = Symbol("buttonGroupContextKey");
const configProviderContextKey = Symbol();
const dialogInjectionKey = Symbol("dialogInjectionKey");
const formContextKey = Symbol("formContextKey");
const formItemContextKey = Symbol("formItemContextKey");
const radioGroupKey = Symbol("radioGroupKey");
const scrollbarContextKey = Symbol("scrollbarContextKey");
const uploadContextKey = Symbol("uploadContextKey");
const POPPER_INJECTION_KEY = Symbol("popper");
const POPPER_CONTENT_INJECTION_KEY = Symbol("popperContent");
const useProp = (name) => {
const vm = getCurrentInstance();
return computed(() => {
var _a2, _b2;
return (_b2 = (_a2 = vm.proxy) == null ? void 0 : _a2.$props[name]) != null ? _b2 : void 0;
});
};
const globalConfig = ref();
function useGlobalConfig(key, defaultValue = void 0) {
const config = getCurrentInstance() ? inject(configProviderContextKey, globalConfig) : globalConfig;
if (key) {
return computed(() => {
var _a2, _b2;
return (_b2 = (_a2 = config.value) == null ? void 0 : _a2[key]) != null ? _b2 : defaultValue;
});
} else {
return config;
}
}
const provideGlobalConfig = (config, app, global2 = false) => {
var _a2;
const inSetup = !!getCurrentInstance();
const oldConfig = inSetup ? useGlobalConfig() : void 0;
const provideFn = (_a2 = app == null ? void 0 : app.provide) != null ? _a2 : inSetup ? provide : void 0;
if (!provideFn) {
return;
}
const context = computed(() => {
const cfg = unref(config);
if (!(oldConfig == null ? void 0 : oldConfig.value))
return cfg;
return mergeConfig(oldConfig.value, cfg);
});
provideFn(configProviderContextKey, context);
if (global2 || !globalConfig.value) {
globalConfig.value = context.value;
}
return context;
};
const mergeConfig = (a2, b2) => {
var _a2;
const keys2 = [.../* @__PURE__ */ new Set([...keysOf(a2), ...keysOf(b2)])];
const obj = {};
for (const key of keys2) {
obj[key] = (_a2 = b2[key]) != null ? _a2 : a2[key];
}
return obj;
};
const useSizeProp = buildProp({
type: String,
values: componentSizes,
required: false
});
const useSize = (fallback, ignore = {}) => {
const emptyRef = ref(void 0);
const size = ignore.prop ? emptyRef : useProp("size");
const globalConfig2 = ignore.global ? emptyRef : useGlobalConfig("size");
const form = ignore.form ? { size: void 0 } : inject(formContextKey, void 0);
const formItem = ignore.formItem ? { size: void 0 } : inject(formItemContextKey, void 0);
return computed(() => size.value || unref(fallback) || (formItem == null ? void 0 : formItem.size) || (form == null ? void 0 : form.size) || globalConfig2.value || "");
};
const useDisabled$1 = (fallback) => {
const disabled = useProp("disabled");
const form = inject(formContextKey, void 0);
return computed(() => disabled.value || unref(fallback) || (form == null ? void 0 : form.disabled) || false);
};
const useDeprecated = ({ from, replacement, scope, version, ref: ref2, type: type4 = "API" }, condition) => {
watch(() => unref(condition), (val) => {
}, {
immediate: true
});
};
const useDraggable = (targetRef, dragRef, draggable) => {
let transform = {
offsetX: 0,
offsetY: 0
};
const onMousedown = (e) => {
const downX = e.clientX;
const downY = e.clientY;
const { offsetX, offsetY } = transform;
const targetRect = targetRef.value.getBoundingClientRect();
const targetLeft = targetRect.left;
const targetTop = targetRect.top;
const targetWidth = targetRect.width;
const targetHeight = targetRect.height;
const clientWidth = document.documentElement.clientWidth;
const clientHeight = document.documentElement.clientHeight;
const minLeft = -targetLeft + offsetX;
const minTop = -targetTop + offsetY;
const maxLeft = clientWidth - targetLeft - targetWidth + offsetX;
const maxTop = clientHeight - targetTop - targetHeight + offsetY;
const onMousemove = (e2) => {
const moveX = Math.min(Math.max(offsetX + e2.clientX - downX, minLeft), maxLeft);
const moveY = Math.min(Math.max(offsetY + e2.clientY - downY, minTop), maxTop);
transform = {
offsetX: moveX,
offsetY: moveY
};
targetRef.value.style.transform = `translate(${addUnit(moveX)}, ${addUnit(moveY)})`;
};
const onMouseup = () => {
document.removeEventListener("mousemove", onMousemove);
document.removeEventListener("mouseup", onMouseup);
};
document.addEventListener("mousemove", onMousemove);
document.addEventListener("mouseup", onMouseup);
};
const onDraggable = () => {
if (dragRef.value && targetRef.value) {
dragRef.value.addEventListener("mousedown", onMousedown);
}
};
const offDraggable = () => {
if (dragRef.value && targetRef.value) {
dragRef.value.removeEventListener("mousedown", onMousedown);
}
};
onMounted(() => {
watchEffect(() => {
if (draggable.value) {
onDraggable();
} else {
offDraggable();
}
});
});
onBeforeUnmount(() => {
offDraggable();
});
};
const useFocus = (el) => {
return {
focus: () => {
var _a2, _b2;
(_b2 = (_a2 = el.value) == null ? void 0 : _a2.focus) == null ? void 0 : _b2.call(_a2);
}
};
};
const useFormItem = () => {
const form = inject(formContextKey, void 0);
const formItem = inject(formItemContextKey, void 0);
return {
form,
formItem
};
};
var English = {
name: "en",
el: {
colorpicker: {
confirm: "OK",
clear: "Clear"
},
datepicker: {
now: "Now",
today: "Today",
cancel: "Cancel",
clear: "Clear",
confirm: "OK",
selectDate: "Select date",
selectTime: "Select time",
startDate: "Start Date",
startTime: "Start Time",
endDate: "End Date",
endTime: "End Time",
prevYear: "Previous Year",
nextYear: "Next Year",
prevMonth: "Previous Month",
nextMonth: "Next Month",
year: "",
month1: "January",
month2: "February",
month3: "March",
month4: "April",
month5: "May",
month6: "June",
month7: "July",
month8: "August",
month9: "September",
month10: "October",
month11: "November",
month12: "December",
week: "week",
weeks: {
sun: "Sun",
mon: "Mon",
tue: "Tue",
wed: "Wed",
thu: "Thu",
fri: "Fri",
sat: "Sat"
},
months: {
jan: "Jan",
feb: "Feb",
mar: "Mar",
apr: "Apr",
may: "May",
jun: "Jun",
jul: "Jul",
aug: "Aug",
sep: "Sep",
oct: "Oct",
nov: "Nov",
dec: "Dec"
}
},
select: {
loading: "Loading",
noMatch: "No matching data",
noData: "No data",
placeholder: "Select"
},
cascader: {
noMatch: "No matching data",
loading: "Loading",
placeholder: "Select",
noData: "No data"
},
pagination: {
goto: "Go to",
pagesize: "/page",
total: "Total {total}",
pageClassifier: "",
deprecationWarning: "Deprecated usages detected, please refer to the el-pagination documentation for more details"
},
messagebox: {
title: "Message",
confirm: "OK",
cancel: "Cancel",
error: "Illegal input"
},
upload: {
deleteTip: "press delete to remove",
delete: "Delete",
preview: "Preview",
continue: "Continue"
},
table: {
emptyText: "No Data",
confirmFilter: "Confirm",
resetFilter: "Reset",
clearFilter: "All",
sumText: "Sum"
},
tree: {
emptyText: "No Data"
},
transfer: {
noMatch: "No matching data",
noData: "No data",
titles: ["List 1", "List 2"],
filterPlaceholder: "Enter keyword",
noCheckedFormat: "{total} items",
hasCheckedFormat: "{checked}/{total} checked"
},
image: {
error: "FAILED"
},
pageHeader: {
title: "Back"
},
popconfirm: {
confirmButtonText: "Yes",
cancelButtonText: "No"
}
}
};
const buildTranslator = (locale) => (path, option) => translate(path, option, unref(locale));
const translate = (path, option, locale) => get(locale, path, path).replace(/\{(\w+)\}/g, (_2, key) => {
var _a2;
return `${(_a2 = option == null ? void 0 : option[key]) != null ? _a2 : `{${key}}`}`;
});
const buildLocaleContext = (locale) => {
const lang = computed(() => unref(locale).name);
const localeRef = isRef(locale) ? locale : ref(locale);
return {
lang,
locale: localeRef,
t: buildTranslator(locale)
};
};
const useLocale = () => {
const locale = useGlobalConfig("locale");
return buildLocaleContext(computed(() => locale.value || English));
};
const useLockscreen = (trigger) => {
if (!isRef(trigger)) {
throwError("[useLockscreen]", "You need to pass a ref param to this function");
}
if (!isClient || hasClass(document.body, "el-popup-parent--hidden")) {
return;
}
let scrollBarWidth2 = 0;
let withoutHiddenClass = false;
let bodyPaddingRight = "0";
let computedBodyPaddingRight = 0;
const cleanup = () => {
removeClass(document.body, "el-popup-parent--hidden");
if (withoutHiddenClass) {
document.body.style.paddingRight = bodyPaddingRight;
}
};
watch(trigger, (val) => {
if (!val) {
cleanup();
return;
}
withoutHiddenClass = !hasClass(document.body, "el-popup-parent--hidden");
if (withoutHiddenClass) {
bodyPaddingRight = document.body.style.paddingRight;
computedBodyPaddingRight = Number.parseInt(getStyle(document.body, "paddingRight"), 10);
}
scrollBarWidth2 = getScrollBarWidth();
const bodyHasOverflow = document.documentElement.clientHeight < document.body.scrollHeight;
const bodyOverflowY = getStyle(document.body, "overflowY");
if (scrollBarWidth2 > 0 && (bodyHasOverflow || bodyOverflowY === "scroll") && withoutHiddenClass) {
document.body.style.paddingRight = `${computedBodyPaddingRight + scrollBarWidth2}px`;
}
addClass(document.body, "el-popup-parent--hidden");
});
onScopeDispose(() => cleanup());
};
const modalStack = [];
const closeModal = (e) => {
if (modalStack.length === 0)
return;
if (e.code === EVENT_CODE.esc) {
e.stopPropagation();
const topModal = modalStack[modalStack.length - 1];
topModal.handleClose();
}
};
const useModal = (instance, visibleRef) => {
watch(visibleRef, (val) => {
if (val) {
modalStack.push(instance);
} else {
modalStack.splice(modalStack.indexOf(instance), 1);
}
});
};
if (isClient)
useEventListener(document, "keydown", closeModal);
const _prop = buildProp({
type: definePropType(Boolean),
default: null
});
const _event = buildProp({
type: definePropType(Function)
});
const createModelToggleComposable = (name) => {
const useModelToggleProps2 = {
[name]: _prop,
[`onUpdate:${name}`]: _event
};
const useModelToggleEmits2 = [`update:${name}`];
const useModelToggle2 = ({
indicator,
shouldHideWhenRouteChanges,
shouldProceed,
onShow,
onHide
}) => {
const instance = getCurrentInstance();
const props = instance.props;
const { emit } = instance;
const updateEventKey = `update:${name}`;
const hasUpdateHandler = computed(() => isFunction(props[`onUpdate:${name}`]));
const isModelBindingAbsent = computed(() => props[name] === null);
const doShow = () => {
if (indicator.value === true) {
return;
}
indicator.value = true;
if (isFunction(onShow)) {
onShow();
}
};
const doHide = () => {
if (indicator.value === false) {
return;
}
indicator.value = false;
if (isFunction(onHide)) {
onHide();
}
};
const show = () => {
if (props.disabled === true || isFunction(shouldProceed) && !shouldProceed())
return;
const shouldEmit = hasUpdateHandler.value && isClient;
if (shouldEmit) {
emit(updateEventKey, true);
}
if (isModelBindingAbsent.value || !shouldEmit) {
doShow();
}
};
const hide2 = () => {
if (props.disabled === true || !isClient)
return;
const shouldEmit = hasUpdateHandler.value && isClient;
if (shouldEmit) {
emit(updateEventKey, false);
}
if (isModelBindingAbsent.value || !shouldEmit) {
doHide();
}
};
const onChange = (val) => {
if (!isBoolean(val))
return;
if (props.disabled && val) {
if (hasUpdateHandler.value) {
emit(updateEventKey, false);
}
} else if (indicator.value !== val) {
if (val) {
doShow();
} else {
doHide();
}
}
};
const toggle = () => {
if (indicator.value) {
hide2();
} else {
show();
}
};
watch(() => props[name], onChange);
if (shouldHideWhenRouteChanges && instance.appContext.config.globalProperties.$route !== void 0) {
watch(() => __spreadValues({}, instance.proxy.$route), () => {
if (shouldHideWhenRouteChanges.value && indicator.value) {
hide2();
}
});
}
onMounted(() => {
onChange(props[name]);
});
return {
hide: hide2,
show,
toggle
};
};
return {
useModelToggle: useModelToggle2,
useModelToggleProps: useModelToggleProps2,
useModelToggleEmits: useModelToggleEmits2
};
};
const useRestoreActive = (toggle, initialFocus) => {
let previousActive;
watch(() => toggle.value, (val) => {
var _a2, _b2;
if (val) {
previousActive = document.activeElement;
if (isRef(initialFocus)) {
(_b2 = (_a2 = initialFocus.value).focus) == null ? void 0 : _b2.call(_a2);
}
} else {
{
previousActive.focus();
}
}
});
};
const useSameTarget = (handleClick) => {
if (!handleClick) {
return { onClick: NOOP, onMousedown: NOOP, onMouseup: NOOP };
}
let mousedownTarget = false;
let mouseupTarget = false;
const onClick = (e) => {
if (mousedownTarget && mouseupTarget) {
handleClick(e);
}
mousedownTarget = mouseupTarget = false;
};
const onMousedown = (e) => {
mousedownTarget = e.target === e.currentTarget;
};
const onMouseup = (e) => {
mouseupTarget = e.target === e.currentTarget;
};
return { onClick, onMousedown, onMouseup };
};
function useTimeout() {
let timeoutHandle;
const registerTimeout = (fn2, delay) => {
cancelTimeout();
timeoutHandle = window.setTimeout(fn2, delay);
};
const cancelTimeout = () => window.clearTimeout(timeoutHandle);
tryOnScopeDispose(() => cancelTimeout());
return {
registerTimeout,
cancelTimeout
};
}
const defaultIdInjection = {
prefix: Math.floor(Math.random() * 1e4),
current: 0
};
const ID_INJECTION_KEY = Symbol("elIdInjection");
const useId = (deterministicId) => {
const idInjection = inject(ID_INJECTION_KEY, defaultIdInjection);
const idRef = computed(() => unref(deterministicId) || `el-id-${idInjection.prefix}-${idInjection.current++}`);
return idRef;
};
const useEscapeKeydown = (handler3) => {
const cachedHandler = (e) => {
const event = e;
if (event.key === EVENT_CODE.esc) {
handler3 == null ? void 0 : handler3(event);
}
};
onMounted(() => {
on(document, "keydown", cachedHandler);
});
onBeforeUnmount(() => {
off(document, "keydown", cachedHandler);
});
};
let cachedContainer;
const POPPER_CONTAINER_ID = `el-popper-container-${generateId()}`;
const POPPER_CONTAINER_SELECTOR = `#${POPPER_CONTAINER_ID}`;
const createContainer = () => {
const container = document.createElement("div");
container.id = POPPER_CONTAINER_ID;
document.body.appendChild(container);
return container;
};
const usePopperContainer = () => {
onBeforeMount(() => {
if (!isClient)
return;
if (!cachedContainer || !document.body.querySelector(POPPER_CONTAINER_SELECTOR)) {
cachedContainer = createContainer();
}
});
};
const useDelayedToggleProps = buildProps({
showAfter: {
type: Number,
default: 0
},
hideAfter: {
type: Number,
default: 200
}
});
const useDelayedToggle = ({
showAfter,
hideAfter,
open,
close: close2
}) => {
const { registerTimeout } = useTimeout();
const onOpen = () => {
registerTimeout(() => {
open();
}, unref(showAfter));
};
const onClose = () => {
registerTimeout(() => {
close2();
}, unref(hideAfter));
};
return {
onOpen,
onClose
};
};
const FORWARD_REF_INJECTION_KEY = Symbol("elForwardRef");
const useForwardRef = (forwardRef) => {
const setForwardRef = (el) => {
forwardRef.value = el;
};
provide(FORWARD_REF_INJECTION_KEY, {
setForwardRef
});
};
const useForwardRefDirective = (setForwardRef) => {
return {
mounted(el) {
setForwardRef(el);
},
updated(el) {
setForwardRef(el);
},
unmounted() {
setForwardRef(null);
}
};
};
const defaultNamespace = "el";
const statePrefix = "is-";
const _bem = (namespace, block, blockSuffix, element, modifier) => {
let cls = `${namespace}-${block}`;
if (blockSuffix) {
cls += `-${blockSuffix}`;
}
if (element) {
cls += `__${element}`;
}
if (modifier) {
cls += `--${modifier}`;
}
return cls;
};
const useNamespace = (block) => {
const globalConfig2 = useGlobalConfig("namespace");
const namespace = computed(() => globalConfig2.value || defaultNamespace);
const b2 = (blockSuffix = "") => _bem(unref(namespace), block, blockSuffix, "", "");
const e = (element) => element ? _bem(unref(namespace), block, "", element, "") : "";
const m2 = (modifier) => modifier ? _bem(unref(namespace), block, "", "", modifier) : "";
const be = (blockSuffix, element) => blockSuffix && element ? _bem(unref(namespace), block, blockSuffix, element, "") : "";
const em = (element, modifier) => element && modifier ? _bem(unref(namespace), block, "", element, modifier) : "";
const bm = (blockSuffix, modifier) => blockSuffix && modifier ? _bem(unref(namespace), block, blockSuffix, "", modifier) : "";
const bem = (blockSuffix, element, modifier) => blockSuffix && element && modifier ? _bem(unref(namespace), block, blockSuffix, element, modifier) : "";
const is = (name, ...args) => {
const state = args.length >= 1 ? args[0] : true;
return name && state ? `${statePrefix}${name}` : "";
};
return {
namespace,
b: b2,
e,
m: m2,
be,
em,
bm,
bem,
is
};
};
const zIndex = ref(0);
const useZIndex = () => {
const initialZIndex = useGlobalConfig("zIndex", 2e3);
const currentZIndex = computed(() => initialZIndex.value + zIndex.value);
const nextZIndex = () => {
zIndex.value++;
return currentZIndex.value;
};
return {
initialZIndex,
currentZIndex,
nextZIndex
};
};
var _export_sfc$1 = (sfc, props) => {
const target = sfc.__vccOpts || sfc;
for (const [key, val] of props) {
target[key] = val;
}
return target;
};
const iconProps = buildProps({
size: {
type: definePropType([Number, String])
},
color: {
type: String
}
});
const __default__$l = {
name: "ElIcon",
inheritAttrs: false
};
const _sfc_main$16 = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({}, __default__$l), {
props: iconProps,
setup(__props) {
const props = __props;
const ns = useNamespace("icon");
const style = computed(() => {
if (!props.size && !props.color)
return {};
return {
fontSize: isUndefined(props.size) ? void 0 : addUnit(props.size),
"--color": props.color
};
});
return (_ctx, _cache) => {
return openBlock(), createElementBlock("i", mergeProps({
class: unref(ns).b(),
style: unref(style)
}, _ctx.$attrs), [
renderSlot(_ctx.$slots, "default")
], 16);
};
}
}));
var Icon = /* @__PURE__ */ _export_sfc$1(_sfc_main$16, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/icon/src/icon.vue"]]);
const ElIcon = withInstall(Icon);
let hiddenTextarea = void 0;
const HIDDEN_STYLE = `
height:0 !important;
visibility:hidden !important;
overflow:hidden !important;
position:absolute !important;
z-index:-1000 !important;
top:0 !important;
right:0 !important;
`;
const CONTEXT_STYLE = [
"letter-spacing",
"line-height",
"padding-top",
"padding-bottom",
"font-family",
"font-weight",
"font-size",
"text-rendering",
"text-transform",
"width",
"text-indent",
"padding-left",
"padding-right",
"border-width",
"box-sizing"
];
function calculateNodeStyling(targetElement) {
const style = window.getComputedStyle(targetElement);
const boxSizing = style.getPropertyValue("box-sizing");
const paddingSize = Number.parseFloat(style.getPropertyValue("padding-bottom")) + Number.parseFloat(style.getPropertyValue("padding-top"));
const borderSize = Number.parseFloat(style.getPropertyValue("border-bottom-width")) + Number.parseFloat(style.getPropertyValue("border-top-width"));
const contextStyle = CONTEXT_STYLE.map((name) => `${name}:${style.getPropertyValue(name)}`).join(";");
return { contextStyle, paddingSize, borderSize, boxSizing };
}
function calcTextareaHeight(targetElement, minRows = 1, maxRows) {
var _a2;
if (!hiddenTextarea) {
hiddenTextarea = document.createElement("textarea");
document.body.appendChild(hiddenTextarea);
}
const { paddingSize, borderSize, boxSizing, contextStyle } = calculateNodeStyling(targetElement);
hiddenTextarea.setAttribute("style", `${contextStyle};${HIDDEN_STYLE}`);
hiddenTextarea.value = targetElement.value || targetElement.placeholder || "";
let height = hiddenTextarea.scrollHeight;
const result = {};
if (boxSizing === "border-box") {
height = height + borderSize;
} else if (boxSizing === "content-box") {
height = height - paddingSize;
}
hiddenTextarea.value = "";
const singleRowHeight = hiddenTextarea.scrollHeight - paddingSize;
if (isNumber(minRows)) {
let minHeight = singleRowHeight * minRows;
if (boxSizing === "border-box") {
minHeight = minHeight + paddingSize + borderSize;
}
height = Math.max(minHeight, height);
result.minHeight = `${minHeight}px`;
}
if (isNumber(maxRows)) {
let maxHeight = singleRowHeight * maxRows;
if (boxSizing === "border-box") {
maxHeight = maxHeight + paddingSize + borderSize;
}
height = Math.min(maxHeight, height);
}
result.height = `${height}px`;
(_a2 = hiddenTextarea.parentNode) == null ? void 0 : _a2.removeChild(hiddenTextarea);
hiddenTextarea = void 0;
return result;
}
const inputProps = buildProps({
size: useSizeProp,
disabled: Boolean,
modelValue: {
type: definePropType([
String,
Number,
Object
]),
default: ""
},
type: {
type: String,
default: "text"
},
resize: {
type: String,
values: ["none", "both", "horizontal", "vertical"]
},
autosize: {
type: definePropType([Boolean, Object]),
default: false
},
autocomplete: {
type: String,
default: "off"
},
placeholder: {
type: String
},
form: {
type: String,
default: ""
},
readonly: {
type: Boolean,
default: false
},
clearable: {
type: Boolean,
default: false
},
showPassword: {
type: Boolean,
default: false
},
showWordLimit: {
type: Boolean,
default: false
},
suffixIcon: {
type: iconPropType,
default: ""
},
prefixIcon: {
type: iconPropType,
default: ""
},
label: {
type: String
},
tabindex: {
type: [Number, String]
},
validateEvent: {
type: Boolean,
default: true
},
inputStyle: {
type: definePropType([Object, Array, String]),
default: () => mutable({})
}
});
const inputEmits = {
[UPDATE_MODEL_EVENT]: (value) => isString(value),
input: (value) => isString(value),
change: (value) => isString(value),
focus: (evt) => evt instanceof FocusEvent,
blur: (evt) => evt instanceof FocusEvent,
clear: () => true,
mouseleave: (evt) => evt instanceof MouseEvent,
mouseenter: (evt) => evt instanceof MouseEvent,
keydown: (evt) => evt instanceof Event,
compositionstart: (evt) => evt instanceof CompositionEvent,
compositionupdate: (evt) => evt instanceof CompositionEvent,
compositionend: (evt) => evt instanceof CompositionEvent
};
const _hoisted_1$D = ["type", "disabled", "readonly", "autocomplete", "tabindex", "aria-label", "placeholder"];
const _hoisted_2$u = ["tabindex", "disabled", "readonly", "autocomplete", "aria-label", "placeholder"];
const __default__$k = {
name: "ElInput",
inheritAttrs: false
};
const _sfc_main$15 = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({}, __default__$k), {
props: inputProps,
emits: inputEmits,
setup(__props, { expose, emit }) {
const props = __props;
const PENDANT_MAP = {
suffix: "append",
prefix: "prepend"
};
const instance = getCurrentInstance();
const rawAttrs = useAttrs$1();
const slots = useSlots();
const attrs = useAttrs();
const { form, formItem } = useFormItem();
const inputSize = useSize();
const inputDisabled = useDisabled$1();
const nsInput = useNamespace("input");
const nsTextarea = useNamespace("textarea");
const input = shallowRef();
const textarea = shallowRef();
const focused = ref(false);
const hovering = ref(false);
const isComposing = ref(false);
const passwordVisible = ref(false);
const textareaCalcStyle = shallowRef(props.inputStyle);
const _ref = computed(() => input.value || textarea.value);
const needStatusIcon = computed(() => {
var _a2;
return (_a2 = form == null ? void 0 : form.statusIcon) != null ? _a2 : false;
});
const validateState = computed(() => (formItem == null ? void 0 : formItem.validateState) || "");
const validateIcon = computed(() => ValidateComponentsMap[validateState.value]);
const passwordIcon = computed(() => passwordVisible.value ? view : hide$2);
const containerStyle = computed(() => [
rawAttrs.style,
props.inputStyle
]);
const textareaStyle = computed(() => [
props.inputStyle,
textareaCalcStyle.value,
{ resize: props.resize }
]);
const nativeInputValue = computed(() => isNil(props.modelValue) ? "" : String(props.modelValue));
const showClear = computed(() => props.clearable && !inputDisabled.value && !props.readonly && !!nativeInputValue.value && (focused.value || hovering.value));
const showPwdVisible = computed(() => props.showPassword && !inputDisabled.value && !props.readonly && (!!nativeInputValue.value || focused.value));
const isWordLimitVisible = computed(() => props.showWordLimit && !!attrs.value.maxlength && (props.type === "text" || props.type === "textarea") && !inputDisabled.value && !props.readonly && !props.showPassword);
const textLength = computed(() => Array.from(nativeInputValue.value).length);
const inputExceed = computed(() => !!isWordLimitVisible.value && textLength.value > Number(attrs.value.maxlength));
const suffixVisible = computed(() => !!slots.suffix || !!props.suffixIcon || showClear.value || props.showPassword || isWordLimitVisible.value || !!validateState.value && needStatusIcon.value);
const resizeTextarea = () => {
const { type: type4, autosize } = props;
if (!isClient || type4 !== "textarea")
return;
if (autosize) {
const minRows = isObject$1(autosize) ? autosize.minRows : void 0;
const maxRows = isObject$1(autosize) ? autosize.maxRows : void 0;
textareaCalcStyle.value = __spreadValues({}, calcTextareaHeight(textarea.value, minRows, maxRows));
} else {
textareaCalcStyle.value = {
minHeight: calcTextareaHeight(textarea.value).minHeight
};
}
};
const setNativeInputValue = () => {
const input2 = _ref.value;
if (!input2 || input2.value === nativeInputValue.value)
return;
input2.value = nativeInputValue.value;
};
const calcIconOffset = (place) => {
const { el } = instance.vnode;
if (!el)
return;
const elList = Array.from(el.querySelectorAll(`.${nsInput.e(place)}`));
const target = elList.find((item) => item.parentNode === el);
if (!target)
return;
const pendant = PENDANT_MAP[place];
if (slots[pendant]) {
target.style.transform = `translateX(${place === "suffix" ? "-" : ""}${el.querySelector(`.${nsInput.be("group", pendant)}`).offsetWidth}px)`;
} else {
target.removeAttribute("style");
}
};
const updateIconOffset = () => {
calcIconOffset("prefix");
calcIconOffset("suffix");
};
const handleInput = async (event) => {
const { value } = event.target;
if (isComposing.value)
return;
if (value === nativeInputValue.value)
return;
emit(UPDATE_MODEL_EVENT, value);
emit("input", value);
await nextTick();
setNativeInputValue();
};
const handleChange2 = (event) => {
emit("change", event.target.value);
};
const handleCompositionStart = (event) => {
emit("compositionstart", event);
isComposing.value = true;
};
const handleCompositionUpdate = (event) => {
var _a2;
emit("compositionupdate", event);
const text = (_a2 = event.target) == null ? void 0 : _a2.value;
const lastCharacter = text[text.length - 1] || "";
isComposing.value = !isKorean(lastCharacter);
};
const handleCompositionEnd = (event) => {
emit("compositionend", event);
if (isComposing.value) {
isComposing.value = false;
handleInput(event);
}
};
const handlePasswordVisible = () => {
passwordVisible.value = !passwordVisible.value;
focus();
};
const focus = async () => {
var _a2;
await nextTick();
(_a2 = _ref.value) == null ? void 0 : _a2.focus();
};
const blur = () => {
var _a2;
return (_a2 = _ref.value) == null ? void 0 : _a2.blur();
};
const handleFocus = (event) => {
focused.value = true;
emit("focus", event);
};
const handleBlur = (event) => {
var _a2;
focused.value = false;
emit("blur", event);
if (props.validateEvent) {
(_a2 = formItem == null ? void 0 : formItem.validate) == null ? void 0 : _a2.call(formItem, "blur").catch((err) => debugWarn());
}
};
const handleMouseLeave = (evt) => {
hovering.value = false;
emit("mouseleave", evt);
};
const handleMouseEnter = (evt) => {
hovering.value = true;
emit("mouseenter", evt);
};
const handleKeydown = (evt) => {
emit("keydown", evt);
};
const select = () => {
var _a2;
(_a2 = _ref.value) == null ? void 0 : _a2.select();
};
const clear = () => {
emit(UPDATE_MODEL_EVENT, "");
emit("change", "");
emit("clear");
emit("input", "");
};
watch(() => props.modelValue, () => {
var _a2;
nextTick(() => resizeTextarea());
if (props.validateEvent) {
(_a2 = formItem == null ? void 0 : formItem.validate) == null ? void 0 : _a2.call(formItem, "change").catch((err) => debugWarn());
}
});
watch(nativeInputValue, () => setNativeInputValue());
watch(() => props.type, async () => {
await nextTick();
setNativeInputValue();
resizeTextarea();
updateIconOffset();
});
onMounted(async () => {
setNativeInputValue();
updateIconOffset();
await nextTick();
resizeTextarea();
});
onUpdated(async () => {
await nextTick();
updateIconOffset();
});
expose({
input,
textarea,
ref: _ref,
textareaStyle,
autosize: toRef(props, "autosize"),
focus,
blur,
select,
clear,
resizeTextarea
});
return (_ctx, _cache) => {
return withDirectives((openBlock(), createElementBlock("div", {
class: normalizeClass([
_ctx.type === "textarea" ? unref(nsTextarea).b() : unref(nsInput).b(),
unref(nsInput).m(unref(inputSize)),
unref(nsInput).is("disabled", unref(inputDisabled)),
unref(nsInput).is("exceed", unref(inputExceed)),
{
[unref(nsInput).b("group")]: _ctx.$slots.prepend || _ctx.$slots.append,
[unref(nsInput).bm("group", "append")]: _ctx.$slots.append,
[unref(nsInput).bm("group", "prepend")]: _ctx.$slots.prepend,
[unref(nsInput).m("prefix")]: _ctx.$slots.prefix || _ctx.prefixIcon,
[unref(nsInput).m("suffix")]: _ctx.$slots.suffix || _ctx.suffixIcon || _ctx.clearable || _ctx.showPassword,
[unref(nsInput).bm("suffix", "password-clear")]: unref(showClear) && unref(showPwdVisible)
},
_ctx.$attrs.class
]),
style: normalizeStyle(unref(containerStyle)),
onMouseenter: handleMouseEnter,
onMouseleave: handleMouseLeave
}, [
createCommentVNode(" input "),
_ctx.type !== "textarea" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
createCommentVNode(" prepend slot "),
_ctx.$slots.prepend ? (openBlock(), createElementBlock("div", {
key: 0,
class: normalizeClass(unref(nsInput).be("group", "prepend"))
}, [
renderSlot(_ctx.$slots, "prepend")
], 2)) : createCommentVNode("v-if", true),
createElementVNode("div", {
class: normalizeClass([unref(nsInput).e("wrapper"), unref(nsInput).is("focus", focused.value)])
}, [
createCommentVNode(" prefix slot "),
_ctx.$slots.prefix || _ctx.prefixIcon ? (openBlock(), createElementBlock("span", {
key: 0,
class: normalizeClass(unref(nsInput).e("prefix"))
}, [
createElementVNode("span", {
class: normalizeClass(unref(nsInput).e("prefix-inner"))
}, [
renderSlot(_ctx.$slots, "prefix"),
_ctx.prefixIcon ? (openBlock(), createBlock(unref(ElIcon), {
key: 0,
class: normalizeClass(unref(nsInput).e("icon"))
}, {
default: withCtx(() => [
(openBlock(), createBlock(resolveDynamicComponent(_ctx.prefixIcon)))
]),
_: 1
}, 8, ["class"])) : createCommentVNode("v-if", true)
], 2)
], 2)) : createCommentVNode("v-if", true),
createElementVNode("input", mergeProps({
ref_key: "input",
ref: input,
class: unref(nsInput).e("inner")
}, unref(attrs), {
type: _ctx.showPassword ? passwordVisible.value ? "text" : "password" : _ctx.type,
disabled: unref(inputDisabled),
readonly: _ctx.readonly,
autocomplete: _ctx.autocomplete,
tabindex: _ctx.tabindex,
"aria-label": _ctx.label,
placeholder: _ctx.placeholder,
style: _ctx.inputStyle,
onCompositionstart: handleCompositionStart,
onCompositionupdate: handleCompositionUpdate,
onCompositionend: handleCompositionEnd,
onInput: handleInput,
onFocus: handleFocus,
onBlur: handleBlur,
onChange: handleChange2,
onKeydown: handleKeydown
}), null, 16, _hoisted_1$D),
createCommentVNode(" suffix slot "),
unref(suffixVisible) ? (openBlock(), createElementBlock("span", {
key: 1,
class: normalizeClass(unref(nsInput).e("suffix"))
}, [
createElementVNode("span", {
class: normalizeClass(unref(nsInput).e("suffix-inner"))
}, [
!unref(showClear) || !unref(showPwdVisible) || !unref(isWordLimitVisible) ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
renderSlot(_ctx.$slots, "suffix"),
_ctx.suffixIcon ? (openBlock(), createBlock(unref(ElIcon), {
key: 0,
class: normalizeClass(unref(nsInput).e("icon"))
}, {
default: withCtx(() => [
(openBlock(), createBlock(resolveDynamicComponent(_ctx.suffixIcon)))
]),
_: 1
}, 8, ["class"])) : createCommentVNode("v-if", true)
], 64)) : createCommentVNode("v-if", true),
unref(showClear) ? (openBlock(), createBlock(unref(ElIcon), {
key: 1,
class: normalizeClass([unref(nsInput).e("icon"), unref(nsInput).e("clear")]),
onMousedown: _cache[0] || (_cache[0] = withModifiers(() => {
}, ["prevent"])),
onClick: clear
}, {
default: withCtx(() => [
createVNode(unref(circleClose))
]),
_: 1
}, 8, ["class"])) : createCommentVNode("v-if", true),
unref(showPwdVisible) ? (openBlock(), createBlock(unref(ElIcon), {
key: 2,
class: normalizeClass([unref(nsInput).e("icon"), unref(nsInput).e("password")]),
onClick: handlePasswordVisible
}, {
default: withCtx(() => [
(openBlock(), createBlock(resolveDynamicComponent(unref(passwordIcon))))
]),
_: 1
}, 8, ["class"])) : createCommentVNode("v-if", true),
unref(isWordLimitVisible) ? (openBlock(), createElementBlock("span", {
key: 3,
class: normalizeClass(unref(nsInput).e("count"))
}, [
createElementVNode("span", {
class: normalizeClass(unref(nsInput).e("count-inner"))
}, toDisplayString(unref(textLength)) + " / " + toDisplayString(unref(attrs).maxlength), 3)
], 2)) : createCommentVNode("v-if", true)
], 2),
unref(validateState) && unref(validateIcon) && unref(needStatusIcon) ? (openBlock(), createBlock(unref(ElIcon), {
key: 0,
class: normalizeClass([
unref(nsInput).e("icon"),
unref(nsInput).e("validateIcon"),
unref(nsInput).is("loading", unref(validateState) === "validating")
])
}, {
default: withCtx(() => [
(openBlock(), createBlock(resolveDynamicComponent(unref(validateIcon))))
]),
_: 1
}, 8, ["class"])) : createCommentVNode("v-if", true)
], 2)) : createCommentVNode("v-if", true)
], 2),
createCommentVNode(" append slot "),
_ctx.$slots.append ? (openBlock(), createElementBlock("div", {
key: 1,
class: normalizeClass(unref(nsInput).be("group", "append"))
}, [
renderSlot(_ctx.$slots, "append")
], 2)) : createCommentVNode("v-if", true)
], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
createCommentVNode(" textarea "),
createElementVNode("textarea", mergeProps({
ref_key: "textarea",
ref: textarea,
class: unref(nsTextarea).e("inner")
}, unref(attrs), {
tabindex: _ctx.tabindex,
disabled: unref(inputDisabled),
readonly: _ctx.readonly,
autocomplete: _ctx.autocomplete,
style: unref(textareaStyle),
"aria-label": _ctx.label,
placeholder: _ctx.placeholder,
onCompositionstart: handleCompositionStart,
onCompositionupdate: handleCompositionUpdate,
onCompositionend: handleCompositionEnd,
onInput: handleInput,
onFocus: handleFocus,
onBlur: handleBlur,
onChange: handleChange2,
onKeydown: handleKeydown
}), null, 16, _hoisted_2$u),
unref(isWordLimitVisible) ? (openBlock(), createElementBlock("span", {
key: 0,
class: normalizeClass(unref(nsInput).e("count"))
}, toDisplayString(unref(textLength)) + " / " + toDisplayString(unref(attrs).maxlength), 3)) : createCommentVNode("v-if", true)
], 64))
], 38)), [
[vShow, _ctx.type !== "hidden"]
]);
};
}
}));
var Input = /* @__PURE__ */ _export_sfc$1(_sfc_main$15, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/input/src/input.vue"]]);
const ElInput = withInstall(Input);
const BAR_MAP = {
vertical: {
offset: "offsetHeight",
scroll: "scrollTop",
scrollSize: "scrollHeight",
size: "height",
key: "vertical",
axis: "Y",
client: "clientY",
direction: "top"
},
horizontal: {
offset: "offsetWidth",
scroll: "scrollLeft",
scrollSize: "scrollWidth",
size: "width",
key: "horizontal",
axis: "X",
client: "clientX",
direction: "left"
}
};
const renderThumbStyle = ({ move, size, bar }) => ({
[bar.size]: size,
transform: `translate${bar.axis}(${move}%)`
});
const thumbProps = buildProps({
vertical: Boolean,
size: String,
move: Number,
ratio: {
type: Number,
required: true
},
always: Boolean
});
const COMPONENT_NAME$4 = "Thumb";
const _sfc_main$14 = defineComponent({
name: COMPONENT_NAME$4,
props: thumbProps,
setup(props) {
const scrollbar = inject(scrollbarContextKey);
const ns = useNamespace("scrollbar");
if (!scrollbar)
throwError(COMPONENT_NAME$4, "can not inject scrollbar context");
const instance = ref();
const thumb = ref();
const thumbState = ref({});
const visible = ref(false);
let cursorDown = false;
let cursorLeave = false;
let originalOnSelectStart = isClient ? document.onselectstart : null;
const bar = computed(() => BAR_MAP[props.vertical ? "vertical" : "horizontal"]);
const thumbStyle = computed(() => renderThumbStyle({
size: props.size,
move: props.move,
bar: bar.value
}));
const offsetRatio = computed(() => instance.value[bar.value.offset] ** 2 / scrollbar.wrapElement[bar.value.scrollSize] / props.ratio / thumb.value[bar.value.offset]);
const clickThumbHandler = (e) => {
var _a2;
e.stopPropagation();
if (e.ctrlKey || [1, 2].includes(e.button))
return;
(_a2 = window.getSelection()) == null ? void 0 : _a2.removeAllRanges();
startDrag(e);
const el = e.currentTarget;
if (!el)
return;
thumbState.value[bar.value.axis] = el[bar.value.offset] - (e[bar.value.client] - el.getBoundingClientRect()[bar.value.direction]);
};
const clickTrackHandler = (e) => {
if (!thumb.value || !instance.value || !scrollbar.wrapElement)
return;
const offset2 = Math.abs(e.target.getBoundingClientRect()[bar.value.direction] - e[bar.value.client]);
const thumbHalf = thumb.value[bar.value.offset] / 2;
const thumbPositionPercentage = (offset2 - thumbHalf) * 100 * offsetRatio.value / instance.value[bar.value.offset];
scrollbar.wrapElement[bar.value.scroll] = thumbPositionPercentage * scrollbar.wrapElement[bar.value.scrollSize] / 100;
};
const startDrag = (e) => {
e.stopImmediatePropagation();
cursorDown = true;
document.addEventListener("mousemove", mouseMoveDocumentHandler);
document.addEventListener("mouseup", mouseUpDocumentHandler);
originalOnSelectStart = document.onselectstart;
document.onselectstart = () => false;
};
const mouseMoveDocumentHandler = (e) => {
if (!instance.value || !thumb.value)
return;
if (cursorDown === false)
return;
const prevPage = thumbState.value[bar.value.axis];
if (!prevPage)
return;
const offset2 = (instance.value.getBoundingClientRect()[bar.value.direction] - e[bar.value.client]) * -1;
const thumbClickPosition = thumb.value[bar.value.offset] - prevPage;
const thumbPositionPercentage = (offset2 - thumbClickPosition) * 100 * offsetRatio.value / instance.value[bar.value.offset];
scrollbar.wrapElement[bar.value.scroll] = thumbPositionPercentage * scrollbar.wrapElement[bar.value.scrollSize] / 100;
};
const mouseUpDocumentHandler = () => {
cursorDown = false;
thumbState.value[bar.value.axis] = 0;
document.removeEventListener("mousemove", mouseMoveDocumentHandler);
document.removeEventListener("mouseup", mouseUpDocumentHandler);
restoreOnselectstart();
if (cursorLeave)
visible.value = false;
};
const mouseMoveScrollbarHandler = () => {
cursorLeave = false;
visible.value = !!props.size;
};
const mouseLeaveScrollbarHandler = () => {
cursorLeave = true;
visible.value = cursorDown;
};
onBeforeUnmount(() => {
restoreOnselectstart();
document.removeEventListener("mouseup", mouseUpDocumentHandler);
});
const restoreOnselectstart = () => {
if (document.onselectstart !== originalOnSelectStart)
document.onselectstart = originalOnSelectStart;
};
useEventListener(toRef(scrollbar, "scrollbarElement"), "mousemove", mouseMoveScrollbarHandler);
useEventListener(toRef(scrollbar, "scrollbarElement"), "mouseleave", mouseLeaveScrollbarHandler);
return {
ns,
instance,
thumb,
bar,
thumbStyle,
visible,
clickTrackHandler,
clickThumbHandler
};
}
});
function _sfc_render$D(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createBlock(Transition, {
name: _ctx.ns.b("fade")
}, {
default: withCtx(() => [
withDirectives(createElementVNode("div", {
ref: "instance",
class: normalizeClass([_ctx.ns.e("bar"), _ctx.ns.is(_ctx.bar.key)]),
onMousedown: _cache[1] || (_cache[1] = (...args) => _ctx.clickTrackHandler && _ctx.clickTrackHandler(...args))
}, [
createElementVNode("div", {
ref: "thumb",
class: normalizeClass(_ctx.ns.e("thumb")),
style: normalizeStyle(_ctx.thumbStyle),
onMousedown: _cache[0] || (_cache[0] = (...args) => _ctx.clickThumbHandler && _ctx.clickThumbHandler(...args))
}, null, 38)
], 34), [
[vShow, _ctx.always || _ctx.visible]
])
]),
_: 1
}, 8, ["name"]);
}
var Thumb = /* @__PURE__ */ _export_sfc$1(_sfc_main$14, [["render", _sfc_render$D], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/scrollbar/src/thumb.vue"]]);
const barProps = buildProps({
always: {
type: Boolean,
default: true
},
width: {
type: String,
default: ""
},
height: {
type: String,
default: ""
},
ratioX: {
type: Number,
default: 1
},
ratioY: {
type: Number,
default: 1
}
});
const _sfc_main$13 = defineComponent({
components: {
Thumb
},
props: barProps,
setup(props) {
const moveX = ref(0);
const moveY = ref(0);
const GAP = 4;
const handleScroll = (wrap) => {
if (wrap) {
const offsetHeight = wrap.offsetHeight - GAP;
const offsetWidth = wrap.offsetWidth - GAP;
moveY.value = wrap.scrollTop * 100 / offsetHeight * props.ratioY;
moveX.value = wrap.scrollLeft * 100 / offsetWidth * props.ratioX;
}
};
return {
handleScroll,
moveX,
moveY
};
}
});
function _sfc_render$C(_ctx, _cache, $props, $setup, $data, $options) {
const _component_thumb = resolveComponent("thumb");
return openBlock(), createElementBlock(Fragment, null, [
createVNode(_component_thumb, {
move: _ctx.moveX,
ratio: _ctx.ratioX,
size: _ctx.width,
always: _ctx.always
}, null, 8, ["move", "ratio", "size", "always"]),
createVNode(_component_thumb, {
move: _ctx.moveY,
ratio: _ctx.ratioY,
size: _ctx.height,
vertical: "",
always: _ctx.always
}, null, 8, ["move", "ratio", "size", "always"])
], 64);
}
var Bar = /* @__PURE__ */ _export_sfc$1(_sfc_main$13, [["render", _sfc_render$C], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/scrollbar/src/bar.vue"]]);
const scrollbarProps = buildProps({
height: {
type: [String, Number],
default: ""
},
maxHeight: {
type: [String, Number],
default: ""
},
native: {
type: Boolean,
default: false
},
wrapStyle: {
type: definePropType([String, Object, Array]),
default: ""
},
wrapClass: {
type: [String, Array],
default: ""
},
viewClass: {
type: [String, Array],
default: ""
},
viewStyle: {
type: [String, Array, Object],
default: ""
},
noresize: Boolean,
tag: {
type: String,
default: "div"
},
always: {
type: Boolean,
default: false
},
minSize: {
type: Number,
default: 20
}
});
const scrollbarEmits = {
scroll: ({
scrollTop,
scrollLeft
}) => isNumber(scrollTop) && isNumber(scrollLeft)
};
const _sfc_main$12 = defineComponent({
name: "ElScrollbar",
components: {
Bar
},
props: scrollbarProps,
emits: scrollbarEmits,
setup(props, { emit }) {
const ns = useNamespace("scrollbar");
let stopResizeObserver = void 0;
let stopResizeListener = void 0;
const scrollbar$ = ref();
const wrap$ = ref();
const resize$ = ref();
const sizeWidth = ref("0");
const sizeHeight = ref("0");
const barRef = ref();
const moveX = ref(0);
const moveY = ref(0);
const ratioY = ref(1);
const ratioX = ref(1);
const GAP = 4;
const style = computed(() => {
const style2 = {};
if (props.height)
style2.height = addUnit(props.height);
if (props.maxHeight)
style2.maxHeight = addUnit(props.maxHeight);
return [props.wrapStyle, style2];
});
const handleScroll = () => {
var _a2;
if (wrap$.value) {
(_a2 = barRef.value) == null ? void 0 : _a2.handleScroll(wrap$.value);
emit("scroll", {
scrollTop: wrap$.value.scrollTop,
scrollLeft: wrap$.value.scrollLeft
});
}
};
function scrollTo(arg1, arg2) {
if (isObject$1(arg1)) {
wrap$.value.scrollTo(arg1);
} else if (isNumber(arg1) && isNumber(arg2)) {
wrap$.value.scrollTo(arg1, arg2);
}
}
const setScrollTop = (value) => {
if (!isNumber(value)) {
return;
}
wrap$.value.scrollTop = value;
};
const setScrollLeft = (value) => {
if (!isNumber(value)) {
return;
}
wrap$.value.scrollLeft = value;
};
const update = () => {
if (!wrap$.value)
return;
const offsetHeight = wrap$.value.offsetHeight - GAP;
const offsetWidth = wrap$.value.offsetWidth - GAP;
const originalHeight = offsetHeight ** 2 / wrap$.value.scrollHeight;
const originalWidth = offsetWidth ** 2 / wrap$.value.scrollWidth;
const height = Math.max(originalHeight, props.minSize);
const width = Math.max(originalWidth, props.minSize);
ratioY.value = originalHeight / (offsetHeight - originalHeight) / (height / (offsetHeight - height));
ratioX.value = originalWidth / (offsetWidth - originalWidth) / (width / (offsetWidth - width));
sizeHeight.value = height + GAP < offsetHeight ? `${height}px` : "";
sizeWidth.value = width + GAP < offsetWidth ? `${width}px` : "";
};
watch(() => props.noresize, (noresize) => {
if (noresize) {
stopResizeObserver == null ? void 0 : stopResizeObserver();
stopResizeListener == null ? void 0 : stopResizeListener();
} else {
({ stop: stopResizeObserver } = useResizeObserver(resize$, update));
stopResizeListener = useEventListener("resize", update);
}
}, { immediate: true });
watch(() => [props.maxHeight, props.height], () => {
if (!props.native)
nextTick(() => {
var _a2;
update();
if (wrap$.value) {
(_a2 = barRef.value) == null ? void 0 : _a2.handleScroll(wrap$.value);
}
});
});
provide(scrollbarContextKey, reactive({
scrollbarElement: scrollbar$,
wrapElement: wrap$
}));
onMounted(() => {
if (!props.native)
nextTick(() => update());
});
onUpdated(() => update());
return {
ns,
scrollbar$,
wrap$,
resize$,
barRef,
moveX,
moveY,
ratioX,
ratioY,
sizeWidth,
sizeHeight,
style,
update,
handleScroll,
scrollTo,
setScrollTop,
setScrollLeft
};
}
});
function _sfc_render$B(_ctx, _cache, $props, $setup, $data, $options) {
const _component_bar = resolveComponent("bar");
return openBlock(), createElementBlock("div", {
ref: "scrollbar$",
class: normalizeClass(_ctx.ns.b())
}, [
createElementVNode("div", {
ref: "wrap$",
class: normalizeClass([
_ctx.wrapClass,
_ctx.ns.e("wrap"),
{ [_ctx.ns.em("wrap", "hidden-default")]: !_ctx.native }
]),
style: normalizeStyle(_ctx.style),
onScroll: _cache[0] || (_cache[0] = (...args) => _ctx.handleScroll && _ctx.handleScroll(...args))
}, [
(openBlock(), createBlock(resolveDynamicComponent(_ctx.tag), {
ref: "resize$",
class: normalizeClass([_ctx.ns.e("view"), _ctx.viewClass]),
style: normalizeStyle(_ctx.viewStyle)
}, {
default: withCtx(() => [
renderSlot(_ctx.$slots, "default")
]),
_: 3
}, 8, ["class", "style"]))
], 38),
!_ctx.native ? (openBlock(), createBlock(_component_bar, {
key: 0,
ref: "barRef",
height: _ctx.sizeHeight,
width: _ctx.sizeWidth,
always: _ctx.always,
"ratio-x": _ctx.ratioX,
"ratio-y": _ctx.ratioY
}, null, 8, ["height", "width", "always", "ratio-x", "ratio-y"])) : createCommentVNode("v-if", true)
], 2);
}
var Scrollbar = /* @__PURE__ */ _export_sfc$1(_sfc_main$12, [["render", _sfc_render$B], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/scrollbar/src/scrollbar.vue"]]);
const ElScrollbar = withInstall(Scrollbar);
const __default__$j = {
name: "ElPopperRoot",
inheritAttrs: false
};
const _sfc_main$11 = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({}, __default__$j), {
setup(__props, { expose }) {
const triggerRef2 = ref();
const popperInstanceRef = ref();
const contentRef = ref();
const referenceRef = ref();
const popperProvides = {
triggerRef: triggerRef2,
popperInstanceRef,
contentRef,
referenceRef
};
expose(popperProvides);
provide(POPPER_INJECTION_KEY, popperProvides);
return (_ctx, _cache) => {
return renderSlot(_ctx.$slots, "default");
};
}
}));
var Popper = /* @__PURE__ */ _export_sfc$1(_sfc_main$11, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/popper/src/popper.vue"]]);
const usePopperArrowProps = buildProps({
arrowOffset: {
type: Number,
default: 5
}
});
const __default__$i = {
name: "ElPopperArrow",
inheritAttrs: false
};
const _sfc_main$10 = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({}, __default__$i), {
props: usePopperArrowProps,
setup(__props, { expose }) {
const props = __props;
const ns = useNamespace("popper");
const { arrowOffset, arrowRef } = inject(POPPER_CONTENT_INJECTION_KEY, void 0);
watch(() => props.arrowOffset, (val) => {
arrowOffset.value = val;
});
onBeforeUnmount(() => {
arrowRef.value = void 0;
});
expose({
arrowRef
});
return (_ctx, _cache) => {
return openBlock(), createElementBlock("span", {
ref_key: "arrowRef",
ref: arrowRef,
class: normalizeClass(unref(ns).e("arrow")),
"data-popper-arrow": ""
}, null, 2);
};
}
}));
var ElPopperArrow = /* @__PURE__ */ _export_sfc$1(_sfc_main$10, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/popper/src/arrow.vue"]]);
const NAME = "ElOnlyChild";
const OnlyChild = defineComponent({
name: NAME,
setup(_2, {
slots,
attrs
}) {
var _a2;
const forwardRefInjection = inject(FORWARD_REF_INJECTION_KEY);
const forwardRefDirective = useForwardRefDirective((_a2 = forwardRefInjection == null ? void 0 : forwardRefInjection.setForwardRef) != null ? _a2 : NOOP);
return () => {
var _a22;
const defaultSlot = (_a22 = slots.default) == null ? void 0 : _a22.call(slots, attrs);
if (!defaultSlot)
return null;
if (defaultSlot.length > 1) {
return null;
}
const firstLegitNode = findFirstLegitChild(defaultSlot);
if (!firstLegitNode) {
return null;
}
return withDirectives(cloneVNode(firstLegitNode, attrs), [[forwardRefDirective]]);
};
}
});
function findFirstLegitChild(node) {
if (!node)
return null;
const children = node;
for (const child of children) {
if (isObject$1(child)) {
switch (child.type) {
case Comment:
continue;
case Text:
return wrapTextContent(child);
case "svg":
return wrapTextContent(child);
case Fragment:
return findFirstLegitChild(child.children);
default:
return child;
}
}
return wrapTextContent(child);
}
return null;
}
function wrapTextContent(s2) {
return createVNode("span", {
"class": "el-only-child__content"
}, [s2]);
}
const usePopperTriggerProps = buildProps({
virtualRef: {
type: definePropType(Object)
},
virtualTriggering: Boolean,
onMouseenter: Function,
onMouseleave: Function,
onClick: Function,
onKeydown: Function,
onFocus: Function,
onBlur: Function,
onContextmenu: Function,
id: String,
open: Boolean
});
const __default__$h = {
name: "ElPopperTrigger",
inheritAttrs: false
};
const _sfc_main$$ = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({}, __default__$h), {
props: usePopperTriggerProps,
setup(__props, { expose }) {
const props = __props;
const { triggerRef: triggerRef2 } = inject(POPPER_INJECTION_KEY, void 0);
useForwardRef(triggerRef2);
onMounted(() => {
watch(() => props.virtualRef, (virtualEl) => {
if (virtualEl) {
triggerRef2.value = unrefElement(virtualEl);
}
}, {
immediate: true
});
watch(() => triggerRef2.value, (el, prevEl) => {
if (isElement$1(el)) {
[
"onMouseenter",
"onMouseleave",
"onClick",
"onKeydown",
"onFocus",
"onBlur",
"onContextmenu"
].forEach((eventName) => {
var _a2;
const handler3 = props[eventName];
if (handler3) {
el.addEventListener(eventName.slice(2).toLowerCase(), handler3);
(_a2 = prevEl == null ? void 0 : prevEl.removeEventListener) == null ? void 0 : _a2.call(prevEl, eventName.slice(2).toLowerCase(), handler3);
}
});
}
}, {
immediate: true
});
});
expose({
triggerRef: triggerRef2
});
return (_ctx, _cache) => {
return !_ctx.virtualTriggering ? (openBlock(), createBlock(unref(OnlyChild), mergeProps({ key: 0 }, _ctx.$attrs, {
"aria-describedby": _ctx.open ? _ctx.id : void 0
}), {
default: withCtx(() => [
renderSlot(_ctx.$slots, "default")
]),
_: 3
}, 16, ["aria-describedby"])) : createCommentVNode("v-if", true);
};
}
}));
var ElPopperTrigger = /* @__PURE__ */ _export_sfc$1(_sfc_main$$, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/popper/src/trigger.vue"]]);
var top = "top";
var bottom = "bottom";
var right = "right";
var left = "left";
var auto = "auto";
var basePlacements = [top, bottom, right, left];
var start = "start";
var end = "end";
var clippingParents = "clippingParents";
var viewport = "viewport";
var popper = "popper";
var reference = "reference";
var variationPlacements = /* @__PURE__ */ basePlacements.reduce(function(acc, placement) {
return acc.concat([placement + "-" + start, placement + "-" + end]);
}, []);
var placements = /* @__PURE__ */ [].concat(basePlacements, [auto]).reduce(function(acc, placement) {
return acc.concat([placement, placement + "-" + start, placement + "-" + end]);
}, []);
var beforeRead = "beforeRead";
var read = "read";
var afterRead = "afterRead";
var beforeMain = "beforeMain";
var main = "main";
var afterMain = "afterMain";
var beforeWrite = "beforeWrite";
var write = "write";
var afterWrite = "afterWrite";
var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];
function getNodeName(element) {
return element ? (element.nodeName || "").toLowerCase() : null;
}
function getWindow(node) {
if (node == null) {
return window;
}
if (node.toString() !== "[object Window]") {
var ownerDocument = node.ownerDocument;
return ownerDocument ? ownerDocument.defaultView || window : window;
}
return node;
}
function isElement(node) {
var OwnElement = getWindow(node).Element;
return node instanceof OwnElement || node instanceof Element;
}
function isHTMLElement(node) {
var OwnElement = getWindow(node).HTMLElement;
return node instanceof OwnElement || node instanceof HTMLElement;
}
function isShadowRoot(node) {
if (typeof ShadowRoot === "undefined") {
return false;
}
var OwnElement = getWindow(node).ShadowRoot;
return node instanceof OwnElement || node instanceof ShadowRoot;
}
function applyStyles(_ref) {
var state = _ref.state;
Object.keys(state.elements).forEach(function(name) {
var style = state.styles[name] || {};
var attributes = state.attributes[name] || {};
var element = state.elements[name];
if (!isHTMLElement(element) || !getNodeName(element)) {
return;
}
Object.assign(element.style, style);
Object.keys(attributes).forEach(function(name2) {
var value = attributes[name2];
if (value === false) {
element.removeAttribute(name2);
} else {
element.setAttribute(name2, value === true ? "" : value);
}
});
});
}
function effect$2(_ref2) {
var state = _ref2.state;
var initialStyles = {
popper: {
position: state.options.strategy,
left: "0",
top: "0",
margin: "0"
},
arrow: {
position: "absolute"
},
reference: {}
};
Object.assign(state.elements.popper.style, initialStyles.popper);
state.styles = initialStyles;
if (state.elements.arrow) {
Object.assign(state.elements.arrow.style, initialStyles.arrow);
}
return function() {
Object.keys(state.elements).forEach(function(name) {
var element = state.elements[name];
var attributes = state.attributes[name] || {};
var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]);
var style = styleProperties.reduce(function(style2, property) {
style2[property] = "";
return style2;
}, {});
if (!isHTMLElement(element) || !getNodeName(element)) {
return;
}
Object.assign(element.style, style);
Object.keys(attributes).forEach(function(attribute) {
element.removeAttribute(attribute);
});
});
};
}
var applyStyles$1 = {
name: "applyStyles",
enabled: true,
phase: "write",
fn: applyStyles,
effect: effect$2,
requires: ["computeStyles"]
};
function getBasePlacement(placement) {
return placement.split("-")[0];
}
var max = Math.max;
var min = Math.min;
var round = Math.round;
function getUAString() {
var uaData = navigator.userAgentData;
if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {
return uaData.brands.map(function(item) {
return item.brand + "/" + item.version;
}).join(" ");
}
return navigator.userAgent;
}
function isLayoutViewport() {
return !/^((?!chrome|android).)*safari/i.test(getUAString());
}
function getBoundingClientRect(element, includeScale, isFixedStrategy) {
if (includeScale === void 0) {
includeScale = false;
}
if (isFixedStrategy === void 0) {
isFixedStrategy = false;
}
var clientRect = element.getBoundingClientRect();
var scaleX = 1;
var scaleY = 1;
if (includeScale && isHTMLElement(element)) {
scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;
scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;
}
var _ref = isElement(element) ? getWindow(element) : window, visualViewport = _ref.visualViewport;
var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;
var x2 = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;
var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;
var width = clientRect.width / scaleX;
var height = clientRect.height / scaleY;
return {
width,
height,
top: y,
right: x2 + width,
bottom: y + height,
left: x2,
x: x2,
y
};
}
function getLayoutRect(element) {
var clientRect = getBoundingClientRect(element);
var width = element.offsetWidth;
var height = element.offsetHeight;
if (Math.abs(clientRect.width - width) <= 1) {
width = clientRect.width;
}
if (Math.abs(clientRect.height - height) <= 1) {
height = clientRect.height;
}
return {
x: element.offsetLeft,
y: element.offsetTop,
width,
height
};
}
function contains(parent, child) {
var rootNode = child.getRootNode && child.getRootNode();
if (parent.contains(child)) {
return true;
} else if (rootNode && isShadowRoot(rootNode)) {
var next = child;
do {
if (next && parent.isSameNode(next)) {
return true;
}
next = next.parentNode || next.host;
} while (next);
}
return false;
}
function getComputedStyle$1(element) {
return getWindow(element).getComputedStyle(element);
}
function isTableElement(element) {
return ["table", "td", "th"].indexOf(getNodeName(element)) >= 0;
}
function getDocumentElement(element) {
return ((isElement(element) ? element.ownerDocument : element.document) || window.document).documentElement;
}
function getParentNode(element) {
if (getNodeName(element) === "html") {
return element;
}
return element.assignedSlot || element.parentNode || (isShadowRoot(element) ? element.host : null) || getDocumentElement(element);
}
function getTrueOffsetParent(element) {
if (!isHTMLElement(element) || getComputedStyle$1(element).position === "fixed") {
return null;
}
return element.offsetParent;
}
function getContainingBlock(element) {
var isFirefox2 = /firefox/i.test(getUAString());
var isIE = /Trident/i.test(getUAString());
if (isIE && isHTMLElement(element)) {
var elementCss = getComputedStyle$1(element);
if (elementCss.position === "fixed") {
return null;
}
}
var currentNode = getParentNode(element);
if (isShadowRoot(currentNode)) {
currentNode = currentNode.host;
}
while (isHTMLElement(currentNode) && ["html", "body"].indexOf(getNodeName(currentNode)) < 0) {
var css = getComputedStyle$1(currentNode);
if (css.transform !== "none" || css.perspective !== "none" || css.contain === "paint" || ["transform", "perspective"].indexOf(css.willChange) !== -1 || isFirefox2 && css.willChange === "filter" || isFirefox2 && css.filter && css.filter !== "none") {
return currentNode;
} else {
currentNode = currentNode.parentNode;
}
}
return null;
}
function getOffsetParent(element) {
var window2 = getWindow(element);
var offsetParent = getTrueOffsetParent(element);
while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === "static") {
offsetParent = getTrueOffsetParent(offsetParent);
}
if (offsetParent && (getNodeName(offsetParent) === "html" || getNodeName(offsetParent) === "body" && getComputedStyle$1(offsetParent).position === "static")) {
return window2;
}
return offsetParent || getContainingBlock(element) || window2;
}
function getMainAxisFromPlacement(placement) {
return ["top", "bottom"].indexOf(placement) >= 0 ? "x" : "y";
}
function within(min$1, value, max$1) {
return max(min$1, min(value, max$1));
}
function withinMaxClamp(min2, value, max2) {
var v2 = within(min2, value, max2);
return v2 > max2 ? max2 : v2;
}
function getFreshSideObject() {
return {
top: 0,
right: 0,
bottom: 0,
left: 0
};
}
function mergePaddingObject(paddingObject) {
return Object.assign({}, getFreshSideObject(), paddingObject);
}
function expandToHashMap(value, keys2) {
return keys2.reduce(function(hashMap, key) {
hashMap[key] = value;
return hashMap;
}, {});
}
var toPaddingObject = function toPaddingObject2(padding, state) {
padding = typeof padding === "function" ? padding(Object.assign({}, state.rects, {
placement: state.placement
})) : padding;
return mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements));
};
function arrow(_ref) {
var _state$modifiersData$;
var state = _ref.state, name = _ref.name, options = _ref.options;
var arrowElement = state.elements.arrow;
var popperOffsets2 = state.modifiersData.popperOffsets;
var basePlacement = getBasePlacement(state.placement);
var axis = getMainAxisFromPlacement(basePlacement);
var isVertical = [left, right].indexOf(basePlacement) >= 0;
var len = isVertical ? "height" : "width";
if (!arrowElement || !popperOffsets2) {
return;
}
var paddingObject = toPaddingObject(options.padding, state);
var arrowRect = getLayoutRect(arrowElement);
var minProp = axis === "y" ? top : left;
var maxProp = axis === "y" ? bottom : right;
var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets2[axis] - state.rects.popper[len];
var startDiff = popperOffsets2[axis] - state.rects.reference[axis];
var arrowOffsetParent = getOffsetParent(arrowElement);
var clientSize = arrowOffsetParent ? axis === "y" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
var centerToReference = endDiff / 2 - startDiff / 2;
var min2 = paddingObject[minProp];
var max2 = clientSize - arrowRect[len] - paddingObject[maxProp];
var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;
var offset2 = within(min2, center, max2);
var axisProp = axis;
state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset2, _state$modifiersData$.centerOffset = offset2 - center, _state$modifiersData$);
}
function effect$1(_ref2) {
var state = _ref2.state, options = _ref2.options;
var _options$element = options.element, arrowElement = _options$element === void 0 ? "[data-popper-arrow]" : _options$element;
if (arrowElement == null) {
return;
}
if (typeof arrowElement === "string") {
arrowElement = state.elements.popper.querySelector(arrowElement);
if (!arrowElement) {
return;
}
}
if (!contains(state.elements.popper, arrowElement)) {
return;
}
state.elements.arrow = arrowElement;
}
var arrow$1 = {
name: "arrow",
enabled: true,
phase: "main",
fn: arrow,
effect: effect$1,
requires: ["popperOffsets"],
requiresIfExists: ["preventOverflow"]
};
function getVariation(placement) {
return placement.split("-")[1];
}
var unsetSides = {
top: "auto",
right: "auto",
bottom: "auto",
left: "auto"
};
function roundOffsetsByDPR(_ref, win) {
var x2 = _ref.x, y = _ref.y;
var dpr = win.devicePixelRatio || 1;
return {
x: round(x2 * dpr) / dpr || 0,
y: round(y * dpr) / dpr || 0
};
}
function mapToStyles(_ref2) {
var _Object$assign2;
var popper2 = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, variation = _ref2.variation, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets, isFixed = _ref2.isFixed;
var _offsets$x = offsets.x, x2 = _offsets$x === void 0 ? 0 : _offsets$x, _offsets$y = offsets.y, y = _offsets$y === void 0 ? 0 : _offsets$y;
var _ref3 = typeof roundOffsets === "function" ? roundOffsets({
x: x2,
y
}) : {
x: x2,
y
};
x2 = _ref3.x;
y = _ref3.y;
var hasX = offsets.hasOwnProperty("x");
var hasY = offsets.hasOwnProperty("y");
var sideX = left;
var sideY = top;
var win = window;
if (adaptive) {
var offsetParent = getOffsetParent(popper2);
var heightProp = "clientHeight";
var widthProp = "clientWidth";
if (offsetParent === getWindow(popper2)) {
offsetParent = getDocumentElement(popper2);
if (getComputedStyle$1(offsetParent).position !== "static" && position === "absolute") {
heightProp = "scrollHeight";
widthProp = "scrollWidth";
}
}
offsetParent = offsetParent;
if (placement === top || (placement === left || placement === right) && variation === end) {
sideY = bottom;
var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : offsetParent[heightProp];
y -= offsetY - popperRect.height;
y *= gpuAcceleration ? 1 : -1;
}
if (placement === left || (placement === top || placement === bottom) && variation === end) {
sideX = right;
var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : offsetParent[widthProp];
x2 -= offsetX - popperRect.width;
x2 *= gpuAcceleration ? 1 : -1;
}
}
var commonStyles = Object.assign({
position
}, adaptive && unsetSides);
var _ref4 = roundOffsets === true ? roundOffsetsByDPR({
x: x2,
y
}, getWindow(popper2)) : {
x: x2,
y
};
x2 = _ref4.x;
y = _ref4.y;
if (gpuAcceleration) {
var _Object$assign;
return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? "0" : "", _Object$assign[sideX] = hasX ? "0" : "", _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x2 + "px, " + y + "px)" : "translate3d(" + x2 + "px, " + y + "px, 0)", _Object$assign));
}
return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : "", _Object$assign2[sideX] = hasX ? x2 + "px" : "", _Object$assign2.transform = "", _Object$assign2));
}
function computeStyles(_ref5) {
var state = _ref5.state, options = _ref5.options;
var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;
var commonStyles = {
placement: getBasePlacement(state.placement),
variation: getVariation(state.placement),
popper: state.elements.popper,
popperRect: state.rects.popper,
gpuAcceleration,
isFixed: state.options.strategy === "fixed"
};
if (state.modifiersData.popperOffsets != null) {
state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {
offsets: state.modifiersData.popperOffsets,
position: state.options.strategy,
adaptive,
roundOffsets
})));
}
if (state.modifiersData.arrow != null) {
state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {
offsets: state.modifiersData.arrow,
position: "absolute",
adaptive: false,
roundOffsets
})));
}
state.attributes.popper = Object.assign({}, state.attributes.popper, {
"data-popper-placement": state.placement
});
}
var computeStyles$1 = {
name: "computeStyles",
enabled: true,
phase: "beforeWrite",
fn: computeStyles,
data: {}
};
var passive = {
passive: true
};
function effect(_ref) {
var state = _ref.state, instance = _ref.instance, options = _ref.options;
var _options$scroll = options.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options.resize, resize = _options$resize === void 0 ? true : _options$resize;
var window2 = getWindow(state.elements.popper);
var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);
if (scroll) {
scrollParents.forEach(function(scrollParent) {
scrollParent.addEventListener("scroll", instance.update, passive);
});
}
if (resize) {
window2.addEventListener("resize", instance.update, passive);
}
return function() {
if (scroll) {
scrollParents.forEach(function(scrollParent) {
scrollParent.removeEventListener("scroll", instance.update, passive);
});
}
if (resize) {
window2.removeEventListener("resize", instance.update, passive);
}
};
}
var eventListeners = {
name: "eventListeners",
enabled: true,
phase: "write",
fn: function fn() {
},
effect,
data: {}
};
var hash$1 = {
left: "right",
right: "left",
bottom: "top",
top: "bottom"
};
function getOppositePlacement(placement) {
return placement.replace(/left|right|bottom|top/g, function(matched) {
return hash$1[matched];
});
}
var hash = {
start: "end",
end: "start"
};
function getOppositeVariationPlacement(placement) {
return placement.replace(/start|end/g, function(matched) {
return hash[matched];
});
}
function getWindowScroll(node) {
var win = getWindow(node);
var scrollLeft = win.pageXOffset;
var scrollTop = win.pageYOffset;
return {
scrollLeft,
scrollTop
};
}
function getWindowScrollBarX(element) {
return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;
}
function getViewportRect(element, strategy) {
var win = getWindow(element);
var html = getDocumentElement(element);
var visualViewport = win.visualViewport;
var width = html.clientWidth;
var height = html.clientHeight;
var x2 = 0;
var y = 0;
if (visualViewport) {
width = visualViewport.width;
height = visualViewport.height;
var layoutViewport = isLayoutViewport();
if (layoutViewport || !layoutViewport && strategy === "fixed") {
x2 = visualViewport.offsetLeft;
y = visualViewport.offsetTop;
}
}
return {
width,
height,
x: x2 + getWindowScrollBarX(element),
y
};
}
function getDocumentRect(element) {
var _element$ownerDocumen;
var html = getDocumentElement(element);
var winScroll = getWindowScroll(element);
var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;
var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
var x2 = -winScroll.scrollLeft + getWindowScrollBarX(element);
var y = -winScroll.scrollTop;
if (getComputedStyle$1(body || html).direction === "rtl") {
x2 += max(html.clientWidth, body ? body.clientWidth : 0) - width;
}
return {
width,
height,
x: x2,
y
};
}
function isScrollParent(element) {
var _getComputedStyle = getComputedStyle$1(element), overflow = _getComputedStyle.overflow, overflowX = _getComputedStyle.overflowX, overflowY = _getComputedStyle.overflowY;
return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
}
function getScrollParent(node) {
if (["html", "body", "#document"].indexOf(getNodeName(node)) >= 0) {
return node.ownerDocument.body;
}
if (isHTMLElement(node) && isScrollParent(node)) {
return node;
}
return getScrollParent(getParentNode(node));
}
function listScrollParents(element, list) {
var _element$ownerDocumen;
if (list === void 0) {
list = [];
}
var scrollParent = getScrollParent(element);
var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);
var win = getWindow(scrollParent);
var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
var updatedList = list.concat(target);
return isBody ? updatedList : updatedList.concat(listScrollParents(getParentNode(target)));
}
function rectToClientRect(rect) {
return Object.assign({}, rect, {
left: rect.x,
top: rect.y,
right: rect.x + rect.width,
bottom: rect.y + rect.height
});
}
function getInnerBoundingClientRect(element, strategy) {
var rect = getBoundingClientRect(element, false, strategy === "fixed");
rect.top = rect.top + element.clientTop;
rect.left = rect.left + element.clientLeft;
rect.bottom = rect.top + element.clientHeight;
rect.right = rect.left + element.clientWidth;
rect.width = element.clientWidth;
rect.height = element.clientHeight;
rect.x = rect.left;
rect.y = rect.top;
return rect;
}
function getClientRectFromMixedType(element, clippingParent, strategy) {
return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
}
function getClippingParents(element) {
var clippingParents2 = listScrollParents(getParentNode(element));
var canEscapeClipping = ["absolute", "fixed"].indexOf(getComputedStyle$1(element).position) >= 0;
var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
if (!isElement(clipperElement)) {
return [];
}
return clippingParents2.filter(function(clippingParent) {
return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== "body";
});
}
function getClippingRect(element, boundary, rootBoundary, strategy) {
var mainClippingParents = boundary === "clippingParents" ? getClippingParents(element) : [].concat(boundary);
var clippingParents2 = [].concat(mainClippingParents, [rootBoundary]);
var firstClippingParent = clippingParents2[0];
var clippingRect = clippingParents2.reduce(function(accRect, clippingParent) {
var rect = getClientRectFromMixedType(element, clippingParent, strategy);
accRect.top = max(rect.top, accRect.top);
accRect.right = min(rect.right, accRect.right);
accRect.bottom = min(rect.bottom, accRect.bottom);
accRect.left = max(rect.left, accRect.left);
return accRect;
}, getClientRectFromMixedType(element, firstClippingParent, strategy));
clippingRect.width = clippingRect.right - clippingRect.left;
clippingRect.height = clippingRect.bottom - clippingRect.top;
clippingRect.x = clippingRect.left;
clippingRect.y = clippingRect.top;
return clippingRect;
}
function computeOffsets(_ref) {
var reference2 = _ref.reference, element = _ref.element, placement = _ref.placement;
var basePlacement = placement ? getBasePlacement(placement) : null;
var variation = placement ? getVariation(placement) : null;
var commonX = reference2.x + reference2.width / 2 - element.width / 2;
var commonY = reference2.y + reference2.height / 2 - element.height / 2;
var offsets;
switch (basePlacement) {
case top:
offsets = {
x: commonX,
y: reference2.y - element.height
};
break;
case bottom:
offsets = {
x: commonX,
y: reference2.y + reference2.height
};
break;
case right:
offsets = {
x: reference2.x + reference2.width,
y: commonY
};
break;
case left:
offsets = {
x: reference2.x - element.width,
y: commonY
};
break;
default:
offsets = {
x: reference2.x,
y: reference2.y
};
}
var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
if (mainAxis != null) {
var len = mainAxis === "y" ? "height" : "width";
switch (variation) {
case start:
offsets[mainAxis] = offsets[mainAxis] - (reference2[len] / 2 - element[len] / 2);
break;
case end:
offsets[mainAxis] = offsets[mainAxis] + (reference2[len] / 2 - element[len] / 2);
break;
}
}
return offsets;
}
function detectOverflow(state, options) {
if (options === void 0) {
options = {};
}
var _options = options, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, _options$strategy = _options.strategy, strategy = _options$strategy === void 0 ? state.strategy : _options$strategy, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, _options$elementConte = _options.elementContext, elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, _options$altBoundary = _options.altBoundary, altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, _options$padding = _options.padding, padding = _options$padding === void 0 ? 0 : _options$padding;
var paddingObject = mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements));
var altContext = elementContext === popper ? reference : popper;
var popperRect = state.rects.popper;
var element = state.elements[altBoundary ? altContext : elementContext];
var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);
var referenceClientRect = getBoundingClientRect(state.elements.reference);
var popperOffsets2 = computeOffsets({
reference: referenceClientRect,
element: popperRect,
strategy: "absolute",
placement
});
var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets2));
var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect;
var overflowOffsets = {
top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
right: elementClientRect.right - clippingClientRect.right + paddingObject.right
};
var offsetData = state.modifiersData.offset;
if (elementContext === popper && offsetData) {
var offset2 = offsetData[placement];
Object.keys(overflowOffsets).forEach(function(key) {
var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
var axis = [top, bottom].indexOf(key) >= 0 ? "y" : "x";
overflowOffsets[key] += offset2[axis] * multiply;
});
}
return overflowOffsets;
}
function computeAutoPlacement(state, options) {
if (options === void 0) {
options = {};
}
var _options = options, placement = _options.placement, boundary = _options.boundary, rootBoundary = _options.rootBoundary, padding = _options.padding, flipVariations = _options.flipVariations, _options$allowedAutoP = _options.allowedAutoPlacements, allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP;
var variation = getVariation(placement);
var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function(placement2) {
return getVariation(placement2) === variation;
}) : basePlacements;
var allowedPlacements = placements$1.filter(function(placement2) {
return allowedAutoPlacements.indexOf(placement2) >= 0;
});
if (allowedPlacements.length === 0) {
allowedPlacements = placements$1;
}
var overflows = allowedPlacements.reduce(function(acc, placement2) {
acc[placement2] = detectOverflow(state, {
placement: placement2,
boundary,
rootBoundary,
padding
})[getBasePlacement(placement2)];
return acc;
}, {});
return Object.keys(overflows).sort(function(a2, b2) {
return overflows[a2] - overflows[b2];
});
}
function getExpandedFallbackPlacements(placement) {
if (getBasePlacement(placement) === auto) {
return [];
}
var oppositePlacement = getOppositePlacement(placement);
return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];
}
function flip(_ref) {
var state = _ref.state, options = _ref.options, name = _ref.name;
if (state.modifiersData[name]._skip) {
return;
}
var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, specifiedFallbackPlacements = options.fallbackPlacements, padding = options.padding, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, _options$flipVariatio = options.flipVariations, flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, allowedAutoPlacements = options.allowedAutoPlacements;
var preferredPlacement = state.options.placement;
var basePlacement = getBasePlacement(preferredPlacement);
var isBasePlacement = basePlacement === preferredPlacement;
var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));
var placements2 = [preferredPlacement].concat(fallbackPlacements).reduce(function(acc, placement2) {
return acc.concat(getBasePlacement(placement2) === auto ? computeAutoPlacement(state, {
placement: placement2,
boundary,
rootBoundary,
padding,
flipVariations,
allowedAutoPlacements
}) : placement2);
}, []);
var referenceRect = state.rects.reference;
var popperRect = state.rects.popper;
var checksMap = /* @__PURE__ */ new Map();
var makeFallbackChecks = true;
var firstFittingPlacement = placements2[0];
for (var i = 0; i < placements2.length; i++) {
var placement = placements2[i];
var _basePlacement = getBasePlacement(placement);
var isStartVariation = getVariation(placement) === start;
var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;
var len = isVertical ? "width" : "height";
var overflow = detectOverflow(state, {
placement,
boundary,
rootBoundary,
altBoundary,
padding
});
var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;
if (referenceRect[len] > popperRect[len]) {
mainVariationSide = getOppositePlacement(mainVariationSide);
}
var altVariationSide = getOppositePlacement(mainVariationSide);
var checks = [];
if (checkMainAxis) {
checks.push(overflow[_basePlacement] <= 0);
}
if (checkAltAxis) {
checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);
}
if (checks.every(function(check2) {
return check2;
})) {
firstFittingPlacement = placement;
makeFallbackChecks = false;
break;
}
checksMap.set(placement, checks);
}
if (makeFallbackChecks) {
var numberOfChecks = flipVariations ? 3 : 1;
var _loop = function _loop2(_i2) {
var fittingPlacement = placements2.find(function(placement2) {
var checks2 = checksMap.get(placement2);
if (checks2) {
return checks2.slice(0, _i2).every(function(check2) {
return check2;
});
}
});
if (fittingPlacement) {
firstFittingPlacement = fittingPlacement;
return "break";
}
};
for (var _i = numberOfChecks; _i > 0; _i--) {
var _ret = _loop(_i);
if (_ret === "break")
break;
}
}
if (state.placement !== firstFittingPlacement) {
state.modifiersData[name]._skip = true;
state.placement = firstFittingPlacement;
state.reset = true;
}
}
var flip$1 = {
name: "flip",
enabled: true,
phase: "main",
fn: flip,
requiresIfExists: ["offset"],
data: {
_skip: false
}
};
function getSideOffsets(overflow, rect, preventedOffsets) {
if (preventedOffsets === void 0) {
preventedOffsets = {
x: 0,
y: 0
};
}
return {
top: overflow.top - rect.height - preventedOffsets.y,
right: overflow.right - rect.width + preventedOffsets.x,
bottom: overflow.bottom - rect.height + preventedOffsets.y,
left: overflow.left - rect.width - preventedOffsets.x
};
}
function isAnySideFullyClipped(overflow) {
return [top, right, bottom, left].some(function(side) {
return overflow[side] >= 0;
});
}
function hide(_ref) {
var state = _ref.state, name = _ref.name;
var referenceRect = state.rects.reference;
var popperRect = state.rects.popper;
var preventedOffsets = state.modifiersData.preventOverflow;
var referenceOverflow = detectOverflow(state, {
elementContext: "reference"
});
var popperAltOverflow = detectOverflow(state, {
altBoundary: true
});
var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);
var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);
var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);
var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);
state.modifiersData[name] = {
referenceClippingOffsets,
popperEscapeOffsets,
isReferenceHidden,
hasPopperEscaped
};
state.attributes.popper = Object.assign({}, state.attributes.popper, {
"data-popper-reference-hidden": isReferenceHidden,
"data-popper-escaped": hasPopperEscaped
});
}
var hide$1 = {
name: "hide",
enabled: true,
phase: "main",
requiresIfExists: ["preventOverflow"],
fn: hide
};
function distanceAndSkiddingToXY(placement, rects, offset2) {
var basePlacement = getBasePlacement(placement);
var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;
var _ref = typeof offset2 === "function" ? offset2(Object.assign({}, rects, {
placement
})) : offset2, skidding = _ref[0], distance = _ref[1];
skidding = skidding || 0;
distance = (distance || 0) * invertDistance;
return [left, right].indexOf(basePlacement) >= 0 ? {
x: distance,
y: skidding
} : {
x: skidding,
y: distance
};
}
function offset(_ref2) {
var state = _ref2.state, options = _ref2.options, name = _ref2.name;
var _options$offset = options.offset, offset2 = _options$offset === void 0 ? [0, 0] : _options$offset;
var data2 = placements.reduce(function(acc, placement) {
acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset2);
return acc;
}, {});
var _data$state$placement = data2[state.placement], x2 = _data$state$placement.x, y = _data$state$placement.y;
if (state.modifiersData.popperOffsets != null) {
state.modifiersData.popperOffsets.x += x2;
state.modifiersData.popperOffsets.y += y;
}
state.modifiersData[name] = data2;
}
var offset$1 = {
name: "offset",
enabled: true,
phase: "main",
requires: ["popperOffsets"],
fn: offset
};
function popperOffsets(_ref) {
var state = _ref.state, name = _ref.name;
state.modifiersData[name] = computeOffsets({
reference: state.rects.reference,
element: state.rects.popper,
strategy: "absolute",
placement: state.placement
});
}
var popperOffsets$1 = {
name: "popperOffsets",
enabled: true,
phase: "read",
fn: popperOffsets,
data: {}
};
function getAltAxis(axis) {
return axis === "x" ? "y" : "x";
}
function preventOverflow(_ref) {
var state = _ref.state, options = _ref.options, name = _ref.name;
var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, padding = options.padding, _options$tether = options.tether, tether = _options$tether === void 0 ? true : _options$tether, _options$tetherOffset = options.tetherOffset, tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;
var overflow = detectOverflow(state, {
boundary,
rootBoundary,
padding,
altBoundary
});
var basePlacement = getBasePlacement(state.placement);
var variation = getVariation(state.placement);
var isBasePlacement = !variation;
var mainAxis = getMainAxisFromPlacement(basePlacement);
var altAxis = getAltAxis(mainAxis);
var popperOffsets2 = state.modifiersData.popperOffsets;
var referenceRect = state.rects.reference;
var popperRect = state.rects.popper;
var tetherOffsetValue = typeof tetherOffset === "function" ? tetherOffset(Object.assign({}, state.rects, {
placement: state.placement
})) : tetherOffset;
var normalizedTetherOffsetValue = typeof tetherOffsetValue === "number" ? {
mainAxis: tetherOffsetValue,
altAxis: tetherOffsetValue
} : Object.assign({
mainAxis: 0,
altAxis: 0
}, tetherOffsetValue);
var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;
var data2 = {
x: 0,
y: 0
};
if (!popperOffsets2) {
return;
}
if (checkMainAxis) {
var _offsetModifierState$;
var mainSide = mainAxis === "y" ? top : left;
var altSide = mainAxis === "y" ? bottom : right;
var len = mainAxis === "y" ? "height" : "width";
var offset2 = popperOffsets2[mainAxis];
var min$1 = offset2 + overflow[mainSide];
var max$1 = offset2 - overflow[altSide];
var additive = tether ? -popperRect[len] / 2 : 0;
var minLen = variation === start ? referenceRect[len] : popperRect[len];
var maxLen = variation === start ? -popperRect[len] : -referenceRect[len];
var arrowElement = state.elements.arrow;
var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {
width: 0,
height: 0
};
var arrowPaddingObject = state.modifiersData["arrow#persistent"] ? state.modifiersData["arrow#persistent"].padding : getFreshSideObject();
var arrowPaddingMin = arrowPaddingObject[mainSide];
var arrowPaddingMax = arrowPaddingObject[altSide];
var arrowLen = within(0, referenceRect[len], arrowRect[len]);
var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;
var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;
var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);
var clientOffset = arrowOffsetParent ? mainAxis === "y" ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;
var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;
var tetherMin = offset2 + minOffset - offsetModifierValue - clientOffset;
var tetherMax = offset2 + maxOffset - offsetModifierValue;
var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset2, tether ? max(max$1, tetherMax) : max$1);
popperOffsets2[mainAxis] = preventedOffset;
data2[mainAxis] = preventedOffset - offset2;
}
if (checkAltAxis) {
var _offsetModifierState$2;
var _mainSide = mainAxis === "x" ? top : left;
var _altSide = mainAxis === "x" ? bottom : right;
var _offset = popperOffsets2[altAxis];
var _len = altAxis === "y" ? "height" : "width";
var _min = _offset + overflow[_mainSide];
var _max = _offset - overflow[_altSide];
var isOriginSide = [top, left].indexOf(basePlacement) !== -1;
var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;
var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;
var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;
var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);
popperOffsets2[altAxis] = _preventedOffset;
data2[altAxis] = _preventedOffset - _offset;
}
state.modifiersData[name] = data2;
}
var preventOverflow$1 = {
name: "preventOverflow",
enabled: true,
phase: "main",
fn: preventOverflow,
requiresIfExists: ["offset"]
};
function getHTMLElementScroll(element) {
return {
scrollLeft: element.scrollLeft,
scrollTop: element.scrollTop
};
}
function getNodeScroll(node) {
if (node === getWindow(node) || !isHTMLElement(node)) {
return getWindowScroll(node);
} else {
return getHTMLElementScroll(node);
}
}
function isElementScaled(element) {
var rect = element.getBoundingClientRect();
var scaleX = round(rect.width) / element.offsetWidth || 1;
var scaleY = round(rect.height) / element.offsetHeight || 1;
return scaleX !== 1 || scaleY !== 1;
}
function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
if (isFixed === void 0) {
isFixed = false;
}
var isOffsetParentAnElement = isHTMLElement(offsetParent);
var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);
var documentElement = getDocumentElement(offsetParent);
var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);
var scroll = {
scrollLeft: 0,
scrollTop: 0
};
var offsets = {
x: 0,
y: 0
};
if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
if (getNodeName(offsetParent) !== "body" || isScrollParent(documentElement)) {
scroll = getNodeScroll(offsetParent);
}
if (isHTMLElement(offsetParent)) {
offsets = getBoundingClientRect(offsetParent, true);
offsets.x += offsetParent.clientLeft;
offsets.y += offsetParent.clientTop;
} else if (documentElement) {
offsets.x = getWindowScrollBarX(documentElement);
}
}
return {
x: rect.left + scroll.scrollLeft - offsets.x,
y: rect.top + scroll.scrollTop - offsets.y,
width: rect.width,
height: rect.height
};
}
function order(modifiers) {
var map = /* @__PURE__ */ new Map();
var visited = /* @__PURE__ */ new Set();
var result = [];
modifiers.forEach(function(modifier) {
map.set(modifier.name, modifier);
});
function sort(modifier) {
visited.add(modifier.name);
var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);
requires.forEach(function(dep) {
if (!visited.has(dep)) {
var depModifier = map.get(dep);
if (depModifier) {
sort(depModifier);
}
}
});
result.push(modifier);
}
modifiers.forEach(function(modifier) {
if (!visited.has(modifier.name)) {
sort(modifier);
}
});
return result;
}
function orderModifiers(modifiers) {
var orderedModifiers = order(modifiers);
return modifierPhases.reduce(function(acc, phase) {
return acc.concat(orderedModifiers.filter(function(modifier) {
return modifier.phase === phase;
}));
}, []);
}
function debounce(fn2) {
var pending;
return function() {
if (!pending) {
pending = new Promise(function(resolve) {
Promise.resolve().then(function() {
pending = void 0;
resolve(fn2());
});
});
}
return pending;
};
}
function mergeByName(modifiers) {
var merged = modifiers.reduce(function(merged2, current) {
var existing = merged2[current.name];
merged2[current.name] = existing ? Object.assign({}, existing, current, {
options: Object.assign({}, existing.options, current.options),
data: Object.assign({}, existing.data, current.data)
}) : current;
return merged2;
}, {});
return Object.keys(merged).map(function(key) {
return merged[key];
});
}
var DEFAULT_OPTIONS = {
placement: "bottom",
modifiers: [],
strategy: "absolute"
};
function areValidElements() {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return !args.some(function(element) {
return !(element && typeof element.getBoundingClientRect === "function");
});
}
function popperGenerator(generatorOptions) {
if (generatorOptions === void 0) {
generatorOptions = {};
}
var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers2 = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;
return function createPopper2(reference2, popper2, options) {
if (options === void 0) {
options = defaultOptions;
}
var state = {
placement: "bottom",
orderedModifiers: [],
options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),
modifiersData: {},
elements: {
reference: reference2,
popper: popper2
},
attributes: {},
styles: {}
};
var effectCleanupFns = [];
var isDestroyed = false;
var instance = {
state,
setOptions: function setOptions(setOptionsAction) {
var options2 = typeof setOptionsAction === "function" ? setOptionsAction(state.options) : setOptionsAction;
cleanupModifierEffects();
state.options = Object.assign({}, defaultOptions, state.options, options2);
state.scrollParents = {
reference: isElement(reference2) ? listScrollParents(reference2) : reference2.contextElement ? listScrollParents(reference2.contextElement) : [],
popper: listScrollParents(popper2)
};
var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers2, state.options.modifiers)));
state.orderedModifiers = orderedModifiers.filter(function(m2) {
return m2.enabled;
});
runModifierEffects();
return instance.update();
},
forceUpdate: function forceUpdate() {
if (isDestroyed) {
return;
}
var _state$elements = state.elements, reference3 = _state$elements.reference, popper3 = _state$elements.popper;
if (!areValidElements(reference3, popper3)) {
return;
}
state.rects = {
reference: getCompositeRect(reference3, getOffsetParent(popper3), state.options.strategy === "fixed"),
popper: getLayoutRect(popper3)
};
state.reset = false;
state.placement = state.options.placement;
state.orderedModifiers.forEach(function(modifier) {
return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);
});
for (var index = 0; index < state.orderedModifiers.length; index++) {
if (state.reset === true) {
state.reset = false;
index = -1;
continue;
}
var _state$orderedModifie = state.orderedModifiers[index], fn2 = _state$orderedModifie.fn, _state$orderedModifie2 = _state$orderedModifie.options, _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, name = _state$orderedModifie.name;
if (typeof fn2 === "function") {
state = fn2({
state,
options: _options,
name,
instance
}) || state;
}
}
},
update: debounce(function() {
return new Promise(function(resolve) {
instance.forceUpdate();
resolve(state);
});
}),
destroy: function destroy() {
cleanupModifierEffects();
isDestroyed = true;
}
};
if (!areValidElements(reference2, popper2)) {
return instance;
}
instance.setOptions(options).then(function(state2) {
if (!isDestroyed && options.onFirstUpdate) {
options.onFirstUpdate(state2);
}
});
function runModifierEffects() {
state.orderedModifiers.forEach(function(_ref) {
var name = _ref.name, _ref$options = _ref.options, options2 = _ref$options === void 0 ? {} : _ref$options, effect2 = _ref.effect;
if (typeof effect2 === "function") {
var cleanupFn = effect2({
state,
name,
instance,
options: options2
});
var noopFn = function noopFn2() {
};
effectCleanupFns.push(cleanupFn || noopFn);
}
});
}
function cleanupModifierEffects() {
effectCleanupFns.forEach(function(fn2) {
return fn2();
});
effectCleanupFns = [];
}
return instance;
};
}
var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1];
var createPopper = /* @__PURE__ */ popperGenerator({
defaultModifiers
});
const POSITIONING_STRATEGIES = ["fixed", "absolute"];
const usePopperCoreConfigProps = buildProps({
boundariesPadding: {
type: Number,
default: 0
},
fallbackPlacements: {
type: definePropType(Array),
default: () => []
},
gpuAcceleration: {
type: Boolean,
default: true
},
offset: {
type: Number,
default: 12
},
placement: {
type: String,
values: placements,
default: "bottom"
},
popperOptions: {
type: definePropType(Object),
default: () => ({})
},
strategy: {
type: String,
values: POSITIONING_STRATEGIES,
default: "absolute"
}
});
const usePopperContentProps = buildProps(__spreadProps(__spreadValues({}, usePopperCoreConfigProps), {
style: { type: definePropType([String, Array, Object]) },
className: { type: definePropType([String, Array, Object]) },
effect: {
type: String,
default: "dark"
},
visible: Boolean,
enterable: {
type: Boolean,
default: true
},
pure: Boolean,
popperClass: {
type: definePropType([String, Array, Object])
},
popperStyle: {
type: definePropType([String, Array, Object])
},
referenceEl: {
type: definePropType(Object)
},
stopPopperMouseEvent: {
type: Boolean,
default: true
},
zIndex: Number
}));
const buildPopperOptions = (props, arrowProps) => {
const { placement, strategy, popperOptions: popperOptions2 } = props;
const options = __spreadProps(__spreadValues({
placement,
strategy
}, popperOptions2), {
modifiers: genModifiers(props)
});
attachArrow(options, arrowProps);
deriveExtraModifiers(options, popperOptions2 == null ? void 0 : popperOptions2.modifiers);
return options;
};
const unwrapMeasurableEl = ($el) => {
if (!isClient)
return;
return unrefElement($el);
};
function genModifiers(options) {
const { offset: offset2, gpuAcceleration, fallbackPlacements } = options;
return [
{
name: "offset",
options: {
offset: [0, offset2 != null ? offset2 : 12]
}
},
{
name: "preventOverflow",
options: {
padding: {
top: 2,
bottom: 2,
left: 5,
right: 5
}
}
},
{
name: "flip",
options: {
padding: 5,
fallbackPlacements: fallbackPlacements != null ? fallbackPlacements : []
}
},
{
name: "computeStyles",
options: {
gpuAcceleration,
adaptive: gpuAcceleration
}
}
];
}
function attachArrow(options, { arrowEl, arrowOffset }) {
options.modifiers.push({
name: "arrow",
options: {
element: arrowEl,
padding: arrowOffset != null ? arrowOffset : 5
}
});
}
function deriveExtraModifiers(options, modifiers) {
if (modifiers) {
options.modifiers = [...options.modifiers, ...modifiers != null ? modifiers : []];
}
}
const __default__$g = {
name: "ElPopperContent"
};
const _sfc_main$_ = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({}, __default__$g), {
props: usePopperContentProps,
emits: ["mouseenter", "mouseleave"],
setup(__props, { expose }) {
const props = __props;
const { popperInstanceRef, contentRef, triggerRef: triggerRef2 } = inject(POPPER_INJECTION_KEY, void 0);
const { nextZIndex } = useZIndex();
const ns = useNamespace("popper");
const popperContentRef = ref();
const arrowRef = ref();
const arrowOffset = ref();
provide(POPPER_CONTENT_INJECTION_KEY, {
arrowRef,
arrowOffset
});
const contentZIndex = ref(props.zIndex || nextZIndex());
const computedReference = computed(() => unwrapMeasurableEl(props.referenceEl) || unref(triggerRef2));
const contentStyle = computed(() => [{ zIndex: unref(contentZIndex) }, props.popperStyle]);
const contentClass = computed(() => [
ns.b(),
ns.is("pure", props.pure),
ns.is(props.effect),
props.popperClass
]);
const createPopperInstance = ({ referenceEl, popperContentEl, arrowEl }) => {
const options = buildPopperOptions(props, {
arrowEl,
arrowOffset: unref(arrowOffset)
});
return createPopper(referenceEl, popperContentEl, options);
};
const updatePopper = (shouldUpdateZIndex = true) => {
var _a2;
(_a2 = unref(popperInstanceRef)) == null ? void 0 : _a2.update();
shouldUpdateZIndex && (contentZIndex.value = props.zIndex || nextZIndex());
};
const togglePopperAlive = () => {
var _a2, _b2;
const monitorable = { name: "eventListeners", enabled: props.visible };
(_b2 = (_a2 = unref(popperInstanceRef)) == null ? void 0 : _a2.setOptions) == null ? void 0 : _b2.call(_a2, (options) => __spreadProps(__spreadValues({}, options), {
modifiers: [...options.modifiers || [], monitorable]
}));
updatePopper(false);
};
onMounted(() => {
let updateHandle;
watch(computedReference, (referenceEl) => {
var _a2;
updateHandle == null ? void 0 : updateHandle();
const popperInstance = unref(popperInstanceRef);
(_a2 = popperInstance == null ? void 0 : popperInstance.destroy) == null ? void 0 : _a2.call(popperInstance);
if (referenceEl) {
const popperContentEl = unref(popperContentRef);
contentRef.value = popperContentEl;
popperInstanceRef.value = createPopperInstance({
referenceEl,
popperContentEl,
arrowEl: unref(arrowRef)
});
updateHandle = watch(() => referenceEl.getBoundingClientRect(), () => updatePopper(), {
immediate: true
});
} else {
popperInstanceRef.value = void 0;
}
}, {
immediate: true
});
watch(() => props.visible, togglePopperAlive, { immediate: true });
watch(() => buildPopperOptions(props, {
arrowEl: unref(arrowRef),
arrowOffset: unref(arrowOffset)
}), (option) => {
var _a2;
return (_a2 = popperInstanceRef.value) == null ? void 0 : _a2.setOptions(option);
});
});
expose({
popperContentRef,
popperInstanceRef,
updatePopper,
contentStyle
});
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", {
ref_key: "popperContentRef",
ref: popperContentRef,
style: normalizeStyle(unref(contentStyle)),
class: normalizeClass(unref(contentClass)),
role: "tooltip",
onMouseenter: _cache[0] || (_cache[0] = (e) => _ctx.$emit("mouseenter", e)),
onMouseleave: _cache[1] || (_cache[1] = (e) => _ctx.$emit("mouseleave", e))
}, [
renderSlot(_ctx.$slots, "default")
], 38);
};
}
}));
var ElPopperContent = /* @__PURE__ */ _export_sfc$1(_sfc_main$_, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/popper/src/content.vue"]]);
function useDeprecateAppendToBody(scope, from) {
const vm = getCurrentInstance();
const compatTeleported = computed(() => {
return isBoolean(vm.props[from]) ? vm.props[from] : vm.props.teleported;
});
useDeprecated({
scope,
from,
replacement: "teleported",
version: "2.1.0",
ref: "https://element-plus.org/en-US/component/tooltip.html#attributes"
}, computed(() => isBoolean(vm.props[from])));
return {
compatTeleported
};
}
const ElPopper = withInstall(Popper);
const _sfc_main$Z = defineComponent({
name: "ElVisuallyHidden",
props: {
style: {
type: [String, Object, Array]
}
},
setup(props) {
return {
computedStyle: computed(() => {
return [
props.style,
{
position: "absolute",
border: 0,
width: 1,
height: 1,
padding: 0,
margin: -1,
overflow: "hidden",
clip: "rect(0, 0, 0, 0)",
whiteSpace: "nowrap",
wordWrap: "normal"
}
];
})
};
}
});
function _sfc_render$A(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("span", mergeProps(_ctx.$attrs, { style: _ctx.computedStyle }), [
renderSlot(_ctx.$slots, "default")
], 16);
}
var ElVisuallyHidden = /* @__PURE__ */ _export_sfc$1(_sfc_main$Z, [["render", _sfc_render$A], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/visual-hidden/src/visual-hidden.vue"]]);
const useTooltipContentProps = buildProps(__spreadProps(__spreadValues(__spreadValues({}, useDelayedToggleProps), usePopperContentProps), {
appendTo: {
type: definePropType([String, Object]),
default: POPPER_CONTAINER_SELECTOR
},
content: {
type: String,
default: ""
},
rawContent: {
type: Boolean,
default: false
},
persistent: Boolean,
ariaLabel: String,
visible: {
type: definePropType(Boolean),
default: null
},
transition: {
type: String,
default: "el-fade-in-linear"
},
teleported: {
type: Boolean,
default: true
},
disabled: {
type: Boolean
}
}));
const useTooltipTriggerProps = buildProps(__spreadProps(__spreadValues({}, usePopperTriggerProps), {
disabled: Boolean,
trigger: {
type: definePropType([String, Array]),
default: "hover"
}
}));
const useTooltipProps = buildProps({
openDelay: {
type: Number
},
visibleArrow: {
type: Boolean,
default: void 0
},
hideAfter: {
type: Number,
default: 200
},
showArrow: {
type: Boolean,
default: true
}
});
const TOOLTIP_INJECTION_KEY = Symbol("elTooltip");
const _sfc_main$Y = defineComponent({
name: "ElTooltipContent",
components: {
ElPopperContent,
ElVisuallyHidden
},
inheritAttrs: false,
props: useTooltipContentProps,
setup(props) {
const contentRef = ref(null);
const intermediateOpen = ref(false);
const entering = ref(false);
const leaving = ref(false);
const destroyed = ref(false);
const {
controlled,
id,
open,
trigger,
onClose,
onOpen,
onShow,
onHide,
onBeforeShow,
onBeforeHide
} = inject(TOOLTIP_INJECTION_KEY, void 0);
const persistentRef = computed(() => {
return props.persistent;
});
onBeforeUnmount(() => {
destroyed.value = true;
});
const shouldRender = computed(() => {
return unref(persistentRef) ? true : unref(open);
});
const shouldShow = computed(() => {
return props.disabled ? false : unref(open);
});
const contentStyle = computed(() => {
var _a2;
return (_a2 = props.style) != null ? _a2 : {};
});
const ariaHidden = computed(() => !unref(open));
useEscapeKeydown(onClose);
const onTransitionLeave = () => {
onHide();
};
const stopWhenControlled = () => {
if (unref(controlled))
return true;
};
const onContentEnter = composeEventHandlers(stopWhenControlled, () => {
if (props.enterable && unref(trigger) === "hover") {
onOpen();
}
});
const onContentLeave = composeEventHandlers(stopWhenControlled, () => {
if (unref(trigger) === "hover") {
onClose();
}
});
const onBeforeEnter = () => {
var _a2, _b2;
(_b2 = (_a2 = contentRef.value) == null ? void 0 : _a2.updatePopper) == null ? void 0 : _b2.call(_a2);
onBeforeShow == null ? void 0 : onBeforeShow();
};
const onBeforeLeave = () => {
onBeforeHide == null ? void 0 : onBeforeHide();
};
const onAfterShow = () => {
onShow();
};
let stopHandle;
watch(() => unref(open), (val) => {
if (val) {
stopHandle = onClickOutside(computed(() => {
var _a2;
return (_a2 = contentRef.value) == null ? void 0 : _a2.popperContentRef;
}), () => {
if (unref(controlled))
return;
const $trigger = unref(trigger);
if ($trigger !== "hover") {
onClose();
}
});
} else {
stopHandle == null ? void 0 : stopHandle();
}
}, {
flush: "post"
});
return {
ariaHidden,
entering,
leaving,
id,
intermediateOpen,
contentStyle,
contentRef,
destroyed,
shouldRender,
shouldShow,
open,
onAfterShow,
onBeforeEnter,
onBeforeLeave,
onContentEnter,
onContentLeave,
onTransitionLeave
};
}
});
function _sfc_render$z(_ctx, _cache, $props, $setup, $data, $options) {
const _component_el_visually_hidden = resolveComponent("el-visually-hidden");
const _component_el_popper_content = resolveComponent("el-popper-content");
return openBlock(), createBlock(Teleport, {
disabled: !_ctx.teleported,
to: _ctx.appendTo
}, [
createVNode(Transition, {
name: _ctx.transition,
onAfterLeave: _ctx.onTransitionLeave,
onBeforeEnter: _ctx.onBeforeEnter,
onAfterEnter: _ctx.onAfterShow,
onBeforeLeave: _ctx.onBeforeLeave
}, {
default: withCtx(() => [
_ctx.shouldRender ? withDirectives((openBlock(), createBlock(_component_el_popper_content, mergeProps({
key: 0,
ref: "contentRef"
}, _ctx.$attrs, {
"aria-hidden": _ctx.ariaHidden,
"boundaries-padding": _ctx.boundariesPadding,
"fallback-placements": _ctx.fallbackPlacements,
"gpu-acceleration": _ctx.gpuAcceleration,
offset: _ctx.offset,
placement: _ctx.placement,
"popper-options": _ctx.popperOptions,
strategy: _ctx.strategy,
effect: _ctx.effect,
enterable: _ctx.enterable,
pure: _ctx.pure,
"popper-class": _ctx.popperClass,
"popper-style": [_ctx.popperStyle, _ctx.contentStyle],
"reference-el": _ctx.referenceEl,
visible: _ctx.shouldShow,
"z-index": _ctx.zIndex,
onMouseenter: _ctx.onContentEnter,
onMouseleave: _ctx.onContentLeave
}), {
default: withCtx(() => [
createCommentVNode(" Workaround bug #6378 "),
!_ctx.destroyed ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
renderSlot(_ctx.$slots, "default"),
createVNode(_component_el_visually_hidden, {
id: _ctx.id,
role: "tooltip"
}, {
default: withCtx(() => [
createTextVNode(toDisplayString(_ctx.ariaLabel), 1)
]),
_: 1
}, 8, ["id"])
], 64)) : createCommentVNode("v-if", true)
]),
_: 3
}, 16, ["aria-hidden", "boundaries-padding", "fallback-placements", "gpu-acceleration", "offset", "placement", "popper-options", "strategy", "effect", "enterable", "pure", "popper-class", "popper-style", "reference-el", "visible", "z-index", "onMouseenter", "onMouseleave"])), [
[vShow, _ctx.shouldShow]
]) : createCommentVNode("v-if", true)
]),
_: 3
}, 8, ["name", "onAfterLeave", "onBeforeEnter", "onAfterEnter", "onBeforeLeave"])
], 8, ["disabled", "to"]);
}
var ElTooltipContent = /* @__PURE__ */ _export_sfc$1(_sfc_main$Y, [["render", _sfc_render$z], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/tooltip/src/content.vue"]]);
const isTriggerType = (trigger, type4) => {
if (isArray(trigger)) {
return trigger.includes(type4);
}
return trigger === type4;
};
const whenTrigger = (trigger, type4, handler3) => {
return (e) => {
isTriggerType(unref(trigger), type4) && handler3(e);
};
};
const _sfc_main$X = defineComponent({
name: "ElTooltipTrigger",
components: {
ElPopperTrigger
},
props: useTooltipTriggerProps,
setup(props) {
const ns = useNamespace("tooltip");
const { controlled, id, open, onOpen, onClose, onToggle } = inject(TOOLTIP_INJECTION_KEY, void 0);
const triggerRef2 = ref(null);
const stopWhenControlledOrDisabled = () => {
if (unref(controlled) || props.disabled) {
return true;
}
};
const trigger = toRef(props, "trigger");
const onMouseenter = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "hover", onOpen));
const onMouseleave = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "hover", onClose));
const onClick = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "click", (e) => {
if (e.button === 0) {
onToggle(e);
}
}));
const onFocus = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "focus", onOpen));
const onBlur = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "focus", onClose));
const onContextMenu = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "contextmenu", (e) => {
e.preventDefault();
onToggle(e);
}));
const onKeydown = composeEventHandlers(stopWhenControlledOrDisabled, (e) => {
const { code } = e;
if (code === EVENT_CODE.enter || code === EVENT_CODE.space) {
onToggle(e);
}
});
return {
onBlur,
onContextMenu,
onFocus,
onMouseenter,
onMouseleave,
onClick,
onKeydown,
open,
id,
triggerRef: triggerRef2,
ns
};
}
});
function _sfc_render$y(_ctx, _cache, $props, $setup, $data, $options) {
const _component_el_popper_trigger = resolveComponent("el-popper-trigger");
return openBlock(), createBlock(_component_el_popper_trigger, {
id: _ctx.id,
"virtual-ref": _ctx.virtualRef,
open: _ctx.open,
"virtual-triggering": _ctx.virtualTriggering,
class: normalizeClass(_ctx.ns.e("trigger")),
onBlur: _ctx.onBlur,
onClick: _ctx.onClick,
onContextmenu: _ctx.onContextMenu,
onFocus: _ctx.onFocus,
onMouseenter: _ctx.onMouseenter,
onMouseleave: _ctx.onMouseleave,
onKeydown: _ctx.onKeydown
}, {
default: withCtx(() => [
renderSlot(_ctx.$slots, "default")
]),
_: 3
}, 8, ["id", "virtual-ref", "open", "virtual-triggering", "class", "onBlur", "onClick", "onContextmenu", "onFocus", "onMouseenter", "onMouseleave", "onKeydown"]);
}
var ElTooltipTrigger = /* @__PURE__ */ _export_sfc$1(_sfc_main$X, [["render", _sfc_render$y], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/tooltip/src/trigger.vue"]]);
const { useModelToggleProps, useModelToggle, useModelToggleEmits } = createModelToggleComposable("visible");
const _sfc_main$W = defineComponent({
name: "ElTooltip",
components: {
ElPopper,
ElPopperArrow,
ElTooltipContent,
ElTooltipTrigger
},
props: __spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues({}, useModelToggleProps), useTooltipContentProps), useTooltipTriggerProps), usePopperArrowProps), useTooltipProps),
emits: [...useModelToggleEmits, "before-show", "before-hide", "show", "hide"],
setup(props, { emit }) {
usePopperContainer();
const compatShowAfter = computed(() => {
if (!isUndefined(props.openDelay))
;
return props.openDelay || props.showAfter;
});
const compatShowArrow = computed(() => {
if (!isUndefined(props.visibleArrow))
;
return isBoolean(props.visibleArrow) ? props.visibleArrow : props.showArrow;
});
const id = useId();
const popperRef = ref(null);
const updatePopper = () => {
var _a2;
const popperComponent = unref(popperRef);
if (popperComponent) {
(_a2 = popperComponent.popperInstanceRef) == null ? void 0 : _a2.update();
}
};
const open = ref(false);
const { show, hide: hide2 } = useModelToggle({
indicator: open
});
const { onOpen, onClose } = useDelayedToggle({
showAfter: compatShowAfter,
hideAfter: toRef(props, "hideAfter"),
open: show,
close: hide2
});
const controlled = computed(() => isBoolean(props.visible));
provide(TOOLTIP_INJECTION_KEY, {
controlled,
id,
open: readonly(open),
trigger: toRef(props, "trigger"),
onOpen,
onClose,
onToggle: () => {
if (unref(open)) {
onClose();
} else {
onOpen();
}
},
onShow: () => {
emit("show");
},
onHide: () => {
emit("hide");
},
onBeforeShow: () => {
emit("before-show");
},
onBeforeHide: () => {
emit("before-hide");
},
updatePopper
});
watch(() => props.disabled, (disabled) => {
if (disabled && open.value) {
open.value = false;
}
});
return {
compatShowAfter,
compatShowArrow,
popperRef,
open,
hide: hide2,
updatePopper,
onOpen,
onClose
};
}
});
const _hoisted_1$C = ["innerHTML"];
const _hoisted_2$t = { key: 1 };
function _sfc_render$x(_ctx, _cache, $props, $setup, $data, $options) {
const _component_el_tooltip_trigger = resolveComponent("el-tooltip-trigger");
const _component_el_popper_arrow = resolveComponent("el-popper-arrow");
const _component_el_tooltip_content = resolveComponent("el-tooltip-content");
const _component_el_popper = resolveComponent("el-popper");
return openBlock(), createBlock(_component_el_popper, { ref: "popperRef" }, {
default: withCtx(() => [
createVNode(_component_el_tooltip_trigger, {
disabled: _ctx.disabled,
trigger: _ctx.trigger,
"virtual-ref": _ctx.virtualRef,
"virtual-triggering": _ctx.virtualTriggering
}, {
default: withCtx(() => [
_ctx.$slots.default ? renderSlot(_ctx.$slots, "default", { key: 0 }) : createCommentVNode("v-if", true)
]),
_: 3
}, 8, ["disabled", "trigger", "virtual-ref", "virtual-triggering"]),
createVNode(_component_el_tooltip_content, {
"aria-label": _ctx.ariaLabel,
"boundaries-padding": _ctx.boundariesPadding,
content: _ctx.content,
disabled: _ctx.disabled,
effect: _ctx.effect,
enterable: _ctx.enterable,
"fallback-placements": _ctx.fallbackPlacements,
"hide-after": _ctx.hideAfter,
"gpu-acceleration": _ctx.gpuAcceleration,
offset: _ctx.offset,
persistent: _ctx.persistent,
"popper-class": _ctx.popperClass,
"popper-style": _ctx.popperStyle,
placement: _ctx.placement,
"popper-options": _ctx.popperOptions,
pure: _ctx.pure,
"raw-content": _ctx.rawContent,
"reference-el": _ctx.referenceEl,
"show-after": _ctx.compatShowAfter,
strategy: _ctx.strategy,
teleported: _ctx.teleported,
transition: _ctx.transition,
"z-index": _ctx.zIndex,
"append-to": _ctx.appendTo
}, {
default: withCtx(() => [
renderSlot(_ctx.$slots, "content", {}, () => [
_ctx.rawContent ? (openBlock(), createElementBlock("span", {
key: 0,
innerHTML: _ctx.content
}, null, 8, _hoisted_1$C)) : (openBlock(), createElementBlock("span", _hoisted_2$t, toDisplayString(_ctx.content), 1))
]),
_ctx.compatShowArrow ? (openBlock(), createBlock(_component_el_popper_arrow, {
key: 0,
"arrow-offset": _ctx.arrowOffset
}, null, 8, ["arrow-offset"])) : createCommentVNode("v-if", true)
]),
_: 3
}, 8, ["aria-label", "boundaries-padding", "content", "disabled", "effect", "enterable", "fallback-placements", "hide-after", "gpu-acceleration", "offset", "persistent", "popper-class", "popper-style", "placement", "popper-options", "pure", "raw-content", "reference-el", "show-after", "strategy", "teleported", "transition", "z-index", "append-to"])
]),
_: 3
}, 512);
}
var Tooltip = /* @__PURE__ */ _export_sfc$1(_sfc_main$W, [["render", _sfc_render$x], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/tooltip/src/tooltip.vue"]]);
const ElTooltip = withInstall(Tooltip);
const buttonTypes = [
"default",
"primary",
"success",
"warning",
"info",
"danger",
"text",
""
];
const buttonNativeTypes = ["button", "submit", "reset"];
const buttonProps = buildProps({
size: useSizeProp,
disabled: Boolean,
type: {
type: String,
values: buttonTypes,
default: ""
},
icon: {
type: iconPropType,
default: ""
},
nativeType: {
type: String,
values: buttonNativeTypes,
default: "button"
},
loading: Boolean,
loadingIcon: {
type: iconPropType,
default: () => loading
},
plain: Boolean,
autofocus: Boolean,
round: Boolean,
circle: Boolean,
color: String,
dark: Boolean,
autoInsertSpace: {
type: Boolean,
default: void 0
}
});
const buttonEmits = {
click: (evt) => evt instanceof MouseEvent
};
function bound01(n, max2) {
if (isOnePointZero(n)) {
n = "100%";
}
var isPercent = isPercentage(n);
n = max2 === 360 ? n : Math.min(max2, Math.max(0, parseFloat(n)));
if (isPercent) {
n = parseInt(String(n * max2), 10) / 100;
}
if (Math.abs(n - max2) < 1e-6) {
return 1;
}
if (max2 === 360) {
n = (n < 0 ? n % max2 + max2 : n % max2) / parseFloat(String(max2));
} else {
n = n % max2 / parseFloat(String(max2));
}
return n;
}
function clamp01(val) {
return Math.min(1, Math.max(0, val));
}
function isOnePointZero(n) {
return typeof n === "string" && n.indexOf(".") !== -1 && parseFloat(n) === 1;
}
function isPercentage(n) {
return typeof n === "string" && n.indexOf("%") !== -1;
}
function boundAlpha(a2) {
a2 = parseFloat(a2);
if (isNaN(a2) || a2 < 0 || a2 > 1) {
a2 = 1;
}
return a2;
}
function convertToPercentage(n) {
if (n <= 1) {
return "".concat(Number(n) * 100, "%");
}
return n;
}
function pad2(c2) {
return c2.length === 1 ? "0" + c2 : String(c2);
}
function rgbToRgb(r, g, b2) {
return {
r: bound01(r, 255) * 255,
g: bound01(g, 255) * 255,
b: bound01(b2, 255) * 255
};
}
function rgbToHsl(r, g, b2) {
r = bound01(r, 255);
g = bound01(g, 255);
b2 = bound01(b2, 255);
var max2 = Math.max(r, g, b2);
var min2 = Math.min(r, g, b2);
var h2 = 0;
var s2 = 0;
var l2 = (max2 + min2) / 2;
if (max2 === min2) {
s2 = 0;
h2 = 0;
} else {
var d2 = max2 - min2;
s2 = l2 > 0.5 ? d2 / (2 - max2 - min2) : d2 / (max2 + min2);
switch (max2) {
case r:
h2 = (g - b2) / d2 + (g < b2 ? 6 : 0);
break;
case g:
h2 = (b2 - r) / d2 + 2;
break;
case b2:
h2 = (r - g) / d2 + 4;
break;
}
h2 /= 6;
}
return { h: h2, s: s2, l: l2 };
}
function hue2rgb(p2, q, t) {
if (t < 0) {
t += 1;
}
if (t > 1) {
t -= 1;
}
if (t < 1 / 6) {
return p2 + (q - p2) * (6 * t);
}
if (t < 1 / 2) {
return q;
}
if (t < 2 / 3) {
return p2 + (q - p2) * (2 / 3 - t) * 6;
}
return p2;
}
function hslToRgb(h2, s2, l2) {
var r;
var g;
var b2;
h2 = bound01(h2, 360);
s2 = bound01(s2, 100);
l2 = bound01(l2, 100);
if (s2 === 0) {
g = l2;
b2 = l2;
r = l2;
} else {
var q = l2 < 0.5 ? l2 * (1 + s2) : l2 + s2 - l2 * s2;
var p2 = 2 * l2 - q;
r = hue2rgb(p2, q, h2 + 1 / 3);
g = hue2rgb(p2, q, h2);
b2 = hue2rgb(p2, q, h2 - 1 / 3);
}
return { r: r * 255, g: g * 255, b: b2 * 255 };
}
function rgbToHsv(r, g, b2) {
r = bound01(r, 255);
g = bound01(g, 255);
b2 = bound01(b2, 255);
var max2 = Math.max(r, g, b2);
var min2 = Math.min(r, g, b2);
var h2 = 0;
var v2 = max2;
var d2 = max2 - min2;
var s2 = max2 === 0 ? 0 : d2 / max2;
if (max2 === min2) {
h2 = 0;
} else {
switch (max2) {
case r:
h2 = (g - b2) / d2 + (g < b2 ? 6 : 0);
break;
case g:
h2 = (b2 - r) / d2 + 2;
break;
case b2:
h2 = (r - g) / d2 + 4;
break;
}
h2 /= 6;
}
return { h: h2, s: s2, v: v2 };
}
function hsvToRgb(h2, s2, v2) {
h2 = bound01(h2, 360) * 6;
s2 = bound01(s2, 100);
v2 = bound01(v2, 100);
var i = Math.floor(h2);
var f2 = h2 - i;
var p2 = v2 * (1 - s2);
var q = v2 * (1 - f2 * s2);
var t = v2 * (1 - (1 - f2) * s2);
var mod = i % 6;
var r = [v2, q, p2, p2, t, v2][mod];
var g = [t, v2, v2, q, p2, p2][mod];
var b2 = [p2, p2, t, v2, v2, q][mod];
return { r: r * 255, g: g * 255, b: b2 * 255 };
}
function rgbToHex(r, g, b2, allow3Char) {
var hex2 = [
pad2(Math.round(r).toString(16)),
pad2(Math.round(g).toString(16)),
pad2(Math.round(b2).toString(16))
];
if (allow3Char && hex2[0].startsWith(hex2[0].charAt(1)) && hex2[1].startsWith(hex2[1].charAt(1)) && hex2[2].startsWith(hex2[2].charAt(1))) {
return hex2[0].charAt(0) + hex2[1].charAt(0) + hex2[2].charAt(0);
}
return hex2.join("");
}
function rgbaToHex(r, g, b2, a2, allow4Char) {
var hex2 = [
pad2(Math.round(r).toString(16)),
pad2(Math.round(g).toString(16)),
pad2(Math.round(b2).toString(16)),
pad2(convertDecimalToHex(a2))
];
if (allow4Char && hex2[0].startsWith(hex2[0].charAt(1)) && hex2[1].startsWith(hex2[1].charAt(1)) && hex2[2].startsWith(hex2[2].charAt(1)) && hex2[3].startsWith(hex2[3].charAt(1))) {
return hex2[0].charAt(0) + hex2[1].charAt(0) + hex2[2].charAt(0) + hex2[3].charAt(0);
}
return hex2.join("");
}
function convertDecimalToHex(d2) {
return Math.round(parseFloat(d2) * 255).toString(16);
}
function convertHexToDecimal(h2) {
return parseIntFromHex(h2) / 255;
}
function parseIntFromHex(val) {
return parseInt(val, 16);
}
function numberInputToObject(color) {
return {
r: color >> 16,
g: (color & 65280) >> 8,
b: color & 255
};
}
var names = {
aliceblue: "#f0f8ff",
antiquewhite: "#faebd7",
aqua: "#00ffff",
aquamarine: "#7fffd4",
azure: "#f0ffff",
beige: "#f5f5dc",
bisque: "#ffe4c4",
black: "#000000",
blanchedalmond: "#ffebcd",
blue: "#0000ff",
blueviolet: "#8a2be2",
brown: "#a52a2a",
burlywood: "#deb887",
cadetblue: "#5f9ea0",
chartreuse: "#7fff00",
chocolate: "#d2691e",
coral: "#ff7f50",
cornflowerblue: "#6495ed",
cornsilk: "#fff8dc",
crimson: "#dc143c",
cyan: "#00ffff",
darkblue: "#00008b",
darkcyan: "#008b8b",
darkgoldenrod: "#b8860b",
darkgray: "#a9a9a9",
darkgreen: "#006400",
darkgrey: "#a9a9a9",
darkkhaki: "#bdb76b",
darkmagenta: "#8b008b",
darkolivegreen: "#556b2f",
darkorange: "#ff8c00",
darkorchid: "#9932cc",
darkred: "#8b0000",
darksalmon: "#e9967a",
darkseagreen: "#8fbc8f",
darkslateblue: "#483d8b",
darkslategray: "#2f4f4f",
darkslategrey: "#2f4f4f",
darkturquoise: "#00ced1",
darkviolet: "#9400d3",
deeppink: "#ff1493",
deepskyblue: "#00bfff",
dimgray: "#696969",
dimgrey: "#696969",
dodgerblue: "#1e90ff",
firebrick: "#b22222",
floralwhite: "#fffaf0",
forestgreen: "#228b22",
fuchsia: "#ff00ff",
gainsboro: "#dcdcdc",
ghostwhite: "#f8f8ff",
goldenrod: "#daa520",
gold: "#ffd700",
gray: "#808080",
green: "#008000",
greenyellow: "#adff2f",
grey: "#808080",
honeydew: "#f0fff0",
hotpink: "#ff69b4",
indianred: "#cd5c5c",
indigo: "#4b0082",
ivory: "#fffff0",
khaki: "#f0e68c",
lavenderblush: "#fff0f5",
lavender: "#e6e6fa",
lawngreen: "#7cfc00",
lemonchiffon: "#fffacd",
lightblue: "#add8e6",
lightcoral: "#f08080",
lightcyan: "#e0ffff",
lightgoldenrodyellow: "#fafad2",
lightgray: "#d3d3d3",
lightgreen: "#90ee90",
lightgrey: "#d3d3d3",
lightpink: "#ffb6c1",
lightsalmon: "#ffa07a",
lightseagreen: "#20b2aa",
lightskyblue: "#87cefa",
lightslategray: "#778899",
lightslategrey: "#778899",
lightsteelblue: "#b0c4de",
lightyellow: "#ffffe0",
lime: "#00ff00",
limegreen: "#32cd32",
linen: "#faf0e6",
magenta: "#ff00ff",
maroon: "#800000",
mediumaquamarine: "#66cdaa",
mediumblue: "#0000cd",
mediumorchid: "#ba55d3",
mediumpurple: "#9370db",
mediumseagreen: "#3cb371",
mediumslateblue: "#7b68ee",
mediumspringgreen: "#00fa9a",
mediumturquoise: "#48d1cc",
mediumvioletred: "#c71585",
midnightblue: "#191970",
mintcream: "#f5fffa",
mistyrose: "#ffe4e1",
moccasin: "#ffe4b5",
navajowhite: "#ffdead",
navy: "#000080",
oldlace: "#fdf5e6",
olive: "#808000",
olivedrab: "#6b8e23",
orange: "#ffa500",
orangered: "#ff4500",
orchid: "#da70d6",
palegoldenrod: "#eee8aa",
palegreen: "#98fb98",
paleturquoise: "#afeeee",
palevioletred: "#db7093",
papayawhip: "#ffefd5",
peachpuff: "#ffdab9",
peru: "#cd853f",
pink: "#ffc0cb",
plum: "#dda0dd",
powderblue: "#b0e0e6",
purple: "#800080",
rebeccapurple: "#663399",
red: "#ff0000",
rosybrown: "#bc8f8f",
royalblue: "#4169e1",
saddlebrown: "#8b4513",
salmon: "#fa8072",
sandybrown: "#f4a460",
seagreen: "#2e8b57",
seashell: "#fff5ee",
sienna: "#a0522d",
silver: "#c0c0c0",
skyblue: "#87ceeb",
slateblue: "#6a5acd",
slategray: "#708090",
slategrey: "#708090",
snow: "#fffafa",
springgreen: "#00ff7f",
steelblue: "#4682b4",
tan: "#d2b48c",
teal: "#008080",
thistle: "#d8bfd8",
tomato: "#ff6347",
turquoise: "#40e0d0",
violet: "#ee82ee",
wheat: "#f5deb3",
white: "#ffffff",
whitesmoke: "#f5f5f5",
yellow: "#ffff00",
yellowgreen: "#9acd32"
};
function inputToRGB(color) {
var rgb = { r: 0, g: 0, b: 0 };
var a2 = 1;
var s2 = null;
var v2 = null;
var l2 = null;
var ok = false;
var format2 = false;
if (typeof color === "string") {
color = stringInputToObject(color);
}
if (typeof color === "object") {
if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {
rgb = rgbToRgb(color.r, color.g, color.b);
ok = true;
format2 = String(color.r).substr(-1) === "%" ? "prgb" : "rgb";
} else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {
s2 = convertToPercentage(color.s);
v2 = convertToPercentage(color.v);
rgb = hsvToRgb(color.h, s2, v2);
ok = true;
format2 = "hsv";
} else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {
s2 = convertToPercentage(color.s);
l2 = convertToPercentage(color.l);
rgb = hslToRgb(color.h, s2, l2);
ok = true;
format2 = "hsl";
}
if (Object.prototype.hasOwnProperty.call(color, "a")) {
a2 = color.a;
}
}
a2 = boundAlpha(a2);
return {
ok,
format: color.format || format2,
r: Math.min(255, Math.max(rgb.r, 0)),
g: Math.min(255, Math.max(rgb.g, 0)),
b: Math.min(255, Math.max(rgb.b, 0)),
a: a2
};
}
var CSS_INTEGER = "[-\\+]?\\d+%?";
var CSS_NUMBER = "[-\\+]?\\d*\\.\\d+%?";
var CSS_UNIT = "(?:".concat(CSS_NUMBER, ")|(?:").concat(CSS_INTEGER, ")");
var PERMISSIVE_MATCH3 = "[\\s|\\(]+(".concat(CSS_UNIT, ")[,|\\s]+(").concat(CSS_UNIT, ")[,|\\s]+(").concat(CSS_UNIT, ")\\s*\\)?");
var PERMISSIVE_MATCH4 = "[\\s|\\(]+(".concat(CSS_UNIT, ")[,|\\s]+(").concat(CSS_UNIT, ")[,|\\s]+(").concat(CSS_UNIT, ")[,|\\s]+(").concat(CSS_UNIT, ")\\s*\\)?");
var matchers = {
CSS_UNIT: new RegExp(CSS_UNIT),
rgb: new RegExp("rgb" + PERMISSIVE_MATCH3),
rgba: new RegExp("rgba" + PERMISSIVE_MATCH4),
hsl: new RegExp("hsl" + PERMISSIVE_MATCH3),
hsla: new RegExp("hsla" + PERMISSIVE_MATCH4),
hsv: new RegExp("hsv" + PERMISSIVE_MATCH3),
hsva: new RegExp("hsva" + PERMISSIVE_MATCH4),
hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,
hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,
hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,
hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/
};
function stringInputToObject(color) {
color = color.trim().toLowerCase();
if (color.length === 0) {
return false;
}
var named = false;
if (names[color]) {
color = names[color];
named = true;
} else if (color === "transparent") {
return { r: 0, g: 0, b: 0, a: 0, format: "name" };
}
var match = matchers.rgb.exec(color);
if (match) {
return { r: match[1], g: match[2], b: match[3] };
}
match = matchers.rgba.exec(color);
if (match) {
return { r: match[1], g: match[2], b: match[3], a: match[4] };
}
match = matchers.hsl.exec(color);
if (match) {
return { h: match[1], s: match[2], l: match[3] };
}
match = matchers.hsla.exec(color);
if (match) {
return { h: match[1], s: match[2], l: match[3], a: match[4] };
}
match = matchers.hsv.exec(color);
if (match) {
return { h: match[1], s: match[2], v: match[3] };
}
match = matchers.hsva.exec(color);
if (match) {
return { h: match[1], s: match[2], v: match[3], a: match[4] };
}
match = matchers.hex8.exec(color);
if (match) {
return {
r: parseIntFromHex(match[1]),
g: parseIntFromHex(match[2]),
b: parseIntFromHex(match[3]),
a: convertHexToDecimal(match[4]),
format: named ? "name" : "hex8"
};
}
match = matchers.hex6.exec(color);
if (match) {
return {
r: parseIntFromHex(match[1]),
g: parseIntFromHex(match[2]),
b: parseIntFromHex(match[3]),
format: named ? "name" : "hex"
};
}
match = matchers.hex4.exec(color);
if (match) {
return {
r: parseIntFromHex(match[1] + match[1]),
g: parseIntFromHex(match[2] + match[2]),
b: parseIntFromHex(match[3] + match[3]),
a: convertHexToDecimal(match[4] + match[4]),
format: named ? "name" : "hex8"
};
}
match = matchers.hex3.exec(color);
if (match) {
return {
r: parseIntFromHex(match[1] + match[1]),
g: parseIntFromHex(match[2] + match[2]),
b: parseIntFromHex(match[3] + match[3]),
format: named ? "name" : "hex"
};
}
return false;
}
function isValidCSSUnit(color) {
return Boolean(matchers.CSS_UNIT.exec(String(color)));
}
var TinyColor = function() {
function TinyColor2(color, opts) {
if (color === void 0) {
color = "";
}
if (opts === void 0) {
opts = {};
}
var _a2;
if (color instanceof TinyColor2) {
return color;
}
if (typeof color === "number") {
color = numberInputToObject(color);
}
this.originalInput = color;
var rgb = inputToRGB(color);
this.originalInput = color;
this.r = rgb.r;
this.g = rgb.g;
this.b = rgb.b;
this.a = rgb.a;
this.roundA = Math.round(100 * this.a) / 100;
this.format = (_a2 = opts.format) !== null && _a2 !== void 0 ? _a2 : rgb.format;
this.gradientType = opts.gradientType;
if (this.r < 1) {
this.r = Math.round(this.r);
}
if (this.g < 1) {
this.g = Math.round(this.g);
}
if (this.b < 1) {
this.b = Math.round(this.b);
}
this.isValid = rgb.ok;
}
TinyColor2.prototype.isDark = function() {
return this.getBrightness() < 128;
};
TinyColor2.prototype.isLight = function() {
return !this.isDark();
};
TinyColor2.prototype.getBrightness = function() {
var rgb = this.toRgb();
return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1e3;
};
TinyColor2.prototype.getLuminance = function() {
var rgb = this.toRgb();
var R;
var G;
var B;
var RsRGB = rgb.r / 255;
var GsRGB = rgb.g / 255;
var BsRGB = rgb.b / 255;
if (RsRGB <= 0.03928) {
R = RsRGB / 12.92;
} else {
R = Math.pow((RsRGB + 0.055) / 1.055, 2.4);
}
if (GsRGB <= 0.03928) {
G = GsRGB / 12.92;
} else {
G = Math.pow((GsRGB + 0.055) / 1.055, 2.4);
}
if (BsRGB <= 0.03928) {
B = BsRGB / 12.92;
} else {
B = Math.pow((BsRGB + 0.055) / 1.055, 2.4);
}
return 0.2126 * R + 0.7152 * G + 0.0722 * B;
};
TinyColor2.prototype.getAlpha = function() {
return this.a;
};
TinyColor2.prototype.setAlpha = function(alpha) {
this.a = boundAlpha(alpha);
this.roundA = Math.round(100 * this.a) / 100;
return this;
};
TinyColor2.prototype.toHsv = function() {
var hsv = rgbToHsv(this.r, this.g, this.b);
return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this.a };
};
TinyColor2.prototype.toHsvString = function() {
var hsv = rgbToHsv(this.r, this.g, this.b);
var h2 = Math.round(hsv.h * 360);
var s2 = Math.round(hsv.s * 100);
var v2 = Math.round(hsv.v * 100);
return this.a === 1 ? "hsv(".concat(h2, ", ").concat(s2, "%, ").concat(v2, "%)") : "hsva(".concat(h2, ", ").concat(s2, "%, ").concat(v2, "%, ").concat(this.roundA, ")");
};
TinyColor2.prototype.toHsl = function() {
var hsl = rgbToHsl(this.r, this.g, this.b);
return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this.a };
};
TinyColor2.prototype.toHslString = function() {
var hsl = rgbToHsl(this.r, this.g, this.b);
var h2 = Math.round(hsl.h * 360);
var s2 = Math.round(hsl.s * 100);
var l2 = Math.round(hsl.l * 100);
return this.a === 1 ? "hsl(".concat(h2, ", ").concat(s2, "%, ").concat(l2, "%)") : "hsla(".concat(h2, ", ").concat(s2, "%, ").concat(l2, "%, ").concat(this.roundA, ")");
};
TinyColor2.prototype.toHex = function(allow3Char) {
if (allow3Char === void 0) {
allow3Char = false;
}
return rgbToHex(this.r, this.g, this.b, allow3Char);
};
TinyColor2.prototype.toHexString = function(allow3Char) {
if (allow3Char === void 0) {
allow3Char = false;
}
return "#" + this.toHex(allow3Char);
};
TinyColor2.prototype.toHex8 = function(allow4Char) {
if (allow4Char === void 0) {
allow4Char = false;
}
return rgbaToHex(this.r, this.g, this.b, this.a, allow4Char);
};
TinyColor2.prototype.toHex8String = function(allow4Char) {
if (allow4Char === void 0) {
allow4Char = false;
}
return "#" + this.toHex8(allow4Char);
};
TinyColor2.prototype.toRgb = function() {
return {
r: Math.round(this.r),
g: Math.round(this.g),
b: Math.round(this.b),
a: this.a
};
};
TinyColor2.prototype.toRgbString = function() {
var r = Math.round(this.r);
var g = Math.round(this.g);
var b2 = Math.round(this.b);
return this.a === 1 ? "rgb(".concat(r, ", ").concat(g, ", ").concat(b2, ")") : "rgba(".concat(r, ", ").concat(g, ", ").concat(b2, ", ").concat(this.roundA, ")");
};
TinyColor2.prototype.toPercentageRgb = function() {
var fmt = function(x2) {
return "".concat(Math.round(bound01(x2, 255) * 100), "%");
};
return {
r: fmt(this.r),
g: fmt(this.g),
b: fmt(this.b),
a: this.a
};
};
TinyColor2.prototype.toPercentageRgbString = function() {
var rnd = function(x2) {
return Math.round(bound01(x2, 255) * 100);
};
return this.a === 1 ? "rgb(".concat(rnd(this.r), "%, ").concat(rnd(this.g), "%, ").concat(rnd(this.b), "%)") : "rgba(".concat(rnd(this.r), "%, ").concat(rnd(this.g), "%, ").concat(rnd(this.b), "%, ").concat(this.roundA, ")");
};
TinyColor2.prototype.toName = function() {
if (this.a === 0) {
return "transparent";
}
if (this.a < 1) {
return false;
}
var hex2 = "#" + rgbToHex(this.r, this.g, this.b, false);
for (var _i = 0, _a2 = Object.entries(names); _i < _a2.length; _i++) {
var _b2 = _a2[_i], key = _b2[0], value = _b2[1];
if (hex2 === value) {
return key;
}
}
return false;
};
TinyColor2.prototype.toString = function(format2) {
var formatSet = Boolean(format2);
format2 = format2 !== null && format2 !== void 0 ? format2 : this.format;
var formattedString = false;
var hasAlpha = this.a < 1 && this.a >= 0;
var needsAlphaFormat = !formatSet && hasAlpha && (format2.startsWith("hex") || format2 === "name");
if (needsAlphaFormat) {
if (format2 === "name" && this.a === 0) {
return this.toName();
}
return this.toRgbString();
}
if (format2 === "rgb") {
formattedString = this.toRgbString();
}
if (format2 === "prgb") {
formattedString = this.toPercentageRgbString();
}
if (format2 === "hex" || format2 === "hex6") {
formattedString = this.toHexString();
}
if (format2 === "hex3") {
formattedString = this.toHexString(true);
}
if (format2 === "hex4") {
formattedString = this.toHex8String(true);
}
if (format2 === "hex8") {
formattedString = this.toHex8String();
}
if (format2 === "name") {
formattedString = this.toName();
}
if (format2 === "hsl") {
formattedString = this.toHslString();
}
if (format2 === "hsv") {
formattedString = this.toHsvString();
}
return formattedString || this.toHexString();
};
TinyColor2.prototype.toNumber = function() {
return (Math.round(this.r) << 16) + (Math.round(this.g) << 8) + Math.round(this.b);
};
TinyColor2.prototype.clone = function() {
return new TinyColor2(this.toString());
};
TinyColor2.prototype.lighten = function(amount) {
if (amount === void 0) {
amount = 10;
}
var hsl = this.toHsl();
hsl.l += amount / 100;
hsl.l = clamp01(hsl.l);
return new TinyColor2(hsl);
};
TinyColor2.prototype.brighten = function(amount) {
if (amount === void 0) {
amount = 10;
}
var rgb = this.toRgb();
rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100))));
rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100))));
rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100))));
return new TinyColor2(rgb);
};
TinyColor2.prototype.darken = function(amount) {
if (amount === void 0) {
amount = 10;
}
var hsl = this.toHsl();
hsl.l -= amount / 100;
hsl.l = clamp01(hsl.l);
return new TinyColor2(hsl);
};
TinyColor2.prototype.tint = function(amount) {
if (amount === void 0) {
amount = 10;
}
return this.mix("white", amount);
};
TinyColor2.prototype.shade = function(amount) {
if (amount === void 0) {
amount = 10;
}
return this.mix("black", amount);
};
TinyColor2.prototype.desaturate = function(amount) {
if (amount === void 0) {
amount = 10;
}
var hsl = this.toHsl();
hsl.s -= amount / 100;
hsl.s = clamp01(hsl.s);
return new TinyColor2(hsl);
};
TinyColor2.prototype.saturate = function(amount) {
if (amount === void 0) {
amount = 10;
}
var hsl = this.toHsl();
hsl.s += amount / 100;
hsl.s = clamp01(hsl.s);
return new TinyColor2(hsl);
};
TinyColor2.prototype.greyscale = function() {
return this.desaturate(100);
};
TinyColor2.prototype.spin = function(amount) {
var hsl = this.toHsl();
var hue = (hsl.h + amount) % 360;
hsl.h = hue < 0 ? 360 + hue : hue;
return new TinyColor2(hsl);
};
TinyColor2.prototype.mix = function(color, amount) {
if (amount === void 0) {
amount = 50;
}
var rgb1 = this.toRgb();
var rgb2 = new TinyColor2(color).toRgb();
var p2 = amount / 100;
var rgba = {
r: (rgb2.r - rgb1.r) * p2 + rgb1.r,
g: (rgb2.g - rgb1.g) * p2 + rgb1.g,
b: (rgb2.b - rgb1.b) * p2 + rgb1.b,
a: (rgb2.a - rgb1.a) * p2 + rgb1.a
};
return new TinyColor2(rgba);
};
TinyColor2.prototype.analogous = function(results, slices) {
if (results === void 0) {
results = 6;
}
if (slices === void 0) {
slices = 30;
}
var hsl = this.toHsl();
var part = 360 / slices;
var ret = [this];
for (hsl.h = (hsl.h - (part * results >> 1) + 720) % 360; --results; ) {
hsl.h = (hsl.h + part) % 360;
ret.push(new TinyColor2(hsl));
}
return ret;
};
TinyColor2.prototype.complement = function() {
var hsl = this.toHsl();
hsl.h = (hsl.h + 180) % 360;
return new TinyColor2(hsl);
};
TinyColor2.prototype.monochromatic = function(results) {
if (results === void 0) {
results = 6;
}
var hsv = this.toHsv();
var h2 = hsv.h;
var s2 = hsv.s;
var v2 = hsv.v;
var res = [];
var modification = 1 / results;
while (results--) {
res.push(new TinyColor2({ h: h2, s: s2, v: v2 }));
v2 = (v2 + modification) % 1;
}
return res;
};
TinyColor2.prototype.splitcomplement = function() {
var hsl = this.toHsl();
var h2 = hsl.h;
return [
this,
new TinyColor2({ h: (h2 + 72) % 360, s: hsl.s, l: hsl.l }),
new TinyColor2({ h: (h2 + 216) % 360, s: hsl.s, l: hsl.l })
];
};
TinyColor2.prototype.onBackground = function(background) {
var fg = this.toRgb();
var bg = new TinyColor2(background).toRgb();
return new TinyColor2({
r: bg.r + (fg.r - bg.r) * fg.a,
g: bg.g + (fg.g - bg.g) * fg.a,
b: bg.b + (fg.b - bg.b) * fg.a
});
};
TinyColor2.prototype.triad = function() {
return this.polyad(3);
};
TinyColor2.prototype.tetrad = function() {
return this.polyad(4);
};
TinyColor2.prototype.polyad = function(n) {
var hsl = this.toHsl();
var h2 = hsl.h;
var result = [this];
var increment = 360 / n;
for (var i = 1; i < n; i++) {
result.push(new TinyColor2({ h: (h2 + i * increment) % 360, s: hsl.s, l: hsl.l }));
}
return result;
};
TinyColor2.prototype.equals = function(color) {
return this.toRgbString() === new TinyColor2(color).toRgbString();
};
return TinyColor2;
}();
function darken(color, amount = 20) {
return color.mix("#141414", amount).toString();
}
function useButtonCustomStyle(props) {
const _disabled = useDisabled$1();
return computed(() => {
let styles = {};
const buttonColor = props.color;
if (buttonColor) {
const color = new TinyColor(buttonColor);
const activeBgColor = props.dark ? color.tint(20).toString() : darken(color, 20);
if (props.plain) {
styles = {
"--el-button-bg-color": props.dark ? darken(color, 90) : color.tint(90).toString(),
"--el-button-text-color": buttonColor,
"--el-button-border-color": props.dark ? darken(color, 50) : color.tint(50).toString(),
"--el-button-hover-text-color": "var(--el-color-white)",
"--el-button-hover-bg-color": buttonColor,
"--el-button-hover-border-color": buttonColor,
"--el-button-active-bg-color": activeBgColor,
"--el-button-active-text-color": "var(--el-color-white)",
"--el-button-active-border-color": activeBgColor
};
if (_disabled.value) {
styles["--el-button-disabled-bg-color"] = props.dark ? darken(color, 90) : color.tint(90).toString();
styles["--el-button-disabled-text-color"] = props.dark ? darken(color, 50) : color.tint(50).toString();
styles["--el-button-disabled-border-color"] = props.dark ? darken(color, 80) : color.tint(80).toString();
}
} else {
const hoverBgColor = props.dark ? darken(color, 30) : color.tint(30).toString();
const textColor = color.isDark() ? "var(--el-color-white)" : "var(--el-color-black)";
styles = {
"--el-button-bg-color": buttonColor,
"--el-button-text-color": textColor,
"--el-button-border-color": buttonColor,
"--el-button-hover-bg-color": hoverBgColor,
"--el-button-hover-text-color": textColor,
"--el-button-hover-border-color": hoverBgColor,
"--el-button-active-bg-color": activeBgColor,
"--el-button-active-border-color": activeBgColor
};
if (_disabled.value) {
const disabledButtonColor = props.dark ? darken(color, 50) : color.tint(50).toString();
styles["--el-button-disabled-bg-color"] = disabledButtonColor;
styles["--el-button-disabled-text-color"] = props.dark ? "rgba(255, 255, 255, 0.5)" : "var(--el-color-white)";
styles["--el-button-disabled-border-color"] = disabledButtonColor;
}
}
}
return styles;
});
}
const _hoisted_1$B = ["disabled", "autofocus", "type"];
const __default__$f = {
name: "ElButton"
};
const _sfc_main$V = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({}, __default__$f), {
props: buttonProps,
emits: buttonEmits,
setup(__props, { expose, emit }) {
const props = __props;
const slots = useSlots();
const buttonGroupContext = inject(buttonGroupContextKey, void 0);
const globalConfig2 = useGlobalConfig("button");
const ns = useNamespace("button");
const { form } = useFormItem();
const _size = useSize(computed(() => buttonGroupContext == null ? void 0 : buttonGroupContext.size));
const _disabled = useDisabled$1();
const _ref = ref();
const _type = computed(() => props.type || (buttonGroupContext == null ? void 0 : buttonGroupContext.type) || "");
const autoInsertSpace = computed(() => {
var _a2, _b2, _c;
return (_c = (_b2 = props.autoInsertSpace) != null ? _b2 : (_a2 = globalConfig2.value) == null ? void 0 : _a2.autoInsertSpace) != null ? _c : false;
});
const shouldAddSpace = computed(() => {
var _a2;
const defaultSlot = (_a2 = slots.default) == null ? void 0 : _a2.call(slots);
if (autoInsertSpace.value && (defaultSlot == null ? void 0 : defaultSlot.length) === 1) {
const slot = defaultSlot[0];
if ((slot == null ? void 0 : slot.type) === Text) {
const text = slot.children;
return /^\p{Unified_Ideograph}{2}$/u.test(text.trim());
}
}
return false;
});
const buttonStyle = useButtonCustomStyle(props);
const handleClick = (evt) => {
if (props.nativeType === "reset") {
form == null ? void 0 : form.resetFields();
}
emit("click", evt);
};
expose({
ref: _ref,
size: _size,
type: _type,
disabled: _disabled,
shouldAddSpace
});
return (_ctx, _cache) => {
return openBlock(), createElementBlock("button", {
ref_key: "_ref",
ref: _ref,
class: normalizeClass([
unref(ns).b(),
unref(ns).m(unref(_type)),
unref(ns).m(unref(_size)),
unref(ns).is("disabled", unref(_disabled)),
unref(ns).is("loading", _ctx.loading),
unref(ns).is("plain", _ctx.plain),
unref(ns).is("round", _ctx.round),
unref(ns).is("circle", _ctx.circle)
]),
disabled: unref(_disabled) || _ctx.loading,
autofocus: _ctx.autofocus,
type: _ctx.nativeType,
style: normalizeStyle(unref(buttonStyle)),
onClick: handleClick
}, [
_ctx.loading ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
_ctx.$slots.loading ? renderSlot(_ctx.$slots, "loading", { key: 0 }) : (openBlock(), createBlock(unref(ElIcon), {
key: 1,
class: normalizeClass(unref(ns).is("loading"))
}, {
default: withCtx(() => [
(openBlock(), createBlock(resolveDynamicComponent(_ctx.loadingIcon)))
]),
_: 1
}, 8, ["class"]))
], 2112)) : _ctx.icon || _ctx.$slots.icon ? (openBlock(), createBlock(unref(ElIcon), { key: 1 }, {
default: withCtx(() => [
_ctx.icon ? (openBlock(), createBlock(resolveDynamicComponent(_ctx.icon), { key: 0 })) : renderSlot(_ctx.$slots, "icon", { key: 1 })
]),
_: 3
})) : createCommentVNode("v-if", true),
_ctx.$slots.default ? (openBlock(), createElementBlock("span", {
key: 2,
class: normalizeClass({ [unref(ns).em("text", "expand")]: unref(shouldAddSpace) })
}, [
renderSlot(_ctx.$slots, "default")
], 2)) : createCommentVNode("v-if", true)
], 14, _hoisted_1$B);
};
}
}));
var Button = /* @__PURE__ */ _export_sfc$1(_sfc_main$V, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/button/src/button.vue"]]);
const buttonGroupProps = {
size: buttonProps.size,
type: buttonProps.type
};
const __default__$e = {
name: "ElButtonGroup"
};
const _sfc_main$U = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({}, __default__$e), {
props: buttonGroupProps,
setup(__props) {
const props = __props;
provide(buttonGroupContextKey, reactive({
size: toRef(props, "size"),
type: toRef(props, "type")
}));
const ns = useNamespace("button");
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", {
class: normalizeClass(`${unref(ns).b("group")}`)
}, [
renderSlot(_ctx.$slots, "default")
], 2);
};
}
}));
var ButtonGroup = /* @__PURE__ */ _export_sfc$1(_sfc_main$U, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/button/src/button-group.vue"]]);
const ElButton = withInstall(Button, {
ButtonGroup
});
withNoopInstall(ButtonGroup);
var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
var dayjs_min = { exports: {} };
(function(module2, exports2) {
!function(t, e) {
module2.exports = e();
}(commonjsGlobal, function() {
var t = 1e3, e = 6e4, n = 36e5, r = "millisecond", i = "second", s2 = "minute", u2 = "hour", a2 = "day", o2 = "week", c2 = "month", f2 = "quarter", h2 = "year", d2 = "date", l2 = "Invalid Date", $ = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/, y = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g, M2 = { name: "en", weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), ordinal: function(t2) {
var e2 = ["th", "st", "nd", "rd"], n2 = t2 % 100;
return "[" + t2 + (e2[(n2 - 20) % 10] || e2[n2] || e2[0]) + "]";
} }, m2 = function(t2, e2, n2) {
var r2 = String(t2);
return !r2 || r2.length >= e2 ? t2 : "" + Array(e2 + 1 - r2.length).join(n2) + t2;
}, v2 = { s: m2, z: function(t2) {
var e2 = -t2.utcOffset(), n2 = Math.abs(e2), r2 = Math.floor(n2 / 60), i2 = n2 % 60;
return (e2 <= 0 ? "+" : "-") + m2(r2, 2, "0") + ":" + m2(i2, 2, "0");
}, m: function t2(e2, n2) {
if (e2.date() < n2.date())
return -t2(n2, e2);
var r2 = 12 * (n2.year() - e2.year()) + (n2.month() - e2.month()), i2 = e2.clone().add(r2, c2), s3 = n2 - i2 < 0, u3 = e2.clone().add(r2 + (s3 ? -1 : 1), c2);
return +(-(r2 + (n2 - i2) / (s3 ? i2 - u3 : u3 - i2)) || 0);
}, a: function(t2) {
return t2 < 0 ? Math.ceil(t2) || 0 : Math.floor(t2);
}, p: function(t2) {
return { M: c2, y: h2, w: o2, d: a2, D: d2, h: u2, m: s2, s: i, ms: r, Q: f2 }[t2] || String(t2 || "").toLowerCase().replace(/s$/, "");
}, u: function(t2) {
return t2 === void 0;
} }, g = "en", D2 = {};
D2[g] = M2;
var p2 = "$isDayjsObject", S2 = function(t2) {
return t2 instanceof _2 || !(!t2 || !t2[p2]);
}, w2 = function t2(e2, n2, r2) {
var i2;
if (!e2)
return g;
if (typeof e2 == "string") {
var s3 = e2.toLowerCase();
D2[s3] && (i2 = s3), n2 && (D2[s3] = n2, i2 = s3);
var u3 = e2.split("-");
if (!i2 && u3.length > 1)
return t2(u3[0]);
} else {
var a3 = e2.name;
D2[a3] = e2, i2 = a3;
}
return !r2 && i2 && (g = i2), i2 || !r2 && g;
}, O2 = function(t2, e2) {
if (S2(t2))
return t2.clone();
var n2 = typeof e2 == "object" ? e2 : {};
return n2.date = t2, n2.args = arguments, new _2(n2);
}, b2 = v2;
b2.l = w2, b2.i = S2, b2.w = function(t2, e2) {
return O2(t2, { locale: e2.$L, utc: e2.$u, x: e2.$x, $offset: e2.$offset });
};
var _2 = function() {
function M3(t2) {
this.$L = w2(t2.locale, null, true), this.parse(t2), this.$x = this.$x || t2.x || {}, this[p2] = true;
}
var m3 = M3.prototype;
return m3.parse = function(t2) {
this.$d = function(t3) {
var e2 = t3.date, n2 = t3.utc;
if (e2 === null)
return new Date(NaN);
if (b2.u(e2))
return new Date();
if (e2 instanceof Date)
return new Date(e2);
if (typeof e2 == "string" && !/Z$/i.test(e2)) {
var r2 = e2.match($);
if (r2) {
var i2 = r2[2] - 1 || 0, s3 = (r2[7] || "0").substring(0, 3);
return n2 ? new Date(Date.UTC(r2[1], i2, r2[3] || 1, r2[4] || 0, r2[5] || 0, r2[6] || 0, s3)) : new Date(r2[1], i2, r2[3] || 1, r2[4] || 0, r2[5] || 0, r2[6] || 0, s3);
}
}
return new Date(e2);
}(t2), this.init();
}, m3.init = function() {
var t2 = this.$d;
this.$y = t2.getFullYear(), this.$M = t2.getMonth(), this.$D = t2.getDate(), this.$W = t2.getDay(), this.$H = t2.getHours(), this.$m = t2.getMinutes(), this.$s = t2.getSeconds(), this.$ms = t2.getMilliseconds();
}, m3.$utils = function() {
return b2;
}, m3.isValid = function() {
return !(this.$d.toString() === l2);
}, m3.isSame = function(t2, e2) {
var n2 = O2(t2);
return this.startOf(e2) <= n2 && n2 <= this.endOf(e2);
}, m3.isAfter = function(t2, e2) {
return O2(t2) < this.startOf(e2);
}, m3.isBefore = function(t2, e2) {
return this.endOf(e2) < O2(t2);
}, m3.$g = function(t2, e2, n2) {
return b2.u(t2) ? this[e2] : this.set(n2, t2);
}, m3.unix = function() {
return Math.floor(this.valueOf() / 1e3);
}, m3.valueOf = function() {
return this.$d.getTime();
}, m3.startOf = function(t2, e2) {
var n2 = this, r2 = !!b2.u(e2) || e2, f3 = b2.p(t2), l3 = function(t3, e3) {
var i2 = b2.w(n2.$u ? Date.UTC(n2.$y, e3, t3) : new Date(n2.$y, e3, t3), n2);
return r2 ? i2 : i2.endOf(a2);
}, $2 = function(t3, e3) {
return b2.w(n2.toDate()[t3].apply(n2.toDate("s"), (r2 ? [0, 0, 0, 0] : [23, 59, 59, 999]).slice(e3)), n2);
}, y2 = this.$W, M4 = this.$M, m4 = this.$D, v3 = "set" + (this.$u ? "UTC" : "");
switch (f3) {
case h2:
return r2 ? l3(1, 0) : l3(31, 11);
case c2:
return r2 ? l3(1, M4) : l3(0, M4 + 1);
case o2:
var g2 = this.$locale().weekStart || 0, D3 = (y2 < g2 ? y2 + 7 : y2) - g2;
return l3(r2 ? m4 - D3 : m4 + (6 - D3), M4);
case a2:
case d2:
return $2(v3 + "Hours", 0);
case u2:
return $2(v3 + "Minutes", 1);
case s2:
return $2(v3 + "Seconds", 2);
case i:
return $2(v3 + "Milliseconds", 3);
default:
return this.clone();
}
}, m3.endOf = function(t2) {
return this.startOf(t2, false);
}, m3.$set = function(t2, e2) {
var n2, o3 = b2.p(t2), f3 = "set" + (this.$u ? "UTC" : ""), l3 = (n2 = {}, n2[a2] = f3 + "Date", n2[d2] = f3 + "Date", n2[c2] = f3 + "Month", n2[h2] = f3 + "FullYear", n2[u2] = f3 + "Hours", n2[s2] = f3 + "Minutes", n2[i] = f3 + "Seconds", n2[r] = f3 + "Milliseconds", n2)[o3], $2 = o3 === a2 ? this.$D + (e2 - this.$W) : e2;
if (o3 === c2 || o3 === h2) {
var y2 = this.clone().set(d2, 1);
y2.$d[l3]($2), y2.init(), this.$d = y2.set(d2, Math.min(this.$D, y2.daysInMonth())).$d;
} else
l3 && this.$d[l3]($2);
return this.init(), this;
}, m3.set = function(t2, e2) {
return this.clone().$set(t2, e2);
}, m3.get = function(t2) {
return this[b2.p(t2)]();
}, m3.add = function(r2, f3) {
var d3, l3 = this;
r2 = Number(r2);
var $2 = b2.p(f3), y2 = function(t2) {
var e2 = O2(l3);
return b2.w(e2.date(e2.date() + Math.round(t2 * r2)), l3);
};
if ($2 === c2)
return this.set(c2, this.$M + r2);
if ($2 === h2)
return this.set(h2, this.$y + r2);
if ($2 === a2)
return y2(1);
if ($2 === o2)
return y2(7);
var M4 = (d3 = {}, d3[s2] = e, d3[u2] = n, d3[i] = t, d3)[$2] || 1, m4 = this.$d.getTime() + r2 * M4;
return b2.w(m4, this);
}, m3.subtract = function(t2, e2) {
return this.add(-1 * t2, e2);
}, m3.format = function(t2) {
var e2 = this, n2 = this.$locale();
if (!this.isValid())
return n2.invalidDate || l2;
var r2 = t2 || "YYYY-MM-DDTHH:mm:ssZ", i2 = b2.z(this), s3 = this.$H, u3 = this.$m, a3 = this.$M, o3 = n2.weekdays, c3 = n2.months, f3 = n2.meridiem, h3 = function(t3, n3, i3, s4) {
return t3 && (t3[n3] || t3(e2, r2)) || i3[n3].slice(0, s4);
}, d3 = function(t3) {
return b2.s(s3 % 12 || 12, t3, "0");
}, $2 = f3 || function(t3, e3, n3) {
var r3 = t3 < 12 ? "AM" : "PM";
return n3 ? r3.toLowerCase() : r3;
};
return r2.replace(y, function(t3, r3) {
return r3 || function(t4) {
switch (t4) {
case "YY":
return String(e2.$y).slice(-2);
case "YYYY":
return b2.s(e2.$y, 4, "0");
case "M":
return a3 + 1;
case "MM":
return b2.s(a3 + 1, 2, "0");
case "MMM":
return h3(n2.monthsShort, a3, c3, 3);
case "MMMM":
return h3(c3, a3);
case "D":
return e2.$D;
case "DD":
return b2.s(e2.$D, 2, "0");
case "d":
return String(e2.$W);
case "dd":
return h3(n2.weekdaysMin, e2.$W, o3, 2);
case "ddd":
return h3(n2.weekdaysShort, e2.$W, o3, 3);
case "dddd":
return o3[e2.$W];
case "H":
return String(s3);
case "HH":
return b2.s(s3, 2, "0");
case "h":
return d3(1);
case "hh":
return d3(2);
case "a":
return $2(s3, u3, true);
case "A":
return $2(s3, u3, false);
case "m":
return String(u3);
case "mm":
return b2.s(u3, 2, "0");
case "s":
return String(e2.$s);
case "ss":
return b2.s(e2.$s, 2, "0");
case "SSS":
return b2.s(e2.$ms, 3, "0");
case "Z":
return i2;
}
return null;
}(t3) || i2.replace(":", "");
});
}, m3.utcOffset = function() {
return 15 * -Math.round(this.$d.getTimezoneOffset() / 15);
}, m3.diff = function(r2, d3, l3) {
var $2, y2 = this, M4 = b2.p(d3), m4 = O2(r2), v3 = (m4.utcOffset() - this.utcOffset()) * e, g2 = this - m4, D3 = function() {
return b2.m(y2, m4);
};
switch (M4) {
case h2:
$2 = D3() / 12;
break;
case c2:
$2 = D3();
break;
case f2:
$2 = D3() / 3;
break;
case o2:
$2 = (g2 - v3) / 6048e5;
break;
case a2:
$2 = (g2 - v3) / 864e5;
break;
case u2:
$2 = g2 / n;
break;
case s2:
$2 = g2 / e;
break;
case i:
$2 = g2 / t;
break;
default:
$2 = g2;
}
return l3 ? $2 : b2.a($2);
}, m3.daysInMonth = function() {
return this.endOf(c2).$D;
}, m3.$locale = function() {
return D2[this.$L];
}, m3.locale = function(t2, e2) {
if (!t2)
return this.$L;
var n2 = this.clone(), r2 = w2(t2, e2, true);
return r2 && (n2.$L = r2), n2;
}, m3.clone = function() {
return b2.w(this.$d, this);
}, m3.toDate = function() {
return new Date(this.valueOf());
}, m3.toJSON = function() {
return this.isValid() ? this.toISOString() : null;
}, m3.toISOString = function() {
return this.$d.toISOString();
}, m3.toString = function() {
return this.$d.toUTCString();
}, M3;
}(), k = _2.prototype;
return O2.prototype = k, [["$ms", r], ["$s", i], ["$m", s2], ["$H", u2], ["$W", a2], ["$M", c2], ["$y", h2], ["$D", d2]].forEach(function(t2) {
k[t2[1]] = function(e2) {
return this.$g(e2, t2[0], t2[1]);
};
}), O2.extend = function(t2, e2) {
return t2.$i || (t2(e2, _2, O2), t2.$i = true), O2;
}, O2.locale = w2, O2.isDayjs = S2, O2.unix = function(t2) {
return O2(1e3 * t2);
}, O2.en = D2[g], O2.Ls = D2, O2.p = {}, O2;
});
})(dayjs_min);
var dayjs = dayjs_min.exports;
var localeData$1 = { exports: {} };
(function(module2, exports2) {
!function(n, e) {
module2.exports = e();
}(commonjsGlobal, function() {
return function(n, e, t) {
var r = e.prototype, o2 = function(n2) {
return n2 && (n2.indexOf ? n2 : n2.s);
}, u2 = function(n2, e2, t2, r2, u3) {
var i2 = n2.name ? n2 : n2.$locale(), a3 = o2(i2[e2]), s3 = o2(i2[t2]), f2 = a3 || s3.map(function(n3) {
return n3.slice(0, r2);
});
if (!u3)
return f2;
var d2 = i2.weekStart;
return f2.map(function(n3, e3) {
return f2[(e3 + (d2 || 0)) % 7];
});
}, i = function() {
return t.Ls[t.locale()];
}, a2 = function(n2, e2) {
return n2.formats[e2] || function(n3) {
return n3.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g, function(n4, e3, t2) {
return e3 || t2.slice(1);
});
}(n2.formats[e2.toUpperCase()]);
}, s2 = function() {
var n2 = this;
return { months: function(e2) {
return e2 ? e2.format("MMMM") : u2(n2, "months");
}, monthsShort: function(e2) {
return e2 ? e2.format("MMM") : u2(n2, "monthsShort", "months", 3);
}, firstDayOfWeek: function() {
return n2.$locale().weekStart || 0;
}, weekdays: function(e2) {
return e2 ? e2.format("dddd") : u2(n2, "weekdays");
}, weekdaysMin: function(e2) {
return e2 ? e2.format("dd") : u2(n2, "weekdaysMin", "weekdays", 2);
}, weekdaysShort: function(e2) {
return e2 ? e2.format("ddd") : u2(n2, "weekdaysShort", "weekdays", 3);
}, longDateFormat: function(e2) {
return a2(n2.$locale(), e2);
}, meridiem: this.$locale().meridiem, ordinal: this.$locale().ordinal };
};
r.localeData = function() {
return s2.bind(this)();
}, t.localeData = function() {
var n2 = i();
return { firstDayOfWeek: function() {
return n2.weekStart || 0;
}, weekdays: function() {
return t.weekdays();
}, weekdaysShort: function() {
return t.weekdaysShort();
}, weekdaysMin: function() {
return t.weekdaysMin();
}, months: function() {
return t.months();
}, monthsShort: function() {
return t.monthsShort();
}, longDateFormat: function(e2) {
return a2(n2, e2);
}, meridiem: n2.meridiem, ordinal: n2.ordinal };
}, t.months = function() {
return u2(i(), "months");
}, t.monthsShort = function() {
return u2(i(), "monthsShort", "months", 3);
}, t.weekdays = function(n2) {
return u2(i(), "weekdays", null, null, n2);
}, t.weekdaysShort = function(n2) {
return u2(i(), "weekdaysShort", "weekdays", 3, n2);
}, t.weekdaysMin = function(n2) {
return u2(i(), "weekdaysMin", "weekdays", 2, n2);
};
};
});
})(localeData$1);
var localeData = localeData$1.exports;
var customParseFormat$1 = { exports: {} };
(function(module2, exports2) {
!function(e, t) {
module2.exports = t();
}(commonjsGlobal, function() {
var e = { LTS: "h:mm:ss A", LT: "h:mm A", L: "MM/DD/YYYY", LL: "MMMM D, YYYY", LLL: "MMMM D, YYYY h:mm A", LLLL: "dddd, MMMM D, YYYY h:mm A" }, t = /(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g, n = /\d/, r = /\d\d/, i = /\d\d?/, o2 = /\d*[^-_:/,()\s\d]+/, s2 = {}, a2 = function(e2) {
return (e2 = +e2) + (e2 > 68 ? 1900 : 2e3);
};
var f2 = function(e2) {
return function(t2) {
this[e2] = +t2;
};
}, h2 = [/[+-]\d\d:?(\d\d)?|Z/, function(e2) {
(this.zone || (this.zone = {})).offset = function(e3) {
if (!e3)
return 0;
if (e3 === "Z")
return 0;
var t2 = e3.match(/([+-]|\d\d)/g), n2 = 60 * t2[1] + (+t2[2] || 0);
return n2 === 0 ? 0 : t2[0] === "+" ? -n2 : n2;
}(e2);
}], u2 = function(e2) {
var t2 = s2[e2];
return t2 && (t2.indexOf ? t2 : t2.s.concat(t2.f));
}, d2 = function(e2, t2) {
var n2, r2 = s2.meridiem;
if (r2) {
for (var i2 = 1; i2 <= 24; i2 += 1)
if (e2.indexOf(r2(i2, 0, t2)) > -1) {
n2 = i2 > 12;
break;
}
} else
n2 = e2 === (t2 ? "pm" : "PM");
return n2;
}, c2 = { A: [o2, function(e2) {
this.afternoon = d2(e2, false);
}], a: [o2, function(e2) {
this.afternoon = d2(e2, true);
}], Q: [n, function(e2) {
this.month = 3 * (e2 - 1) + 1;
}], S: [n, function(e2) {
this.milliseconds = 100 * +e2;
}], SS: [r, function(e2) {
this.milliseconds = 10 * +e2;
}], SSS: [/\d{3}/, function(e2) {
this.milliseconds = +e2;
}], s: [i, f2("seconds")], ss: [i, f2("seconds")], m: [i, f2("minutes")], mm: [i, f2("minutes")], H: [i, f2("hours")], h: [i, f2("hours")], HH: [i, f2("hours")], hh: [i, f2("hours")], D: [i, f2("day")], DD: [r, f2("day")], Do: [o2, function(e2) {
var t2 = s2.ordinal, n2 = e2.match(/\d+/);
if (this.day = n2[0], t2)
for (var r2 = 1; r2 <= 31; r2 += 1)
t2(r2).replace(/\[|\]/g, "") === e2 && (this.day = r2);
}], w: [i, f2("week")], ww: [r, f2("week")], M: [i, f2("month")], MM: [r, f2("month")], MMM: [o2, function(e2) {
var t2 = u2("months"), n2 = (u2("monthsShort") || t2.map(function(e3) {
return e3.slice(0, 3);
})).indexOf(e2) + 1;
if (n2 < 1)
throw new Error();
this.month = n2 % 12 || n2;
}], MMMM: [o2, function(e2) {
var t2 = u2("months").indexOf(e2) + 1;
if (t2 < 1)
throw new Error();
this.month = t2 % 12 || t2;
}], Y: [/[+-]?\d+/, f2("year")], YY: [r, function(e2) {
this.year = a2(e2);
}], YYYY: [/\d{4}/, f2("year")], Z: h2, ZZ: h2 };
function l2(n2) {
var r2, i2;
r2 = n2, i2 = s2 && s2.formats;
for (var o3 = (n2 = r2.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g, function(t2, n3, r3) {
var o4 = r3 && r3.toUpperCase();
return n3 || i2[r3] || e[r3] || i2[o4].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g, function(e2, t3, n4) {
return t3 || n4.slice(1);
});
})).match(t), a3 = o3.length, f3 = 0; f3 < a3; f3 += 1) {
var h3 = o3[f3], u3 = c2[h3], d3 = u3 && u3[0], l3 = u3 && u3[1];
o3[f3] = l3 ? { regex: d3, parser: l3 } : h3.replace(/^\[|\]$/g, "");
}
return function(e2) {
for (var t2 = {}, n3 = 0, r3 = 0; n3 < a3; n3 += 1) {
var i3 = o3[n3];
if (typeof i3 == "string")
r3 += i3.length;
else {
var s3 = i3.regex, f4 = i3.parser, h4 = e2.slice(r3), u4 = s3.exec(h4)[0];
f4.call(t2, u4), e2 = e2.replace(u4, "");
}
}
return function(e3) {
var t3 = e3.afternoon;
if (t3 !== void 0) {
var n4 = e3.hours;
t3 ? n4 < 12 && (e3.hours += 12) : n4 === 12 && (e3.hours = 0), delete e3.afternoon;
}
}(t2), t2;
};
}
return function(e2, t2, n2) {
n2.p.customParseFormat = true, e2 && e2.parseTwoDigitYear && (a2 = e2.parseTwoDigitYear);
var r2 = t2.prototype, i2 = r2.parse;
r2.parse = function(e3) {
var t3 = e3.date, r3 = e3.utc, o3 = e3.args;
this.$u = r3;
var a3 = o3[1];
if (typeof a3 == "string") {
var f3 = o3[2] === true, h3 = o3[3] === true, u3 = f3 || h3, d3 = o3[2];
h3 && (d3 = o3[2]), s2 = this.$locale(), !f3 && d3 && (s2 = n2.Ls[d3]), this.$d = function(e4, t4, n3, r4) {
try {
if (["x", "X"].indexOf(t4) > -1)
return new Date((t4 === "X" ? 1e3 : 1) * e4);
var i3 = l2(t4)(e4), o4 = i3.year, s3 = i3.month, a4 = i3.day, f4 = i3.hours, h4 = i3.minutes, u4 = i3.seconds, d4 = i3.milliseconds, c4 = i3.zone, m3 = i3.week, M3 = new Date(), Y2 = a4 || (o4 || s3 ? 1 : M3.getDate()), p2 = o4 || M3.getFullYear(), v2 = 0;
o4 && !s3 || (v2 = s3 > 0 ? s3 - 1 : M3.getMonth());
var D2, w2 = f4 || 0, g = h4 || 0, y = u4 || 0, L = d4 || 0;
return c4 ? new Date(Date.UTC(p2, v2, Y2, w2, g, y, L + 60 * c4.offset * 1e3)) : n3 ? new Date(Date.UTC(p2, v2, Y2, w2, g, y, L)) : (D2 = new Date(p2, v2, Y2, w2, g, y, L), m3 && (D2 = r4(D2).week(m3).toDate()), D2);
} catch (e5) {
return new Date("");
}
}(t3, a3, r3, n2), this.init(), d3 && d3 !== true && (this.$L = this.locale(d3).$L), u3 && t3 != this.format(a3) && (this.$d = new Date("")), s2 = {};
} else if (a3 instanceof Array)
for (var c3 = a3.length, m2 = 1; m2 <= c3; m2 += 1) {
o3[1] = a3[m2 - 1];
var M2 = n2.apply(this, o3);
if (M2.isValid()) {
this.$d = M2.$d, this.$L = M2.$L, this.init();
break;
}
m2 === c3 && (this.$d = new Date(""));
}
else
i2.call(this, e3);
};
};
});
})(customParseFormat$1);
var customParseFormat = customParseFormat$1.exports;
const DEFAULT_FORMATS_TIME = "HH:mm:ss";
const DEFAULT_FORMATS_DATE = "YYYY-MM-DD";
const DEFAULT_FORMATS_DATEPICKER = {
date: DEFAULT_FORMATS_DATE,
week: "gggg[w]ww",
year: "YYYY",
month: "YYYY-MM",
datetime: `${DEFAULT_FORMATS_DATE} ${DEFAULT_FORMATS_TIME}`,
monthrange: "YYYY-MM",
daterange: DEFAULT_FORMATS_DATE,
datetimerange: `${DEFAULT_FORMATS_DATE} ${DEFAULT_FORMATS_TIME}`
};
const timePickerDefaultProps = {
id: {
type: [Array, String]
},
name: {
type: [Array, String],
default: ""
},
popperClass: {
type: String,
default: ""
},
format: {
type: String
},
valueFormat: {
type: String
},
type: {
type: String,
default: ""
},
clearable: {
type: Boolean,
default: true
},
clearIcon: {
type: [String, Object],
default: circleClose
},
editable: {
type: Boolean,
default: true
},
prefixIcon: {
type: [String, Object],
default: ""
},
size: {
type: String,
validator: isValidComponentSize
},
readonly: {
type: Boolean,
default: false
},
disabled: {
type: Boolean,
default: false
},
placeholder: {
type: String,
default: ""
},
popperOptions: {
type: Object,
default: () => ({})
},
modelValue: {
type: [Date, Array, String, Number],
default: ""
},
rangeSeparator: {
type: String,
default: "-"
},
startPlaceholder: String,
endPlaceholder: String,
defaultValue: {
type: [Date, Array]
},
defaultTime: {
type: [Date, Array]
},
isRange: {
type: Boolean,
default: false
},
disabledHours: {
type: Function
},
disabledMinutes: {
type: Function
},
disabledSeconds: {
type: Function
},
disabledDate: {
type: Function
},
cellClassName: {
type: Function
},
shortcuts: {
type: Array,
default: () => []
},
arrowControl: {
type: Boolean,
default: false
},
validateEvent: {
type: Boolean,
default: true
},
unlinkPanels: Boolean
};
const dateEquals = function(a2, b2) {
const aIsDate = a2 instanceof Date;
const bIsDate = b2 instanceof Date;
if (aIsDate && bIsDate) {
return a2.getTime() === b2.getTime();
}
if (!aIsDate && !bIsDate) {
return a2 === b2;
}
return false;
};
const valueEquals = function(a2, b2) {
const aIsArray = Array.isArray(a2);
const bIsArray = Array.isArray(b2);
if (aIsArray && bIsArray) {
if (a2.length !== b2.length) {
return false;
}
return a2.every((item, index) => dateEquals(item, b2[index]));
}
if (!aIsArray && !bIsArray) {
return dateEquals(a2, b2);
}
return false;
};
const parser = function(date4, format2, lang) {
const day = isEmpty(format2) || format2 === "x" ? dayjs(date4).locale(lang) : dayjs(date4, format2).locale(lang);
return day.isValid() ? day : void 0;
};
const formatter = function(date4, format2, lang) {
if (isEmpty(format2))
return date4;
if (format2 === "x")
return +date4;
return dayjs(date4).locale(lang).format(format2);
};
const _sfc_main$T = defineComponent({
name: "Picker",
components: {
ElInput,
ElTooltip,
ElIcon
},
props: timePickerDefaultProps,
emits: [
"update:modelValue",
"change",
"focus",
"blur",
"calendar-change",
"panel-change",
"visible-change"
],
setup(props, ctx) {
const { lang } = useLocale();
const nsDate = useNamespace("date");
const nsInput = useNamespace("input");
const nsRange = useNamespace("range");
const elForm2 = inject(formContextKey, {});
const elFormItem2 = inject(formItemContextKey, {});
const elPopperOptions = inject("ElPopperOptions", {});
const refPopper = ref();
const inputRef = ref();
const pickerVisible = ref(false);
const pickerActualVisible = ref(false);
const valueOnOpen = ref(null);
watch(pickerVisible, (val) => {
var _a2;
if (!val) {
userInput.value = null;
nextTick(() => {
emitChange(props.modelValue);
});
ctx.emit("blur");
blurInput();
props.validateEvent && ((_a2 = elFormItem2.validate) == null ? void 0 : _a2.call(elFormItem2, "blur").catch((err) => debugWarn()));
} else {
valueOnOpen.value = props.modelValue;
}
});
const emitChange = (val, isClear) => {
var _a2;
if (isClear || !valueEquals(val, valueOnOpen.value)) {
ctx.emit("change", val);
props.validateEvent && ((_a2 = elFormItem2.validate) == null ? void 0 : _a2.call(elFormItem2, "change").catch((err) => debugWarn()));
}
};
const emitInput = (val) => {
if (!valueEquals(props.modelValue, val)) {
let formatValue;
if (Array.isArray(val)) {
formatValue = val.map((_2) => formatter(_2, props.valueFormat, lang.value));
} else if (val) {
formatValue = formatter(val, props.valueFormat, lang.value);
}
ctx.emit("update:modelValue", val ? formatValue : val, lang.value);
}
};
const refInput = computed(() => {
if (inputRef.value) {
const _r = isRangeInput.value ? inputRef.value : inputRef.value.$el;
return Array.from(_r.querySelectorAll("input"));
}
return [];
});
const refStartInput = computed(() => {
return refInput == null ? void 0 : refInput.value[0];
});
const refEndInput = computed(() => {
return refInput == null ? void 0 : refInput.value[1];
});
const setSelectionRange = (start2, end2, pos) => {
const _inputs = refInput.value;
if (!_inputs.length)
return;
if (!pos || pos === "min") {
_inputs[0].setSelectionRange(start2, end2);
_inputs[0].focus();
} else if (pos === "max") {
_inputs[1].setSelectionRange(start2, end2);
_inputs[1].focus();
}
};
const onPick = (date4 = "", visible = false) => {
pickerVisible.value = visible;
let result;
if (Array.isArray(date4)) {
result = date4.map((_2) => _2.toDate());
} else {
result = date4 ? date4.toDate() : date4;
}
userInput.value = null;
emitInput(result);
};
const onBeforeShow = () => {
pickerActualVisible.value = true;
};
const onShow = () => {
ctx.emit("visible-change", true);
};
const onHide = () => {
pickerActualVisible.value = false;
ctx.emit("visible-change", false);
};
const focus = (focusStartInput = true) => {
let input = refStartInput.value;
if (!focusStartInput && isRangeInput.value) {
input = refEndInput.value;
}
if (input) {
input.focus();
}
};
const handleFocus = (e) => {
if (props.readonly || pickerDisabled.value || pickerVisible.value)
return;
pickerVisible.value = true;
ctx.emit("focus", e);
};
const handleBlur = () => {
var _a2;
(_a2 = refPopper.value) == null ? void 0 : _a2.onClose();
blurInput();
};
const pickerDisabled = computed(() => {
return props.disabled || elForm2.disabled;
});
const parsedValue = computed(() => {
let result;
if (valueIsEmpty.value) {
if (pickerOptions.value.getDefaultValue) {
result = pickerOptions.value.getDefaultValue();
}
} else {
if (Array.isArray(props.modelValue)) {
result = props.modelValue.map((_2) => parser(_2, props.valueFormat, lang.value));
} else {
result = parser(props.modelValue, props.valueFormat, lang.value);
}
}
if (pickerOptions.value.getRangeAvailableTime) {
const availableResult = pickerOptions.value.getRangeAvailableTime(result);
if (!isEqual(availableResult, result)) {
result = availableResult;
emitInput(Array.isArray(result) ? result.map((_2) => _2.toDate()) : result.toDate());
}
}
if (Array.isArray(result) && result.some((_2) => !_2)) {
result = [];
}
return result;
});
const displayValue = computed(() => {
if (!pickerOptions.value.panelReady)
return;
const formattedValue = formatDayjsToString(parsedValue.value);
if (Array.isArray(userInput.value)) {
return [
userInput.value[0] || formattedValue && formattedValue[0] || "",
userInput.value[1] || formattedValue && formattedValue[1] || ""
];
} else if (userInput.value !== null) {
return userInput.value;
}
if (!isTimePicker.value && valueIsEmpty.value)
return;
if (!pickerVisible.value && valueIsEmpty.value)
return;
if (formattedValue) {
return isDatesPicker.value ? formattedValue.join(", ") : formattedValue;
}
return "";
});
const isTimeLikePicker = computed(() => props.type.includes("time"));
const isTimePicker = computed(() => props.type.startsWith("time"));
const isDatesPicker = computed(() => props.type === "dates");
const triggerIcon = computed(() => props.prefixIcon || (isTimeLikePicker.value ? clock : calendar));
const showClose = ref(false);
const onClearIconClick = (event) => {
if (props.readonly || pickerDisabled.value)
return;
if (showClose.value) {
event.stopPropagation();
emitInput(null);
emitChange(null, true);
showClose.value = false;
pickerVisible.value = false;
pickerOptions.value.handleClear && pickerOptions.value.handleClear();
}
};
const valueIsEmpty = computed(() => {
return !props.modelValue || Array.isArray(props.modelValue) && !props.modelValue.length;
});
const onMouseEnter = () => {
if (props.readonly || pickerDisabled.value)
return;
if (!valueIsEmpty.value && props.clearable) {
showClose.value = true;
}
};
const onMouseLeave = () => {
showClose.value = false;
};
const isRangeInput = computed(() => {
return props.type.includes("range");
});
const pickerSize = useSize();
const popperPaneRef = computed(() => {
var _a2, _b2;
return (_b2 = (_a2 = refPopper.value) == null ? void 0 : _a2.popperRef) == null ? void 0 : _b2.contentRef;
});
const popperEl = computed(() => {
var _a2, _b2;
return (_b2 = (_a2 = unref(refPopper)) == null ? void 0 : _a2.popperRef) == null ? void 0 : _b2.contentRef;
});
const actualInputRef = computed(() => {
var _a2;
if (unref(isRangeInput)) {
return unref(inputRef);
}
return (_a2 = unref(inputRef)) == null ? void 0 : _a2.$el;
});
onClickOutside(actualInputRef, (e) => {
const unrefedPopperEl = unref(popperEl);
const inputEl = unref(actualInputRef);
if (unrefedPopperEl && (e.target === unrefedPopperEl || e.composedPath().includes(unrefedPopperEl)) || e.target === inputEl || e.composedPath().includes(inputEl))
return;
pickerVisible.value = false;
});
const userInput = ref(null);
const handleChange2 = () => {
if (userInput.value) {
const value = parseUserInputToDayjs(displayValue.value);
if (value) {
if (isValidValue(value)) {
emitInput(Array.isArray(value) ? value.map((_2) => _2.toDate()) : value.toDate());
userInput.value = null;
}
}
}
if (userInput.value === "") {
emitInput(null);
emitChange(null);
userInput.value = null;
}
};
const blurInput = () => {
refInput.value.forEach((input) => input.blur());
};
const parseUserInputToDayjs = (value) => {
if (!value)
return null;
return pickerOptions.value.parseUserInput(value);
};
const formatDayjsToString = (value) => {
if (!value)
return null;
return pickerOptions.value.formatToString(value);
};
const isValidValue = (value) => {
return pickerOptions.value.isValidValue(value);
};
const handleKeydown = (event) => {
const code = event.code;
if (code === EVENT_CODE.esc) {
pickerVisible.value = false;
event.stopPropagation();
return;
}
if (code === EVENT_CODE.tab) {
if (!isRangeInput.value) {
handleChange2();
pickerVisible.value = false;
event.stopPropagation();
} else {
setTimeout(() => {
if (!refInput.value.includes(document.activeElement)) {
pickerVisible.value = false;
blurInput();
}
}, 0);
}
return;
}
if (code === EVENT_CODE.enter || code === EVENT_CODE.numpadEnter) {
if (userInput.value === null || userInput.value === "" || isValidValue(parseUserInputToDayjs(displayValue.value))) {
handleChange2();
pickerVisible.value = false;
}
event.stopPropagation();
return;
}
if (userInput.value) {
event.stopPropagation();
return;
}
if (pickerOptions.value.handleKeydown) {
pickerOptions.value.handleKeydown(event);
}
};
const onUserInput = (e) => {
userInput.value = e;
};
const handleStartInput = (event) => {
if (userInput.value) {
userInput.value = [event.target.value, userInput.value[1]];
} else {
userInput.value = [event.target.value, null];
}
};
const handleEndInput = (event) => {
if (userInput.value) {
userInput.value = [userInput.value[0], event.target.value];
} else {
userInput.value = [null, event.target.value];
}
};
const handleStartChange = () => {
const value = parseUserInputToDayjs(userInput.value && userInput.value[0]);
if (value && value.isValid()) {
userInput.value = [formatDayjsToString(value), displayValue.value[1]];
const newValue = [value, parsedValue.value && parsedValue.value[1]];
if (isValidValue(newValue)) {
emitInput(newValue);
userInput.value = null;
}
}
};
const handleEndChange = () => {
const value = parseUserInputToDayjs(userInput.value && userInput.value[1]);
if (value && value.isValid()) {
userInput.value = [displayValue.value[0], formatDayjsToString(value)];
const newValue = [parsedValue.value && parsedValue.value[0], value];
if (isValidValue(newValue)) {
emitInput(newValue);
userInput.value = null;
}
}
};
const pickerOptions = ref({});
const onSetPickerOption = (e) => {
pickerOptions.value[e[0]] = e[1];
pickerOptions.value.panelReady = true;
};
const onCalendarChange = (e) => {
ctx.emit("calendar-change", e);
};
const onPanelChange = (value, mode, view2) => {
ctx.emit("panel-change", value, mode, view2);
};
provide("EP_PICKER_BASE", {
props
});
return {
nsDate,
nsInput,
nsRange,
elPopperOptions,
isDatesPicker,
handleEndChange,
handleStartChange,
handleStartInput,
handleEndInput,
onUserInput,
handleChange: handleChange2,
handleKeydown,
popperPaneRef,
onClickOutside,
pickerSize,
isRangeInput,
onMouseLeave,
onMouseEnter,
onClearIconClick,
showClose,
triggerIcon,
onPick,
handleFocus,
handleBlur,
pickerVisible,
pickerActualVisible,
displayValue,
parsedValue,
setSelectionRange,
refPopper,
inputRef,
pickerDisabled,
onSetPickerOption,
onCalendarChange,
onPanelChange,
focus,
onShow,
onBeforeShow,
onHide
};
}
});
const _hoisted_1$A = ["id", "name", "placeholder", "value", "disabled", "readonly"];
const _hoisted_2$s = ["id", "name", "placeholder", "value", "disabled", "readonly"];
function _sfc_render$w(_ctx, _cache, $props, $setup, $data, $options) {
const _component_el_icon = resolveComponent("el-icon");
const _component_el_input = resolveComponent("el-input");
const _component_el_tooltip = resolveComponent("el-tooltip");
return openBlock(), createBlock(_component_el_tooltip, mergeProps({
ref: "refPopper",
visible: _ctx.pickerVisible,
"onUpdate:visible": _cache[17] || (_cache[17] = ($event) => _ctx.pickerVisible = $event),
effect: "light",
pure: "",
trigger: "click"
}, _ctx.$attrs, {
"append-to-body": "",
transition: `${_ctx.nsDate.namespace.value}-zoom-in-top`,
"popper-class": [`${_ctx.nsDate.namespace.value}-picker__popper`, _ctx.popperClass],
"popper-options": _ctx.elPopperOptions,
"fallback-placements": ["bottom", "top", "right", "left"],
"gpu-acceleration": false,
"stop-popper-mouse-event": false,
"hide-after": 0,
persistent: "",
onBeforeShow: _ctx.onBeforeShow,
onShow: _ctx.onShow,
onHide: _ctx.onHide
}), {
default: withCtx(() => [
!_ctx.isRangeInput ? (openBlock(), createBlock(_component_el_input, {
key: 0,
id: _ctx.id,
ref: "inputRef",
"model-value": _ctx.displayValue,
name: _ctx.name,
size: _ctx.pickerSize,
disabled: _ctx.pickerDisabled,
placeholder: _ctx.placeholder,
class: normalizeClass([_ctx.nsDate.b("editor"), _ctx.nsDate.bm("editor", _ctx.type), _ctx.$attrs.class]),
style: normalizeStyle(_ctx.$attrs.style),
readonly: !_ctx.editable || _ctx.readonly || _ctx.isDatesPicker || _ctx.type === "week",
onInput: _ctx.onUserInput,
onFocus: _ctx.handleFocus,
onKeydown: _ctx.handleKeydown,
onChange: _ctx.handleChange,
onMouseenter: _ctx.onMouseEnter,
onMouseleave: _ctx.onMouseLeave,
onClick: _cache[0] || (_cache[0] = withModifiers(() => {
}, ["stop"]))
}, {
prefix: withCtx(() => [
_ctx.triggerIcon ? (openBlock(), createBlock(_component_el_icon, {
key: 0,
class: normalizeClass(_ctx.nsInput.e("icon")),
onClick: _ctx.handleFocus
}, {
default: withCtx(() => [
(openBlock(), createBlock(resolveDynamicComponent(_ctx.triggerIcon)))
]),
_: 1
}, 8, ["class", "onClick"])) : createCommentVNode("v-if", true)
]),
suffix: withCtx(() => [
_ctx.showClose && _ctx.clearIcon ? (openBlock(), createBlock(_component_el_icon, {
key: 0,
class: normalizeClass(`${_ctx.nsInput.e("icon")} clear-icon`),
onClick: _ctx.onClearIconClick
}, {
default: withCtx(() => [
(openBlock(), createBlock(resolveDynamicComponent(_ctx.clearIcon)))
]),
_: 1
}, 8, ["class", "onClick"])) : createCommentVNode("v-if", true)
]),
_: 1
}, 8, ["id", "model-value", "name", "size", "disabled", "placeholder", "class", "style", "readonly", "onInput", "onFocus", "onKeydown", "onChange", "onMouseenter", "onMouseleave"])) : (openBlock(), createElementBlock("div", {
key: 1,
ref: "inputRef",
class: normalizeClass([
_ctx.nsDate.b("editor"),
_ctx.nsDate.bm("editor", _ctx.type),
_ctx.nsInput.e("inner"),
_ctx.nsDate.is("disabled", _ctx.pickerDisabled),
_ctx.nsDate.is("active", _ctx.pickerVisible),
_ctx.nsRange.b("editor"),
_ctx.pickerSize ? _ctx.nsRange.bm("editor", _ctx.pickerSize) : "",
_ctx.$attrs.class
]),
style: normalizeStyle(_ctx.$attrs.style),
onClick: _cache[7] || (_cache[7] = (...args) => _ctx.handleFocus && _ctx.handleFocus(...args)),
onMouseenter: _cache[8] || (_cache[8] = (...args) => _ctx.onMouseEnter && _ctx.onMouseEnter(...args)),
onMouseleave: _cache[9] || (_cache[9] = (...args) => _ctx.onMouseLeave && _ctx.onMouseLeave(...args)),
onKeydown: _cache[10] || (_cache[10] = (...args) => _ctx.handleKeydown && _ctx.handleKeydown(...args))
}, [
_ctx.triggerIcon ? (openBlock(), createBlock(_component_el_icon, {
key: 0,
class: normalizeClass([_ctx.nsInput.e("icon"), _ctx.nsRange.e("icon")]),
onClick: _ctx.handleFocus
}, {
default: withCtx(() => [
(openBlock(), createBlock(resolveDynamicComponent(_ctx.triggerIcon)))
]),
_: 1
}, 8, ["class", "onClick"])) : createCommentVNode("v-if", true),
createElementVNode("input", {
id: _ctx.id && _ctx.id[0],
autocomplete: "off",
name: _ctx.name && _ctx.name[0],
placeholder: _ctx.startPlaceholder,
value: _ctx.displayValue && _ctx.displayValue[0],
disabled: _ctx.pickerDisabled,
readonly: !_ctx.editable || _ctx.readonly,
class: normalizeClass(_ctx.nsRange.b("input")),
onInput: _cache[1] || (_cache[1] = (...args) => _ctx.handleStartInput && _ctx.handleStartInput(...args)),
onChange: _cache[2] || (_cache[2] = (...args) => _ctx.handleStartChange && _ctx.handleStartChange(...args)),
onFocus: _cache[3] || (_cache[3] = (...args) => _ctx.handleFocus && _ctx.handleFocus(...args))
}, null, 42, _hoisted_1$A),
renderSlot(_ctx.$slots, "range-separator", {}, () => [
createElementVNode("span", {
class: normalizeClass(_ctx.nsRange.b("separator"))
}, toDisplayString(_ctx.rangeSeparator), 3)
]),
createElementVNode("input", {
id: _ctx.id && _ctx.id[1],
autocomplete: "off",
name: _ctx.name && _ctx.name[1],
placeholder: _ctx.endPlaceholder,
value: _ctx.displayValue && _ctx.displayValue[1],
disabled: _ctx.pickerDisabled,
readonly: !_ctx.editable || _ctx.readonly,
class: normalizeClass(_ctx.nsRange.b("input")),
onFocus: _cache[4] || (_cache[4] = (...args) => _ctx.handleFocus && _ctx.handleFocus(...args)),
onInput: _cache[5] || (_cache[5] = (...args) => _ctx.handleEndInput && _ctx.handleEndInput(...args)),
onChange: _cache[6] || (_cache[6] = (...args) => _ctx.handleEndChange && _ctx.handleEndChange(...args))
}, null, 42, _hoisted_2$s),
_ctx.clearIcon ? (openBlock(), createBlock(_component_el_icon, {
key: 1,
class: normalizeClass([
_ctx.nsInput.e("icon"),
_ctx.nsRange.e("close-icon"),
{
[_ctx.nsRange.e("close-icon--hidden")]: !_ctx.showClose
}
]),
onClick: _ctx.onClearIconClick
}, {
default: withCtx(() => [
(openBlock(), createBlock(resolveDynamicComponent(_ctx.clearIcon)))
]),
_: 1
}, 8, ["class", "onClick"])) : createCommentVNode("v-if", true)
], 38))
]),
content: withCtx(() => [
renderSlot(_ctx.$slots, "default", {
visible: _ctx.pickerVisible,
actualVisible: _ctx.pickerActualVisible,
parsedValue: _ctx.parsedValue,
format: _ctx.format,
unlinkPanels: _ctx.unlinkPanels,
type: _ctx.type,
defaultValue: _ctx.defaultValue,
onPick: _cache[11] || (_cache[11] = (...args) => _ctx.onPick && _ctx.onPick(...args)),
onSelectRange: _cache[12] || (_cache[12] = (...args) => _ctx.setSelectionRange && _ctx.setSelectionRange(...args)),
onSetPickerOption: _cache[13] || (_cache[13] = (...args) => _ctx.onSetPickerOption && _ctx.onSetPickerOption(...args)),
onCalendarChange: _cache[14] || (_cache[14] = (...args) => _ctx.onCalendarChange && _ctx.onCalendarChange(...args)),
onPanelChange: _cache[15] || (_cache[15] = (...args) => _ctx.onPanelChange && _ctx.onPanelChange(...args)),
onMousedown: _cache[16] || (_cache[16] = withModifiers(() => {
}, ["stop"]))
})
]),
_: 3
}, 16, ["visible", "transition", "popper-class", "popper-options", "onBeforeShow", "onShow", "onHide"]);
}
var CommonPicker = /* @__PURE__ */ _export_sfc$1(_sfc_main$T, [["render", _sfc_render$w], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/time-picker/src/common/picker.vue"]]);
const nodeList = /* @__PURE__ */ new Map();
let startClick;
if (isClient) {
document.addEventListener("mousedown", (e) => startClick = e);
document.addEventListener("mouseup", (e) => {
for (const handlers of nodeList.values()) {
for (const { documentHandler } of handlers) {
documentHandler(e, startClick);
}
}
});
}
function createDocumentHandler(el, binding) {
let excludes = [];
if (Array.isArray(binding.arg)) {
excludes = binding.arg;
} else if (isElement$1(binding.arg)) {
excludes.push(binding.arg);
}
return function(mouseup, mousedown) {
const popperRef = binding.instance.popperRef;
const mouseUpTarget = mouseup.target;
const mouseDownTarget = mousedown == null ? void 0 : mousedown.target;
const isBound = !binding || !binding.instance;
const isTargetExists = !mouseUpTarget || !mouseDownTarget;
const isContainedByEl = el.contains(mouseUpTarget) || el.contains(mouseDownTarget);
const isSelf = el === mouseUpTarget;
const isTargetExcluded = excludes.length && excludes.some((item) => item == null ? void 0 : item.contains(mouseUpTarget)) || excludes.length && excludes.includes(mouseDownTarget);
const isContainedByPopper = popperRef && (popperRef.contains(mouseUpTarget) || popperRef.contains(mouseDownTarget));
if (isBound || isTargetExists || isContainedByEl || isSelf || isTargetExcluded || isContainedByPopper) {
return;
}
binding.value(mouseup, mousedown);
};
}
const ClickOutside = {
beforeMount(el, binding) {
if (!nodeList.has(el)) {
nodeList.set(el, []);
}
nodeList.get(el).push({
documentHandler: createDocumentHandler(el, binding),
bindingFn: binding.value
});
},
updated(el, binding) {
if (!nodeList.has(el)) {
nodeList.set(el, []);
}
const handlers = nodeList.get(el);
const oldHandlerIndex = handlers.findIndex((item) => item.bindingFn === binding.oldValue);
const newHandler = {
documentHandler: createDocumentHandler(el, binding),
bindingFn: binding.value
};
if (oldHandlerIndex >= 0) {
handlers.splice(oldHandlerIndex, 1, newHandler);
} else {
handlers.push(newHandler);
}
},
unmounted(el) {
nodeList.delete(el);
}
};
var RepeatClick = {
beforeMount(el, binding) {
let interval = null;
let startTime;
const handler3 = () => binding.value && binding.value();
const clear = () => {
if (Date.now() - startTime < 100) {
handler3();
}
clearInterval(interval);
interval = null;
};
on(el, "mousedown", (e) => {
if (e.button !== 0)
return;
startTime = Date.now();
once(document, "mouseup", clear);
clearInterval(interval);
interval = setInterval(handler3, 100);
});
}
};
var v = false, o, f, s, u, d, N, l, p, m, w, D, x, E, M, F;
function a() {
if (!v) {
v = true;
var e = navigator.userAgent, n = /(?:MSIE.(\d+\.\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\d+\.\d+))|(?:Opera(?:.+Version.|.)(\d+\.\d+))|(?:AppleWebKit.(\d+(?:\.\d+)?))|(?:Trident\/\d+\.\d+.*rv:(\d+\.\d+))/.exec(e), i = /(Mac OS X)|(Windows)|(Linux)/.exec(e);
if (x = /\b(iPhone|iP[ao]d)/.exec(e), E = /\b(iP[ao]d)/.exec(e), w = /Android/i.exec(e), M = /FBAN\/\w+;/i.exec(e), F = /Mobile/i.exec(e), D = !!/Win64/.exec(e), n) {
o = n[1] ? parseFloat(n[1]) : n[5] ? parseFloat(n[5]) : NaN, o && document && document.documentMode && (o = document.documentMode);
var r = /(?:Trident\/(\d+.\d+))/.exec(e);
N = r ? parseFloat(r[1]) + 4 : o, f = n[2] ? parseFloat(n[2]) : NaN, s = n[3] ? parseFloat(n[3]) : NaN, u = n[4] ? parseFloat(n[4]) : NaN, u ? (n = /(?:Chrome\/(\d+\.\d+))/.exec(e), d = n && n[1] ? parseFloat(n[1]) : NaN) : d = NaN;
} else
o = f = s = d = u = NaN;
if (i) {
if (i[1]) {
var t = /(?:Mac OS X (\d+(?:[._]\d+)?))/.exec(e);
l = t ? parseFloat(t[1].replace("_", ".")) : true;
} else
l = false;
p = !!i[2], m = !!i[3];
} else
l = p = m = false;
}
}
var _ = { ie: function() {
return a() || o;
}, ieCompatibilityMode: function() {
return a() || N > o;
}, ie64: function() {
return _.ie() && D;
}, firefox: function() {
return a() || f;
}, opera: function() {
return a() || s;
}, webkit: function() {
return a() || u;
}, safari: function() {
return _.webkit();
}, chrome: function() {
return a() || d;
}, windows: function() {
return a() || p;
}, osx: function() {
return a() || l;
}, linux: function() {
return a() || m;
}, iphone: function() {
return a() || x;
}, mobile: function() {
return a() || x || E || w || F;
}, nativeApp: function() {
return a() || M;
}, android: function() {
return a() || w;
}, ipad: function() {
return a() || E;
} }, A = _;
var c = !!(typeof window < "u" && window.document && window.document.createElement), U = { canUseDOM: c, canUseWorkers: typeof Worker < "u", canUseEventListeners: c && !!(window.addEventListener || window.attachEvent), canUseViewport: c && !!window.screen, isInWorker: !c }, h = U;
var X;
h.canUseDOM && (X = document.implementation && document.implementation.hasFeature && document.implementation.hasFeature("", "") !== true);
function S(e, n) {
if (!h.canUseDOM || n && !("addEventListener" in document))
return false;
var i = "on" + e, r = i in document;
if (!r) {
var t = document.createElement("div");
t.setAttribute(i, "return;"), r = typeof t[i] == "function";
}
return !r && X && e === "wheel" && (r = document.implementation.hasFeature("Events.wheel", "3.0")), r;
}
var b = S;
var O = 10, I = 40, P = 800;
function T(e) {
var n = 0, i = 0, r = 0, t = 0;
return "detail" in e && (i = e.detail), "wheelDelta" in e && (i = -e.wheelDelta / 120), "wheelDeltaY" in e && (i = -e.wheelDeltaY / 120), "wheelDeltaX" in e && (n = -e.wheelDeltaX / 120), "axis" in e && e.axis === e.HORIZONTAL_AXIS && (n = i, i = 0), r = n * O, t = i * O, "deltaY" in e && (t = e.deltaY), "deltaX" in e && (r = e.deltaX), (r || t) && e.deltaMode && (e.deltaMode == 1 ? (r *= I, t *= I) : (r *= P, t *= P)), r && !n && (n = r < 1 ? -1 : 1), t && !i && (i = t < 1 ? -1 : 1), { spinX: n, spinY: i, pixelX: r, pixelY: t };
}
T.getEventType = function() {
return A.firefox() ? "DOMMouseScroll" : b("wheel") ? "wheel" : "mousewheel";
};
var Y = T;
/**
* Checks if an event is supported in the current execution environment.
*
* NOTE: This will not work correctly for non-generic events such as `change`,
* `reset`, `load`, `error`, and `select`.
*
* Borrows from Modernizr.
*
* @param {string} eventNameSuffix Event name, e.g. "click".
* @param {?boolean} capture Check if the capture phase is supported.
* @return {boolean} True if the event is supported.
* @internal
* @license Modernizr 3.0.0pre (Custom Build) | MIT
*/
const mousewheel = function(element, callback) {
if (element && element.addEventListener) {
const fn2 = function(event) {
const normalized = Y(event);
callback && Reflect.apply(callback, this, [event, normalized]);
};
if (isFirefox()) {
element.addEventListener("DOMMouseScroll", fn2);
} else {
element.onmousewheel = fn2;
}
}
};
const Mousewheel = {
beforeMount(el, binding) {
mousewheel(el, binding.value);
}
};
const makeList = (total, method4, methodFunc) => {
const arr = [];
const disabledArr = method4 && methodFunc();
for (let i = 0; i < total; i++) {
arr[i] = disabledArr ? disabledArr.includes(i) : false;
}
return arr;
};
const makeAvailableArr = (list) => {
return list.map((_2, index) => !_2 ? index : _2).filter((_2) => _2 !== true);
};
const getTimeLists = (disabledHours, disabledMinutes, disabledSeconds) => {
const getHoursList = (role, compare) => {
return makeList(24, disabledHours, () => disabledHours(role, compare));
};
const getMinutesList = (hour, role, compare) => {
return makeList(60, disabledMinutes, () => disabledMinutes(hour, role, compare));
};
const getSecondsList = (hour, minute, role, compare) => {
return makeList(60, disabledSeconds, () => disabledSeconds(hour, minute, role, compare));
};
return {
getHoursList,
getMinutesList,
getSecondsList
};
};
const getAvailableArrs = (disabledHours, disabledMinutes, disabledSeconds) => {
const { getHoursList, getMinutesList, getSecondsList } = getTimeLists(disabledHours, disabledMinutes, disabledSeconds);
const getAvailableHours = (role, compare) => {
return makeAvailableArr(getHoursList(role, compare));
};
const getAvailableMinutes = (hour, role, compare) => {
return makeAvailableArr(getMinutesList(hour, role, compare));
};
const getAvailableSeconds = (hour, minute, role, compare) => {
return makeAvailableArr(getSecondsList(hour, minute, role, compare));
};
return {
getAvailableHours,
getAvailableMinutes,
getAvailableSeconds
};
};
const useOldValue = (props) => {
const oldValue = ref(props.parsedValue);
watch(() => props.visible, (val) => {
if (!val) {
oldValue.value = props.parsedValue;
}
});
return oldValue;
};
const _sfc_main$S = defineComponent({
directives: {
repeatClick: RepeatClick
},
components: {
ElScrollbar,
ElIcon,
ArrowUp: arrowUp,
ArrowDown: arrowDown
},
props: {
role: {
type: String,
required: true
},
spinnerDate: {
type: Object,
required: true
},
showSeconds: {
type: Boolean,
default: true
},
arrowControl: Boolean,
amPmMode: {
type: String,
default: ""
},
disabledHours: {
type: Function
},
disabledMinutes: {
type: Function
},
disabledSeconds: {
type: Function
}
},
emits: ["change", "select-range", "set-option"],
setup(props, ctx) {
const ns = useNamespace("time");
let isScrolling = false;
const debouncedResetScroll = debounce$1((type4) => {
isScrolling = false;
adjustCurrentSpinner(type4);
}, 200);
const currentScrollbar = ref(null);
const listHoursRef = ref(null);
const listMinutesRef = ref(null);
const listSecondsRef = ref(null);
const listRefsMap = {
hours: listHoursRef,
minutes: listMinutesRef,
seconds: listSecondsRef
};
const spinnerItems = computed(() => {
const arr = ["hours", "minutes", "seconds"];
return props.showSeconds ? arr : arr.slice(0, 2);
});
const hours = computed(() => {
return props.spinnerDate.hour();
});
const minutes = computed(() => {
return props.spinnerDate.minute();
});
const seconds = computed(() => {
return props.spinnerDate.second();
});
const timePartsMap = computed(() => ({
hours,
minutes,
seconds
}));
const hoursList = computed(() => {
return getHoursList(props.role);
});
const minutesList = computed(() => {
return getMinutesList(hours.value, props.role);
});
const secondsList = computed(() => {
return getSecondsList(hours.value, minutes.value, props.role);
});
const listMap = computed(() => ({
hours: hoursList,
minutes: minutesList,
seconds: secondsList
}));
const arrowHourList = computed(() => {
const hour = hours.value;
return [
hour > 0 ? hour - 1 : void 0,
hour,
hour < 23 ? hour + 1 : void 0
];
});
const arrowMinuteList = computed(() => {
const minute = minutes.value;
return [
minute > 0 ? minute - 1 : void 0,
minute,
minute < 59 ? minute + 1 : void 0
];
});
const arrowSecondList = computed(() => {
const second = seconds.value;
return [
second > 0 ? second - 1 : void 0,
second,
second < 59 ? second + 1 : void 0
];
});
const arrowListMap = computed(() => ({
hours: arrowHourList,
minutes: arrowMinuteList,
seconds: arrowSecondList
}));
const getAmPmFlag = (hour) => {
const shouldShowAmPm = !!props.amPmMode;
if (!shouldShowAmPm)
return "";
const isCapital = props.amPmMode === "A";
let content2 = hour < 12 ? " am" : " pm";
if (isCapital)
content2 = content2.toUpperCase();
return content2;
};
const emitSelectRange = (type4) => {
if (type4 === "hours") {
ctx.emit("select-range", 0, 2);
} else if (type4 === "minutes") {
ctx.emit("select-range", 3, 5);
} else if (type4 === "seconds") {
ctx.emit("select-range", 6, 8);
}
currentScrollbar.value = type4;
};
const adjustCurrentSpinner = (type4) => {
adjustSpinner(type4, timePartsMap.value[type4].value);
};
const adjustSpinners = () => {
adjustCurrentSpinner("hours");
adjustCurrentSpinner("minutes");
adjustCurrentSpinner("seconds");
};
const getScrollbarElement = (el) => el.querySelector(`.${ns.namespace.value}-scrollbar__wrap`);
const adjustSpinner = (type4, value) => {
if (props.arrowControl)
return;
const el = listRefsMap[type4];
if (el && el.$el) {
getScrollbarElement(el.$el).scrollTop = Math.max(0, value * typeItemHeight(type4));
}
};
const typeItemHeight = (type4) => {
const el = listRefsMap[type4];
return el.$el.querySelector("li").offsetHeight;
};
const onIncreaseClick = () => {
scrollDown(1);
};
const onDecreaseClick = () => {
scrollDown(-1);
};
const scrollDown = (step) => {
if (!currentScrollbar.value) {
emitSelectRange("hours");
}
const label = currentScrollbar.value;
let now2 = timePartsMap.value[label].value;
const total = currentScrollbar.value === "hours" ? 24 : 60;
now2 = (now2 + step + total) % total;
modifyDateField(label, now2);
adjustSpinner(label, now2);
nextTick(() => emitSelectRange(currentScrollbar.value));
};
const modifyDateField = (type4, value) => {
const list = listMap.value[type4].value;
const isDisabled = list[value];
if (isDisabled)
return;
switch (type4) {
case "hours":
ctx.emit("change", props.spinnerDate.hour(value).minute(minutes.value).second(seconds.value));
break;
case "minutes":
ctx.emit("change", props.spinnerDate.hour(hours.value).minute(value).second(seconds.value));
break;
case "seconds":
ctx.emit("change", props.spinnerDate.hour(hours.value).minute(minutes.value).second(value));
break;
}
};
const handleClick = (type4, { value, disabled }) => {
if (!disabled) {
modifyDateField(type4, value);
emitSelectRange(type4);
adjustSpinner(type4, value);
}
};
const handleScroll = (type4) => {
isScrolling = true;
debouncedResetScroll(type4);
const value = Math.min(Math.round((getScrollbarElement(listRefsMap[type4].$el).scrollTop - (scrollBarHeight(type4) * 0.5 - 10) / typeItemHeight(type4) + 3) / typeItemHeight(type4)), type4 === "hours" ? 23 : 59);
modifyDateField(type4, value);
};
const scrollBarHeight = (type4) => {
return listRefsMap[type4].$el.offsetHeight;
};
const bindScrollEvent = () => {
const bindFunction = (type4) => {
if (listRefsMap[type4] && listRefsMap[type4].$el) {
getScrollbarElement(listRefsMap[type4].$el).onscroll = () => {
handleScroll(type4);
};
}
};
bindFunction("hours");
bindFunction("minutes");
bindFunction("seconds");
};
onMounted(() => {
nextTick(() => {
!props.arrowControl && bindScrollEvent();
adjustSpinners();
if (props.role === "start")
emitSelectRange("hours");
});
});
const setRef = (scrollbar, type4) => {
listRefsMap[type4] = scrollbar;
};
ctx.emit("set-option", [`${props.role}_scrollDown`, scrollDown]);
ctx.emit("set-option", [`${props.role}_emitSelectRange`, emitSelectRange]);
const { getHoursList, getMinutesList, getSecondsList } = getTimeLists(props.disabledHours, props.disabledMinutes, props.disabledSeconds);
watch(() => props.spinnerDate, () => {
if (isScrolling)
return;
adjustSpinners();
});
return {
ns,
setRef,
spinnerItems,
currentScrollbar,
hours,
minutes,
seconds,
hoursList,
minutesList,
arrowHourList,
arrowMinuteList,
arrowSecondList,
getAmPmFlag,
emitSelectRange,
adjustCurrentSpinner,
typeItemHeight,
listHoursRef,
listMinutesRef,
listSecondsRef,
onIncreaseClick,
onDecreaseClick,
handleClick,
secondsList,
timePartsMap,
arrowListMap,
listMap
};
}
});
const _hoisted_1$z = ["onClick"];
const _hoisted_2$r = ["onMouseenter"];
function _sfc_render$v(_ctx, _cache, $props, $setup, $data, $options) {
const _component_el_scrollbar = resolveComponent("el-scrollbar");
const _component_arrow_up = resolveComponent("arrow-up");
const _component_el_icon = resolveComponent("el-icon");
const _component_arrow_down = resolveComponent("arrow-down");
const _directive_repeat_click = resolveDirective("repeat-click");
return openBlock(), createElementBlock("div", {
class: normalizeClass([_ctx.ns.b("spinner"), { "has-seconds": _ctx.showSeconds }])
}, [
!_ctx.arrowControl ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(_ctx.spinnerItems, (item) => {
return openBlock(), createBlock(_component_el_scrollbar, {
key: item,
ref_for: true,
ref: (scollbar) => _ctx.setRef(scollbar, item),
class: normalizeClass(_ctx.ns.be("spinner", "wrapper")),
"wrap-style": "max-height: inherit;",
"view-class": _ctx.ns.be("spinner", "list"),
noresize: "",
tag: "ul",
onMouseenter: ($event) => _ctx.emitSelectRange(item),
onMousemove: ($event) => _ctx.adjustCurrentSpinner(item)
}, {
default: withCtx(() => [
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.listMap[item].value, (disabled, key) => {
return openBlock(), createElementBlock("li", {
key,
class: normalizeClass([
_ctx.ns.be("spinner", "item"),
_ctx.ns.is("active", key === _ctx.timePartsMap[item].value),
_ctx.ns.is("disabled", disabled)
]),
onClick: ($event) => _ctx.handleClick(item, { value: key, disabled })
}, [
item === "hours" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
createTextVNode(toDisplayString(("0" + (_ctx.amPmMode ? key % 12 || 12 : key)).slice(-2)) + toDisplayString(_ctx.getAmPmFlag(key)), 1)
], 2112)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
createTextVNode(toDisplayString(("0" + key).slice(-2)), 1)
], 2112))
], 10, _hoisted_1$z);
}), 128))
]),
_: 2
}, 1032, ["class", "view-class", "onMouseenter", "onMousemove"]);
}), 128)) : createCommentVNode("v-if", true),
_ctx.arrowControl ? (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(_ctx.spinnerItems, (item) => {
return openBlock(), createElementBlock("div", {
key: item,
class: normalizeClass([_ctx.ns.be("spinner", "wrapper"), _ctx.ns.is("arrow")]),
onMouseenter: ($event) => _ctx.emitSelectRange(item)
}, [
withDirectives((openBlock(), createBlock(_component_el_icon, {
class: normalizeClass(["arrow-up", _ctx.ns.be("spinner", "arrow")])
}, {
default: withCtx(() => [
createVNode(_component_arrow_up)
]),
_: 1
}, 8, ["class"])), [
[_directive_repeat_click, _ctx.onDecreaseClick]
]),
withDirectives((openBlock(), createBlock(_component_el_icon, {
class: normalizeClass(["arrow-down", _ctx.ns.be("spinner", "arrow")])
}, {
default: withCtx(() => [
createVNode(_component_arrow_down)
]),
_: 1
}, 8, ["class"])), [
[_directive_repeat_click, _ctx.onIncreaseClick]
]),
createElementVNode("ul", {
class: normalizeClass(_ctx.ns.be("spinner", "list"))
}, [
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.arrowListMap[item].value, (time, key) => {
return openBlock(), createElementBlock("li", {
key,
class: normalizeClass([
_ctx.ns.be("spinner", "item"),
_ctx.ns.is("active", time === _ctx.timePartsMap[item].value),
_ctx.ns.is("disabled", _ctx.listMap[item].value[time])
])
}, [
typeof time === "number" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
item === "hours" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
createTextVNode(toDisplayString(("0" + (_ctx.amPmMode ? time % 12 || 12 : time)).slice(-2)) + toDisplayString(_ctx.getAmPmFlag(time)), 1)
], 2112)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
createTextVNode(toDisplayString(("0" + time).slice(-2)), 1)
], 2112))
], 2112)) : createCommentVNode("v-if", true)
], 2);
}), 128))
], 2)
], 42, _hoisted_2$r);
}), 128)) : createCommentVNode("v-if", true)
], 2);
}
var TimeSpinner = /* @__PURE__ */ _export_sfc$1(_sfc_main$S, [["render", _sfc_render$v], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/time-picker/src/time-picker-com/basic-time-spinner.vue"]]);
const _sfc_main$R = defineComponent({
components: {
TimeSpinner
},
props: {
visible: Boolean,
actualVisible: {
type: Boolean,
default: void 0
},
datetimeRole: {
type: String
},
parsedValue: {
type: [Object, String]
},
format: {
type: String,
default: ""
}
},
emits: ["pick", "select-range", "set-picker-option"],
setup(props, ctx) {
const ns = useNamespace("time");
const { t, lang } = useLocale();
const selectionRange = ref([0, 2]);
const oldValue = useOldValue(props);
const transitionName = computed(() => {
return isUndefined(props.actualVisible) ? `${ns.namespace.value}-zoom-in-top` : "";
});
const showSeconds = computed(() => {
return props.format.includes("ss");
});
const amPmMode = computed(() => {
if (props.format.includes("A"))
return "A";
if (props.format.includes("a"))
return "a";
return "";
});
const isValidValue = (_date) => {
const parsedDate = dayjs(_date).locale(lang.value);
const result = getRangeAvailableTime(parsedDate);
return parsedDate.isSame(result);
};
const handleCancel = () => {
ctx.emit("pick", oldValue.value, false);
};
const handleConfirm = (visible = false, first = false) => {
if (first)
return;
ctx.emit("pick", props.parsedValue, visible);
};
const handleChange2 = (_date) => {
if (!props.visible) {
return;
}
const result = getRangeAvailableTime(_date).millisecond(0);
ctx.emit("pick", result, true);
};
const setSelectionRange = (start2, end2) => {
ctx.emit("select-range", start2, end2);
selectionRange.value = [start2, end2];
};
const changeSelectionRange = (step) => {
const list = [0, 3].concat(showSeconds.value ? [6] : []);
const mapping = ["hours", "minutes"].concat(showSeconds.value ? ["seconds"] : []);
const index = list.indexOf(selectionRange.value[0]);
const next = (index + step + list.length) % list.length;
timePickerOptions["start_emitSelectRange"](mapping[next]);
};
const handleKeydown = (event) => {
const code = event.code;
if (code === EVENT_CODE.left || code === EVENT_CODE.right) {
const step = code === EVENT_CODE.left ? -1 : 1;
changeSelectionRange(step);
event.preventDefault();
return;
}
if (code === EVENT_CODE.up || code === EVENT_CODE.down) {
const step = code === EVENT_CODE.up ? -1 : 1;
timePickerOptions["start_scrollDown"](step);
event.preventDefault();
return;
}
};
const getRangeAvailableTime = (date4) => {
const availableMap = {
hour: getAvailableHours,
minute: getAvailableMinutes,
second: getAvailableSeconds
};
let result = date4;
["hour", "minute", "second"].forEach((_2) => {
if (availableMap[_2]) {
let availableArr;
const method4 = availableMap[_2];
if (_2 === "minute") {
availableArr = method4(result.hour(), props.datetimeRole);
} else if (_2 === "second") {
availableArr = method4(result.hour(), result.minute(), props.datetimeRole);
} else {
availableArr = method4(props.datetimeRole);
}
if (availableArr && availableArr.length && !availableArr.includes(result[_2]())) {
result = result[_2](availableArr[0]);
}
}
});
return result;
};
const parseUserInput = (value) => {
if (!value)
return null;
return dayjs(value, props.format).locale(lang.value);
};
const formatToString = (value) => {
if (!value)
return null;
return value.format(props.format);
};
const getDefaultValue = () => {
return dayjs(defaultValue).locale(lang.value);
};
ctx.emit("set-picker-option", ["isValidValue", isValidValue]);
ctx.emit("set-picker-option", ["formatToString", formatToString]);
ctx.emit("set-picker-option", ["parseUserInput", parseUserInput]);
ctx.emit("set-picker-option", ["handleKeydown", handleKeydown]);
ctx.emit("set-picker-option", [
"getRangeAvailableTime",
getRangeAvailableTime
]);
ctx.emit("set-picker-option", ["getDefaultValue", getDefaultValue]);
const timePickerOptions = {};
const onSetOption = (e) => {
timePickerOptions[e[0]] = e[1];
};
const pickerBase = inject("EP_PICKER_BASE");
const {
arrowControl,
disabledHours,
disabledMinutes,
disabledSeconds,
defaultValue
} = pickerBase.props;
const { getAvailableHours, getAvailableMinutes, getAvailableSeconds } = getAvailableArrs(disabledHours, disabledMinutes, disabledSeconds);
return {
ns,
transitionName,
arrowControl,
onSetOption,
t,
handleConfirm,
handleChange: handleChange2,
setSelectionRange,
amPmMode,
showSeconds,
handleCancel,
disabledHours,
disabledMinutes,
disabledSeconds
};
}
});
function _sfc_render$u(_ctx, _cache, $props, $setup, $data, $options) {
const _component_time_spinner = resolveComponent("time-spinner");
return openBlock(), createBlock(Transition, { name: _ctx.transitionName }, {
default: withCtx(() => [
_ctx.actualVisible || _ctx.visible ? (openBlock(), createElementBlock("div", {
key: 0,
class: normalizeClass(_ctx.ns.b("panel"))
}, [
createElementVNode("div", {
class: normalizeClass([_ctx.ns.be("panel", "content"), { "has-seconds": _ctx.showSeconds }])
}, [
createVNode(_component_time_spinner, {
ref: "spinner",
role: _ctx.datetimeRole || "start",
"arrow-control": _ctx.arrowControl,
"show-seconds": _ctx.showSeconds,
"am-pm-mode": _ctx.amPmMode,
"spinner-date": _ctx.parsedValue,
"disabled-hours": _ctx.disabledHours,
"disabled-minutes": _ctx.disabledMinutes,
"disabled-seconds": _ctx.disabledSeconds,
onChange: _ctx.handleChange,
onSetOption: _ctx.onSetOption,
onSelectRange: _ctx.setSelectionRange
}, null, 8, ["role", "arrow-control", "show-seconds", "am-pm-mode", "spinner-date", "disabled-hours", "disabled-minutes", "disabled-seconds", "onChange", "onSetOption", "onSelectRange"])
], 2),
createElementVNode("div", {
class: normalizeClass(_ctx.ns.be("panel", "footer"))
}, [
createElementVNode("button", {
type: "button",
class: normalizeClass([_ctx.ns.be("panel", "btn"), "cancel"]),
onClick: _cache[0] || (_cache[0] = (...args) => _ctx.handleCancel && _ctx.handleCancel(...args))
}, toDisplayString(_ctx.t("el.datepicker.cancel")), 3),
createElementVNode("button", {
type: "button",
class: normalizeClass([_ctx.ns.be("panel", "btn"), "confirm"]),
onClick: _cache[1] || (_cache[1] = ($event) => _ctx.handleConfirm())
}, toDisplayString(_ctx.t("el.datepicker.confirm")), 3)
], 2)
], 2)) : createCommentVNode("v-if", true)
]),
_: 1
}, 8, ["name"]);
}
var TimePickPanel = /* @__PURE__ */ _export_sfc$1(_sfc_main$R, [["render", _sfc_render$u], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/time-picker/src/time-picker-com/panel-time-pick.vue"]]);
const makeSelectRange = (start2, end2) => {
const result = [];
for (let i = start2; i <= end2; i++) {
result.push(i);
}
return result;
};
const _sfc_main$Q = defineComponent({
components: { TimeSpinner },
props: {
visible: Boolean,
actualVisible: Boolean,
parsedValue: {
type: [Array]
},
format: {
type: String,
default: ""
}
},
emits: ["pick", "select-range", "set-picker-option"],
setup(props, ctx) {
const { t, lang } = useLocale();
const nsTime = useNamespace("time");
const nsPicker = useNamespace("picker");
const minDate = computed(() => props.parsedValue[0]);
const maxDate = computed(() => props.parsedValue[1]);
const oldValue = useOldValue(props);
const handleCancel = () => {
ctx.emit("pick", oldValue.value, false);
};
const showSeconds = computed(() => {
return props.format.includes("ss");
});
const amPmMode = computed(() => {
if (props.format.includes("A"))
return "A";
if (props.format.includes("a"))
return "a";
return "";
});
const minSelectableRange = ref([]);
const maxSelectableRange = ref([]);
const handleConfirm = (visible = false) => {
ctx.emit("pick", [minDate.value, maxDate.value], visible);
};
const handleMinChange = (date4) => {
handleChange2(date4.millisecond(0), maxDate.value);
};
const handleMaxChange = (date4) => {
handleChange2(minDate.value, date4.millisecond(0));
};
const isValidValue = (_date) => {
const parsedDate = _date.map((_2) => dayjs(_2).locale(lang.value));
const result = getRangeAvailableTime(parsedDate);
return parsedDate[0].isSame(result[0]) && parsedDate[1].isSame(result[1]);
};
const handleChange2 = (_minDate, _maxDate) => {
ctx.emit("pick", [_minDate, _maxDate], true);
};
const btnConfirmDisabled = computed(() => {
return minDate.value > maxDate.value;
});
const selectionRange = ref([0, 2]);
const setMinSelectionRange = (start2, end2) => {
ctx.emit("select-range", start2, end2, "min");
selectionRange.value = [start2, end2];
};
const offset2 = computed(() => showSeconds.value ? 11 : 8);
const setMaxSelectionRange = (start2, end2) => {
ctx.emit("select-range", start2, end2, "max");
selectionRange.value = [start2 + offset2.value, end2 + offset2.value];
};
const changeSelectionRange = (step) => {
const list = showSeconds.value ? [0, 3, 6, 11, 14, 17] : [0, 3, 8, 11];
const mapping = ["hours", "minutes"].concat(showSeconds.value ? ["seconds"] : []);
const index = list.indexOf(selectionRange.value[0]);
const next = (index + step + list.length) % list.length;
const half = list.length / 2;
if (next < half) {
timePickerOptions["start_emitSelectRange"](mapping[next]);
} else {
timePickerOptions["end_emitSelectRange"](mapping[next - half]);
}
};
const handleKeydown = (event) => {
const code = event.code;
if (code === EVENT_CODE.left || code === EVENT_CODE.right) {
const step = code === EVENT_CODE.left ? -1 : 1;
changeSelectionRange(step);
event.preventDefault();
return;
}
if (code === EVENT_CODE.up || code === EVENT_CODE.down) {
const step = code === EVENT_CODE.up ? -1 : 1;
const role = selectionRange.value[0] < offset2.value ? "start" : "end";
timePickerOptions[`${role}_scrollDown`](step);
event.preventDefault();
return;
}
};
const disabledHours_ = (role, compare) => {
const defaultDisable = disabledHours ? disabledHours(role) : [];
const isStart = role === "start";
const compareDate = compare || (isStart ? maxDate.value : minDate.value);
const compareHour = compareDate.hour();
const nextDisable = isStart ? makeSelectRange(compareHour + 1, 23) : makeSelectRange(0, compareHour - 1);
return union$1(defaultDisable, nextDisable);
};
const disabledMinutes_ = (hour, role, compare) => {
const defaultDisable = disabledMinutes ? disabledMinutes(hour, role) : [];
const isStart = role === "start";
const compareDate = compare || (isStart ? maxDate.value : minDate.value);
const compareHour = compareDate.hour();
if (hour !== compareHour) {
return defaultDisable;
}
const compareMinute = compareDate.minute();
const nextDisable = isStart ? makeSelectRange(compareMinute + 1, 59) : makeSelectRange(0, compareMinute - 1);
return union$1(defaultDisable, nextDisable);
};
const disabledSeconds_ = (hour, minute, role, compare) => {
const defaultDisable = disabledSeconds ? disabledSeconds(hour, minute, role) : [];
const isStart = role === "start";
const compareDate = compare || (isStart ? maxDate.value : minDate.value);
const compareHour = compareDate.hour();
const compareMinute = compareDate.minute();
if (hour !== compareHour || minute !== compareMinute) {
return defaultDisable;
}
const compareSecond = compareDate.second();
const nextDisable = isStart ? makeSelectRange(compareSecond + 1, 59) : makeSelectRange(0, compareSecond - 1);
return union$1(defaultDisable, nextDisable);
};
const getRangeAvailableTime = (dates) => {
return dates.map((_2, index) => getRangeAvailableTimeEach(dates[0], dates[1], index === 0 ? "start" : "end"));
};
const { getAvailableHours, getAvailableMinutes, getAvailableSeconds } = getAvailableArrs(disabledHours_, disabledMinutes_, disabledSeconds_);
const getRangeAvailableTimeEach = (startDate, endDate, role) => {
const availableMap = {
hour: getAvailableHours,
minute: getAvailableMinutes,
second: getAvailableSeconds
};
const isStart = role === "start";
let result = isStart ? startDate : endDate;
const compareDate = isStart ? endDate : startDate;
["hour", "minute", "second"].forEach((_2) => {
if (availableMap[_2]) {
let availableArr;
const method4 = availableMap[_2];
if (_2 === "minute") {
availableArr = method4(result.hour(), role, compareDate);
} else if (_2 === "second") {
availableArr = method4(result.hour(), result.minute(), role, compareDate);
} else {
availableArr = method4(role, compareDate);
}
if (availableArr && availableArr.length && !availableArr.includes(result[_2]())) {
const pos = isStart ? 0 : availableArr.length - 1;
result = result[_2](availableArr[pos]);
}
}
});
return result;
};
const parseUserInput = (value) => {
if (!value)
return null;
if (Array.isArray(value)) {
return value.map((_2) => dayjs(_2, props.format).locale(lang.value));
}
return dayjs(value, props.format).locale(lang.value);
};
const formatToString = (value) => {
if (!value)
return null;
if (Array.isArray(value)) {
return value.map((_2) => _2.format(props.format));
}
return value.format(props.format);
};
const getDefaultValue = () => {
if (Array.isArray(defaultValue)) {
return defaultValue.map((_2) => dayjs(_2).locale(lang.value));
}
const defaultDay = dayjs(defaultValue).locale(lang.value);
return [defaultDay, defaultDay.add(60, "m")];
};
ctx.emit("set-picker-option", ["formatToString", formatToString]);
ctx.emit("set-picker-option", ["parseUserInput", parseUserInput]);
ctx.emit("set-picker-option", ["isValidValue", isValidValue]);
ctx.emit("set-picker-option", ["handleKeydown", handleKeydown]);
ctx.emit("set-picker-option", ["getDefaultValue", getDefaultValue]);
ctx.emit("set-picker-option", [
"getRangeAvailableTime",
getRangeAvailableTime
]);
const timePickerOptions = {};
const onSetOption = (e) => {
timePickerOptions[e[0]] = e[1];
};
const pickerBase = inject("EP_PICKER_BASE");
const {
arrowControl,
disabledHours,
disabledMinutes,
disabledSeconds,
defaultValue
} = pickerBase.props;
return {
nsTime,
nsPicker,
arrowControl,
onSetOption,
setMaxSelectionRange,
setMinSelectionRange,
btnConfirmDisabled,
handleCancel,
handleConfirm,
t,
showSeconds,
minDate,
maxDate,
amPmMode,
handleMinChange,
handleMaxChange,
minSelectableRange,
maxSelectableRange,
disabledHours_,
disabledMinutes_,
disabledSeconds_
};
}
});
const _hoisted_1$y = ["disabled"];
function _sfc_render$t(_ctx, _cache, $props, $setup, $data, $options) {
const _component_time_spinner = resolveComponent("time-spinner");
return _ctx.actualVisible ? (openBlock(), createElementBlock("div", {
key: 0,
class: normalizeClass([_ctx.nsTime.b("range-picker"), _ctx.nsPicker.b("panel")])
}, [
createElementVNode("div", {
class: normalizeClass(_ctx.nsTime.be("range-picker", "content"))
}, [
createElementVNode("div", {
class: normalizeClass(_ctx.nsTime.be("range-picker", "cell"))
}, [
createElementVNode("div", {
class: normalizeClass(_ctx.nsTime.be("range-picker", "header"))
}, toDisplayString(_ctx.t("el.datepicker.startTime")), 3),
createElementVNode("div", {
class: normalizeClass([
_ctx.nsTime.be("range-picker", "body"),
_ctx.nsTime.be("panel", "content"),
_ctx.nsTime.is("arrow", _ctx.arrowControl),
{ "has-seconds": _ctx.showSeconds }
])
}, [
createVNode(_component_time_spinner, {
ref: "minSpinner",
role: "start",
"show-seconds": _ctx.showSeconds,
"am-pm-mode": _ctx.amPmMode,
"arrow-control": _ctx.arrowControl,
"spinner-date": _ctx.minDate,
"disabled-hours": _ctx.disabledHours_,
"disabled-minutes": _ctx.disabledMinutes_,
"disabled-seconds": _ctx.disabledSeconds_,
onChange: _ctx.handleMinChange,
onSetOption: _ctx.onSetOption,
onSelectRange: _ctx.setMinSelectionRange
}, null, 8, ["show-seconds", "am-pm-mode", "arrow-control", "spinner-date", "disabled-hours", "disabled-minutes", "disabled-seconds", "onChange", "onSetOption", "onSelectRange"])
], 2)
], 2),
createElementVNode("div", {
class: normalizeClass(_ctx.nsTime.be("range-picker", "cell"))
}, [
createElementVNode("div", {
class: normalizeClass(_ctx.nsTime.be("range-picker", "header"))
}, toDisplayString(_ctx.t("el.datepicker.endTime")), 3),
createElementVNode("div", {
class: normalizeClass([
_ctx.nsTime.be("range-picker", "body"),
_ctx.nsTime.be("panel", "content"),
_ctx.nsTime.is("arrow", _ctx.arrowControl),
{ "has-seconds": _ctx.showSeconds }
])
}, [
createVNode(_component_time_spinner, {
ref: "maxSpinner",
role: "end",
"show-seconds": _ctx.showSeconds,
"am-pm-mode": _ctx.amPmMode,
"arrow-control": _ctx.arrowControl,
"spinner-date": _ctx.maxDate,
"disabled-hours": _ctx.disabledHours_,
"disabled-minutes": _ctx.disabledMinutes_,
"disabled-seconds": _ctx.disabledSeconds_,
onChange: _ctx.handleMaxChange,
onSetOption: _ctx.onSetOption,
onSelectRange: _ctx.setMaxSelectionRange
}, null, 8, ["show-seconds", "am-pm-mode", "arrow-control", "spinner-date", "disabled-hours", "disabled-minutes", "disabled-seconds", "onChange", "onSetOption", "onSelectRange"])
], 2)
], 2)
], 2),
createElementVNode("div", {
class: normalizeClass(_ctx.nsTime.be("panel", "footer"))
}, [
createElementVNode("button", {
type: "button",
class: normalizeClass([_ctx.nsTime.be("panel", "btn"), "cancel"]),
onClick: _cache[0] || (_cache[0] = ($event) => _ctx.handleCancel())
}, toDisplayString(_ctx.t("el.datepicker.cancel")), 3),
createElementVNode("button", {
type: "button",
class: normalizeClass([_ctx.nsTime.be("panel", "btn"), "confirm"]),
disabled: _ctx.btnConfirmDisabled,
onClick: _cache[1] || (_cache[1] = ($event) => _ctx.handleConfirm())
}, toDisplayString(_ctx.t("el.datepicker.confirm")), 11, _hoisted_1$y)
], 2)
], 2)) : createCommentVNode("v-if", true);
}
var TimeRangePanel = /* @__PURE__ */ _export_sfc$1(_sfc_main$Q, [["render", _sfc_render$t], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/time-picker/src/time-picker-com/panel-time-range.vue"]]);
dayjs.extend(customParseFormat);
var TimePicker = defineComponent({
name: "ElTimePicker",
install: null,
props: __spreadProps(__spreadValues({}, timePickerDefaultProps), {
isRange: {
type: Boolean,
default: false
}
}),
emits: ["update:modelValue"],
setup(props, ctx) {
const commonPicker = ref(null);
const type4 = props.isRange ? "timerange" : "time";
const panel = props.isRange ? TimeRangePanel : TimePickPanel;
const refProps = __spreadProps(__spreadValues({}, props), {
focus: () => {
var _a2;
(_a2 = commonPicker.value) == null ? void 0 : _a2.handleFocus();
},
blur: () => {
var _a2;
(_a2 = commonPicker.value) == null ? void 0 : _a2.handleBlur();
}
});
provide("ElPopperOptions", props.popperOptions);
ctx.expose(refProps);
return () => {
var _a2;
const format2 = (_a2 = props.format) != null ? _a2 : DEFAULT_FORMATS_TIME;
return h$1(CommonPicker, __spreadProps(__spreadValues({}, props), {
format: format2,
type: type4,
ref: commonPicker,
"onUpdate:modelValue": (value) => ctx.emit("update:modelValue", value)
}), {
default: (scopedProps) => h$1(panel, scopedProps)
});
};
}
});
const rangeArr = (n) => Array.from(Array.from({ length: n }).keys());
const extractDateFormat = (format2) => {
return format2.replace(/\W?m{1,2}|\W?ZZ/g, "").replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi, "").trim();
};
const extractTimeFormat = (format2) => {
return format2.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?Y{2,4}/g, "").trim();
};
const _TimePicker = TimePicker;
_TimePicker.install = (app) => {
app.component(_TimePicker.name, _TimePicker);
};
const ElTimePicker = _TimePicker;
const useCheckboxProps = {
modelValue: {
type: [Boolean, Number, String],
default: () => void 0
},
label: {
type: [String, Boolean, Number, Object]
},
indeterminate: Boolean,
disabled: Boolean,
checked: Boolean,
name: {
type: String,
default: void 0
},
trueLabel: {
type: [String, Number],
default: void 0
},
falseLabel: {
type: [String, Number],
default: void 0
},
tabindex: [String, Number],
size: String
};
const useCheckboxGroup = () => {
const elForm2 = inject(formContextKey, {});
const elFormItem2 = inject(formItemContextKey, {});
const checkboxGroup = inject("CheckboxGroup", {});
const isGroup = computed(() => checkboxGroup && (checkboxGroup == null ? void 0 : checkboxGroup.name) === "ElCheckboxGroup");
const elFormItemSize = computed(() => {
return elFormItem2.size;
});
return {
isGroup,
checkboxGroup,
elForm: elForm2,
elFormItemSize,
elFormItem: elFormItem2
};
};
const useModel = (props) => {
const selfModel = ref(false);
const { emit } = getCurrentInstance();
const { isGroup, checkboxGroup } = useCheckboxGroup();
const isLimitExceeded = ref(false);
const model = computed({
get() {
var _a2, _b2;
return isGroup.value ? (_a2 = checkboxGroup.modelValue) == null ? void 0 : _a2.value : (_b2 = props.modelValue) != null ? _b2 : selfModel.value;
},
set(val) {
var _a2;
if (isGroup.value && Array.isArray(val)) {
isLimitExceeded.value = checkboxGroup.max !== void 0 && val.length > checkboxGroup.max.value;
isLimitExceeded.value === false && ((_a2 = checkboxGroup == null ? void 0 : checkboxGroup.changeEvent) == null ? void 0 : _a2.call(checkboxGroup, val));
} else {
emit(UPDATE_MODEL_EVENT, val);
selfModel.value = val;
}
}
});
return {
model,
isLimitExceeded
};
};
const useCheckboxStatus = (props, { model }) => {
const { isGroup, checkboxGroup } = useCheckboxGroup();
const focus = ref(false);
const size = useSize(checkboxGroup == null ? void 0 : checkboxGroup.checkboxGroupSize, { prop: true });
const isChecked = computed(() => {
const value = model.value;
if (toTypeString(value) === "[object Boolean]") {
return value;
} else if (Array.isArray(value)) {
return value.includes(props.label);
} else if (value !== null && value !== void 0) {
return value === props.trueLabel;
} else {
return !!value;
}
});
const checkboxSize = useSize(computed(() => {
var _a2;
return isGroup.value ? (_a2 = checkboxGroup == null ? void 0 : checkboxGroup.checkboxGroupSize) == null ? void 0 : _a2.value : void 0;
}));
return {
isChecked,
focus,
size,
checkboxSize
};
};
const useDisabled = (props, {
model,
isChecked
}) => {
const { elForm: elForm2, isGroup, checkboxGroup } = useCheckboxGroup();
const isLimitDisabled = computed(() => {
var _a2, _b2;
const max2 = (_a2 = checkboxGroup.max) == null ? void 0 : _a2.value;
const min2 = (_b2 = checkboxGroup.min) == null ? void 0 : _b2.value;
return !!(max2 || min2) && model.value.length >= max2 && !isChecked.value || model.value.length <= min2 && isChecked.value;
});
const isDisabled = computed(() => {
var _a2, _b2;
const disabled = props.disabled || elForm2.disabled;
return (_b2 = isGroup.value ? ((_a2 = checkboxGroup.disabled) == null ? void 0 : _a2.value) || disabled || isLimitDisabled.value : props.disabled || elForm2.disabled) != null ? _b2 : false;
});
return {
isDisabled,
isLimitDisabled
};
};
const setStoreValue = (props, { model }) => {
function addToStore() {
if (Array.isArray(model.value) && !model.value.includes(props.label)) {
model.value.push(props.label);
} else {
model.value = props.trueLabel || true;
}
}
props.checked && addToStore();
};
const useEvent$1 = (props, { isLimitExceeded }) => {
const { elFormItem: elFormItem2 } = useCheckboxGroup();
const { emit } = getCurrentInstance();
function handleChange2(e) {
var _a2, _b2;
if (isLimitExceeded.value)
return;
const target = e.target;
const value = target.checked ? (_a2 = props.trueLabel) != null ? _a2 : true : (_b2 = props.falseLabel) != null ? _b2 : false;
emit("change", value, e);
}
watch(() => props.modelValue, () => {
var _a2;
(_a2 = elFormItem2.validate) == null ? void 0 : _a2.call(elFormItem2, "change").catch((err) => debugWarn());
});
return {
handleChange: handleChange2
};
};
const useCheckbox = (props) => {
const { model, isLimitExceeded } = useModel(props);
const { focus, size, isChecked, checkboxSize } = useCheckboxStatus(props, {
model
});
const { isDisabled } = useDisabled(props, { model, isChecked });
const { handleChange: handleChange2 } = useEvent$1(props, { isLimitExceeded });
setStoreValue(props, { model });
return {
isChecked,
isDisabled,
checkboxSize,
model,
handleChange: handleChange2,
focus,
size
};
};
const _sfc_main$P = defineComponent({
name: "ElCheckbox",
props: {
modelValue: {
type: [Number, String, Boolean],
default: () => void 0
},
label: {
type: [String, Boolean, Number, Object]
},
indeterminate: Boolean,
disabled: Boolean,
checked: Boolean,
name: {
type: String,
default: void 0
},
trueLabel: {
type: [String, Number],
default: void 0
},
falseLabel: {
type: [String, Number],
default: void 0
},
id: {
type: String,
default: void 0
},
controls: {
type: String,
default: void 0
},
border: Boolean,
size: {
type: String,
validator: isValidComponentSize
},
tabindex: [String, Number]
},
emits: [UPDATE_MODEL_EVENT, "change"],
setup(props) {
const ns = useNamespace("checkbox");
return __spreadValues({
ns
}, useCheckbox(props));
}
});
const _hoisted_1$x = ["id", "aria-controls"];
const _hoisted_2$q = ["tabindex", "role", "aria-checked"];
const _hoisted_3$h = ["aria-hidden", "name", "tabindex", "disabled", "true-value", "false-value"];
const _hoisted_4$e = ["aria-hidden", "disabled", "value", "name", "tabindex"];
function _sfc_render$s(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("label", {
id: _ctx.id,
class: normalizeClass([
_ctx.ns.b(),
_ctx.ns.m(_ctx.checkboxSize),
_ctx.ns.is("disabled", _ctx.isDisabled),
_ctx.ns.is("bordered", _ctx.border),
_ctx.ns.is("checked", _ctx.isChecked)
]),
"aria-controls": _ctx.indeterminate ? _ctx.controls : null
}, [
createElementVNode("span", {
class: normalizeClass([
_ctx.ns.e("input"),
_ctx.ns.is("disabled", _ctx.isDisabled),
_ctx.ns.is("checked", _ctx.isChecked),
_ctx.ns.is("indeterminate", _ctx.indeterminate),
_ctx.ns.is("focus", _ctx.focus)
]),
tabindex: _ctx.indeterminate ? 0 : void 0,
role: _ctx.indeterminate ? "checkbox" : void 0,
"aria-checked": _ctx.indeterminate ? "mixed" : false
}, [
createElementVNode("span", {
class: normalizeClass(_ctx.ns.e("inner"))
}, null, 2),
_ctx.trueLabel || _ctx.falseLabel ? withDirectives((openBlock(), createElementBlock("input", {
key: 0,
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => _ctx.model = $event),
class: normalizeClass(_ctx.ns.e("original")),
type: "checkbox",
"aria-hidden": _ctx.indeterminate ? "true" : "false",
name: _ctx.name,
tabindex: _ctx.tabindex,
disabled: _ctx.isDisabled,
"true-value": _ctx.trueLabel,
"false-value": _ctx.falseLabel,
onChange: _cache[1] || (_cache[1] = (...args) => _ctx.handleChange && _ctx.handleChange(...args)),
onFocus: _cache[2] || (_cache[2] = ($event) => _ctx.focus = true),
onBlur: _cache[3] || (_cache[3] = ($event) => _ctx.focus = false)
}, null, 42, _hoisted_3$h)), [
[vModelCheckbox, _ctx.model]
]) : withDirectives((openBlock(), createElementBlock("input", {
key: 1,
"onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => _ctx.model = $event),
class: normalizeClass(_ctx.ns.e("original")),
type: "checkbox",
"aria-hidden": _ctx.indeterminate ? "true" : "false",
disabled: _ctx.isDisabled,
value: _ctx.label,
name: _ctx.name,
tabindex: _ctx.tabindex,
onChange: _cache[5] || (_cache[5] = (...args) => _ctx.handleChange && _ctx.handleChange(...args)),
onFocus: _cache[6] || (_cache[6] = ($event) => _ctx.focus = true),
onBlur: _cache[7] || (_cache[7] = ($event) => _ctx.focus = false)
}, null, 42, _hoisted_4$e)), [
[vModelCheckbox, _ctx.model]
])
], 10, _hoisted_2$q),
_ctx.$slots.default || _ctx.label ? (openBlock(), createElementBlock("span", {
key: 0,
class: normalizeClass(_ctx.ns.e("label"))
}, [
renderSlot(_ctx.$slots, "default"),
!_ctx.$slots.default ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
createTextVNode(toDisplayString(_ctx.label), 1)
], 2112)) : createCommentVNode("v-if", true)
], 2)) : createCommentVNode("v-if", true)
], 10, _hoisted_1$x);
}
var Checkbox = /* @__PURE__ */ _export_sfc$1(_sfc_main$P, [["render", _sfc_render$s], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/checkbox/src/checkbox.vue"]]);
const _sfc_main$O = defineComponent({
name: "ElCheckboxButton",
props: useCheckboxProps,
emits: [UPDATE_MODEL_EVENT, "change"],
setup(props) {
const { focus, isChecked, isDisabled, size, model, handleChange: handleChange2 } = useCheckbox(props);
const { checkboxGroup } = useCheckboxGroup();
const ns = useNamespace("checkbox");
const activeStyle = computed(() => {
var _a2, _b2, _c, _d;
const fillValue = (_b2 = (_a2 = checkboxGroup == null ? void 0 : checkboxGroup.fill) == null ? void 0 : _a2.value) != null ? _b2 : "";
return {
backgroundColor: fillValue,
borderColor: fillValue,
color: (_d = (_c = checkboxGroup == null ? void 0 : checkboxGroup.textColor) == null ? void 0 : _c.value) != null ? _d : "",
boxShadow: fillValue ? `-1px 0 0 0 ${fillValue}` : null
};
});
return {
focus,
isChecked,
isDisabled,
model,
handleChange: handleChange2,
activeStyle,
size,
ns
};
}
});
const _hoisted_1$w = ["aria-checked", "aria-disabled"];
const _hoisted_2$p = ["name", "tabindex", "disabled", "true-value", "false-value"];
const _hoisted_3$g = ["name", "tabindex", "disabled", "value"];
function _sfc_render$r(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("label", {
class: normalizeClass([
_ctx.ns.b("button"),
_ctx.ns.bm("button", _ctx.size),
_ctx.ns.is("disabled", _ctx.isDisabled),
_ctx.ns.is("checked", _ctx.isChecked),
_ctx.ns.is("focus", _ctx.focus)
]),
role: "checkbox",
"aria-checked": _ctx.isChecked,
"aria-disabled": _ctx.isDisabled
}, [
_ctx.trueLabel || _ctx.falseLabel ? withDirectives((openBlock(), createElementBlock("input", {
key: 0,
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => _ctx.model = $event),
class: normalizeClass(_ctx.ns.be("button", "original")),
type: "checkbox",
name: _ctx.name,
tabindex: _ctx.tabindex,
disabled: _ctx.isDisabled,
"true-value": _ctx.trueLabel,
"false-value": _ctx.falseLabel,
onChange: _cache[1] || (_cache[1] = (...args) => _ctx.handleChange && _ctx.handleChange(...args)),
onFocus: _cache[2] || (_cache[2] = ($event) => _ctx.focus = true),
onBlur: _cache[3] || (_cache[3] = ($event) => _ctx.focus = false)
}, null, 42, _hoisted_2$p)), [
[vModelCheckbox, _ctx.model]
]) : withDirectives((openBlock(), createElementBlock("input", {
key: 1,
"onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => _ctx.model = $event),
class: normalizeClass(_ctx.ns.be("button", "original")),
type: "checkbox",
name: _ctx.name,
tabindex: _ctx.tabindex,
disabled: _ctx.isDisabled,
value: _ctx.label,
onChange: _cache[5] || (_cache[5] = (...args) => _ctx.handleChange && _ctx.handleChange(...args)),
onFocus: _cache[6] || (_cache[6] = ($event) => _ctx.focus = true),
onBlur: _cache[7] || (_cache[7] = ($event) => _ctx.focus = false)
}, null, 42, _hoisted_3$g)), [
[vModelCheckbox, _ctx.model]
]),
_ctx.$slots.default || _ctx.label ? (openBlock(), createElementBlock("span", {
key: 2,
class: normalizeClass(_ctx.ns.be("button", "inner")),
style: normalizeStyle(_ctx.isChecked ? _ctx.activeStyle : null)
}, [
renderSlot(_ctx.$slots, "default", {}, () => [
createTextVNode(toDisplayString(_ctx.label), 1)
])
], 6)) : createCommentVNode("v-if", true)
], 10, _hoisted_1$w);
}
var CheckboxButton = /* @__PURE__ */ _export_sfc$1(_sfc_main$O, [["render", _sfc_render$r], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/checkbox/src/checkbox-button.vue"]]);
const _sfc_main$N = defineComponent({
name: "ElCheckboxGroup",
props: {
modelValue: {
type: Array,
default: () => []
},
disabled: Boolean,
min: {
type: Number,
default: void 0
},
max: {
type: Number,
default: void 0
},
size: {
type: String,
validator: isValidComponentSize
},
fill: {
type: String,
default: void 0
},
textColor: {
type: String,
default: void 0
},
tag: {
type: String,
default: "div"
}
},
emits: [UPDATE_MODEL_EVENT, "change"],
setup(props, { emit, slots }) {
const { elFormItem: elFormItem2 } = useCheckboxGroup();
const checkboxGroupSize = useSize();
const ns = useNamespace("checkbox");
const changeEvent = (value) => {
emit(UPDATE_MODEL_EVENT, value);
nextTick(() => {
emit("change", value);
});
};
const modelValue = computed({
get() {
return props.modelValue;
},
set(val) {
changeEvent(val);
}
});
provide("CheckboxGroup", __spreadProps(__spreadValues({
name: "ElCheckboxGroup",
modelValue
}, toRefs(props)), {
checkboxGroupSize,
changeEvent
}));
watch(() => props.modelValue, () => {
var _a2;
(_a2 = elFormItem2.validate) == null ? void 0 : _a2.call(elFormItem2, "change").catch((err) => debugWarn());
});
return () => {
return h$1(props.tag, {
class: ns.b("group"),
role: "group",
"aria-label": "checkbox-group"
}, [renderSlot(slots, "default")]);
};
}
});
var CheckboxGroup = /* @__PURE__ */ _export_sfc$1(_sfc_main$N, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/checkbox/src/checkbox-group.vue"]]);
const ElCheckbox = withInstall(Checkbox, {
CheckboxButton,
CheckboxGroup
});
withNoopInstall(CheckboxButton);
const ElCheckboxGroup$1 = withNoopInstall(CheckboxGroup);
const radioPropsBase = buildProps({
size: useSizeProp,
disabled: Boolean,
label: {
type: [String, Number, Boolean],
default: ""
}
});
const radioProps = buildProps(__spreadProps(__spreadValues({}, radioPropsBase), {
modelValue: {
type: [String, Number, Boolean],
default: ""
},
name: {
type: String,
default: ""
},
border: Boolean
}));
const radioEmits = {
[UPDATE_MODEL_EVENT]: (val) => isString(val) || isNumber(val) || isBoolean(val),
change: (val) => isString(val) || isNumber(val) || isBoolean(val)
};
const useRadio = (props, emit) => {
const radioRef = ref();
const radioGroup = inject(radioGroupKey, void 0);
const isGroup = computed(() => !!radioGroup);
const modelValue = computed({
get() {
return isGroup.value ? radioGroup.modelValue : props.modelValue;
},
set(val) {
if (isGroup.value) {
radioGroup.changeEvent(val);
} else {
emit(UPDATE_MODEL_EVENT, val);
}
radioRef.value.checked = props.modelValue === props.label;
}
});
const size = useSize(computed(() => radioGroup == null ? void 0 : radioGroup.size));
const disabled = useDisabled$1(computed(() => radioGroup == null ? void 0 : radioGroup.disabled));
const focus = ref(false);
const tabIndex = computed(() => {
return disabled.value || isGroup.value && modelValue.value !== props.label ? -1 : 0;
});
return {
radioRef,
isGroup,
radioGroup,
focus,
size,
disabled,
tabIndex,
modelValue
};
};
const _sfc_main$M = defineComponent({
name: "ElRadio",
props: radioProps,
emits: radioEmits,
setup(props, { emit }) {
const ns = useNamespace("radio");
const { radioRef, isGroup, focus, size, disabled, tabIndex, modelValue } = useRadio(props, emit);
function handleChange2() {
nextTick(() => emit("change", modelValue.value));
}
return {
ns,
focus,
isGroup,
modelValue,
tabIndex,
size,
disabled,
radioRef,
handleChange: handleChange2
};
}
});
const _hoisted_1$v = ["aria-checked", "aria-disabled", "tabindex"];
const _hoisted_2$o = ["value", "name", "disabled"];
function _sfc_render$q(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("label", {
class: normalizeClass([
_ctx.ns.b(),
_ctx.ns.is("disabled", _ctx.disabled),
_ctx.ns.is("focus", _ctx.focus),
_ctx.ns.is("bordered", _ctx.border),
_ctx.ns.is("checked", _ctx.modelValue === _ctx.label),
_ctx.ns.m(_ctx.size)
]),
role: "radio",
"aria-checked": _ctx.modelValue === _ctx.label,
"aria-disabled": _ctx.disabled,
tabindex: _ctx.tabIndex,
onKeydown: _cache[5] || (_cache[5] = withKeys(withModifiers(($event) => _ctx.modelValue = _ctx.disabled ? _ctx.modelValue : _ctx.label, ["stop", "prevent"]), ["space"]))
}, [
createElementVNode("span", {
class: normalizeClass([
_ctx.ns.e("input"),
_ctx.ns.is("disabled", _ctx.disabled),
_ctx.ns.is("checked", _ctx.modelValue === _ctx.label)
])
}, [
createElementVNode("span", {
class: normalizeClass(_ctx.ns.e("inner"))
}, null, 2),
withDirectives(createElementVNode("input", {
ref: "radioRef",
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => _ctx.modelValue = $event),
class: normalizeClass(_ctx.ns.e("original")),
value: _ctx.label,
type: "radio",
"aria-hidden": "true",
name: _ctx.name,
disabled: _ctx.disabled,
tabindex: "-1",
onFocus: _cache[1] || (_cache[1] = ($event) => _ctx.focus = true),
onBlur: _cache[2] || (_cache[2] = ($event) => _ctx.focus = false),
onChange: _cache[3] || (_cache[3] = (...args) => _ctx.handleChange && _ctx.handleChange(...args))
}, null, 42, _hoisted_2$o), [
[vModelRadio, _ctx.modelValue]
])
], 2),
createElementVNode("span", {
class: normalizeClass(_ctx.ns.e("label")),
onKeydown: _cache[4] || (_cache[4] = withModifiers(() => {
}, ["stop"]))
}, [
renderSlot(_ctx.$slots, "default", {}, () => [
createTextVNode(toDisplayString(_ctx.label), 1)
])
], 34)
], 42, _hoisted_1$v);
}
var Radio = /* @__PURE__ */ _export_sfc$1(_sfc_main$M, [["render", _sfc_render$q], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/radio/src/radio.vue"]]);
const radioButtonProps = buildProps(__spreadProps(__spreadValues({}, radioPropsBase), {
name: {
type: String,
default: ""
}
}));
const _sfc_main$L = defineComponent({
name: "ElRadioButton",
props: radioButtonProps,
setup(props, { emit }) {
const ns = useNamespace("radio");
const {
radioRef,
isGroup,
focus,
size,
disabled,
tabIndex,
modelValue,
radioGroup
} = useRadio(props, emit);
const activeStyle = computed(() => {
return {
backgroundColor: (radioGroup == null ? void 0 : radioGroup.fill) || "",
borderColor: (radioGroup == null ? void 0 : radioGroup.fill) || "",
boxShadow: (radioGroup == null ? void 0 : radioGroup.fill) ? `-1px 0 0 0 ${radioGroup.fill}` : "",
color: (radioGroup == null ? void 0 : radioGroup.textColor) || ""
};
});
return {
ns,
isGroup,
size,
disabled,
tabIndex,
modelValue,
focus,
activeStyle,
radioRef
};
}
});
const _hoisted_1$u = ["aria-checked", "aria-disabled", "tabindex"];
const _hoisted_2$n = ["value", "name", "disabled"];
function _sfc_render$p(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("label", {
class: normalizeClass([
_ctx.ns.b("button"),
_ctx.ns.is("active", _ctx.modelValue === _ctx.label),
_ctx.ns.is("disabled", _ctx.disabled),
_ctx.ns.is("focus", _ctx.focus),
_ctx.ns.bm("button", _ctx.size)
]),
role: "radio",
"aria-checked": _ctx.modelValue === _ctx.label,
"aria-disabled": _ctx.disabled,
tabindex: _ctx.tabIndex,
onKeydown: _cache[4] || (_cache[4] = withKeys(withModifiers(($event) => _ctx.modelValue = _ctx.disabled ? _ctx.modelValue : _ctx.label, ["stop", "prevent"]), ["space"]))
}, [
withDirectives(createElementVNode("input", {
ref: "radioRef",
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => _ctx.modelValue = $event),
class: normalizeClass(_ctx.ns.be("button", "original-radio")),
value: _ctx.label,
type: "radio",
name: _ctx.name,
disabled: _ctx.disabled,
tabindex: "-1",
onFocus: _cache[1] || (_cache[1] = ($event) => _ctx.focus = true),
onBlur: _cache[2] || (_cache[2] = ($event) => _ctx.focus = false)
}, null, 42, _hoisted_2$n), [
[vModelRadio, _ctx.modelValue]
]),
createElementVNode("span", {
class: normalizeClass(_ctx.ns.be("button", "inner")),
style: normalizeStyle(_ctx.modelValue === _ctx.label ? _ctx.activeStyle : {}),
onKeydown: _cache[3] || (_cache[3] = withModifiers(() => {
}, ["stop"]))
}, [
renderSlot(_ctx.$slots, "default", {}, () => [
createTextVNode(toDisplayString(_ctx.label), 1)
])
], 38)
], 42, _hoisted_1$u);
}
var RadioButton = /* @__PURE__ */ _export_sfc$1(_sfc_main$L, [["render", _sfc_render$p], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/radio/src/radio-button.vue"]]);
const radioGroupProps = buildProps({
size: useSizeProp,
disabled: Boolean,
modelValue: {
type: [String, Number, Boolean],
default: ""
},
fill: {
type: String,
default: ""
},
textColor: {
type: String,
default: ""
}
});
const radioGroupEmits = radioEmits;
const _sfc_main$K = defineComponent({
name: "ElRadioGroup",
props: radioGroupProps,
emits: radioGroupEmits,
setup(props, ctx) {
const ns = useNamespace("radio");
const radioGroupRef = ref();
const { formItem } = useFormItem();
const changeEvent = (value) => {
ctx.emit(UPDATE_MODEL_EVENT, value);
nextTick(() => ctx.emit("change", value));
};
const handleKeydown = (e) => {
if (!radioGroupRef.value)
return;
const target = e.target;
const className = target.nodeName === "INPUT" ? "[type=radio]" : "[role=radio]";
const radios = radioGroupRef.value.querySelectorAll(className);
const length = radios.length;
const index = Array.from(radios).indexOf(target);
const roleRadios = radioGroupRef.value.querySelectorAll("[role=radio]");
let nextIndex = null;
switch (e.code) {
case EVENT_CODE.left:
case EVENT_CODE.up:
e.stopPropagation();
e.preventDefault();
nextIndex = index === 0 ? length - 1 : index - 1;
break;
case EVENT_CODE.right:
case EVENT_CODE.down:
e.stopPropagation();
e.preventDefault();
nextIndex = index === length - 1 ? 0 : index + 1;
break;
}
if (nextIndex === null)
return;
roleRadios[nextIndex].click();
roleRadios[nextIndex].focus();
};
onMounted(() => {
const radios = radioGroupRef.value.querySelectorAll("[type=radio]");
const firstLabel = radios[0];
if (!Array.from(radios).some((radio) => radio.checked) && firstLabel) {
firstLabel.tabIndex = 0;
}
});
provide(radioGroupKey, reactive(__spreadProps(__spreadValues({}, toRefs(props)), {
changeEvent
})));
watch(() => props.modelValue, () => formItem == null ? void 0 : formItem.validate("change").catch((err) => debugWarn()));
return {
ns,
radioGroupRef,
handleKeydown
};
}
});
function _sfc_render$o(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", {
ref: "radioGroupRef",
class: normalizeClass(_ctx.ns.b("group")),
role: "radiogroup",
onKeydown: _cache[0] || (_cache[0] = (...args) => _ctx.handleKeydown && _ctx.handleKeydown(...args))
}, [
renderSlot(_ctx.$slots, "default")
], 34);
}
var RadioGroup = /* @__PURE__ */ _export_sfc$1(_sfc_main$K, [["render", _sfc_render$o], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/radio/src/radio-group.vue"]]);
const ElRadio = withInstall(Radio, {
RadioButton,
RadioGroup
});
const ElRadioGroup = withNoopInstall(RadioGroup);
const ElRadioButton = withNoopInstall(RadioButton);
var NodeContent = defineComponent({
name: "NodeContent",
setup() {
const ns = useNamespace("cascader-node");
return {
ns
};
},
render() {
const { ns } = this;
const { node, panel } = this.$parent;
const { data: data2, label } = node;
const { renderLabelFn } = panel;
return h$1("span", { class: ns.e("label") }, renderLabelFn ? renderLabelFn({ node, data: data2 }) : label);
}
});
const CASCADER_PANEL_INJECTION_KEY = Symbol();
const _sfc_main$J = defineComponent({
name: "ElCascaderNode",
components: {
ElCheckbox,
ElRadio,
NodeContent,
ElIcon,
Check: check,
Loading: loading,
ArrowRight: arrowRight
},
props: {
node: {
type: Object,
required: true
},
menuId: String
},
emits: ["expand"],
setup(props, { emit }) {
const panel = inject(CASCADER_PANEL_INJECTION_KEY);
const ns = useNamespace("cascader-node");
const isHoverMenu = computed(() => panel.isHoverMenu);
const multiple = computed(() => panel.config.multiple);
const checkStrictly = computed(() => panel.config.checkStrictly);
const checkedNodeId = computed(() => {
var _a2;
return (_a2 = panel.checkedNodes[0]) == null ? void 0 : _a2.uid;
});
const isDisabled = computed(() => props.node.isDisabled);
const isLeaf2 = computed(() => props.node.isLeaf);
const expandable = computed(() => checkStrictly.value && !isLeaf2.value || !isDisabled.value);
const inExpandingPath = computed(() => isInPath(panel.expandingNode));
const inCheckedPath = computed(() => checkStrictly.value && panel.checkedNodes.some(isInPath));
const isInPath = (node) => {
var _a2;
const { level, uid: uid2 } = props.node;
return ((_a2 = node == null ? void 0 : node.pathNodes[level - 1]) == null ? void 0 : _a2.uid) === uid2;
};
const doExpand = () => {
if (inExpandingPath.value)
return;
panel.expandNode(props.node);
};
const doCheck = (checked) => {
const { node } = props;
if (checked === node.checked)
return;
panel.handleCheckChange(node, checked);
};
const doLoad = () => {
panel.lazyLoad(props.node, () => {
if (!isLeaf2.value)
doExpand();
});
};
const handleHoverExpand = (e) => {
if (!isHoverMenu.value)
return;
handleExpand();
!isLeaf2.value && emit("expand", e);
};
const handleExpand = () => {
const { node } = props;
if (!expandable.value || node.loading)
return;
node.loaded ? doExpand() : doLoad();
};
const handleClick = () => {
if (isHoverMenu.value && !isLeaf2.value)
return;
if (isLeaf2.value && !isDisabled.value && !checkStrictly.value && !multiple.value) {
handleCheck(true);
} else {
handleExpand();
}
};
const handleSelectCheck = (checked) => {
if (checkStrictly.value) {
doCheck(checked);
if (props.node.loaded) {
doExpand();
}
} else {
handleCheck(checked);
}
};
const handleCheck = (checked) => {
if (!props.node.loaded) {
doLoad();
} else {
doCheck(checked);
!checkStrictly.value && doExpand();
}
};
return {
panel,
isHoverMenu,
multiple,
checkStrictly,
checkedNodeId,
isDisabled,
isLeaf: isLeaf2,
expandable,
inExpandingPath,
inCheckedPath,
ns,
handleHoverExpand,
handleExpand,
handleClick,
handleCheck,
handleSelectCheck
};
}
});
const _hoisted_1$t = ["id", "aria-haspopup", "aria-owns", "aria-expanded", "tabindex"];
const _hoisted_2$m = /* @__PURE__ */ createElementVNode("span", null, null, -1);
function _sfc_render$n(_ctx, _cache, $props, $setup, $data, $options) {
const _component_el_checkbox = resolveComponent("el-checkbox");
const _component_el_radio = resolveComponent("el-radio");
const _component_check = resolveComponent("check");
const _component_el_icon = resolveComponent("el-icon");
const _component_node_content = resolveComponent("node-content");
const _component_loading = resolveComponent("loading");
const _component_arrow_right = resolveComponent("arrow-right");
return openBlock(), createElementBlock("li", {
id: `${_ctx.menuId}-${_ctx.node.uid}`,
role: "menuitem",
"aria-haspopup": !_ctx.isLeaf,
"aria-owns": _ctx.isLeaf ? null : _ctx.menuId,
"aria-expanded": _ctx.inExpandingPath,
tabindex: _ctx.expandable ? -1 : void 0,
class: normalizeClass([
_ctx.ns.b(),
_ctx.ns.is("selectable", _ctx.checkStrictly),
_ctx.ns.is("active", _ctx.node.checked),
_ctx.ns.is("disabled", !_ctx.expandable),
_ctx.inExpandingPath && "in-active-path",
_ctx.inCheckedPath && "in-checked-path"
]),
onMouseenter: _cache[2] || (_cache[2] = (...args) => _ctx.handleHoverExpand && _ctx.handleHoverExpand(...args)),
onFocus: _cache[3] || (_cache[3] = (...args) => _ctx.handleHoverExpand && _ctx.handleHoverExpand(...args)),
onClick: _cache[4] || (_cache[4] = (...args) => _ctx.handleClick && _ctx.handleClick(...args))
}, [
createCommentVNode(" prefix "),
_ctx.multiple ? (openBlock(), createBlock(_component_el_checkbox, {
key: 0,
"model-value": _ctx.node.checked,
indeterminate: _ctx.node.indeterminate,
disabled: _ctx.isDisabled,
onClick: _cache[0] || (_cache[0] = withModifiers(() => {
}, ["stop"])),
"onUpdate:modelValue": _ctx.handleSelectCheck
}, null, 8, ["model-value", "indeterminate", "disabled", "onUpdate:modelValue"])) : _ctx.checkStrictly ? (openBlock(), createBlock(_component_el_radio, {
key: 1,
"model-value": _ctx.checkedNodeId,
label: _ctx.node.uid,
disabled: _ctx.isDisabled,
"onUpdate:modelValue": _ctx.handleSelectCheck,
onClick: _cache[1] || (_cache[1] = withModifiers(() => {
}, ["stop"]))
}, {
default: withCtx(() => [
createCommentVNode("\n Add an empty element to avoid render label,\n do not use empty fragment here for https://github.com/vuejs/vue-next/pull/2485\n "),
_hoisted_2$m
]),
_: 1
}, 8, ["model-value", "label", "disabled", "onUpdate:modelValue"])) : _ctx.isLeaf && _ctx.node.checked ? (openBlock(), createBlock(_component_el_icon, {
key: 2,
class: normalizeClass(_ctx.ns.e("prefix"))
}, {
default: withCtx(() => [
createVNode(_component_check)
]),
_: 1
}, 8, ["class"])) : createCommentVNode("v-if", true),
createCommentVNode(" content "),
createVNode(_component_node_content),
createCommentVNode(" postfix "),
!_ctx.isLeaf ? (openBlock(), createElementBlock(Fragment, { key: 3 }, [
_ctx.node.loading ? (openBlock(), createBlock(_component_el_icon, {
key: 0,
class: normalizeClass([_ctx.ns.is("loading"), _ctx.ns.e("postfix")])
}, {
default: withCtx(() => [
createVNode(_component_loading)
]),
_: 1
}, 8, ["class"])) : (openBlock(), createBlock(_component_el_icon, {
key: 1,
class: normalizeClass(["arrow-right", _ctx.ns.e("postfix")])
}, {
default: withCtx(() => [
createVNode(_component_arrow_right)
]),
_: 1
}, 8, ["class"]))
], 2112)) : createCommentVNode("v-if", true)
], 42, _hoisted_1$t);
}
var ElCascaderNode = /* @__PURE__ */ _export_sfc$1(_sfc_main$J, [["render", _sfc_render$n], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/cascader-panel/src/node.vue"]]);
const _sfc_main$I = defineComponent({
name: "ElCascaderMenu",
components: {
Loading: loading,
ElIcon,
ElScrollbar,
ElCascaderNode
},
props: {
nodes: {
type: Array,
required: true
},
index: {
type: Number,
required: true
}
},
setup(props) {
const instance = getCurrentInstance();
const ns = useNamespace("cascader-menu");
const { t } = useLocale();
const id = generateId();
let activeNode = null;
let hoverTimer = null;
const panel = inject(CASCADER_PANEL_INJECTION_KEY);
const hoverZone = ref(null);
const isEmpty3 = computed(() => !props.nodes.length);
const isLoading = computed(() => !panel.initialLoaded);
const menuId = computed(() => `cascader-menu-${id}-${props.index}`);
const handleExpand = (e) => {
activeNode = e.target;
};
const handleMouseMove = (e) => {
if (!panel.isHoverMenu || !activeNode || !hoverZone.value)
return;
if (activeNode.contains(e.target)) {
clearHoverTimer();
const el = instance.vnode.el;
const { left: left2 } = el.getBoundingClientRect();
const { offsetWidth, offsetHeight } = el;
const startX = e.clientX - left2;
const top2 = activeNode.offsetTop;
const bottom2 = top2 + activeNode.offsetHeight;
hoverZone.value.innerHTML = `
`;
} else if (!hoverTimer) {
hoverTimer = window.setTimeout(clearHoverZone, panel.config.hoverThreshold);
}
};
const clearHoverTimer = () => {
if (!hoverTimer)
return;
clearTimeout(hoverTimer);
hoverTimer = null;
};
const clearHoverZone = () => {
if (!hoverZone.value)
return;
hoverZone.value.innerHTML = "";
clearHoverTimer();
};
return {
ns,
panel,
hoverZone,
isEmpty: isEmpty3,
isLoading,
menuId,
t,
handleExpand,
handleMouseMove,
clearHoverZone
};
}
});
function _sfc_render$m(_ctx, _cache, $props, $setup, $data, $options) {
const _component_el_cascader_node = resolveComponent("el-cascader-node");
const _component_loading = resolveComponent("loading");
const _component_el_icon = resolveComponent("el-icon");
const _component_el_scrollbar = resolveComponent("el-scrollbar");
return openBlock(), createBlock(_component_el_scrollbar, {
key: _ctx.menuId,
tag: "ul",
role: "menu",
class: normalizeClass(_ctx.ns.b()),
"wrap-class": _ctx.ns.e("wrap"),
"view-class": [_ctx.ns.e("list"), _ctx.ns.is("empty", _ctx.isEmpty)],
onMousemove: _ctx.handleMouseMove,
onMouseleave: _ctx.clearHoverZone
}, {
default: withCtx(() => {
var _a2;
return [
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.nodes, (node) => {
return openBlock(), createBlock(_component_el_cascader_node, {
key: node.uid,
node,
"menu-id": _ctx.menuId,
onExpand: _ctx.handleExpand
}, null, 8, ["node", "menu-id", "onExpand"]);
}), 128)),
_ctx.isLoading ? (openBlock(), createElementBlock("div", {
key: 0,
class: normalizeClass(_ctx.ns.e("empty-text"))
}, [
createVNode(_component_el_icon, {
size: "14",
class: normalizeClass(_ctx.ns.is("loading"))
}, {
default: withCtx(() => [
createVNode(_component_loading)
]),
_: 1
}, 8, ["class"]),
createTextVNode(" " + toDisplayString(_ctx.t("el.cascader.loading")), 1)
], 2)) : _ctx.isEmpty ? (openBlock(), createElementBlock("div", {
key: 1,
class: normalizeClass(_ctx.ns.e("empty-text"))
}, toDisplayString(_ctx.t("el.cascader.noData")), 3)) : ((_a2 = _ctx.panel) == null ? void 0 : _a2.isHoverMenu) ? (openBlock(), createElementBlock("svg", {
key: 2,
ref: "hoverZone",
class: normalizeClass(_ctx.ns.e("hover-zone"))
}, null, 2)) : createCommentVNode("v-if", true)
];
}),
_: 1
}, 8, ["class", "wrap-class", "view-class", "onMousemove", "onMouseleave"]);
}
var ElCascaderMenu = /* @__PURE__ */ _export_sfc$1(_sfc_main$I, [["render", _sfc_render$m], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/cascader-panel/src/menu.vue"]]);
var ExpandTrigger = /* @__PURE__ */ ((ExpandTrigger2) => {
ExpandTrigger2["CLICK"] = "click";
ExpandTrigger2["HOVER"] = "hover";
return ExpandTrigger2;
})(ExpandTrigger || {});
let uid = 0;
const calculatePathNodes = (node) => {
const nodes = [node];
let { parent } = node;
while (parent) {
nodes.unshift(parent);
parent = parent.parent;
}
return nodes;
};
class Node {
constructor(data2, config, parent, root2 = false) {
this.data = data2;
this.config = config;
this.parent = parent;
this.root = root2;
this.uid = uid++;
this.checked = false;
this.indeterminate = false;
this.loading = false;
const { value: valueKey, label: labelKey, children: childrenKey } = config;
const childrenData = data2[childrenKey];
const pathNodes = calculatePathNodes(this);
this.level = root2 ? 0 : parent ? parent.level + 1 : 1;
this.value = data2[valueKey];
this.label = data2[labelKey];
this.pathNodes = pathNodes;
this.pathValues = pathNodes.map((node) => node.value);
this.pathLabels = pathNodes.map((node) => node.label);
this.childrenData = childrenData;
this.children = (childrenData || []).map((child) => new Node(child, config, this));
this.loaded = !config.lazy || this.isLeaf || !isEmpty(childrenData);
}
get isDisabled() {
const { data: data2, parent, config } = this;
const { disabled, checkStrictly } = config;
const isDisabled = isFunction(disabled) ? disabled(data2, this) : !!data2[disabled];
return isDisabled || !checkStrictly && (parent == null ? void 0 : parent.isDisabled);
}
get isLeaf() {
const { data: data2, config, childrenData, loaded } = this;
const { lazy, leaf } = config;
const isLeaf2 = isFunction(leaf) ? leaf(data2, this) : data2[leaf];
return isUndefined(isLeaf2) ? lazy && !loaded ? false : !(Array.isArray(childrenData) && childrenData.length) : !!isLeaf2;
}
get valueByOption() {
return this.config.emitPath ? this.pathValues : this.value;
}
appendChild(childData) {
const { childrenData, children } = this;
const node = new Node(childData, this.config, this);
if (Array.isArray(childrenData)) {
childrenData.push(childData);
} else {
this.childrenData = [childData];
}
children.push(node);
return node;
}
calcText(allLevels, separator) {
const text = allLevels ? this.pathLabels.join(separator) : this.label;
this.text = text;
return text;
}
broadcast(event, ...args) {
const handlerName = `onParent${capitalize(event)}`;
this.children.forEach((child) => {
if (child) {
child.broadcast(event, ...args);
child[handlerName] && child[handlerName](...args);
}
});
}
emit(event, ...args) {
const { parent } = this;
const handlerName = `onChild${capitalize(event)}`;
if (parent) {
parent[handlerName] && parent[handlerName](...args);
parent.emit(event, ...args);
}
}
onParentCheck(checked) {
if (!this.isDisabled) {
this.setCheckState(checked);
}
}
onChildCheck() {
const { children } = this;
const validChildren = children.filter((child) => !child.isDisabled);
const checked = validChildren.length ? validChildren.every((child) => child.checked) : false;
this.setCheckState(checked);
}
setCheckState(checked) {
const totalNum = this.children.length;
const checkedNum = this.children.reduce((c2, p2) => {
const num = p2.checked ? 1 : p2.indeterminate ? 0.5 : 0;
return c2 + num;
}, 0);
this.checked = this.loaded && this.children.every((child) => child.loaded && child.checked) && checked;
this.indeterminate = this.loaded && checkedNum !== totalNum && checkedNum > 0;
}
doCheck(checked) {
if (this.checked === checked)
return;
const { checkStrictly, multiple } = this.config;
if (checkStrictly || !multiple) {
this.checked = checked;
} else {
this.broadcast("check", checked);
this.setCheckState(checked);
this.emit("check");
}
}
}
const flatNodes = (nodes, leafOnly) => {
return nodes.reduce((res, node) => {
if (node.isLeaf) {
res.push(node);
} else {
!leafOnly && res.push(node);
res = res.concat(flatNodes(node.children, leafOnly));
}
return res;
}, []);
};
class Store {
constructor(data2, config) {
this.config = config;
const nodes = (data2 || []).map((nodeData) => new Node(nodeData, this.config));
this.nodes = nodes;
this.allNodes = flatNodes(nodes, false);
this.leafNodes = flatNodes(nodes, true);
}
getNodes() {
return this.nodes;
}
getFlattedNodes(leafOnly) {
return leafOnly ? this.leafNodes : this.allNodes;
}
appendNode(nodeData, parentNode) {
const node = parentNode ? parentNode.appendChild(nodeData) : new Node(nodeData, this.config);
if (!parentNode)
this.nodes.push(node);
this.allNodes.push(node);
node.isLeaf && this.leafNodes.push(node);
}
appendNodes(nodeDataList, parentNode) {
nodeDataList.forEach((nodeData) => this.appendNode(nodeData, parentNode));
}
getNodeByValue(value, leafOnly = false) {
if (!value && value !== 0)
return null;
const node = this.getFlattedNodes(leafOnly).find((node2) => isEqual(node2.value, value) || isEqual(node2.pathValues, value));
return node || null;
}
getSameNode(node) {
if (!node)
return null;
const node_ = this.getFlattedNodes(false).find(({ value, level }) => isEqual(node.value, value) && node.level === level);
return node_ || null;
}
}
const CommonProps = {
modelValue: [Number, String, Array],
options: {
type: Array,
default: () => []
},
props: {
type: Object,
default: () => ({})
}
};
const DefaultProps = {
expandTrigger: ExpandTrigger.CLICK,
multiple: false,
checkStrictly: false,
emitPath: true,
lazy: false,
lazyLoad: NOOP,
value: "value",
label: "label",
children: "children",
leaf: "leaf",
disabled: "disabled",
hoverThreshold: 500
};
const useCascaderConfig = (props) => {
return computed(() => __spreadValues(__spreadValues({}, DefaultProps), props.props));
};
const getMenuIndex = (el) => {
if (!el)
return 0;
const pieces = el.id.split("-");
return Number(pieces[pieces.length - 2]);
};
const checkNode = (el) => {
if (!el)
return;
const input = el.querySelector("input");
if (input) {
input.click();
} else if (isLeaf(el)) {
el.click();
}
};
const sortByOriginalOrder = (oldNodes, newNodes) => {
const newNodesCopy = newNodes.slice(0);
const newIds = newNodesCopy.map((node) => node.uid);
const res = oldNodes.reduce((acc, item) => {
const index = newIds.indexOf(item.uid);
if (index > -1) {
acc.push(item);
newNodesCopy.splice(index, 1);
newIds.splice(index, 1);
}
return acc;
}, []);
res.push(...newNodesCopy);
return res;
};
const _sfc_main$H = defineComponent({
name: "ElCascaderPanel",
components: {
ElCascaderMenu
},
props: __spreadProps(__spreadValues({}, CommonProps), {
border: {
type: Boolean,
default: true
},
renderLabel: Function
}),
emits: [UPDATE_MODEL_EVENT, CHANGE_EVENT, "close", "expand-change"],
setup(props, { emit, slots }) {
let manualChecked = false;
const ns = useNamespace("cascader");
const config = useCascaderConfig(props);
let store = null;
const initialLoaded = ref(true);
const menuList = ref([]);
const checkedValue = ref(null);
const menus = ref([]);
const expandingNode = ref(null);
const checkedNodes = ref([]);
const isHoverMenu = computed(() => config.value.expandTrigger === ExpandTrigger.HOVER);
const renderLabelFn = computed(() => props.renderLabel || slots.default);
const initStore = () => {
const { options } = props;
const cfg = config.value;
manualChecked = false;
store = new Store(options, cfg);
menus.value = [store.getNodes()];
if (cfg.lazy && isEmpty(props.options)) {
initialLoaded.value = false;
lazyLoad(void 0, (list) => {
if (list) {
store = new Store(list, cfg);
menus.value = [store.getNodes()];
}
initialLoaded.value = true;
syncCheckedValue(false, true);
});
} else {
syncCheckedValue(false, true);
}
};
const lazyLoad = (node, cb) => {
const cfg = config.value;
node = node || new Node({}, cfg, void 0, true);
node.loading = true;
const resolve = (dataList) => {
const _node = node;
const parent = _node.root ? null : _node;
dataList && (store == null ? void 0 : store.appendNodes(dataList, parent));
_node.loading = false;
_node.loaded = true;
_node.childrenData = _node.childrenData || [];
cb && cb(dataList);
};
cfg.lazyLoad(node, resolve);
};
const expandNode = (node, silent) => {
var _a2;
const { level } = node;
const newMenus = menus.value.slice(0, level);
let newExpandingNode;
if (node.isLeaf) {
newExpandingNode = node.pathNodes[level - 2];
} else {
newExpandingNode = node;
newMenus.push(node.children);
}
if (((_a2 = expandingNode.value) == null ? void 0 : _a2.uid) !== (newExpandingNode == null ? void 0 : newExpandingNode.uid)) {
expandingNode.value = node;
menus.value = newMenus;
!silent && emit("expand-change", (node == null ? void 0 : node.pathValues) || []);
}
};
const handleCheckChange = (node, checked, emitClose = true) => {
const { checkStrictly, multiple } = config.value;
const oldNode = checkedNodes.value[0];
manualChecked = true;
!multiple && (oldNode == null ? void 0 : oldNode.doCheck(false));
node.doCheck(checked);
calculateCheckedValue();
emitClose && !multiple && !checkStrictly && emit("close");
!emitClose && !multiple && !checkStrictly && expandParentNode(node);
};
const expandParentNode = (node) => {
if (!node)
return;
node = node.parent;
expandParentNode(node);
node && expandNode(node);
};
const getFlattedNodes = (leafOnly) => {
return store == null ? void 0 : store.getFlattedNodes(leafOnly);
};
const getCheckedNodes = (leafOnly) => {
var _a2;
return (_a2 = getFlattedNodes(leafOnly)) == null ? void 0 : _a2.filter((node) => node.checked !== false);
};
const clearCheckedNodes = () => {
checkedNodes.value.forEach((node) => node.doCheck(false));
calculateCheckedValue();
};
const calculateCheckedValue = () => {
var _a2;
const { checkStrictly, multiple } = config.value;
const oldNodes = checkedNodes.value;
const newNodes = getCheckedNodes(!checkStrictly);
const nodes = sortByOriginalOrder(oldNodes, newNodes);
const values = nodes.map((node) => node.valueByOption);
checkedNodes.value = nodes;
checkedValue.value = multiple ? values : (_a2 = values[0]) != null ? _a2 : null;
};
const syncCheckedValue = (loaded = false, forced = false) => {
const { modelValue } = props;
const { lazy, multiple, checkStrictly } = config.value;
const leafOnly = !checkStrictly;
if (!initialLoaded.value || manualChecked || !forced && isEqual(modelValue, checkedValue.value))
return;
if (lazy && !loaded) {
const values = unique(flattenDeep(castArray(modelValue)));
const nodes = values.map((val) => store == null ? void 0 : store.getNodeByValue(val)).filter((node) => !!node && !node.loaded && !node.loading);
if (nodes.length) {
nodes.forEach((node) => {
lazyLoad(node, () => syncCheckedValue(false, forced));
});
} else {
syncCheckedValue(true, forced);
}
} else {
const values = multiple ? castArray(modelValue) : [modelValue];
const nodes = unique(values.map((val) => store == null ? void 0 : store.getNodeByValue(val, leafOnly)));
syncMenuState(nodes, false);
checkedValue.value = modelValue;
}
};
const syncMenuState = (newCheckedNodes, reserveExpandingState = true) => {
const { checkStrictly } = config.value;
const oldNodes = checkedNodes.value;
const newNodes = newCheckedNodes.filter((node) => !!node && (checkStrictly || node.isLeaf));
const oldExpandingNode = store == null ? void 0 : store.getSameNode(expandingNode.value);
const newExpandingNode = reserveExpandingState && oldExpandingNode || newNodes[0];
if (newExpandingNode) {
newExpandingNode.pathNodes.forEach((node) => expandNode(node, true));
} else {
expandingNode.value = null;
}
oldNodes.forEach((node) => node.doCheck(false));
newNodes.forEach((node) => node.doCheck(true));
checkedNodes.value = newNodes;
nextTick(scrollToExpandingNode);
};
const scrollToExpandingNode = () => {
if (!isClient)
return;
menuList.value.forEach((menu) => {
const menuElement = menu == null ? void 0 : menu.$el;
if (menuElement) {
const container = menuElement.querySelector(`.${ns.namespace.value}-scrollbar__wrap`);
const activeNode = menuElement.querySelector(`.${ns.b("node")}.${ns.is("active")}`) || menuElement.querySelector(`.${ns.b("node")}.in-active-path`);
scrollIntoView(container, activeNode);
}
});
};
const handleKeyDown2 = (e) => {
const target = e.target;
const { code } = e;
switch (code) {
case EVENT_CODE.up:
case EVENT_CODE.down: {
e.preventDefault();
const distance = code === EVENT_CODE.up ? -1 : 1;
focusNode(getSibling(target, distance, `.${ns.b("node")}[tabindex="-1"]`));
break;
}
case EVENT_CODE.left: {
e.preventDefault();
const preMenu = menuList.value[getMenuIndex(target) - 1];
const expandedNode = preMenu == null ? void 0 : preMenu.$el.querySelector(`.${ns.b("node")}[aria-expanded="true"]`);
focusNode(expandedNode);
break;
}
case EVENT_CODE.right: {
e.preventDefault();
const nextMenu = menuList.value[getMenuIndex(target) + 1];
const firstNode = nextMenu == null ? void 0 : nextMenu.$el.querySelector(`.${ns.b("node")}[tabindex="-1"]`);
focusNode(firstNode);
break;
}
case EVENT_CODE.enter:
checkNode(target);
break;
case EVENT_CODE.esc:
case EVENT_CODE.tab:
emit("close");
break;
}
};
provide(CASCADER_PANEL_INJECTION_KEY, reactive({
config,
expandingNode,
checkedNodes,
isHoverMenu,
initialLoaded,
renderLabelFn,
lazyLoad,
expandNode,
handleCheckChange
}));
watch([config, () => props.options], initStore, {
deep: true,
immediate: true
});
watch(() => props.modelValue, () => {
manualChecked = false;
syncCheckedValue();
});
watch(checkedValue, (val) => {
if (!isEqual(val, props.modelValue)) {
emit(UPDATE_MODEL_EVENT, val);
emit(CHANGE_EVENT, val);
}
});
onBeforeUpdate(() => menuList.value = []);
onMounted(() => !isEmpty(props.modelValue) && syncCheckedValue());
return {
ns,
menuList,
menus,
checkedNodes,
handleKeyDown: handleKeyDown2,
handleCheckChange,
getFlattedNodes,
getCheckedNodes,
clearCheckedNodes,
calculateCheckedValue,
scrollToExpandingNode
};
}
});
function _sfc_render$l(_ctx, _cache, $props, $setup, $data, $options) {
const _component_el_cascader_menu = resolveComponent("el-cascader-menu");
return openBlock(), createElementBlock("div", {
class: normalizeClass([_ctx.ns.b("panel"), _ctx.ns.is("bordered", _ctx.border)]),
onKeydown: _cache[0] || (_cache[0] = (...args) => _ctx.handleKeyDown && _ctx.handleKeyDown(...args))
}, [
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.menus, (menu, index) => {
return openBlock(), createBlock(_component_el_cascader_menu, {
key: index,
ref_for: true,
ref: (item) => _ctx.menuList[index] = item,
index,
nodes: [...menu]
}, null, 8, ["index", "nodes"]);
}), 128))
], 34);
}
var CascaderPanel = /* @__PURE__ */ _export_sfc$1(_sfc_main$H, [["render", _sfc_render$l], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/cascader-panel/src/index.vue"]]);
CascaderPanel.install = (app) => {
app.component(CascaderPanel.name, CascaderPanel);
};
const _CascaderPanel = CascaderPanel;
const tagProps = buildProps({
closable: Boolean,
type: {
type: String,
values: ["success", "info", "warning", "danger", ""],
default: ""
},
hit: Boolean,
disableTransitions: Boolean,
color: {
type: String,
default: ""
},
size: {
type: String,
values: componentSizes,
default: ""
},
effect: {
type: String,
values: ["dark", "light", "plain"],
default: "light"
},
round: Boolean
});
const tagEmits = {
close: (evt) => evt instanceof MouseEvent,
click: (evt) => evt instanceof MouseEvent
};
const __default__$d = {
name: "ElTag"
};
const _sfc_main$G = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({}, __default__$d), {
props: tagProps,
emits: tagEmits,
setup(__props, { emit }) {
const props = __props;
const tagSize = useSize();
const ns = useNamespace("tag");
const classes = computed(() => {
const { type: type4, hit, effect: effect2, closable, round: round2 } = props;
return [
ns.b(),
ns.is("closable", closable),
ns.m(type4),
ns.m(tagSize.value),
ns.m(effect2),
ns.is("hit", hit),
ns.is("round", round2)
];
});
const handleClose = (event) => {
event.stopPropagation();
emit("close", event);
};
const handleClick = (event) => {
emit("click", event);
};
return (_ctx, _cache) => {
return !_ctx.disableTransitions ? (openBlock(), createElementBlock("span", {
key: 0,
class: normalizeClass(unref(classes)),
style: normalizeStyle({ backgroundColor: _ctx.color }),
onClick: handleClick
}, [
createElementVNode("span", {
class: normalizeClass(unref(ns).e("content"))
}, [
renderSlot(_ctx.$slots, "default")
], 2),
_ctx.closable ? (openBlock(), createBlock(unref(ElIcon), {
key: 0,
class: normalizeClass(unref(ns).e("close")),
onClick: handleClose
}, {
default: withCtx(() => [
createVNode(unref(close))
]),
_: 1
}, 8, ["class"])) : createCommentVNode("v-if", true)
], 6)) : (openBlock(), createBlock(Transition, {
key: 1,
name: `${unref(ns).namespace.value}-zoom-in-center`
}, {
default: withCtx(() => [
createElementVNode("span", {
class: normalizeClass(unref(classes)),
style: normalizeStyle({ backgroundColor: _ctx.color }),
onClick: handleClick
}, [
createElementVNode("span", {
class: normalizeClass(unref(ns).e("content"))
}, [
renderSlot(_ctx.$slots, "default")
], 2),
_ctx.closable ? (openBlock(), createBlock(unref(ElIcon), {
key: 0,
class: normalizeClass(unref(ns).e("close")),
onClick: handleClose
}, {
default: withCtx(() => [
createVNode(unref(close))
]),
_: 1
}, 8, ["class"])) : createCommentVNode("v-if", true)
], 6)
]),
_: 3
}, 8, ["name"]));
};
}
}));
var Tag = /* @__PURE__ */ _export_sfc$1(_sfc_main$G, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/tag/src/tag.vue"]]);
const ElTag = withInstall(Tag);
const DEFAULT_INPUT_HEIGHT = 40;
const INPUT_HEIGHT_MAP = {
large: 36,
default: 32,
small: 28
};
const popperOptions = {
modifiers: [
{
name: "arrowPosition",
enabled: true,
phase: "main",
fn: ({ state }) => {
const { modifiersData, placement } = state;
if (["right", "left", "bottom", "top"].includes(placement))
return;
modifiersData.arrow.x = 35;
},
requires: ["arrow"]
}
]
};
const COMPONENT_NAME$3 = "ElCascader";
const _sfc_main$F = defineComponent({
name: COMPONENT_NAME$3,
components: {
ElCascaderPanel: _CascaderPanel,
ElInput,
ElTooltip,
ElScrollbar,
ElTag,
ElIcon,
CircleClose: circleClose,
Check: check,
ArrowDown: arrowDown
},
directives: {
Clickoutside: ClickOutside
},
props: __spreadProps(__spreadValues({}, CommonProps), {
size: {
type: String,
validator: isValidComponentSize
},
placeholder: {
type: String
},
disabled: Boolean,
clearable: Boolean,
filterable: Boolean,
filterMethod: {
type: Function,
default: (node, keyword) => node.text.includes(keyword)
},
separator: {
type: String,
default: " / "
},
showAllLevels: {
type: Boolean,
default: true
},
collapseTags: Boolean,
collapseTagsTooltip: {
type: Boolean,
default: false
},
debounce: {
type: Number,
default: 300
},
beforeFilter: {
type: Function,
default: () => true
},
popperClass: {
type: String,
default: ""
},
popperAppendToBody: {
type: Boolean,
default: void 0
},
teleported: useTooltipContentProps.teleported,
tagType: __spreadProps(__spreadValues({}, tagProps.type), { default: "info" })
}),
emits: [
UPDATE_MODEL_EVENT,
CHANGE_EVENT,
"focus",
"blur",
"visible-change",
"expand-change",
"remove-tag"
],
setup(props, { emit }) {
let inputInitialHeight = 0;
let pressDeleteCount = 0;
const { compatTeleported } = useDeprecateAppendToBody(COMPONENT_NAME$3, "popperAppendToBody");
const nsCascader = useNamespace("cascader");
const nsInput = useNamespace("input");
const { t } = useLocale();
const elForm2 = inject(formContextKey, {});
const elFormItem2 = inject(formItemContextKey, {});
const tooltipRef = ref(null);
const input = ref(null);
const tagWrapper = ref(null);
const panel = ref(null);
const suggestionPanel = ref(null);
const popperVisible = ref(false);
const inputHover = ref(false);
const filtering = ref(false);
const inputValue = ref("");
const searchInputValue = ref("");
const presentTags = ref([]);
const allPresentTags = ref([]);
const suggestions = ref([]);
const isOnComposition = ref(false);
const isDisabled = computed(() => props.disabled || elForm2.disabled);
const inputPlaceholder = computed(() => props.placeholder || t("el.cascader.placeholder"));
const realSize = useSize();
const tagSize = computed(() => ["small"].includes(realSize.value) ? "small" : "default");
const multiple = computed(() => !!props.props.multiple);
const readonly2 = computed(() => !props.filterable || multiple.value);
const searchKeyword = computed(() => multiple.value ? searchInputValue.value : inputValue.value);
const checkedNodes = computed(() => {
var _a2;
return ((_a2 = panel.value) == null ? void 0 : _a2.checkedNodes) || [];
});
const clearBtnVisible = computed(() => {
if (!props.clearable || isDisabled.value || filtering.value || !inputHover.value)
return false;
return !!checkedNodes.value.length;
});
const presentText = computed(() => {
const { showAllLevels, separator } = props;
const nodes = checkedNodes.value;
return nodes.length ? multiple.value ? " " : nodes[0].calcText(showAllLevels, separator) : "";
});
const checkedValue = computed({
get() {
return props.modelValue;
},
set(val) {
var _a2;
emit(UPDATE_MODEL_EVENT, val);
emit(CHANGE_EVENT, val);
(_a2 = elFormItem2.validate) == null ? void 0 : _a2.call(elFormItem2, "change").catch((err) => debugWarn());
}
});
const popperPaneRef = computed(() => {
var _a2, _b2;
return (_b2 = (_a2 = tooltipRef.value) == null ? void 0 : _a2.popperRef) == null ? void 0 : _b2.contentRef;
});
const togglePopperVisible = (visible) => {
var _a2, _b2, _c;
if (isDisabled.value)
return;
visible = visible != null ? visible : !popperVisible.value;
if (visible !== popperVisible.value) {
popperVisible.value = visible;
(_b2 = (_a2 = input.value) == null ? void 0 : _a2.input) == null ? void 0 : _b2.setAttribute("aria-expanded", `${visible}`);
if (visible) {
updatePopperPosition();
nextTick((_c = panel.value) == null ? void 0 : _c.scrollToExpandingNode);
} else if (props.filterable) {
const { value } = presentText;
inputValue.value = value;
searchInputValue.value = value;
}
emit("visible-change", visible);
}
};
const updatePopperPosition = () => {
nextTick(() => {
var _a2;
(_a2 = tooltipRef.value) == null ? void 0 : _a2.updatePopper();
});
};
const hideSuggestionPanel = () => {
filtering.value = false;
};
const genTag2 = (node) => {
const { showAllLevels, separator } = props;
return {
node,
key: node.uid,
text: node.calcText(showAllLevels, separator),
hitState: false,
closable: !isDisabled.value && !node.isDisabled,
isCollapseTag: false
};
};
const deleteTag = (tag) => {
var _a2;
const node = tag.node;
node.doCheck(false);
(_a2 = panel.value) == null ? void 0 : _a2.calculateCheckedValue();
emit("remove-tag", node.valueByOption);
};
const calculatePresentTags = () => {
if (!multiple.value)
return;
const nodes = checkedNodes.value;
const tags = [];
const allTags = [];
nodes.forEach((node) => allTags.push(genTag2(node)));
allPresentTags.value = allTags;
if (nodes.length) {
const [first, ...rest] = nodes;
const restCount = rest.length;
tags.push(genTag2(first));
if (restCount) {
if (props.collapseTags) {
tags.push({
key: -1,
text: `+ ${restCount}`,
closable: false,
isCollapseTag: true
});
} else {
rest.forEach((node) => tags.push(genTag2(node)));
}
}
}
presentTags.value = tags;
};
const calculateSuggestions = () => {
var _a2, _b2;
const { filterMethod, showAllLevels, separator } = props;
const res = (_b2 = (_a2 = panel.value) == null ? void 0 : _a2.getFlattedNodes(!props.props.checkStrictly)) == null ? void 0 : _b2.filter((node) => {
if (node.isDisabled)
return false;
node.calcText(showAllLevels, separator);
return filterMethod(node, searchKeyword.value);
});
if (multiple.value) {
presentTags.value.forEach((tag) => {
tag.hitState = false;
});
allPresentTags.value.forEach((tag) => {
tag.hitState = false;
});
}
filtering.value = true;
suggestions.value = res;
updatePopperPosition();
};
const focusFirstNode = () => {
var _a2;
let firstNode;
if (filtering.value && suggestionPanel.value) {
firstNode = suggestionPanel.value.$el.querySelector(`.${nsCascader.e("suggestion-item")}`);
} else {
firstNode = (_a2 = panel.value) == null ? void 0 : _a2.$el.querySelector(`.${nsCascader.b("node")}[tabindex="-1"]`);
}
if (firstNode) {
firstNode.focus();
!filtering.value && firstNode.click();
}
};
const updateStyle = () => {
var _a2, _b2;
const inputInner = (_a2 = input.value) == null ? void 0 : _a2.input;
const tagWrapperEl = tagWrapper.value;
const suggestionPanelEl = (_b2 = suggestionPanel.value) == null ? void 0 : _b2.$el;
if (!isClient || !inputInner)
return;
if (suggestionPanelEl) {
const suggestionList = suggestionPanelEl.querySelector(`.${nsCascader.e("suggestion-list")}`);
suggestionList.style.minWidth = `${inputInner.offsetWidth}px`;
}
if (tagWrapperEl) {
const { offsetHeight } = tagWrapperEl;
const height = presentTags.value.length > 0 ? `${Math.max(offsetHeight + 6, inputInitialHeight)}px` : `${inputInitialHeight}px`;
inputInner.style.height = height;
updatePopperPosition();
}
};
const getCheckedNodes = (leafOnly) => {
var _a2;
return (_a2 = panel.value) == null ? void 0 : _a2.getCheckedNodes(leafOnly);
};
const handleExpandChange = (value) => {
updatePopperPosition();
emit("expand-change", value);
};
const handleComposition = (event) => {
var _a2;
const text = (_a2 = event.target) == null ? void 0 : _a2.value;
if (event.type === "compositionend") {
isOnComposition.value = false;
nextTick(() => handleInput(text));
} else {
const lastCharacter = text[text.length - 1] || "";
isOnComposition.value = !isKorean(lastCharacter);
}
};
const handleKeyDown2 = (e) => {
if (isOnComposition.value)
return;
switch (e.code) {
case EVENT_CODE.enter:
togglePopperVisible();
break;
case EVENT_CODE.down:
togglePopperVisible(true);
nextTick(focusFirstNode);
e.preventDefault();
break;
case EVENT_CODE.esc:
case EVENT_CODE.tab:
togglePopperVisible(false);
break;
}
};
const handleClear = () => {
var _a2;
(_a2 = panel.value) == null ? void 0 : _a2.clearCheckedNodes();
togglePopperVisible(false);
};
const handleSuggestionClick = (node) => {
var _a2, _b2;
const { checked } = node;
if (multiple.value) {
(_a2 = panel.value) == null ? void 0 : _a2.handleCheckChange(node, !checked, false);
} else {
!checked && ((_b2 = panel.value) == null ? void 0 : _b2.handleCheckChange(node, true, false));
togglePopperVisible(false);
}
};
const handleSuggestionKeyDown = (e) => {
const target = e.target;
const { code } = e;
switch (code) {
case EVENT_CODE.up:
case EVENT_CODE.down: {
const distance = code === EVENT_CODE.up ? -1 : 1;
focusNode(getSibling(target, distance, `.${nsCascader.e("suggestion-item")}[tabindex="-1"]`));
break;
}
case EVENT_CODE.enter:
target.click();
break;
case EVENT_CODE.esc:
case EVENT_CODE.tab:
togglePopperVisible(false);
break;
}
};
const handleDelete = () => {
const tags = presentTags.value;
const lastTag = tags[tags.length - 1];
pressDeleteCount = searchInputValue.value ? 0 : pressDeleteCount + 1;
if (!lastTag || !pressDeleteCount)
return;
if (lastTag.hitState) {
deleteTag(lastTag);
} else {
lastTag.hitState = true;
}
};
const handleFilter = debounce$1(() => {
const { value } = searchKeyword;
if (!value)
return;
const passed = props.beforeFilter(value);
if (isPromise(passed)) {
passed.then(calculateSuggestions).catch(() => {
});
} else if (passed !== false) {
calculateSuggestions();
} else {
hideSuggestionPanel();
}
}, props.debounce);
const handleInput = (val, e) => {
!popperVisible.value && togglePopperVisible(true);
if (e == null ? void 0 : e.isComposing)
return;
val ? handleFilter() : hideSuggestionPanel();
};
watch(filtering, updatePopperPosition);
watch([checkedNodes, isDisabled], calculatePresentTags);
watch(presentTags, () => {
nextTick(() => updateStyle());
});
watch(presentText, (val) => inputValue.value = val, { immediate: true });
onMounted(() => {
var _a2;
const inputEl = (_a2 = input.value) == null ? void 0 : _a2.$el;
inputInitialHeight = (inputEl == null ? void 0 : inputEl.offsetHeight) || INPUT_HEIGHT_MAP[realSize.value] || DEFAULT_INPUT_HEIGHT;
addResizeListener(inputEl, updateStyle);
});
onBeforeUnmount(() => {
var _a2;
removeResizeListener((_a2 = input.value) == null ? void 0 : _a2.$el, updateStyle);
});
return {
popperOptions,
tooltipRef,
popperPaneRef,
input,
tagWrapper,
panel,
suggestionPanel,
popperVisible,
inputHover,
inputPlaceholder,
filtering,
presentText,
checkedValue,
inputValue,
searchInputValue,
presentTags,
allPresentTags,
suggestions,
isDisabled,
isOnComposition,
realSize,
tagSize,
multiple,
readonly: readonly2,
clearBtnVisible,
compatTeleported,
nsCascader,
nsInput,
t,
togglePopperVisible,
hideSuggestionPanel,
deleteTag,
focusFirstNode,
getCheckedNodes,
handleExpandChange,
handleKeyDown: handleKeyDown2,
handleComposition,
handleClear,
handleSuggestionClick,
handleSuggestionKeyDown,
handleDelete,
handleInput
};
}
});
const _hoisted_1$s = { key: 0 };
const _hoisted_2$l = { class: "el-cascader__collapse-tags" };
const _hoisted_3$f = ["placeholder"];
const _hoisted_4$d = ["onClick"];
function _sfc_render$k(_ctx, _cache, $props, $setup, $data, $options) {
const _component_circle_close = resolveComponent("circle-close");
const _component_el_icon = resolveComponent("el-icon");
const _component_arrow_down = resolveComponent("arrow-down");
const _component_el_input = resolveComponent("el-input");
const _component_el_tag = resolveComponent("el-tag");
const _component_el_tooltip = resolveComponent("el-tooltip");
const _component_el_cascader_panel = resolveComponent("el-cascader-panel");
const _component_check = resolveComponent("check");
const _component_el_scrollbar = resolveComponent("el-scrollbar");
const _directive_clickoutside = resolveDirective("clickoutside");
return openBlock(), createBlock(_component_el_tooltip, {
ref: "tooltipRef",
visible: _ctx.popperVisible,
"onUpdate:visible": _cache[17] || (_cache[17] = ($event) => _ctx.popperVisible = $event),
teleported: _ctx.compatTeleported,
"popper-class": [_ctx.nsCascader.e("dropdown"), _ctx.popperClass],
"popper-options": _ctx.popperOptions,
"fallback-placements": [
"bottom-start",
"bottom",
"top-start",
"top",
"right",
"left"
],
"stop-popper-mouse-event": false,
"gpu-acceleration": false,
placement: "bottom-start",
transition: `${_ctx.nsCascader.namespace.value}-zoom-in-top`,
effect: "light",
pure: "",
persistent: "",
onHide: _ctx.hideSuggestionPanel
}, {
default: withCtx(() => [
withDirectives((openBlock(), createElementBlock("div", {
class: normalizeClass([
_ctx.nsCascader.b(),
_ctx.nsCascader.m(_ctx.realSize),
_ctx.nsCascader.is("disabled", _ctx.isDisabled),
_ctx.$attrs.class
]),
style: normalizeStyle(_ctx.$attrs.style),
onClick: _cache[11] || (_cache[11] = () => _ctx.togglePopperVisible(_ctx.readonly ? void 0 : true)),
onKeydown: _cache[12] || (_cache[12] = (...args) => _ctx.handleKeyDown && _ctx.handleKeyDown(...args)),
onMouseenter: _cache[13] || (_cache[13] = ($event) => _ctx.inputHover = true),
onMouseleave: _cache[14] || (_cache[14] = ($event) => _ctx.inputHover = false)
}, [
createVNode(_component_el_input, {
ref: "input",
modelValue: _ctx.inputValue,
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => _ctx.inputValue = $event),
placeholder: _ctx.inputPlaceholder,
readonly: _ctx.readonly,
disabled: _ctx.isDisabled,
"validate-event": false,
size: _ctx.realSize,
class: normalizeClass(_ctx.nsCascader.is("focus", _ctx.popperVisible)),
onCompositionstart: _ctx.handleComposition,
onCompositionupdate: _ctx.handleComposition,
onCompositionend: _ctx.handleComposition,
onFocus: _cache[2] || (_cache[2] = (e) => _ctx.$emit("focus", e)),
onBlur: _cache[3] || (_cache[3] = (e) => _ctx.$emit("blur", e)),
onInput: _ctx.handleInput
}, {
suffix: withCtx(() => [
_ctx.clearBtnVisible ? (openBlock(), createBlock(_component_el_icon, {
key: "clear",
class: normalizeClass([_ctx.nsInput.e("icon"), "icon-circle-close"]),
onClick: withModifiers(_ctx.handleClear, ["stop"])
}, {
default: withCtx(() => [
createVNode(_component_circle_close)
]),
_: 1
}, 8, ["class", "onClick"])) : (openBlock(), createBlock(_component_el_icon, {
key: "arrow-down",
class: normalizeClass([
_ctx.nsInput.e("icon"),
"icon-arrow-down",
_ctx.nsCascader.is("reverse", _ctx.popperVisible)
]),
onClick: _cache[0] || (_cache[0] = withModifiers(($event) => _ctx.togglePopperVisible(), ["stop"]))
}, {
default: withCtx(() => [
createVNode(_component_arrow_down)
]),
_: 1
}, 8, ["class"]))
]),
_: 1
}, 8, ["modelValue", "placeholder", "readonly", "disabled", "size", "class", "onCompositionstart", "onCompositionupdate", "onCompositionend", "onInput"]),
_ctx.multiple ? (openBlock(), createElementBlock("div", {
key: 0,
ref: "tagWrapper",
class: normalizeClass(_ctx.nsCascader.e("tags"))
}, [
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.presentTags, (tag) => {
return openBlock(), createBlock(_component_el_tag, {
key: tag.key,
type: _ctx.tagType,
size: _ctx.tagSize,
hit: tag.hitState,
closable: tag.closable,
"disable-transitions": "",
onClose: ($event) => _ctx.deleteTag(tag)
}, {
default: withCtx(() => [
tag.isCollapseTag === false ? (openBlock(), createElementBlock("span", _hoisted_1$s, toDisplayString(tag.text), 1)) : (openBlock(), createBlock(_component_el_tooltip, {
key: 1,
teleported: false,
disabled: _ctx.popperVisible || !_ctx.collapseTagsTooltip,
"fallback-placements": ["bottom", "top", "right", "left"],
placement: "bottom",
effect: "light"
}, {
default: withCtx(() => [
createElementVNode("span", null, toDisplayString(tag.text), 1)
]),
content: withCtx(() => [
createElementVNode("div", _hoisted_2$l, [
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.allPresentTags, (tag2, idx) => {
return openBlock(), createElementBlock("div", {
key: idx,
class: "el-cascader__collapse-tag"
}, [
(openBlock(), createBlock(_component_el_tag, {
key: tag2.key,
class: "in-tooltip",
type: _ctx.tagType,
size: _ctx.tagSize,
hit: tag2.hitState,
closable: tag2.closable,
"disable-transitions": "",
onClose: ($event) => _ctx.deleteTag(tag2)
}, {
default: withCtx(() => [
createElementVNode("span", null, toDisplayString(tag2.text), 1)
]),
_: 2
}, 1032, ["type", "size", "hit", "closable", "onClose"]))
]);
}), 128))
])
]),
_: 2
}, 1032, ["disabled"]))
]),
_: 2
}, 1032, ["type", "size", "hit", "closable", "onClose"]);
}), 128)),
_ctx.filterable && !_ctx.isDisabled ? withDirectives((openBlock(), createElementBlock("input", {
key: 0,
"onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => _ctx.searchInputValue = $event),
type: "text",
class: normalizeClass(_ctx.nsCascader.e("search-input")),
placeholder: _ctx.presentText ? "" : _ctx.inputPlaceholder,
onInput: _cache[5] || (_cache[5] = (e) => _ctx.handleInput(_ctx.searchInputValue, e)),
onClick: _cache[6] || (_cache[6] = withModifiers(($event) => _ctx.togglePopperVisible(true), ["stop"])),
onKeydown: _cache[7] || (_cache[7] = withKeys((...args) => _ctx.handleDelete && _ctx.handleDelete(...args), ["delete"])),
onCompositionstart: _cache[8] || (_cache[8] = (...args) => _ctx.handleComposition && _ctx.handleComposition(...args)),
onCompositionupdate: _cache[9] || (_cache[9] = (...args) => _ctx.handleComposition && _ctx.handleComposition(...args)),
onCompositionend: _cache[10] || (_cache[10] = (...args) => _ctx.handleComposition && _ctx.handleComposition(...args))
}, null, 42, _hoisted_3$f)), [
[vModelText, _ctx.searchInputValue]
]) : createCommentVNode("v-if", true)
], 2)) : createCommentVNode("v-if", true)
], 38)), [
[_directive_clickoutside, () => _ctx.togglePopperVisible(false), _ctx.popperPaneRef]
])
]),
content: withCtx(() => [
withDirectives(createVNode(_component_el_cascader_panel, {
ref: "panel",
modelValue: _ctx.checkedValue,
"onUpdate:modelValue": _cache[15] || (_cache[15] = ($event) => _ctx.checkedValue = $event),
options: _ctx.options,
props: _ctx.props,
border: false,
"render-label": _ctx.$slots.default,
onExpandChange: _ctx.handleExpandChange,
onClose: _cache[16] || (_cache[16] = ($event) => _ctx.$nextTick(() => _ctx.togglePopperVisible(false)))
}, null, 8, ["modelValue", "options", "props", "render-label", "onExpandChange"]), [
[vShow, !_ctx.filtering]
]),
_ctx.filterable ? withDirectives((openBlock(), createBlock(_component_el_scrollbar, {
key: 0,
ref: "suggestionPanel",
tag: "ul",
class: normalizeClass(_ctx.nsCascader.e("suggestion-panel")),
"view-class": _ctx.nsCascader.e("suggestion-list"),
onKeydown: _ctx.handleSuggestionKeyDown
}, {
default: withCtx(() => [
_ctx.suggestions.length ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(_ctx.suggestions, (item) => {
return openBlock(), createElementBlock("li", {
key: item.uid,
class: normalizeClass([
_ctx.nsCascader.e("suggestion-item"),
_ctx.nsCascader.is("checked", item.checked)
]),
tabindex: -1,
onClick: ($event) => _ctx.handleSuggestionClick(item)
}, [
createElementVNode("span", null, toDisplayString(item.text), 1),
item.checked ? (openBlock(), createBlock(_component_el_icon, { key: 0 }, {
default: withCtx(() => [
createVNode(_component_check)
]),
_: 1
})) : createCommentVNode("v-if", true)
], 10, _hoisted_4$d);
}), 128)) : renderSlot(_ctx.$slots, "empty", { key: 1 }, () => [
createElementVNode("li", {
class: normalizeClass(_ctx.nsCascader.e("empty-text"))
}, toDisplayString(_ctx.t("el.cascader.noMatch")), 3)
])
]),
_: 3
}, 8, ["class", "view-class", "onKeydown"])), [
[vShow, _ctx.filtering]
]) : createCommentVNode("v-if", true)
]),
_: 3
}, 8, ["visible", "teleported", "popper-class", "popper-options", "transition", "onHide"]);
}
var Cascader = /* @__PURE__ */ _export_sfc$1(_sfc_main$F, [["render", _sfc_render$k], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/cascader/src/index.vue"]]);
Cascader.install = (app) => {
app.component(Cascader.name, Cascader);
};
const _Cascader = Cascader;
const ElCascader = _Cascader;
const messageConfig = {};
const configProviderProps = buildProps({
a11y: {
type: Boolean,
default: true
},
locale: {
type: definePropType(Object)
},
size: {
type: String,
values: componentSizes,
default: ""
},
button: {
type: definePropType(Object)
},
experimentalFeatures: {
type: definePropType(Object)
},
keyboardNavigation: {
type: Boolean,
default: true
},
message: {
type: definePropType(Object)
},
zIndex: {
type: Number
},
namespace: {
type: String,
default: "el"
}
});
var ConfigProvider = defineComponent({
name: "ElConfigProvider",
props: configProviderProps,
setup(props, { slots }) {
watch(() => props.message, (val) => {
Object.assign(messageConfig, val != null ? val : {});
}, { immediate: true, deep: true });
const config = provideGlobalConfig(props);
return () => renderSlot(slots, "default", { config: config == null ? void 0 : config.value });
}
});
const ElConfigProvider = withInstall(ConfigProvider);
var advancedFormat$1 = { exports: {} };
(function(module2, exports2) {
!function(e, t) {
module2.exports = t();
}(commonjsGlobal, function() {
return function(e, t) {
var r = t.prototype, n = r.format;
r.format = function(e2) {
var t2 = this, r2 = this.$locale();
if (!this.isValid())
return n.bind(this)(e2);
var s2 = this.$utils(), a2 = (e2 || "YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g, function(e3) {
switch (e3) {
case "Q":
return Math.ceil((t2.$M + 1) / 3);
case "Do":
return r2.ordinal(t2.$D);
case "gggg":
return t2.weekYear();
case "GGGG":
return t2.isoWeekYear();
case "wo":
return r2.ordinal(t2.week(), "W");
case "w":
case "ww":
return s2.s(t2.week(), e3 === "w" ? 1 : 2, "0");
case "W":
case "WW":
return s2.s(t2.isoWeek(), e3 === "W" ? 1 : 2, "0");
case "k":
case "kk":
return s2.s(String(t2.$H === 0 ? 24 : t2.$H), e3 === "k" ? 1 : 2, "0");
case "X":
return Math.floor(t2.$d.getTime() / 1e3);
case "x":
return t2.$d.getTime();
case "z":
return "[" + t2.offsetName() + "]";
case "zzz":
return "[" + t2.offsetName("long") + "]";
default:
return e3;
}
});
return n.bind(this)(a2);
};
};
});
})(advancedFormat$1);
var advancedFormat = advancedFormat$1.exports;
var weekOfYear$1 = { exports: {} };
(function(module2, exports2) {
!function(e, t) {
module2.exports = t();
}(commonjsGlobal, function() {
var e = "week", t = "year";
return function(i, n, r) {
var f2 = n.prototype;
f2.week = function(i2) {
if (i2 === void 0 && (i2 = null), i2 !== null)
return this.add(7 * (i2 - this.week()), "day");
var n2 = this.$locale().yearStart || 1;
if (this.month() === 11 && this.date() > 25) {
var f3 = r(this).startOf(t).add(1, t).date(n2), s2 = r(this).endOf(e);
if (f3.isBefore(s2))
return 1;
}
var a2 = r(this).startOf(t).date(n2).startOf(e).subtract(1, "millisecond"), o2 = this.diff(a2, e, true);
return o2 < 0 ? r(this).startOf("week").week() : Math.ceil(o2);
}, f2.weeks = function(e2) {
return e2 === void 0 && (e2 = null), this.week(e2);
};
};
});
})(weekOfYear$1);
var weekOfYear = weekOfYear$1.exports;
var weekYear$1 = { exports: {} };
(function(module2, exports2) {
!function(e, t) {
module2.exports = t();
}(commonjsGlobal, function() {
return function(e, t) {
t.prototype.weekYear = function() {
var e2 = this.month(), t2 = this.week(), n = this.year();
return t2 === 1 && e2 === 11 ? n + 1 : e2 === 0 && t2 >= 52 ? n - 1 : n;
};
};
});
})(weekYear$1);
var weekYear = weekYear$1.exports;
var dayOfYear$1 = { exports: {} };
(function(module2, exports2) {
!function(e, t) {
module2.exports = t();
}(commonjsGlobal, function() {
return function(e, t, n) {
t.prototype.dayOfYear = function(e2) {
var t2 = Math.round((n(this).startOf("day") - n(this).startOf("year")) / 864e5) + 1;
return e2 == null ? t2 : this.add(e2 - t2, "day");
};
};
});
})(dayOfYear$1);
var dayOfYear = dayOfYear$1.exports;
var isSameOrAfter$1 = { exports: {} };
(function(module2, exports2) {
!function(e, t) {
module2.exports = t();
}(commonjsGlobal, function() {
return function(e, t) {
t.prototype.isSameOrAfter = function(e2, t2) {
return this.isSame(e2, t2) || this.isAfter(e2, t2);
};
};
});
})(isSameOrAfter$1);
var isSameOrAfter = isSameOrAfter$1.exports;
var isSameOrBefore$1 = { exports: {} };
(function(module2, exports2) {
!function(e, i) {
module2.exports = i();
}(commonjsGlobal, function() {
return function(e, i) {
i.prototype.isSameOrBefore = function(e2, i2) {
return this.isSame(e2, i2) || this.isBefore(e2, i2);
};
};
});
})(isSameOrBefore$1);
var isSameOrBefore = isSameOrBefore$1.exports;
const ROOT_PICKER_INJECTION_KEY = Symbol();
var ElDatePickerCell = defineComponent({
name: "ElDatePickerCell",
props: buildProps({
cell: {
type: definePropType(Object)
}
}),
setup(props) {
const picker = inject(ROOT_PICKER_INJECTION_KEY);
return () => {
const cell = props.cell;
if (picker == null ? void 0 : picker.ctx.slots.default) {
const list = picker.ctx.slots.default(cell).filter((item) => {
return item.patchFlag !== -2 && item.type.toString() !== "Symbol(Comment)";
});
if (list.length) {
return list;
}
}
return h$1("div", {
class: "el-date-table-cell"
}, [
h$1("span", {
class: "el-date-table-cell__text"
}, [cell == null ? void 0 : cell.text])
]);
};
}
});
const _sfc_main$E = defineComponent({
components: {
ElDatePickerCell
},
props: {
date: {
type: Object
},
minDate: {
type: Object
},
maxDate: {
type: Object
},
parsedValue: {
type: [Object, Array]
},
selectionMode: {
type: String,
default: "day"
},
showWeekNumber: {
type: Boolean,
default: false
},
disabledDate: {
type: Function
},
cellClassName: {
type: Function
},
rangeState: {
type: Object,
default: () => ({
endDate: null,
selecting: false
})
}
},
emits: ["changerange", "pick", "select"],
setup(props, ctx) {
const { t, lang } = useLocale();
const lastRow = ref(null);
const lastColumn = ref(null);
const tableRows = ref([[], [], [], [], [], []]);
const firstDayOfWeek = props.date.$locale().weekStart || 7;
const WEEKS_CONSTANT = props.date.locale("en").localeData().weekdaysShort().map((_2) => _2.toLowerCase());
const offsetDay = computed(() => {
return firstDayOfWeek > 3 ? 7 - firstDayOfWeek : -firstDayOfWeek;
});
const startDate = computed(() => {
const startDayOfMonth = props.date.startOf("month");
return startDayOfMonth.subtract(startDayOfMonth.day() || 7, "day");
});
const WEEKS = computed(() => {
return WEEKS_CONSTANT.concat(WEEKS_CONSTANT).slice(firstDayOfWeek, firstDayOfWeek + 7);
});
const rows = computed(() => {
var _a2;
const startOfMonth = props.date.startOf("month");
const startOfMonthDay = startOfMonth.day() || 7;
const dateCountOfMonth = startOfMonth.daysInMonth();
const dateCountOfLastMonth = startOfMonth.subtract(1, "month").daysInMonth();
const offset2 = offsetDay.value;
const rows_ = tableRows.value;
let count = 1;
const selectedDate = props.selectionMode === "dates" ? castArray(props.parsedValue) : [];
const calNow = dayjs().locale(lang.value).startOf("day");
for (let i = 0; i < 6; i++) {
const row = rows_[i];
if (props.showWeekNumber) {
if (!row[0]) {
row[0] = {
type: "week",
text: startDate.value.add(i * 7 + 1, "day").week()
};
}
}
for (let j = 0; j < 7; j++) {
let cell = row[props.showWeekNumber ? j + 1 : j];
if (!cell) {
cell = {
row: i,
column: j,
type: "normal",
inRange: false,
start: false,
end: false
};
}
const index = i * 7 + j;
const calTime = startDate.value.add(index - offset2, "day");
cell.dayjs = calTime;
cell.date = calTime.toDate();
cell.timestamp = calTime.valueOf();
cell.type = "normal";
const calEndDate = props.rangeState.endDate || props.maxDate || props.rangeState.selecting && props.minDate;
cell.inRange = props.minDate && calTime.isSameOrAfter(props.minDate, "day") && calEndDate && calTime.isSameOrBefore(calEndDate, "day") || props.minDate && calTime.isSameOrBefore(props.minDate, "day") && calEndDate && calTime.isSameOrAfter(calEndDate, "day");
if ((_a2 = props.minDate) == null ? void 0 : _a2.isSameOrAfter(calEndDate)) {
cell.start = calEndDate && calTime.isSame(calEndDate, "day");
cell.end = props.minDate && calTime.isSame(props.minDate, "day");
} else {
cell.start = props.minDate && calTime.isSame(props.minDate, "day");
cell.end = calEndDate && calTime.isSame(calEndDate, "day");
}
const isToday = calTime.isSame(calNow, "day");
if (isToday) {
cell.type = "today";
}
if (i >= 0 && i <= 1) {
const numberOfDaysFromPreviousMonth = startOfMonthDay + offset2 < 0 ? 7 + startOfMonthDay + offset2 : startOfMonthDay + offset2;
if (j + i * 7 >= numberOfDaysFromPreviousMonth) {
cell.text = count++;
} else {
cell.text = dateCountOfLastMonth - (numberOfDaysFromPreviousMonth - j % 7) + 1 + i * 7;
cell.type = "prev-month";
}
} else {
if (count <= dateCountOfMonth) {
cell.text = count++;
} else {
cell.text = count++ - dateCountOfMonth;
cell.type = "next-month";
}
}
const cellDate = calTime.toDate();
cell.selected = selectedDate.find((_2) => _2.valueOf() === calTime.valueOf());
cell.isSelected = !!cell.selected;
cell.isCurrent = isCurrent(cell);
cell.disabled = props.disabledDate && props.disabledDate(cellDate);
cell.customClass = props.cellClassName && props.cellClassName(cellDate);
row[props.showWeekNumber ? j + 1 : j] = cell;
}
if (props.selectionMode === "week") {
const start2 = props.showWeekNumber ? 1 : 0;
const end2 = props.showWeekNumber ? 7 : 6;
const isActive = isWeekActive(row[start2 + 1]);
row[start2].inRange = isActive;
row[start2].start = isActive;
row[end2].inRange = isActive;
row[end2].end = isActive;
}
}
return rows_;
});
const isCurrent = (cell) => {
return props.selectionMode === "day" && (cell.type === "normal" || cell.type === "today") && cellMatchesDate(cell, props.parsedValue);
};
const cellMatchesDate = (cell, date4) => {
if (!date4)
return false;
return dayjs(date4).locale(lang.value).isSame(props.date.date(Number(cell.text)), "day");
};
const getCellClasses = (cell) => {
const classes = [];
if ((cell.type === "normal" || cell.type === "today") && !cell.disabled) {
classes.push("available");
if (cell.type === "today") {
classes.push("today");
}
} else {
classes.push(cell.type);
}
if (isCurrent(cell)) {
classes.push("current");
}
if (cell.inRange && (cell.type === "normal" || cell.type === "today" || props.selectionMode === "week")) {
classes.push("in-range");
if (cell.start) {
classes.push("start-date");
}
if (cell.end) {
classes.push("end-date");
}
}
if (cell.disabled) {
classes.push("disabled");
}
if (cell.selected) {
classes.push("selected");
}
if (cell.customClass) {
classes.push(cell.customClass);
}
return classes.join(" ");
};
const getDateOfCell = (row, column) => {
const offsetFromStart = row * 7 + (column - (props.showWeekNumber ? 1 : 0)) - offsetDay.value;
return startDate.value.add(offsetFromStart, "day");
};
const handleMouseMove = (event) => {
if (!props.rangeState.selecting)
return;
let target = event.target;
if (target.tagName === "SPAN") {
target = target.parentNode.parentNode;
}
if (target.tagName === "DIV") {
target = target.parentNode;
}
if (target.tagName !== "TD")
return;
const row = target.parentNode.rowIndex - 1;
const column = target.cellIndex;
if (rows.value[row][column].disabled)
return;
if (row !== lastRow.value || column !== lastColumn.value) {
lastRow.value = row;
lastColumn.value = column;
ctx.emit("changerange", {
selecting: true,
endDate: getDateOfCell(row, column)
});
}
};
const handleClick = (event) => {
let target = event.target;
while (target) {
if (target.tagName === "TD") {
break;
}
target = target.parentNode;
}
if (!target || target.tagName !== "TD")
return;
const row = target.parentNode.rowIndex - 1;
const column = target.cellIndex;
const cell = rows.value[row][column];
if (cell.disabled || cell.type === "week")
return;
const newDate = getDateOfCell(row, column);
if (props.selectionMode === "range") {
if (!props.rangeState.selecting) {
ctx.emit("pick", { minDate: newDate, maxDate: null });
ctx.emit("select", true);
} else {
if (newDate >= props.minDate) {
ctx.emit("pick", { minDate: props.minDate, maxDate: newDate });
} else {
ctx.emit("pick", { minDate: newDate, maxDate: props.minDate });
}
ctx.emit("select", false);
}
} else if (props.selectionMode === "day") {
ctx.emit("pick", newDate);
} else if (props.selectionMode === "week") {
const weekNumber = newDate.week();
const value = `${newDate.year()}w${weekNumber}`;
ctx.emit("pick", {
year: newDate.year(),
week: weekNumber,
value,
date: newDate.startOf("week")
});
} else if (props.selectionMode === "dates") {
const newValue = cell.selected ? castArray(props.parsedValue).filter((_2) => _2.valueOf() !== newDate.valueOf()) : castArray(props.parsedValue).concat([newDate]);
ctx.emit("pick", newValue);
}
};
const isWeekActive = (cell) => {
if (props.selectionMode !== "week")
return false;
let newDate = props.date.startOf("day");
if (cell.type === "prev-month") {
newDate = newDate.subtract(1, "month");
}
if (cell.type === "next-month") {
newDate = newDate.add(1, "month");
}
newDate = newDate.date(Number.parseInt(cell.text, 10));
if (props.parsedValue && !Array.isArray(props.parsedValue)) {
const dayOffset = (props.parsedValue.day() - firstDayOfWeek + 7) % 7 - 1;
const weekDate = props.parsedValue.subtract(dayOffset, "day");
return weekDate.isSame(newDate, "day");
}
return false;
};
return {
handleMouseMove,
t,
rows,
isWeekActive,
getCellClasses,
WEEKS,
handleClick
};
}
});
const _hoisted_1$r = { key: 0 };
function _sfc_render$j(_ctx, _cache, $props, $setup, $data, $options) {
const _component_el_date_picker_cell = resolveComponent("el-date-picker-cell");
return openBlock(), createElementBlock("table", {
cellspacing: "0",
cellpadding: "0",
class: normalizeClass(["el-date-table", { "is-week-mode": _ctx.selectionMode === "week" }]),
onClick: _cache[0] || (_cache[0] = (...args) => _ctx.handleClick && _ctx.handleClick(...args)),
onMousemove: _cache[1] || (_cache[1] = (...args) => _ctx.handleMouseMove && _ctx.handleMouseMove(...args))
}, [
createElementVNode("tbody", null, [
createElementVNode("tr", null, [
_ctx.showWeekNumber ? (openBlock(), createElementBlock("th", _hoisted_1$r, toDisplayString(_ctx.t("el.datepicker.week")), 1)) : createCommentVNode("v-if", true),
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.WEEKS, (week, key) => {
return openBlock(), createElementBlock("th", { key }, toDisplayString(_ctx.t("el.datepicker.weeks." + week)), 1);
}), 128))
]),
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.rows, (row, key) => {
return openBlock(), createElementBlock("tr", {
key,
class: normalizeClass(["el-date-table__row", { current: _ctx.isWeekActive(row[1]) }])
}, [
(openBlock(true), createElementBlock(Fragment, null, renderList(row, (cell, key_) => {
return openBlock(), createElementBlock("td", {
key: key_,
class: normalizeClass(_ctx.getCellClasses(cell))
}, [
createVNode(_component_el_date_picker_cell, { cell }, null, 8, ["cell"])
], 2);
}), 128))
], 2);
}), 128))
])
], 34);
}
var DateTable = /* @__PURE__ */ _export_sfc$1(_sfc_main$E, [["render", _sfc_render$j], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/date-picker/src/date-picker-com/basic-date-table.vue"]]);
const datesInMonth = (year, month, lang) => {
const firstDay = dayjs().locale(lang).startOf("month").month(month).year(year);
const numOfDays = firstDay.daysInMonth();
return rangeArr(numOfDays).map((n) => firstDay.add(n, "day").toDate());
};
const _sfc_main$D = defineComponent({
props: {
disabledDate: {
type: Function
},
selectionMode: {
type: String,
default: "month"
},
minDate: {
type: Object
},
maxDate: {
type: Object
},
date: {
type: Object
},
parsedValue: {
type: Object
},
rangeState: {
type: Object,
default: () => ({
endDate: null,
selecting: false
})
}
},
emits: ["changerange", "pick", "select"],
setup(props, ctx) {
const { t, lang } = useLocale();
const months = ref(props.date.locale("en").localeData().monthsShort().map((_2) => _2.toLowerCase()));
const tableRows = ref([[], [], []]);
const lastRow = ref(null);
const lastColumn = ref(null);
const rows = computed(() => {
var _a2;
const rows2 = tableRows.value;
const now2 = dayjs().locale(lang.value).startOf("month");
for (let i = 0; i < 3; i++) {
const row = rows2[i];
for (let j = 0; j < 4; j++) {
let cell = row[j];
if (!cell) {
cell = {
row: i,
column: j,
type: "normal",
inRange: false,
start: false,
end: false
};
}
cell.type = "normal";
const index = i * 4 + j;
const calTime = props.date.startOf("year").month(index);
const calEndDate = props.rangeState.endDate || props.maxDate || props.rangeState.selecting && props.minDate;
cell.inRange = props.minDate && calTime.isSameOrAfter(props.minDate, "month") && calEndDate && calTime.isSameOrBefore(calEndDate, "month") || props.minDate && calTime.isSameOrBefore(props.minDate, "month") && calEndDate && calTime.isSameOrAfter(calEndDate, "month");
if ((_a2 = props.minDate) == null ? void 0 : _a2.isSameOrAfter(calEndDate)) {
cell.start = calEndDate && calTime.isSame(calEndDate, "month");
cell.end = props.minDate && calTime.isSame(props.minDate, "month");
} else {
cell.start = props.minDate && calTime.isSame(props.minDate, "month");
cell.end = calEndDate && calTime.isSame(calEndDate, "month");
}
const isToday = now2.isSame(calTime);
if (isToday) {
cell.type = "today";
}
cell.text = index;
const cellDate = calTime.toDate();
cell.disabled = props.disabledDate && props.disabledDate(cellDate);
row[j] = cell;
}
}
return rows2;
});
const getCellStyle = (cell) => {
const style = {};
const year = props.date.year();
const today = new Date();
const month = cell.text;
style.disabled = props.disabledDate ? datesInMonth(year, month, lang.value).every(props.disabledDate) : false;
style.current = castArray(props.parsedValue).findIndex((date4) => date4.year() === year && date4.month() === month) >= 0;
style.today = today.getFullYear() === year && today.getMonth() === month;
if (cell.inRange) {
style["in-range"] = true;
if (cell.start) {
style["start-date"] = true;
}
if (cell.end) {
style["end-date"] = true;
}
}
return style;
};
const handleMouseMove = (event) => {
if (!props.rangeState.selecting)
return;
let target = event.target;
if (target.tagName === "A") {
target = target.parentNode.parentNode;
}
if (target.tagName === "DIV") {
target = target.parentNode;
}
if (target.tagName !== "TD")
return;
const row = target.parentNode.rowIndex;
const column = target.cellIndex;
if (rows.value[row][column].disabled)
return;
if (row !== lastRow.value || column !== lastColumn.value) {
lastRow.value = row;
lastColumn.value = column;
ctx.emit("changerange", {
selecting: true,
endDate: props.date.startOf("year").month(row * 4 + column)
});
}
};
const handleMonthTableClick = (event) => {
let target = event.target;
if (target.tagName === "A") {
target = target.parentNode.parentNode;
}
if (target.tagName === "DIV") {
target = target.parentNode;
}
if (target.tagName !== "TD")
return;
if (hasClass(target, "disabled"))
return;
const column = target.cellIndex;
const row = target.parentNode.rowIndex;
const month = row * 4 + column;
const newDate = props.date.startOf("year").month(month);
if (props.selectionMode === "range") {
if (!props.rangeState.selecting) {
ctx.emit("pick", { minDate: newDate, maxDate: null });
ctx.emit("select", true);
} else {
if (newDate >= props.minDate) {
ctx.emit("pick", { minDate: props.minDate, maxDate: newDate });
} else {
ctx.emit("pick", { minDate: newDate, maxDate: props.minDate });
}
ctx.emit("select", false);
}
} else {
ctx.emit("pick", month);
}
};
return {
handleMouseMove,
handleMonthTableClick,
rows,
getCellStyle,
t,
months
};
}
});
const _hoisted_1$q = { class: "cell" };
function _sfc_render$i(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("table", {
class: "el-month-table",
onClick: _cache[0] || (_cache[0] = (...args) => _ctx.handleMonthTableClick && _ctx.handleMonthTableClick(...args)),
onMousemove: _cache[1] || (_cache[1] = (...args) => _ctx.handleMouseMove && _ctx.handleMouseMove(...args))
}, [
createElementVNode("tbody", null, [
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.rows, (row, key) => {
return openBlock(), createElementBlock("tr", { key }, [
(openBlock(true), createElementBlock(Fragment, null, renderList(row, (cell, key_) => {
return openBlock(), createElementBlock("td", {
key: key_,
class: normalizeClass(_ctx.getCellStyle(cell))
}, [
createElementVNode("div", null, [
createElementVNode("a", _hoisted_1$q, toDisplayString(_ctx.t("el.datepicker.months." + _ctx.months[cell.text])), 1)
])
], 2);
}), 128))
]);
}), 128))
])
], 32);
}
var MonthTable = /* @__PURE__ */ _export_sfc$1(_sfc_main$D, [["render", _sfc_render$i], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/date-picker/src/date-picker-com/basic-month-table.vue"]]);
const datesInYear = (year, lang) => {
const firstDay = dayjs(String(year)).locale(lang).startOf("year");
const lastDay = firstDay.endOf("year");
const numOfDays = lastDay.dayOfYear();
return rangeArr(numOfDays).map((n) => firstDay.add(n, "day").toDate());
};
const _sfc_main$C = defineComponent({
props: {
disabledDate: {
type: Function
},
parsedValue: {
type: Object
},
date: {
type: Object
}
},
emits: ["pick"],
setup(props, ctx) {
const { lang } = useLocale();
const startYear = computed(() => {
return Math.floor(props.date.year() / 10) * 10;
});
const getCellStyle = (year) => {
const style = {};
const today = dayjs().locale(lang.value);
style.disabled = props.disabledDate ? datesInYear(year, lang.value).every(props.disabledDate) : false;
style.current = castArray(props.parsedValue).findIndex((_2) => _2.year() === year) >= 0;
style.today = today.year() === year;
return style;
};
const handleYearTableClick = (event) => {
const target = event.target;
if (target.tagName === "A") {
if (hasClass(target.parentNode, "disabled"))
return;
const year = target.textContent || target.innerText;
ctx.emit("pick", Number(year));
}
};
return {
startYear,
getCellStyle,
handleYearTableClick
};
}
});
const _hoisted_1$p = { class: "cell" };
const _hoisted_2$k = { class: "cell" };
const _hoisted_3$e = { class: "cell" };
const _hoisted_4$c = { class: "cell" };
const _hoisted_5$c = { class: "cell" };
const _hoisted_6$a = { class: "cell" };
const _hoisted_7$6 = { class: "cell" };
const _hoisted_8$5 = { class: "cell" };
const _hoisted_9$5 = { class: "cell" };
const _hoisted_10$5 = { class: "cell" };
const _hoisted_11$4 = /* @__PURE__ */ createElementVNode("td", null, null, -1);
const _hoisted_12$4 = /* @__PURE__ */ createElementVNode("td", null, null, -1);
function _sfc_render$h(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("table", {
class: "el-year-table",
onClick: _cache[0] || (_cache[0] = (...args) => _ctx.handleYearTableClick && _ctx.handleYearTableClick(...args))
}, [
createElementVNode("tbody", null, [
createElementVNode("tr", null, [
createElementVNode("td", {
class: normalizeClass(["available", _ctx.getCellStyle(_ctx.startYear + 0)])
}, [
createElementVNode("a", _hoisted_1$p, toDisplayString(_ctx.startYear), 1)
], 2),
createElementVNode("td", {
class: normalizeClass(["available", _ctx.getCellStyle(_ctx.startYear + 1)])
}, [
createElementVNode("a", _hoisted_2$k, toDisplayString(_ctx.startYear + 1), 1)
], 2),
createElementVNode("td", {
class: normalizeClass(["available", _ctx.getCellStyle(_ctx.startYear + 2)])
}, [
createElementVNode("a", _hoisted_3$e, toDisplayString(_ctx.startYear + 2), 1)
], 2),
createElementVNode("td", {
class: normalizeClass(["available", _ctx.getCellStyle(_ctx.startYear + 3)])
}, [
createElementVNode("a", _hoisted_4$c, toDisplayString(_ctx.startYear + 3), 1)
], 2)
]),
createElementVNode("tr", null, [
createElementVNode("td", {
class: normalizeClass(["available", _ctx.getCellStyle(_ctx.startYear + 4)])
}, [
createElementVNode("a", _hoisted_5$c, toDisplayString(_ctx.startYear + 4), 1)
], 2),
createElementVNode("td", {
class: normalizeClass(["available", _ctx.getCellStyle(_ctx.startYear + 5)])
}, [
createElementVNode("a", _hoisted_6$a, toDisplayString(_ctx.startYear + 5), 1)
], 2),
createElementVNode("td", {
class: normalizeClass(["available", _ctx.getCellStyle(_ctx.startYear + 6)])
}, [
createElementVNode("a", _hoisted_7$6, toDisplayString(_ctx.startYear + 6), 1)
], 2),
createElementVNode("td", {
class: normalizeClass(["available", _ctx.getCellStyle(_ctx.startYear + 7)])
}, [
createElementVNode("a", _hoisted_8$5, toDisplayString(_ctx.startYear + 7), 1)
], 2)
]),
createElementVNode("tr", null, [
createElementVNode("td", {
class: normalizeClass(["available", _ctx.getCellStyle(_ctx.startYear + 8)])
}, [
createElementVNode("a", _hoisted_9$5, toDisplayString(_ctx.startYear + 8), 1)
], 2),
createElementVNode("td", {
class: normalizeClass(["available", _ctx.getCellStyle(_ctx.startYear + 9)])
}, [
createElementVNode("a", _hoisted_10$5, toDisplayString(_ctx.startYear + 9), 1)
], 2),
_hoisted_11$4,
_hoisted_12$4
])
])
]);
}
var YearTable = /* @__PURE__ */ _export_sfc$1(_sfc_main$C, [["render", _sfc_render$h], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/date-picker/src/date-picker-com/basic-year-table.vue"]]);
const timeWithinRange = (_2, __, ___) => true;
const _sfc_main$B = defineComponent({
components: {
DateTable,
ElInput,
ElButton,
ElIcon,
TimePickPanel,
MonthTable,
YearTable,
DArrowLeft: dArrowLeft,
ArrowLeft: arrowLeft,
DArrowRight: dArrowRight,
ArrowRight: arrowRight
},
directives: { clickoutside: ClickOutside },
props: {
visible: {
type: Boolean,
default: false
},
parsedValue: {
type: [Object, Array]
},
format: {
type: String,
default: ""
},
type: {
type: String,
required: true,
validator: isValidDatePickType
}
},
emits: ["pick", "set-picker-option", "panel-change"],
setup(props, ctx) {
const { t, lang } = useLocale();
const pickerBase = inject("EP_PICKER_BASE");
const popper2 = inject(TOOLTIP_INJECTION_KEY);
const {
shortcuts,
disabledDate,
cellClassName,
defaultTime,
arrowControl
} = pickerBase.props;
const defaultValue = toRef(pickerBase.props, "defaultValue");
const innerDate = ref(dayjs().locale(lang.value));
const defaultTimeD = computed(() => {
return dayjs(defaultTime).locale(lang.value);
});
const month = computed(() => {
return innerDate.value.month();
});
const year = computed(() => {
return innerDate.value.year();
});
const selectableRange = ref([]);
const userInputDate = ref(null);
const userInputTime = ref(null);
const checkDateWithinRange = (date4) => {
return selectableRange.value.length > 0 ? timeWithinRange(date4, selectableRange.value, props.format || "HH:mm:ss") : true;
};
const formatEmit = (emitDayjs) => {
if (defaultTime && !visibleTime.value) {
return defaultTimeD.value.year(emitDayjs.year()).month(emitDayjs.month()).date(emitDayjs.date());
}
if (showTime.value)
return emitDayjs.millisecond(0);
return emitDayjs.startOf("day");
};
const emit = (value, ...args) => {
if (!value) {
ctx.emit("pick", value, ...args);
} else if (Array.isArray(value)) {
const dates = value.map(formatEmit);
ctx.emit("pick", dates, ...args);
} else {
ctx.emit("pick", formatEmit(value), ...args);
}
userInputDate.value = null;
userInputTime.value = null;
};
const handleDatePick = (value) => {
if (selectionMode.value === "day") {
let newDate = props.parsedValue ? props.parsedValue.year(value.year()).month(value.month()).date(value.date()) : value;
if (!checkDateWithinRange(newDate)) {
newDate = selectableRange.value[0][0].year(value.year()).month(value.month()).date(value.date());
}
innerDate.value = newDate;
emit(newDate, showTime.value);
} else if (selectionMode.value === "week") {
emit(value.date);
} else if (selectionMode.value === "dates") {
emit(value, true);
}
};
const prevMonth_ = () => {
innerDate.value = innerDate.value.subtract(1, "month");
handlePanelChange("month");
};
const nextMonth_ = () => {
innerDate.value = innerDate.value.add(1, "month");
handlePanelChange("month");
};
const prevYear_ = () => {
if (currentView.value === "year") {
innerDate.value = innerDate.value.subtract(10, "year");
} else {
innerDate.value = innerDate.value.subtract(1, "year");
}
handlePanelChange("year");
};
const nextYear_ = () => {
if (currentView.value === "year") {
innerDate.value = innerDate.value.add(10, "year");
} else {
innerDate.value = innerDate.value.add(1, "year");
}
handlePanelChange("year");
};
const currentView = ref("date");
const yearLabel = computed(() => {
const yearTranslation = t("el.datepicker.year");
if (currentView.value === "year") {
const startYear = Math.floor(year.value / 10) * 10;
if (yearTranslation) {
return `${startYear} ${yearTranslation} - ${startYear + 9} ${yearTranslation}`;
}
return `${startYear} - ${startYear + 9}`;
}
return `${year.value} ${yearTranslation}`;
});
const handleShortcutClick = (shortcut) => {
const shortcutValue = typeof shortcut.value === "function" ? shortcut.value() : shortcut.value;
if (shortcutValue) {
emit(dayjs(shortcutValue).locale(lang.value));
return;
}
if (shortcut.onClick) {
shortcut.onClick(ctx);
}
};
const selectionMode = computed(() => {
if (["week", "month", "year", "dates"].includes(props.type)) {
return props.type;
}
return "day";
});
watch(() => selectionMode.value, (val) => {
if (["month", "year"].includes(val)) {
currentView.value = val;
return;
}
currentView.value = "date";
}, { immediate: true });
watch(() => currentView.value, () => {
popper2 == null ? void 0 : popper2.updatePopper();
});
const hasShortcuts = computed(() => !!shortcuts.length);
const handleMonthPick = (month2) => {
innerDate.value = innerDate.value.startOf("month").month(month2);
if (selectionMode.value === "month") {
emit(innerDate.value);
} else {
currentView.value = "date";
}
handlePanelChange("month");
};
const handleYearPick = (year2) => {
if (selectionMode.value === "year") {
innerDate.value = innerDate.value.startOf("year").year(year2);
emit(innerDate.value);
} else {
innerDate.value = innerDate.value.year(year2);
currentView.value = "month";
}
handlePanelChange("year");
};
const showMonthPicker = () => {
currentView.value = "month";
};
const showYearPicker = () => {
currentView.value = "year";
};
const showTime = computed(() => props.type === "datetime" || props.type === "datetimerange");
const footerVisible = computed(() => {
return showTime.value || selectionMode.value === "dates";
});
const onConfirm = () => {
if (selectionMode.value === "dates") {
emit(props.parsedValue);
} else {
let result = props.parsedValue;
if (!result) {
const defaultTimeD2 = dayjs(defaultTime).locale(lang.value);
const defaultValueD = getDefaultValue();
result = defaultTimeD2.year(defaultValueD.year()).month(defaultValueD.month()).date(defaultValueD.date());
}
innerDate.value = result;
emit(result);
}
};
const changeToNow = () => {
const now2 = dayjs().locale(lang.value);
const nowDate = now2.toDate();
if ((!disabledDate || !disabledDate(nowDate)) && checkDateWithinRange(nowDate)) {
innerDate.value = dayjs().locale(lang.value);
emit(innerDate.value);
}
};
const timeFormat = computed(() => {
return extractTimeFormat(props.format);
});
const dateFormat = computed(() => {
return extractDateFormat(props.format);
});
const visibleTime = computed(() => {
if (userInputTime.value)
return userInputTime.value;
if (!props.parsedValue && !defaultValue.value)
return;
return (props.parsedValue || innerDate.value).format(timeFormat.value);
});
const visibleDate = computed(() => {
if (userInputDate.value)
return userInputDate.value;
if (!props.parsedValue && !defaultValue.value)
return;
return (props.parsedValue || innerDate.value).format(dateFormat.value);
});
const timePickerVisible = ref(false);
const onTimePickerInputFocus = () => {
timePickerVisible.value = true;
};
const handleTimePickClose = () => {
timePickerVisible.value = false;
};
const handleTimePick = (value, visible, first) => {
const newDate = props.parsedValue ? props.parsedValue.hour(value.hour()).minute(value.minute()).second(value.second()) : value;
innerDate.value = newDate;
emit(innerDate.value, true);
if (!first) {
timePickerVisible.value = visible;
}
};
const handleVisibleTimeChange = (value) => {
const newDate = dayjs(value, timeFormat.value).locale(lang.value);
if (newDate.isValid() && checkDateWithinRange(newDate)) {
innerDate.value = newDate.year(innerDate.value.year()).month(innerDate.value.month()).date(innerDate.value.date());
userInputTime.value = null;
timePickerVisible.value = false;
emit(innerDate.value, true);
}
};
const handleVisibleDateChange = (value) => {
const newDate = dayjs(value, dateFormat.value).locale(lang.value);
if (newDate.isValid()) {
if (disabledDate && disabledDate(newDate.toDate())) {
return;
}
innerDate.value = newDate.hour(innerDate.value.hour()).minute(innerDate.value.minute()).second(innerDate.value.second());
userInputDate.value = null;
emit(innerDate.value, true);
}
};
const isValidValue = (date4) => {
return dayjs.isDayjs(date4) && date4.isValid() && (disabledDate ? !disabledDate(date4.toDate()) : true);
};
const formatToString = (value) => {
if (selectionMode.value === "dates") {
return value.map((_2) => _2.format(props.format));
}
return value.format(props.format);
};
const parseUserInput = (value) => {
return dayjs(value, props.format).locale(lang.value);
};
const getDefaultValue = () => {
const parseDate = dayjs(defaultValue.value).locale(lang.value);
if (!defaultValue.value) {
const defaultTimeDValue = defaultTimeD.value;
return dayjs().hour(defaultTimeDValue.hour()).minute(defaultTimeDValue.minute()).second(defaultTimeDValue.second()).locale(lang.value);
}
return parseDate;
};
const handleKeydown = (event) => {
const { code, keyCode } = event;
const list = [
EVENT_CODE.up,
EVENT_CODE.down,
EVENT_CODE.left,
EVENT_CODE.right
];
if (props.visible && !timePickerVisible.value) {
if (list.includes(code)) {
handleKeyControl(keyCode);
event.stopPropagation();
event.preventDefault();
}
if (code === EVENT_CODE.enter && userInputDate.value === null && userInputTime.value === null) {
emit(innerDate, false);
}
}
};
const handleKeyControl = (keyCode) => {
const mapping = {
year: {
38: -4,
40: 4,
37: -1,
39: 1,
offset: (date4, step) => date4.setFullYear(date4.getFullYear() + step)
},
month: {
38: -4,
40: 4,
37: -1,
39: 1,
offset: (date4, step) => date4.setMonth(date4.getMonth() + step)
},
week: {
38: -1,
40: 1,
37: -1,
39: 1,
offset: (date4, step) => date4.setDate(date4.getDate() + step * 7)
},
day: {
38: -7,
40: 7,
37: -1,
39: 1,
offset: (date4, step) => date4.setDate(date4.getDate() + step)
}
};
const newDate = innerDate.value.toDate();
while (Math.abs(innerDate.value.diff(newDate, "year", true)) < 1) {
const map = mapping[selectionMode.value];
map.offset(newDate, map[keyCode]);
if (disabledDate && disabledDate(newDate)) {
continue;
}
const result = dayjs(newDate).locale(lang.value);
innerDate.value = result;
ctx.emit("pick", result, true);
break;
}
};
const handlePanelChange = (mode) => {
ctx.emit("panel-change", innerDate.value.toDate(), mode, currentView.value);
};
ctx.emit("set-picker-option", ["isValidValue", isValidValue]);
ctx.emit("set-picker-option", ["formatToString", formatToString]);
ctx.emit("set-picker-option", ["parseUserInput", parseUserInput]);
ctx.emit("set-picker-option", ["handleKeydown", handleKeydown]);
watch(() => defaultValue.value, (val) => {
if (val) {
innerDate.value = getDefaultValue();
}
}, { immediate: true });
watch(() => props.parsedValue, (val) => {
if (val) {
if (selectionMode.value === "dates")
return;
if (Array.isArray(val))
return;
innerDate.value = val;
} else {
innerDate.value = getDefaultValue();
}
}, { immediate: true });
return {
handleTimePick,
handleTimePickClose,
onTimePickerInputFocus,
timePickerVisible,
visibleTime,
visibleDate,
showTime,
changeToNow,
onConfirm,
footerVisible,
handleYearPick,
showMonthPicker,
showYearPicker,
handleMonthPick,
hasShortcuts,
shortcuts,
arrowControl,
disabledDate,
cellClassName,
selectionMode,
handleShortcutClick,
prevYear_,
nextYear_,
prevMonth_,
nextMonth_,
innerDate,
t,
yearLabel,
currentView,
month,
handleDatePick,
handleVisibleTimeChange,
handleVisibleDateChange,
timeFormat,
userInputTime,
userInputDate
};
}
});
const _hoisted_1$o = { class: "el-picker-panel__body-wrapper" };
const _hoisted_2$j = {
key: 0,
class: "el-picker-panel__sidebar"
};
const _hoisted_3$d = ["onClick"];
const _hoisted_4$b = { class: "el-picker-panel__body" };
const _hoisted_5$b = {
key: 0,
class: "el-date-picker__time-header"
};
const _hoisted_6$9 = { class: "el-date-picker__editor-wrap" };
const _hoisted_7$5 = { class: "el-date-picker__editor-wrap" };
const _hoisted_8$4 = ["aria-label"];
const _hoisted_9$4 = ["aria-label"];
const _hoisted_10$4 = ["aria-label"];
const _hoisted_11$3 = ["aria-label"];
const _hoisted_12$3 = { class: "el-picker-panel__content" };
const _hoisted_13$3 = { class: "el-picker-panel__footer" };
function _sfc_render$g(_ctx, _cache, $props, $setup, $data, $options) {
const _component_el_input = resolveComponent("el-input");
const _component_time_pick_panel = resolveComponent("time-pick-panel");
const _component_d_arrow_left = resolveComponent("d-arrow-left");
const _component_el_icon = resolveComponent("el-icon");
const _component_arrow_left = resolveComponent("arrow-left");
const _component_d_arrow_right = resolveComponent("d-arrow-right");
const _component_arrow_right = resolveComponent("arrow-right");
const _component_date_table = resolveComponent("date-table");
const _component_year_table = resolveComponent("year-table");
const _component_month_table = resolveComponent("month-table");
const _component_el_button = resolveComponent("el-button");
const _directive_clickoutside = resolveDirective("clickoutside");
return openBlock(), createElementBlock("div", {
class: normalizeClass(["el-picker-panel el-date-picker", [
{
"has-sidebar": _ctx.$slots.sidebar || _ctx.hasShortcuts,
"has-time": _ctx.showTime
}
]])
}, [
createElementVNode("div", _hoisted_1$o, [
renderSlot(_ctx.$slots, "sidebar", { class: "el-picker-panel__sidebar" }),
_ctx.hasShortcuts ? (openBlock(), createElementBlock("div", _hoisted_2$j, [
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.shortcuts, (shortcut, key) => {
return openBlock(), createElementBlock("button", {
key,
type: "button",
class: "el-picker-panel__shortcut",
onClick: ($event) => _ctx.handleShortcutClick(shortcut)
}, toDisplayString(shortcut.text), 9, _hoisted_3$d);
}), 128))
])) : createCommentVNode("v-if", true),
createElementVNode("div", _hoisted_4$b, [
_ctx.showTime ? (openBlock(), createElementBlock("div", _hoisted_5$b, [
createElementVNode("span", _hoisted_6$9, [
createVNode(_component_el_input, {
placeholder: _ctx.t("el.datepicker.selectDate"),
"model-value": _ctx.visibleDate,
size: "small",
onInput: _cache[0] || (_cache[0] = (val) => _ctx.userInputDate = val),
onChange: _ctx.handleVisibleDateChange
}, null, 8, ["placeholder", "model-value", "onChange"])
]),
withDirectives((openBlock(), createElementBlock("span", _hoisted_7$5, [
createVNode(_component_el_input, {
placeholder: _ctx.t("el.datepicker.selectTime"),
"model-value": _ctx.visibleTime,
size: "small",
onFocus: _ctx.onTimePickerInputFocus,
onInput: _cache[1] || (_cache[1] = (val) => _ctx.userInputTime = val),
onChange: _ctx.handleVisibleTimeChange
}, null, 8, ["placeholder", "model-value", "onFocus", "onChange"]),
createVNode(_component_time_pick_panel, {
visible: _ctx.timePickerVisible,
format: _ctx.timeFormat,
"time-arrow-control": _ctx.arrowControl,
"parsed-value": _ctx.innerDate,
onPick: _ctx.handleTimePick
}, null, 8, ["visible", "format", "time-arrow-control", "parsed-value", "onPick"])
])), [
[_directive_clickoutside, _ctx.handleTimePickClose]
])
])) : createCommentVNode("v-if", true),
withDirectives(createElementVNode("div", {
class: normalizeClass(["el-date-picker__header", {
"el-date-picker__header--bordered": _ctx.currentView === "year" || _ctx.currentView === "month"
}])
}, [
createElementVNode("button", {
type: "button",
"aria-label": _ctx.t(`el.datepicker.prevYear`),
class: "el-picker-panel__icon-btn el-date-picker__prev-btn d-arrow-left",
onClick: _cache[2] || (_cache[2] = (...args) => _ctx.prevYear_ && _ctx.prevYear_(...args))
}, [
createVNode(_component_el_icon, null, {
default: withCtx(() => [
createVNode(_component_d_arrow_left)
]),
_: 1
})
], 8, _hoisted_8$4),
withDirectives(createElementVNode("button", {
type: "button",
"aria-label": _ctx.t(`el.datepicker.prevMonth`),
class: "el-picker-panel__icon-btn el-date-picker__prev-btn arrow-left",
onClick: _cache[3] || (_cache[3] = (...args) => _ctx.prevMonth_ && _ctx.prevMonth_(...args))
}, [
createVNode(_component_el_icon, null, {
default: withCtx(() => [
createVNode(_component_arrow_left)
]),
_: 1
})
], 8, _hoisted_9$4), [
[vShow, _ctx.currentView === "date"]
]),
createElementVNode("span", {
role: "button",
class: "el-date-picker__header-label",
onClick: _cache[4] || (_cache[4] = (...args) => _ctx.showYearPicker && _ctx.showYearPicker(...args))
}, toDisplayString(_ctx.yearLabel), 1),
withDirectives(createElementVNode("span", {
role: "button",
class: normalizeClass(["el-date-picker__header-label", { active: _ctx.currentView === "month" }]),
onClick: _cache[5] || (_cache[5] = (...args) => _ctx.showMonthPicker && _ctx.showMonthPicker(...args))
}, toDisplayString(_ctx.t(`el.datepicker.month${_ctx.month + 1}`)), 3), [
[vShow, _ctx.currentView === "date"]
]),
createElementVNode("button", {
type: "button",
"aria-label": _ctx.t(`el.datepicker.nextYear`),
class: "el-picker-panel__icon-btn el-date-picker__next-btn d-arrow-right",
onClick: _cache[6] || (_cache[6] = (...args) => _ctx.nextYear_ && _ctx.nextYear_(...args))
}, [
createVNode(_component_el_icon, null, {
default: withCtx(() => [
createVNode(_component_d_arrow_right)
]),
_: 1
})
], 8, _hoisted_10$4),
withDirectives(createElementVNode("button", {
type: "button",
"aria-label": _ctx.t(`el.datepicker.nextMonth`),
class: "el-picker-panel__icon-btn el-date-picker__next-btn arrow-right",
onClick: _cache[7] || (_cache[7] = (...args) => _ctx.nextMonth_ && _ctx.nextMonth_(...args))
}, [
createVNode(_component_el_icon, null, {
default: withCtx(() => [
createVNode(_component_arrow_right)
]),
_: 1
})
], 8, _hoisted_11$3), [
[vShow, _ctx.currentView === "date"]
])
], 2), [
[vShow, _ctx.currentView !== "time"]
]),
createElementVNode("div", _hoisted_12$3, [
_ctx.currentView === "date" ? (openBlock(), createBlock(_component_date_table, {
key: 0,
"selection-mode": _ctx.selectionMode,
date: _ctx.innerDate,
"parsed-value": _ctx.parsedValue,
"disabled-date": _ctx.disabledDate,
"cell-class-name": _ctx.cellClassName,
onPick: _ctx.handleDatePick
}, null, 8, ["selection-mode", "date", "parsed-value", "disabled-date", "cell-class-name", "onPick"])) : createCommentVNode("v-if", true),
_ctx.currentView === "year" ? (openBlock(), createBlock(_component_year_table, {
key: 1,
date: _ctx.innerDate,
"disabled-date": _ctx.disabledDate,
"parsed-value": _ctx.parsedValue,
onPick: _ctx.handleYearPick
}, null, 8, ["date", "disabled-date", "parsed-value", "onPick"])) : createCommentVNode("v-if", true),
_ctx.currentView === "month" ? (openBlock(), createBlock(_component_month_table, {
key: 2,
date: _ctx.innerDate,
"parsed-value": _ctx.parsedValue,
"disabled-date": _ctx.disabledDate,
onPick: _ctx.handleMonthPick
}, null, 8, ["date", "parsed-value", "disabled-date", "onPick"])) : createCommentVNode("v-if", true)
])
])
]),
withDirectives(createElementVNode("div", _hoisted_13$3, [
withDirectives(createVNode(_component_el_button, {
size: "small",
type: "text",
class: "el-picker-panel__link-btn",
onClick: _ctx.changeToNow
}, {
default: withCtx(() => [
createTextVNode(toDisplayString(_ctx.t("el.datepicker.now")), 1)
]),
_: 1
}, 8, ["onClick"]), [
[vShow, _ctx.selectionMode !== "dates"]
]),
createVNode(_component_el_button, {
plain: "",
size: "small",
class: "el-picker-panel__link-btn",
onClick: _ctx.onConfirm
}, {
default: withCtx(() => [
createTextVNode(toDisplayString(_ctx.t("el.datepicker.confirm")), 1)
]),
_: 1
}, 8, ["onClick"])
], 512), [
[vShow, _ctx.footerVisible && _ctx.currentView === "date"]
])
], 2);
}
var DatePickPanel = /* @__PURE__ */ _export_sfc$1(_sfc_main$B, [["render", _sfc_render$g], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/date-picker/src/date-picker-com/panel-date-pick.vue"]]);
const _sfc_main$A = defineComponent({
directives: { clickoutside: ClickOutside },
components: {
TimePickPanel,
DateTable,
ElInput,
ElButton,
ElIcon,
DArrowLeft: dArrowLeft,
ArrowLeft: arrowLeft,
DArrowRight: dArrowRight,
ArrowRight: arrowRight
},
props: {
unlinkPanels: Boolean,
parsedValue: {
type: Array
},
type: {
type: String,
required: true,
validator: isValidDatePickType
}
},
emits: ["pick", "set-picker-option", "calendar-change", "panel-change"],
setup(props, ctx) {
const { t, lang } = useLocale();
const leftDate = ref(dayjs().locale(lang.value));
const rightDate = ref(dayjs().locale(lang.value).add(1, "month"));
const minDate = ref(null);
const maxDate = ref(null);
const dateUserInput = ref({
min: null,
max: null
});
const timeUserInput = ref({
min: null,
max: null
});
const leftLabel = computed(() => {
return `${leftDate.value.year()} ${t("el.datepicker.year")} ${t(`el.datepicker.month${leftDate.value.month() + 1}`)}`;
});
const rightLabel = computed(() => {
return `${rightDate.value.year()} ${t("el.datepicker.year")} ${t(`el.datepicker.month${rightDate.value.month() + 1}`)}`;
});
const leftYear = computed(() => {
return leftDate.value.year();
});
const leftMonth = computed(() => {
return leftDate.value.month();
});
const rightYear = computed(() => {
return rightDate.value.year();
});
const rightMonth = computed(() => {
return rightDate.value.month();
});
const hasShortcuts = computed(() => !!shortcuts.length);
const minVisibleDate = computed(() => {
if (dateUserInput.value.min !== null)
return dateUserInput.value.min;
if (minDate.value)
return minDate.value.format(dateFormat.value);
return "";
});
const maxVisibleDate = computed(() => {
if (dateUserInput.value.max !== null)
return dateUserInput.value.max;
if (maxDate.value || minDate.value)
return (maxDate.value || minDate.value).format(dateFormat.value);
return "";
});
const minVisibleTime = computed(() => {
if (timeUserInput.value.min !== null)
return timeUserInput.value.min;
if (minDate.value)
return minDate.value.format(timeFormat.value);
return "";
});
const maxVisibleTime = computed(() => {
if (timeUserInput.value.max !== null)
return timeUserInput.value.max;
if (maxDate.value || minDate.value)
return (maxDate.value || minDate.value).format(timeFormat.value);
return "";
});
const timeFormat = computed(() => {
return extractTimeFormat(format2);
});
const dateFormat = computed(() => {
return extractDateFormat(format2);
});
const leftPrevYear = () => {
leftDate.value = leftDate.value.subtract(1, "year");
if (!props.unlinkPanels) {
rightDate.value = leftDate.value.add(1, "month");
}
handlePanelChange("year");
};
const leftPrevMonth = () => {
leftDate.value = leftDate.value.subtract(1, "month");
if (!props.unlinkPanels) {
rightDate.value = leftDate.value.add(1, "month");
}
handlePanelChange("month");
};
const rightNextYear = () => {
if (!props.unlinkPanels) {
leftDate.value = leftDate.value.add(1, "year");
rightDate.value = leftDate.value.add(1, "month");
} else {
rightDate.value = rightDate.value.add(1, "year");
}
handlePanelChange("year");
};
const rightNextMonth = () => {
if (!props.unlinkPanels) {
leftDate.value = leftDate.value.add(1, "month");
rightDate.value = leftDate.value.add(1, "month");
} else {
rightDate.value = rightDate.value.add(1, "month");
}
handlePanelChange("month");
};
const leftNextYear = () => {
leftDate.value = leftDate.value.add(1, "year");
handlePanelChange("year");
};
const leftNextMonth = () => {
leftDate.value = leftDate.value.add(1, "month");
handlePanelChange("month");
};
const rightPrevYear = () => {
rightDate.value = rightDate.value.subtract(1, "year");
handlePanelChange("year");
};
const rightPrevMonth = () => {
rightDate.value = rightDate.value.subtract(1, "month");
handlePanelChange("month");
};
const handlePanelChange = (mode) => {
ctx.emit("panel-change", [leftDate.value.toDate(), rightDate.value.toDate()], mode);
};
const enableMonthArrow = computed(() => {
const nextMonth = (leftMonth.value + 1) % 12;
const yearOffset = leftMonth.value + 1 >= 12 ? 1 : 0;
return props.unlinkPanels && new Date(leftYear.value + yearOffset, nextMonth) < new Date(rightYear.value, rightMonth.value);
});
const enableYearArrow = computed(() => {
return props.unlinkPanels && rightYear.value * 12 + rightMonth.value - (leftYear.value * 12 + leftMonth.value + 1) >= 12;
});
const isValidValue = (value) => {
return Array.isArray(value) && value[0] && value[1] && value[0].valueOf() <= value[1].valueOf();
};
const rangeState = ref({
endDate: null,
selecting: false
});
const btnDisabled = computed(() => {
return !(minDate.value && maxDate.value && !rangeState.value.selecting && isValidValue([minDate.value, maxDate.value]));
});
const handleChangeRange = (val) => {
rangeState.value = val;
};
const onSelect = (selecting) => {
rangeState.value.selecting = selecting;
if (!selecting) {
rangeState.value.endDate = null;
}
};
const showTime = computed(() => props.type === "datetime" || props.type === "datetimerange");
const handleConfirm = (visible = false) => {
if (isValidValue([minDate.value, maxDate.value])) {
ctx.emit("pick", [minDate.value, maxDate.value], visible);
}
};
const formatEmit = (emitDayjs, index) => {
if (!emitDayjs)
return;
if (defaultTime) {
const defaultTimeD = dayjs(defaultTime[index] || defaultTime).locale(lang.value);
return defaultTimeD.year(emitDayjs.year()).month(emitDayjs.month()).date(emitDayjs.date());
}
return emitDayjs;
};
const handleRangePick = (val, close2 = true) => {
const min_ = val.minDate;
const max_ = val.maxDate;
const minDate_ = formatEmit(min_, 0);
const maxDate_ = formatEmit(max_, 1);
if (maxDate.value === maxDate_ && minDate.value === minDate_) {
return;
}
ctx.emit("calendar-change", [min_.toDate(), max_ && max_.toDate()]);
maxDate.value = maxDate_;
minDate.value = minDate_;
if (!close2 || showTime.value)
return;
handleConfirm();
};
const handleShortcutClick = (shortcut) => {
const shortcutValues = typeof shortcut.value === "function" ? shortcut.value() : shortcut.value;
if (shortcutValues) {
ctx.emit("pick", [
dayjs(shortcutValues[0]).locale(lang.value),
dayjs(shortcutValues[1]).locale(lang.value)
]);
return;
}
if (shortcut.onClick) {
shortcut.onClick(ctx);
}
};
const minTimePickerVisible = ref(false);
const maxTimePickerVisible = ref(false);
const handleMinTimeClose = () => {
minTimePickerVisible.value = false;
};
const handleMaxTimeClose = () => {
maxTimePickerVisible.value = false;
};
const handleDateInput = (value, type4) => {
dateUserInput.value[type4] = value;
const parsedValueD = dayjs(value, dateFormat.value).locale(lang.value);
if (parsedValueD.isValid()) {
if (disabledDate && disabledDate(parsedValueD.toDate())) {
return;
}
if (type4 === "min") {
leftDate.value = parsedValueD;
minDate.value = (minDate.value || leftDate.value).year(parsedValueD.year()).month(parsedValueD.month()).date(parsedValueD.date());
if (!props.unlinkPanels) {
rightDate.value = parsedValueD.add(1, "month");
maxDate.value = minDate.value.add(1, "month");
}
} else {
rightDate.value = parsedValueD;
maxDate.value = (maxDate.value || rightDate.value).year(parsedValueD.year()).month(parsedValueD.month()).date(parsedValueD.date());
if (!props.unlinkPanels) {
leftDate.value = parsedValueD.subtract(1, "month");
minDate.value = maxDate.value.subtract(1, "month");
}
}
}
};
const handleDateChange = (_2, type4) => {
dateUserInput.value[type4] = null;
};
const handleTimeInput = (value, type4) => {
timeUserInput.value[type4] = value;
const parsedValueD = dayjs(value, timeFormat.value).locale(lang.value);
if (parsedValueD.isValid()) {
if (type4 === "min") {
minTimePickerVisible.value = true;
minDate.value = (minDate.value || leftDate.value).hour(parsedValueD.hour()).minute(parsedValueD.minute()).second(parsedValueD.second());
if (!maxDate.value || maxDate.value.isBefore(minDate.value)) {
maxDate.value = minDate.value;
}
} else {
maxTimePickerVisible.value = true;
maxDate.value = (maxDate.value || rightDate.value).hour(parsedValueD.hour()).minute(parsedValueD.minute()).second(parsedValueD.second());
rightDate.value = maxDate.value;
if (maxDate.value && maxDate.value.isBefore(minDate.value)) {
minDate.value = maxDate.value;
}
}
}
};
const handleTimeChange = (value, type4) => {
timeUserInput.value[type4] = null;
if (type4 === "min") {
leftDate.value = minDate.value;
minTimePickerVisible.value = false;
} else {
rightDate.value = maxDate.value;
maxTimePickerVisible.value = false;
}
};
const handleMinTimePick = (value, visible, first) => {
if (timeUserInput.value.min)
return;
if (value) {
leftDate.value = value;
minDate.value = (minDate.value || leftDate.value).hour(value.hour()).minute(value.minute()).second(value.second());
}
if (!first) {
minTimePickerVisible.value = visible;
}
if (!maxDate.value || maxDate.value.isBefore(minDate.value)) {
maxDate.value = minDate.value;
rightDate.value = value;
}
};
const handleMaxTimePick = (value, visible, first) => {
if (timeUserInput.value.max)
return;
if (value) {
rightDate.value = value;
maxDate.value = (maxDate.value || rightDate.value).hour(value.hour()).minute(value.minute()).second(value.second());
}
if (!first) {
maxTimePickerVisible.value = visible;
}
if (maxDate.value && maxDate.value.isBefore(minDate.value)) {
minDate.value = maxDate.value;
}
};
const handleClear = () => {
leftDate.value = getDefaultValue()[0];
rightDate.value = leftDate.value.add(1, "month");
ctx.emit("pick", null);
};
const formatToString = (value) => {
return Array.isArray(value) ? value.map((_2) => _2.format(format2)) : value.format(format2);
};
const parseUserInput = (value) => {
return Array.isArray(value) ? value.map((_2) => dayjs(_2, format2).locale(lang.value)) : dayjs(value, format2).locale(lang.value);
};
const getDefaultValue = () => {
let start2;
if (Array.isArray(defaultValue.value)) {
const left2 = dayjs(defaultValue.value[0]);
let right2 = dayjs(defaultValue.value[1]);
if (!props.unlinkPanels) {
right2 = left2.add(1, "month");
}
return [left2, right2];
} else if (defaultValue.value) {
start2 = dayjs(defaultValue.value);
} else {
start2 = dayjs();
}
start2 = start2.locale(lang.value);
return [start2, start2.add(1, "month")];
};
ctx.emit("set-picker-option", ["isValidValue", isValidValue]);
ctx.emit("set-picker-option", ["parseUserInput", parseUserInput]);
ctx.emit("set-picker-option", ["formatToString", formatToString]);
ctx.emit("set-picker-option", ["handleClear", handleClear]);
const pickerBase = inject("EP_PICKER_BASE");
const {
shortcuts,
disabledDate,
cellClassName,
format: format2,
defaultTime,
arrowControl,
clearable
} = pickerBase.props;
const defaultValue = toRef(pickerBase.props, "defaultValue");
watch(() => defaultValue.value, (val) => {
if (val) {
const defaultArr = getDefaultValue();
minDate.value = null;
maxDate.value = null;
leftDate.value = defaultArr[0];
rightDate.value = defaultArr[1];
}
}, { immediate: true });
watch(() => props.parsedValue, (newVal) => {
if (newVal && newVal.length === 2) {
minDate.value = newVal[0];
maxDate.value = newVal[1];
leftDate.value = minDate.value;
if (props.unlinkPanels && maxDate.value) {
const minDateYear = minDate.value.year();
const minDateMonth = minDate.value.month();
const maxDateYear = maxDate.value.year();
const maxDateMonth = maxDate.value.month();
rightDate.value = minDateYear === maxDateYear && minDateMonth === maxDateMonth ? maxDate.value.add(1, "month") : maxDate.value;
} else {
rightDate.value = leftDate.value.add(1, "month");
if (maxDate.value) {
rightDate.value = rightDate.value.hour(maxDate.value.hour()).minute(maxDate.value.minute()).second(maxDate.value.second());
}
}
} else {
const defaultArr = getDefaultValue();
minDate.value = null;
maxDate.value = null;
leftDate.value = defaultArr[0];
rightDate.value = defaultArr[1];
}
}, { immediate: true });
return {
shortcuts,
disabledDate,
cellClassName,
minTimePickerVisible,
maxTimePickerVisible,
handleMinTimeClose,
handleMaxTimeClose,
handleShortcutClick,
rangeState,
minDate,
maxDate,
handleRangePick,
onSelect,
handleChangeRange,
btnDisabled,
enableYearArrow,
enableMonthArrow,
rightPrevMonth,
rightPrevYear,
rightNextMonth,
rightNextYear,
leftPrevMonth,
leftPrevYear,
leftNextMonth,
leftNextYear,
hasShortcuts,
leftLabel,
rightLabel,
leftDate,
rightDate,
showTime,
t,
minVisibleDate,
maxVisibleDate,
minVisibleTime,
maxVisibleTime,
arrowControl,
handleDateInput,
handleDateChange,
handleTimeInput,
handleTimeChange,
handleMinTimePick,
handleMaxTimePick,
handleClear,
handleConfirm,
timeFormat,
clearable
};
}
});
const _hoisted_1$n = { class: "el-picker-panel__body-wrapper" };
const _hoisted_2$i = {
key: 0,
class: "el-picker-panel__sidebar"
};
const _hoisted_3$c = ["onClick"];
const _hoisted_4$a = { class: "el-picker-panel__body" };
const _hoisted_5$a = {
key: 0,
class: "el-date-range-picker__time-header"
};
const _hoisted_6$8 = { class: "el-date-range-picker__editors-wrap" };
const _hoisted_7$4 = { class: "el-date-range-picker__time-picker-wrap" };
const _hoisted_8$3 = { class: "el-date-range-picker__time-picker-wrap" };
const _hoisted_9$3 = { class: "el-date-range-picker__editors-wrap is-right" };
const _hoisted_10$3 = { class: "el-date-range-picker__time-picker-wrap" };
const _hoisted_11$2 = { class: "el-date-range-picker__time-picker-wrap" };
const _hoisted_12$2 = { class: "el-picker-panel__content el-date-range-picker__content is-left" };
const _hoisted_13$2 = { class: "el-date-range-picker__header" };
const _hoisted_14$2 = ["disabled"];
const _hoisted_15$1 = ["disabled"];
const _hoisted_16$1 = { class: "el-picker-panel__content el-date-range-picker__content is-right" };
const _hoisted_17$1 = { class: "el-date-range-picker__header" };
const _hoisted_18$1 = ["disabled"];
const _hoisted_19$1 = ["disabled"];
const _hoisted_20$1 = {
key: 0,
class: "el-picker-panel__footer"
};
function _sfc_render$f(_ctx, _cache, $props, $setup, $data, $options) {
const _component_el_input = resolveComponent("el-input");
const _component_time_pick_panel = resolveComponent("time-pick-panel");
const _component_arrow_right = resolveComponent("arrow-right");
const _component_el_icon = resolveComponent("el-icon");
const _component_d_arrow_left = resolveComponent("d-arrow-left");
const _component_arrow_left = resolveComponent("arrow-left");
const _component_d_arrow_right = resolveComponent("d-arrow-right");
const _component_date_table = resolveComponent("date-table");
const _component_el_button = resolveComponent("el-button");
const _directive_clickoutside = resolveDirective("clickoutside");
return openBlock(), createElementBlock("div", {
class: normalizeClass(["el-picker-panel el-date-range-picker", [
{
"has-sidebar": _ctx.$slots.sidebar || _ctx.hasShortcuts,
"has-time": _ctx.showTime
}
]])
}, [
createElementVNode("div", _hoisted_1$n, [
renderSlot(_ctx.$slots, "sidebar", { class: "el-picker-panel__sidebar" }),
_ctx.hasShortcuts ? (openBlock(), createElementBlock("div", _hoisted_2$i, [
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.shortcuts, (shortcut, key) => {
return openBlock(), createElementBlock("button", {
key,
type: "button",
class: "el-picker-panel__shortcut",
onClick: ($event) => _ctx.handleShortcutClick(shortcut)
}, toDisplayString(shortcut.text), 9, _hoisted_3$c);
}), 128))
])) : createCommentVNode("v-if", true),
createElementVNode("div", _hoisted_4$a, [
_ctx.showTime ? (openBlock(), createElementBlock("div", _hoisted_5$a, [
createElementVNode("span", _hoisted_6$8, [
createElementVNode("span", _hoisted_7$4, [
createVNode(_component_el_input, {
size: "small",
disabled: _ctx.rangeState.selecting,
placeholder: _ctx.t("el.datepicker.startDate"),
class: "el-date-range-picker__editor",
"model-value": _ctx.minVisibleDate,
onInput: _cache[0] || (_cache[0] = (val) => _ctx.handleDateInput(val, "min")),
onChange: _cache[1] || (_cache[1] = (val) => _ctx.handleDateChange(val, "min"))
}, null, 8, ["disabled", "placeholder", "model-value"])
]),
withDirectives((openBlock(), createElementBlock("span", _hoisted_8$3, [
createVNode(_component_el_input, {
size: "small",
class: "el-date-range-picker__editor",
disabled: _ctx.rangeState.selecting,
placeholder: _ctx.t("el.datepicker.startTime"),
"model-value": _ctx.minVisibleTime,
onFocus: _cache[2] || (_cache[2] = ($event) => _ctx.minTimePickerVisible = true),
onInput: _cache[3] || (_cache[3] = (val) => _ctx.handleTimeInput(val, "min")),
onChange: _cache[4] || (_cache[4] = (val) => _ctx.handleTimeChange(val, "min"))
}, null, 8, ["disabled", "placeholder", "model-value"]),
createVNode(_component_time_pick_panel, {
visible: _ctx.minTimePickerVisible,
format: _ctx.timeFormat,
"datetime-role": "start",
"time-arrow-control": _ctx.arrowControl,
"parsed-value": _ctx.leftDate,
onPick: _ctx.handleMinTimePick
}, null, 8, ["visible", "format", "time-arrow-control", "parsed-value", "onPick"])
])), [
[_directive_clickoutside, _ctx.handleMinTimeClose]
])
]),
createElementVNode("span", null, [
createVNode(_component_el_icon, null, {
default: withCtx(() => [
createVNode(_component_arrow_right)
]),
_: 1
})
]),
createElementVNode("span", _hoisted_9$3, [
createElementVNode("span", _hoisted_10$3, [
createVNode(_component_el_input, {
size: "small",
class: "el-date-range-picker__editor",
disabled: _ctx.rangeState.selecting,
placeholder: _ctx.t("el.datepicker.endDate"),
"model-value": _ctx.maxVisibleDate,
readonly: !_ctx.minDate,
onInput: _cache[5] || (_cache[5] = (val) => _ctx.handleDateInput(val, "max")),
onChange: _cache[6] || (_cache[6] = (val) => _ctx.handleDateChange(val, "max"))
}, null, 8, ["disabled", "placeholder", "model-value", "readonly"])
]),
withDirectives((openBlock(), createElementBlock("span", _hoisted_11$2, [
createVNode(_component_el_input, {
size: "small",
class: "el-date-range-picker__editor",
disabled: _ctx.rangeState.selecting,
placeholder: _ctx.t("el.datepicker.endTime"),
"model-value": _ctx.maxVisibleTime,
readonly: !_ctx.minDate,
onFocus: _cache[7] || (_cache[7] = ($event) => _ctx.minDate && (_ctx.maxTimePickerVisible = true)),
onInput: _cache[8] || (_cache[8] = (val) => _ctx.handleTimeInput(val, "max")),
onChange: _cache[9] || (_cache[9] = (val) => _ctx.handleTimeChange(val, "max"))
}, null, 8, ["disabled", "placeholder", "model-value", "readonly"]),
createVNode(_component_time_pick_panel, {
"datetime-role": "end",
visible: _ctx.maxTimePickerVisible,
format: _ctx.timeFormat,
"time-arrow-control": _ctx.arrowControl,
"parsed-value": _ctx.rightDate,
onPick: _ctx.handleMaxTimePick
}, null, 8, ["visible", "format", "time-arrow-control", "parsed-value", "onPick"])
])), [
[_directive_clickoutside, _ctx.handleMaxTimeClose]
])
])
])) : createCommentVNode("v-if", true),
createElementVNode("div", _hoisted_12$2, [
createElementVNode("div", _hoisted_13$2, [
createElementVNode("button", {
type: "button",
class: "el-picker-panel__icon-btn d-arrow-left",
onClick: _cache[10] || (_cache[10] = (...args) => _ctx.leftPrevYear && _ctx.leftPrevYear(...args))
}, [
createVNode(_component_el_icon, null, {
default: withCtx(() => [
createVNode(_component_d_arrow_left)
]),
_: 1
})
]),
createElementVNode("button", {
type: "button",
class: "el-picker-panel__icon-btn arrow-left",
onClick: _cache[11] || (_cache[11] = (...args) => _ctx.leftPrevMonth && _ctx.leftPrevMonth(...args))
}, [
createVNode(_component_el_icon, null, {
default: withCtx(() => [
createVNode(_component_arrow_left)
]),
_: 1
})
]),
_ctx.unlinkPanels ? (openBlock(), createElementBlock("button", {
key: 0,
type: "button",
disabled: !_ctx.enableYearArrow,
class: normalizeClass([{ "is-disabled": !_ctx.enableYearArrow }, "el-picker-panel__icon-btn d-arrow-right"]),
onClick: _cache[12] || (_cache[12] = (...args) => _ctx.leftNextYear && _ctx.leftNextYear(...args))
}, [
createVNode(_component_el_icon, null, {
default: withCtx(() => [
createVNode(_component_d_arrow_right)
]),
_: 1
})
], 10, _hoisted_14$2)) : createCommentVNode("v-if", true),
_ctx.unlinkPanels ? (openBlock(), createElementBlock("button", {
key: 1,
type: "button",
disabled: !_ctx.enableMonthArrow,
class: normalizeClass([{ "is-disabled": !_ctx.enableMonthArrow }, "el-picker-panel__icon-btn arrow-right"]),
onClick: _cache[13] || (_cache[13] = (...args) => _ctx.leftNextMonth && _ctx.leftNextMonth(...args))
}, [
createVNode(_component_el_icon, null, {
default: withCtx(() => [
createVNode(_component_arrow_right)
]),
_: 1
})
], 10, _hoisted_15$1)) : createCommentVNode("v-if", true),
createElementVNode("div", null, toDisplayString(_ctx.leftLabel), 1)
]),
createVNode(_component_date_table, {
"selection-mode": "range",
date: _ctx.leftDate,
"min-date": _ctx.minDate,
"max-date": _ctx.maxDate,
"range-state": _ctx.rangeState,
"disabled-date": _ctx.disabledDate,
"cell-class-name": _ctx.cellClassName,
onChangerange: _ctx.handleChangeRange,
onPick: _ctx.handleRangePick,
onSelect: _ctx.onSelect
}, null, 8, ["date", "min-date", "max-date", "range-state", "disabled-date", "cell-class-name", "onChangerange", "onPick", "onSelect"])
]),
createElementVNode("div", _hoisted_16$1, [
createElementVNode("div", _hoisted_17$1, [
_ctx.unlinkPanels ? (openBlock(), createElementBlock("button", {
key: 0,
type: "button",
disabled: !_ctx.enableYearArrow,
class: normalizeClass([{ "is-disabled": !_ctx.enableYearArrow }, "el-picker-panel__icon-btn d-arrow-left"]),
onClick: _cache[14] || (_cache[14] = (...args) => _ctx.rightPrevYear && _ctx.rightPrevYear(...args))
}, [
createVNode(_component_el_icon, null, {
default: withCtx(() => [
createVNode(_component_d_arrow_left)
]),
_: 1
})
], 10, _hoisted_18$1)) : createCommentVNode("v-if", true),
_ctx.unlinkPanels ? (openBlock(), createElementBlock("button", {
key: 1,
type: "button",
disabled: !_ctx.enableMonthArrow,
class: normalizeClass([{ "is-disabled": !_ctx.enableMonthArrow }, "el-picker-panel__icon-btn arrow-left"]),
onClick: _cache[15] || (_cache[15] = (...args) => _ctx.rightPrevMonth && _ctx.rightPrevMonth(...args))
}, [
createVNode(_component_el_icon, null, {
default: withCtx(() => [
createVNode(_component_arrow_left)
]),
_: 1
})
], 10, _hoisted_19$1)) : createCommentVNode("v-if", true),
createElementVNode("button", {
type: "button",
class: "el-picker-panel__icon-btn d-arrow-right",
onClick: _cache[16] || (_cache[16] = (...args) => _ctx.rightNextYear && _ctx.rightNextYear(...args))
}, [
createVNode(_component_el_icon, null, {
default: withCtx(() => [
createVNode(_component_d_arrow_right)
]),
_: 1
})
]),
createElementVNode("button", {
type: "button",
class: "el-picker-panel__icon-btn arrow-right",
onClick: _cache[17] || (_cache[17] = (...args) => _ctx.rightNextMonth && _ctx.rightNextMonth(...args))
}, [
createVNode(_component_el_icon, null, {
default: withCtx(() => [
createVNode(_component_arrow_right)
]),
_: 1
})
]),
createElementVNode("div", null, toDisplayString(_ctx.rightLabel), 1)
]),
createVNode(_component_date_table, {
"selection-mode": "range",
date: _ctx.rightDate,
"min-date": _ctx.minDate,
"max-date": _ctx.maxDate,
"range-state": _ctx.rangeState,
"disabled-date": _ctx.disabledDate,
"cell-class-name": _ctx.cellClassName,
onChangerange: _ctx.handleChangeRange,
onPick: _ctx.handleRangePick,
onSelect: _ctx.onSelect
}, null, 8, ["date", "min-date", "max-date", "range-state", "disabled-date", "cell-class-name", "onChangerange", "onPick", "onSelect"])
])
])
]),
_ctx.showTime ? (openBlock(), createElementBlock("div", _hoisted_20$1, [
_ctx.clearable ? (openBlock(), createBlock(_component_el_button, {
key: 0,
size: "small",
type: "text",
class: "el-picker-panel__link-btn",
onClick: _ctx.handleClear
}, {
default: withCtx(() => [
createTextVNode(toDisplayString(_ctx.t("el.datepicker.clear")), 1)
]),
_: 1
}, 8, ["onClick"])) : createCommentVNode("v-if", true),
createVNode(_component_el_button, {
plain: "",
size: "small",
class: "el-picker-panel__link-btn",
disabled: _ctx.btnDisabled,
onClick: _cache[18] || (_cache[18] = ($event) => _ctx.handleConfirm(false))
}, {
default: withCtx(() => [
createTextVNode(toDisplayString(_ctx.t("el.datepicker.confirm")), 1)
]),
_: 1
}, 8, ["disabled"])
])) : createCommentVNode("v-if", true)
], 2);
}
var DateRangePickPanel = /* @__PURE__ */ _export_sfc$1(_sfc_main$A, [["render", _sfc_render$f], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/date-picker/src/date-picker-com/panel-date-range.vue"]]);
const _sfc_main$z = defineComponent({
components: { MonthTable, ElIcon, DArrowLeft: dArrowLeft, DArrowRight: dArrowRight },
props: {
unlinkPanels: Boolean,
parsedValue: {
type: Array
}
},
emits: ["pick", "set-picker-option"],
setup(props, ctx) {
const { t, lang } = useLocale();
const leftDate = ref(dayjs().locale(lang.value));
const rightDate = ref(dayjs().locale(lang.value).add(1, "year"));
const hasShortcuts = computed(() => !!shortcuts.length);
const handleShortcutClick = (shortcut) => {
const shortcutValues = typeof shortcut.value === "function" ? shortcut.value() : shortcut.value;
if (shortcutValues) {
ctx.emit("pick", [
dayjs(shortcutValues[0]).locale(lang.value),
dayjs(shortcutValues[1]).locale(lang.value)
]);
return;
}
if (shortcut.onClick) {
shortcut.onClick(ctx);
}
};
const leftPrevYear = () => {
leftDate.value = leftDate.value.subtract(1, "year");
if (!props.unlinkPanels) {
rightDate.value = rightDate.value.subtract(1, "year");
}
};
const rightNextYear = () => {
if (!props.unlinkPanels) {
leftDate.value = leftDate.value.add(1, "year");
}
rightDate.value = rightDate.value.add(1, "year");
};
const leftNextYear = () => {
leftDate.value = leftDate.value.add(1, "year");
};
const rightPrevYear = () => {
rightDate.value = rightDate.value.subtract(1, "year");
};
const leftLabel = computed(() => {
return `${leftDate.value.year()} ${t("el.datepicker.year")}`;
});
const rightLabel = computed(() => {
return `${rightDate.value.year()} ${t("el.datepicker.year")}`;
});
const leftYear = computed(() => {
return leftDate.value.year();
});
const rightYear = computed(() => {
return rightDate.value.year() === leftDate.value.year() ? leftDate.value.year() + 1 : rightDate.value.year();
});
const enableYearArrow = computed(() => {
return props.unlinkPanels && rightYear.value > leftYear.value + 1;
});
const minDate = ref(null);
const maxDate = ref(null);
const rangeState = ref({
endDate: null,
selecting: false
});
const handleChangeRange = (val) => {
rangeState.value = val;
};
const handleRangePick = (val, close2 = true) => {
const minDate_ = val.minDate;
const maxDate_ = val.maxDate;
if (maxDate.value === maxDate_ && minDate.value === minDate_) {
return;
}
maxDate.value = maxDate_;
minDate.value = minDate_;
if (!close2)
return;
handleConfirm();
};
const isValidValue = (value) => {
return Array.isArray(value) && value && value[0] && value[1] && value[0].valueOf() <= value[1].valueOf();
};
const handleConfirm = (visible = false) => {
if (isValidValue([minDate.value, maxDate.value])) {
ctx.emit("pick", [minDate.value, maxDate.value], visible);
}
};
const onSelect = (selecting) => {
rangeState.value.selecting = selecting;
if (!selecting) {
rangeState.value.endDate = null;
}
};
const formatToString = (value) => {
return value.map((_2) => _2.format(format2));
};
const getDefaultValue = () => {
let start2;
if (Array.isArray(defaultValue.value)) {
const left2 = dayjs(defaultValue.value[0]);
let right2 = dayjs(defaultValue.value[1]);
if (!props.unlinkPanels) {
right2 = left2.add(1, "year");
}
return [left2, right2];
} else if (defaultValue.value) {
start2 = dayjs(defaultValue.value);
} else {
start2 = dayjs();
}
start2 = start2.locale(lang.value);
return [start2, start2.add(1, "year")];
};
ctx.emit("set-picker-option", ["formatToString", formatToString]);
const pickerBase = inject("EP_PICKER_BASE");
const { shortcuts, disabledDate, format: format2 } = pickerBase.props;
const defaultValue = toRef(pickerBase.props, "defaultValue");
watch(() => defaultValue.value, (val) => {
if (val) {
const defaultArr = getDefaultValue();
leftDate.value = defaultArr[0];
rightDate.value = defaultArr[1];
}
}, { immediate: true });
watch(() => props.parsedValue, (newVal) => {
if (newVal && newVal.length === 2) {
minDate.value = newVal[0];
maxDate.value = newVal[1];
leftDate.value = minDate.value;
if (props.unlinkPanels && maxDate.value) {
const minDateYear = minDate.value.year();
const maxDateYear = maxDate.value.year();
rightDate.value = minDateYear === maxDateYear ? maxDate.value.add(1, "year") : maxDate.value;
} else {
rightDate.value = leftDate.value.add(1, "year");
}
} else {
const defaultArr = getDefaultValue();
minDate.value = null;
maxDate.value = null;
leftDate.value = defaultArr[0];
rightDate.value = defaultArr[1];
}
}, { immediate: true });
return {
shortcuts,
disabledDate,
onSelect,
handleRangePick,
rangeState,
handleChangeRange,
minDate,
maxDate,
enableYearArrow,
leftLabel,
rightLabel,
leftNextYear,
leftPrevYear,
rightNextYear,
rightPrevYear,
t,
leftDate,
rightDate,
hasShortcuts,
handleShortcutClick
};
}
});
const _hoisted_1$m = { class: "el-picker-panel__body-wrapper" };
const _hoisted_2$h = {
key: 0,
class: "el-picker-panel__sidebar"
};
const _hoisted_3$b = ["onClick"];
const _hoisted_4$9 = { class: "el-picker-panel__body" };
const _hoisted_5$9 = { class: "el-picker-panel__content el-date-range-picker__content is-left" };
const _hoisted_6$7 = { class: "el-date-range-picker__header" };
const _hoisted_7$3 = ["disabled"];
const _hoisted_8$2 = { class: "el-picker-panel__content el-date-range-picker__content is-right" };
const _hoisted_9$2 = { class: "el-date-range-picker__header" };
const _hoisted_10$2 = ["disabled"];
function _sfc_render$e(_ctx, _cache, $props, $setup, $data, $options) {
const _component_d_arrow_left = resolveComponent("d-arrow-left");
const _component_el_icon = resolveComponent("el-icon");
const _component_d_arrow_right = resolveComponent("d-arrow-right");
const _component_month_table = resolveComponent("month-table");
return openBlock(), createElementBlock("div", {
class: normalizeClass(["el-picker-panel el-date-range-picker", [
{
"has-sidebar": _ctx.$slots.sidebar || _ctx.hasShortcuts
}
]])
}, [
createElementVNode("div", _hoisted_1$m, [
renderSlot(_ctx.$slots, "sidebar", { class: "el-picker-panel__sidebar" }),
_ctx.hasShortcuts ? (openBlock(), createElementBlock("div", _hoisted_2$h, [
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.shortcuts, (shortcut, key) => {
return openBlock(), createElementBlock("button", {
key,
type: "button",
class: "el-picker-panel__shortcut",
onClick: ($event) => _ctx.handleShortcutClick(shortcut)
}, toDisplayString(shortcut.text), 9, _hoisted_3$b);
}), 128))
])) : createCommentVNode("v-if", true),
createElementVNode("div", _hoisted_4$9, [
createElementVNode("div", _hoisted_5$9, [
createElementVNode("div", _hoisted_6$7, [
createElementVNode("button", {
type: "button",
class: "el-picker-panel__icon-btn d-arrow-left",
onClick: _cache[0] || (_cache[0] = (...args) => _ctx.leftPrevYear && _ctx.leftPrevYear(...args))
}, [
createVNode(_component_el_icon, null, {
default: withCtx(() => [
createVNode(_component_d_arrow_left)
]),
_: 1
})
]),
_ctx.unlinkPanels ? (openBlock(), createElementBlock("button", {
key: 0,
type: "button",
disabled: !_ctx.enableYearArrow,
class: normalizeClass([{ "is-disabled": !_ctx.enableYearArrow }, "el-picker-panel__icon-btn d-arrow-right"]),
onClick: _cache[1] || (_cache[1] = (...args) => _ctx.leftNextYear && _ctx.leftNextYear(...args))
}, [
createVNode(_component_el_icon, null, {
default: withCtx(() => [
createVNode(_component_d_arrow_right)
]),
_: 1
})
], 10, _hoisted_7$3)) : createCommentVNode("v-if", true),
createElementVNode("div", null, toDisplayString(_ctx.leftLabel), 1)
]),
createVNode(_component_month_table, {
"selection-mode": "range",
date: _ctx.leftDate,
"min-date": _ctx.minDate,
"max-date": _ctx.maxDate,
"range-state": _ctx.rangeState,
"disabled-date": _ctx.disabledDate,
onChangerange: _ctx.handleChangeRange,
onPick: _ctx.handleRangePick,
onSelect: _ctx.onSelect
}, null, 8, ["date", "min-date", "max-date", "range-state", "disabled-date", "onChangerange", "onPick", "onSelect"])
]),
createElementVNode("div", _hoisted_8$2, [
createElementVNode("div", _hoisted_9$2, [
_ctx.unlinkPanels ? (openBlock(), createElementBlock("button", {
key: 0,
type: "button",
disabled: !_ctx.enableYearArrow,
class: normalizeClass([{ "is-disabled": !_ctx.enableYearArrow }, "el-picker-panel__icon-btn d-arrow-left"]),
onClick: _cache[2] || (_cache[2] = (...args) => _ctx.rightPrevYear && _ctx.rightPrevYear(...args))
}, [
createVNode(_component_el_icon, null, {
default: withCtx(() => [
createVNode(_component_d_arrow_left)
]),
_: 1
})
], 10, _hoisted_10$2)) : createCommentVNode("v-if", true),
createElementVNode("button", {
type: "button",
class: "el-picker-panel__icon-btn d-arrow-right",
onClick: _cache[3] || (_cache[3] = (...args) => _ctx.rightNextYear && _ctx.rightNextYear(...args))
}, [
createVNode(_component_el_icon, null, {
default: withCtx(() => [
createVNode(_component_d_arrow_right)
]),
_: 1
})
]),
createElementVNode("div", null, toDisplayString(_ctx.rightLabel), 1)
]),
createVNode(_component_month_table, {
"selection-mode": "range",
date: _ctx.rightDate,
"min-date": _ctx.minDate,
"max-date": _ctx.maxDate,
"range-state": _ctx.rangeState,
"disabled-date": _ctx.disabledDate,
onChangerange: _ctx.handleChangeRange,
onPick: _ctx.handleRangePick,
onSelect: _ctx.onSelect
}, null, 8, ["date", "min-date", "max-date", "range-state", "disabled-date", "onChangerange", "onPick", "onSelect"])
])
])
])
], 2);
}
var MonthRangePickPanel = /* @__PURE__ */ _export_sfc$1(_sfc_main$z, [["render", _sfc_render$e], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/date-picker/src/date-picker-com/panel-month-range.vue"]]);
dayjs.extend(localeData);
dayjs.extend(advancedFormat);
dayjs.extend(customParseFormat);
dayjs.extend(weekOfYear);
dayjs.extend(weekYear);
dayjs.extend(dayOfYear);
dayjs.extend(isSameOrAfter);
dayjs.extend(isSameOrBefore);
const getPanel = function(type4) {
if (type4 === "daterange" || type4 === "datetimerange") {
return DateRangePickPanel;
} else if (type4 === "monthrange") {
return MonthRangePickPanel;
}
return DatePickPanel;
};
var DatePicker = defineComponent({
name: "ElDatePicker",
install: null,
props: __spreadProps(__spreadValues({}, timePickerDefaultProps), {
type: {
type: String,
default: "date"
}
}),
emits: ["update:modelValue"],
setup(props, ctx) {
provide("ElPopperOptions", props.popperOptions);
provide(ROOT_PICKER_INJECTION_KEY, {
ctx
});
const commonPicker = ref(null);
const refProps = __spreadProps(__spreadValues({}, props), {
focus: (focusStartInput = true) => {
var _a2;
(_a2 = commonPicker.value) == null ? void 0 : _a2.focus(focusStartInput);
}
});
ctx.expose(refProps);
return () => {
var _a2;
const format2 = (_a2 = props.format) != null ? _a2 : DEFAULT_FORMATS_DATEPICKER[props.type] || DEFAULT_FORMATS_DATE;
return h$1(CommonPicker, __spreadProps(__spreadValues({}, props), {
format: format2,
type: props.type,
ref: commonPicker,
"onUpdate:modelValue": (value) => ctx.emit("update:modelValue", value)
}), {
default: (scopedProps) => h$1(getPanel(props.type), scopedProps),
"range-separator": () => renderSlot(ctx.slots, "range-separator")
});
};
}
});
const _DatePicker = DatePicker;
_DatePicker.install = (app) => {
app.component(_DatePicker.name, _DatePicker);
};
const ElDatePicker = _DatePicker;
const overlayProps = buildProps({
mask: {
type: Boolean,
default: true
},
customMaskEvent: {
type: Boolean,
default: false
},
overlayClass: {
type: definePropType([
String,
Array,
Object
])
},
zIndex: {
type: definePropType([String, Number])
}
});
const overlayEmits = {
click: (evt) => evt instanceof MouseEvent
};
var Overlay = defineComponent({
name: "ElOverlay",
props: overlayProps,
emits: overlayEmits,
setup(props, { slots, emit }) {
const ns = useNamespace("overlay");
const onMaskClick = (e) => {
emit("click", e);
};
const { onClick, onMousedown, onMouseup } = useSameTarget(props.customMaskEvent ? void 0 : onMaskClick);
return () => {
return props.mask ? createVNode("div", {
class: [ns.b(), props.overlayClass],
style: {
zIndex: props.zIndex
},
onClick,
onMousedown,
onMouseup
}, [renderSlot(slots, "default")], PatchFlags.STYLE | PatchFlags.CLASS | PatchFlags.PROPS, ["onClick", "onMouseup", "onMousedown"]) : h$1("div", {
class: props.overlayClass,
style: {
zIndex: props.zIndex,
position: "fixed",
top: "0px",
right: "0px",
bottom: "0px",
left: "0px"
}
}, [renderSlot(slots, "default")]);
};
}
});
const ElOverlay = Overlay;
const dialogContentProps = buildProps({
center: {
type: Boolean,
default: false
},
closeIcon: {
type: iconPropType,
default: ""
},
customClass: {
type: String,
default: ""
},
draggable: {
type: Boolean,
default: false
},
fullscreen: {
type: Boolean,
default: false
},
showClose: {
type: Boolean,
default: true
},
title: {
type: String,
default: ""
}
});
const dialogContentEmits = {
close: () => true
};
const _hoisted_1$l = ["aria-label"];
const __default__$c = { name: "ElDialogContent" };
const _sfc_main$y = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({}, __default__$c), {
props: dialogContentProps,
emits: dialogContentEmits,
setup(__props) {
const { Close } = CloseComponents;
const { dialogRef, headerRef, ns, style } = inject(dialogInjectionKey);
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", {
ref_key: "dialogRef",
ref: dialogRef,
class: normalizeClass([
unref(ns).b(),
unref(ns).is("fullscreen", _ctx.fullscreen),
unref(ns).is("draggable", _ctx.draggable),
{ [unref(ns).m("center")]: _ctx.center },
_ctx.customClass
]),
"aria-modal": "true",
role: "dialog",
"aria-label": _ctx.title || "dialog",
style: normalizeStyle(unref(style)),
onClick: _cache[1] || (_cache[1] = withModifiers(() => {
}, ["stop"]))
}, [
createElementVNode("div", {
ref_key: "headerRef",
ref: headerRef,
class: normalizeClass(unref(ns).e("header"))
}, [
renderSlot(_ctx.$slots, "title", {}, () => [
createElementVNode("span", {
class: normalizeClass(unref(ns).e("title"))
}, toDisplayString(_ctx.title), 3)
])
], 2),
createElementVNode("div", {
class: normalizeClass(unref(ns).e("body"))
}, [
renderSlot(_ctx.$slots, "default")
], 2),
_ctx.$slots.footer ? (openBlock(), createElementBlock("div", {
key: 0,
class: normalizeClass(unref(ns).e("footer"))
}, [
renderSlot(_ctx.$slots, "footer")
], 2)) : createCommentVNode("v-if", true),
_ctx.showClose ? (openBlock(), createElementBlock("button", {
key: 1,
"aria-label": "close",
class: normalizeClass(unref(ns).e("headerbtn")),
type: "button",
onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("close"))
}, [
createVNode(unref(ElIcon), {
class: normalizeClass(unref(ns).e("close"))
}, {
default: withCtx(() => [
(openBlock(), createBlock(resolveDynamicComponent(_ctx.closeIcon || unref(Close))))
]),
_: 1
}, 8, ["class"])
], 2)) : createCommentVNode("v-if", true)
], 14, _hoisted_1$l);
};
}
}));
var ElDialogContent = /* @__PURE__ */ _export_sfc$1(_sfc_main$y, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/dialog/src/dialog-content.vue"]]);
const dialogProps = buildProps(__spreadProps(__spreadValues({}, dialogContentProps), {
appendToBody: {
type: Boolean,
default: false
},
beforeClose: {
type: definePropType(Function)
},
destroyOnClose: {
type: Boolean,
default: false
},
closeOnClickModal: {
type: Boolean,
default: true
},
closeOnPressEscape: {
type: Boolean,
default: true
},
lockScroll: {
type: Boolean,
default: true
},
modal: {
type: Boolean,
default: true
},
openDelay: {
type: Number,
default: 0
},
closeDelay: {
type: Number,
default: 0
},
top: {
type: String
},
modelValue: {
type: Boolean,
required: true
},
modalClass: String,
width: {
type: [String, Number]
},
zIndex: {
type: Number
},
trapFocus: {
type: Boolean,
default: false
}
}));
const dialogEmits = {
open: () => true,
opened: () => true,
close: () => true,
closed: () => true,
[UPDATE_MODEL_EVENT]: (value) => isBoolean(value),
openAutoFocus: () => true,
closeAutoFocus: () => true
};
const useDialog = (props, targetRef) => {
const instance = getCurrentInstance();
const emit = instance.emit;
const { nextZIndex } = useZIndex();
let lastPosition = "";
const visible = ref(false);
const closed = ref(false);
const rendered = ref(false);
const zIndex2 = ref(props.zIndex || nextZIndex());
let openTimer = void 0;
let closeTimer = void 0;
const normalizeWidth = computed(() => isNumber(props.width) ? `${props.width}px` : props.width);
const style = computed(() => {
const style2 = {};
const varPrefix = `--el-dialog`;
if (!props.fullscreen) {
if (props.top) {
style2[`${varPrefix}-margin-top`] = props.top;
}
if (props.width) {
style2[`${varPrefix}-width`] = normalizeWidth.value;
}
}
return style2;
});
function afterEnter() {
emit("opened");
}
function afterLeave() {
emit("closed");
emit(UPDATE_MODEL_EVENT, false);
if (props.destroyOnClose) {
rendered.value = false;
}
}
function beforeLeave() {
emit("close");
}
function open() {
closeTimer == null ? void 0 : closeTimer();
openTimer == null ? void 0 : openTimer();
if (props.openDelay && props.openDelay > 0) {
({ stop: openTimer } = useTimeoutFn(() => doOpen(), props.openDelay));
} else {
doOpen();
}
}
function close2() {
openTimer == null ? void 0 : openTimer();
closeTimer == null ? void 0 : closeTimer();
if (props.closeDelay && props.closeDelay > 0) {
({ stop: closeTimer } = useTimeoutFn(() => doClose(), props.closeDelay));
} else {
doClose();
}
}
function handleClose() {
function hide2(shouldCancel) {
if (shouldCancel)
return;
closed.value = true;
visible.value = false;
}
if (props.beforeClose) {
props.beforeClose(hide2);
} else {
close2();
}
}
function onModalClick() {
if (props.closeOnClickModal) {
handleClose();
}
}
function doOpen() {
if (!isClient)
return;
visible.value = true;
}
function doClose() {
visible.value = false;
}
if (props.lockScroll) {
useLockscreen(visible);
}
if (props.closeOnPressEscape) {
useModal({
handleClose
}, visible);
}
useRestoreActive(visible);
watch(() => props.modelValue, (val) => {
if (val) {
closed.value = false;
open();
rendered.value = true;
emit("open");
zIndex2.value = props.zIndex ? zIndex2.value++ : nextZIndex();
nextTick(() => {
if (targetRef.value) {
targetRef.value.scrollTop = 0;
}
});
} else {
if (visible.value) {
close2();
}
}
});
watch(() => props.fullscreen, (val) => {
if (!targetRef.value)
return;
if (val) {
lastPosition = targetRef.value.style.transform;
targetRef.value.style.transform = "";
} else {
targetRef.value.style.transform = lastPosition;
}
});
onMounted(() => {
if (props.modelValue) {
visible.value = true;
rendered.value = true;
open();
}
});
return {
afterEnter,
afterLeave,
beforeLeave,
handleClose,
onModalClick,
close: close2,
doClose,
closed,
style,
rendered,
visible,
zIndex: zIndex2
};
};
const __default__$b = {
name: "ElDialog"
};
const _sfc_main$x = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({}, __default__$b), {
props: dialogProps,
emits: dialogEmits,
setup(__props, { expose }) {
const props = __props;
const ns = useNamespace("dialog");
const dialogRef = ref();
const headerRef = ref();
const {
visible,
style,
rendered,
zIndex: zIndex2,
afterEnter,
afterLeave,
beforeLeave,
handleClose,
onModalClick
} = useDialog(props, dialogRef);
provide(dialogInjectionKey, {
dialogRef,
headerRef,
ns,
rendered,
style
});
const overlayEvent = useSameTarget(onModalClick);
const draggable = computed(() => props.draggable && !props.fullscreen);
useDraggable(dialogRef, headerRef, draggable);
expose({
visible
});
return (_ctx, _cache) => {
return openBlock(), createBlock(Teleport, {
to: "body",
disabled: !_ctx.appendToBody
}, [
createVNode(Transition, {
name: "dialog-fade",
onAfterEnter: unref(afterEnter),
onAfterLeave: unref(afterLeave),
onBeforeLeave: unref(beforeLeave)
}, {
default: withCtx(() => [
withDirectives(createVNode(unref(ElOverlay), {
"custom-mask-event": "",
mask: _ctx.modal,
"overlay-class": _ctx.modalClass,
"z-index": unref(zIndex2)
}, {
default: withCtx(() => [
createElementVNode("div", {
class: normalizeClass(`${unref(ns).namespace.value}-overlay-dialog`),
onClick: _cache[0] || (_cache[0] = (...args) => unref(overlayEvent).onClick && unref(overlayEvent).onClick(...args)),
onMousedown: _cache[1] || (_cache[1] = (...args) => unref(overlayEvent).onMousedown && unref(overlayEvent).onMousedown(...args)),
onMouseup: _cache[2] || (_cache[2] = (...args) => unref(overlayEvent).onMouseup && unref(overlayEvent).onMouseup(...args))
}, [
unref(rendered) ? (openBlock(), createBlock(ElDialogContent, {
key: 0,
"custom-class": _ctx.customClass,
center: _ctx.center,
"close-icon": _ctx.closeIcon,
draggable: unref(draggable),
fullscreen: _ctx.fullscreen,
"show-close": _ctx.showClose,
style: normalizeStyle(unref(style)),
title: _ctx.title,
onClose: unref(handleClose)
}, createSlots({
title: withCtx(() => [
renderSlot(_ctx.$slots, "title")
]),
default: withCtx(() => [
renderSlot(_ctx.$slots, "default")
]),
_: 2
}, [
_ctx.$slots.footer ? {
name: "footer",
fn: withCtx(() => [
renderSlot(_ctx.$slots, "footer")
])
} : void 0
]), 1032, ["custom-class", "center", "close-icon", "draggable", "fullscreen", "show-close", "style", "title", "onClose"])) : createCommentVNode("v-if", true)
], 34)
]),
_: 3
}, 8, ["mask", "overlay-class", "z-index"]), [
[vShow, unref(visible)]
])
]),
_: 3
}, 8, ["onAfterEnter", "onAfterLeave", "onBeforeLeave"])
], 8, ["disabled"]);
};
}
}));
var Dialog = /* @__PURE__ */ _export_sfc$1(_sfc_main$x, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/dialog/src/dialog.vue"]]);
const ElDialog = withInstall(Dialog);
const dividerProps = buildProps({
direction: {
type: String,
values: ["horizontal", "vertical"],
default: "horizontal"
},
contentPosition: {
type: String,
values: ["left", "center", "right"],
default: "center"
},
borderStyle: {
type: definePropType(String),
default: "solid"
}
});
const __default__$a = {
name: "ElDivider"
};
const _sfc_main$w = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({}, __default__$a), {
props: dividerProps,
setup(__props) {
const props = __props;
const ns = useNamespace("divider");
const dividerStyle = computed(() => {
return {
"--el-border-style": props.borderStyle
};
});
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", {
class: normalizeClass([unref(ns).b(), unref(ns).m(_ctx.direction)]),
style: normalizeStyle(unref(dividerStyle))
}, [
_ctx.$slots.default && _ctx.direction !== "vertical" ? (openBlock(), createElementBlock("div", {
key: 0,
class: normalizeClass([unref(ns).e("text"), unref(ns).is(_ctx.contentPosition)])
}, [
renderSlot(_ctx.$slots, "default")
], 2)) : createCommentVNode("v-if", true)
], 6);
};
}
}));
var Divider = /* @__PURE__ */ _export_sfc$1(_sfc_main$w, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/divider/src/divider.vue"]]);
const ElDivider = withInstall(Divider);
const formProps = buildProps({
model: Object,
rules: {
type: definePropType(Object)
},
labelPosition: String,
labelWidth: {
type: [String, Number],
default: ""
},
labelSuffix: {
type: String,
default: ""
},
inline: Boolean,
inlineMessage: Boolean,
statusIcon: Boolean,
showMessage: {
type: Boolean,
default: true
},
size: {
type: String,
values: componentSizes
},
disabled: Boolean,
validateOnRuleChange: {
type: Boolean,
default: true
},
hideRequiredAsterisk: {
type: Boolean,
default: false
},
scrollToError: Boolean
});
const formEmits = {
validate: (prop, isValid, message) => (isArray(prop) || isString(prop)) && isBoolean(isValid) && isString(message)
};
function useFormLabelWidth() {
const potentialLabelWidthArr = ref([]);
const autoLabelWidth = computed(() => {
if (!potentialLabelWidthArr.value.length)
return "0";
const max2 = Math.max(...potentialLabelWidthArr.value);
return max2 ? `${max2}px` : "";
});
function getLabelWidthIndex(width) {
const index = potentialLabelWidthArr.value.indexOf(width);
return index;
}
function registerLabelWidth(val, oldVal) {
if (val && oldVal) {
const index = getLabelWidthIndex(oldVal);
potentialLabelWidthArr.value.splice(index, 1, val);
} else if (val) {
potentialLabelWidthArr.value.push(val);
}
}
function deregisterLabelWidth(val) {
const index = getLabelWidthIndex(val);
if (index > -1) {
potentialLabelWidthArr.value.splice(index, 1);
}
}
return {
autoLabelWidth,
registerLabelWidth,
deregisterLabelWidth
};
}
const filterFields = (fields, props) => {
const normalized = castArray$1(props);
return normalized.length > 0 ? fields.filter((field) => field.prop && normalized.includes(field.prop)) : fields;
};
const __default__$9 = {
name: "ElForm"
};
const _sfc_main$v = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({}, __default__$9), {
props: formProps,
emits: formEmits,
setup(__props, { expose, emit }) {
const props = __props;
const fields = [];
const formSize = useSize();
const ns = useNamespace("form");
const formClasses = computed(() => {
const { labelPosition, inline } = props;
return [
ns.b(),
ns.m(formSize.value || "default"),
{
[ns.m(`label-${labelPosition}`)]: labelPosition,
[ns.m("inline")]: inline
}
];
});
const addField = (field) => {
fields.push(field);
};
const removeField = (field) => {
if (field.prop) {
fields.splice(fields.indexOf(field), 1);
}
};
const resetFields = (properties = []) => {
if (!props.model) {
return;
}
filterFields(fields, properties).forEach((field) => field.resetField());
};
const clearValidate = (props2 = []) => {
filterFields(fields, props2).forEach((field) => field.clearValidate());
};
const isValidatable = computed(() => {
const hasModel = !!props.model;
return hasModel;
});
const obtainValidateFields = (props2) => {
if (fields.length === 0)
return [];
const filteredFields = filterFields(fields, props2);
if (!filteredFields.length) {
return [];
}
return filteredFields;
};
const validate = async (callback) => validateField(void 0, callback);
const doValidateField = async (props2 = []) => {
if (!isValidatable.value)
return false;
const fields2 = obtainValidateFields(props2);
if (fields2.length === 0)
return true;
let validationErrors = {};
for (const field of fields2) {
try {
await field.validate("");
} catch (fields3) {
validationErrors = __spreadValues(__spreadValues({}, validationErrors), fields3);
}
}
if (Object.keys(validationErrors).length === 0)
return true;
return Promise.reject(validationErrors);
};
const validateField = async (modelProps = [], callback) => {
const shouldThrow = !isFunction(callback);
try {
const result = await doValidateField(modelProps);
if (result === true) {
callback == null ? void 0 : callback(result);
}
return result;
} catch (e) {
const invalidFields = e;
if (props.scrollToError) {
scrollToField(Object.keys(invalidFields)[0]);
}
callback == null ? void 0 : callback(false, invalidFields);
return shouldThrow && Promise.reject(invalidFields);
}
};
const scrollToField = (prop) => {
var _a2;
const field = filterFields(fields, prop)[0];
if (field) {
(_a2 = field.$el) == null ? void 0 : _a2.scrollIntoView();
}
};
watch(() => props.rules, () => {
if (props.validateOnRuleChange)
validate();
}, { deep: true });
provide(formContextKey, reactive(__spreadValues(__spreadProps(__spreadValues({}, toRefs(props)), {
emit,
resetFields,
clearValidate,
validateField,
addField,
removeField
}), useFormLabelWidth())));
expose({
validate,
validateField,
resetFields,
clearValidate,
scrollToField
});
return (_ctx, _cache) => {
return openBlock(), createElementBlock("form", {
class: normalizeClass(unref(formClasses))
}, [
renderSlot(_ctx.$slots, "default")
], 2);
};
}
}));
var Form = /* @__PURE__ */ _export_sfc$1(_sfc_main$v, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/form/src/form.vue"]]);
function _extends$1() {
_extends$1 = Object.assign ? Object.assign.bind() : function(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
return _extends$1.apply(this, arguments);
}
function _inheritsLoose(subClass, superClass) {
subClass.prototype = Object.create(superClass.prototype);
subClass.prototype.constructor = subClass;
_setPrototypeOf(subClass, superClass);
}
function _getPrototypeOf(o2) {
_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf2(o3) {
return o3.__proto__ || Object.getPrototypeOf(o3);
};
return _getPrototypeOf(o2);
}
function _setPrototypeOf(o2, p2) {
_setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o3, p3) {
o3.__proto__ = p3;
return o3;
};
return _setPrototypeOf(o2, p2);
}
function _isNativeReflectConstruct() {
if (typeof Reflect === "undefined" || !Reflect.construct)
return false;
if (Reflect.construct.sham)
return false;
if (typeof Proxy === "function")
return true;
try {
Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
}));
return true;
} catch (e) {
return false;
}
}
function _construct(Parent, args, Class) {
if (_isNativeReflectConstruct()) {
_construct = Reflect.construct.bind();
} else {
_construct = function _construct2(Parent2, args2, Class2) {
var a2 = [null];
a2.push.apply(a2, args2);
var Constructor = Function.bind.apply(Parent2, a2);
var instance = new Constructor();
if (Class2)
_setPrototypeOf(instance, Class2.prototype);
return instance;
};
}
return _construct.apply(null, arguments);
}
function _isNativeFunction(fn2) {
return Function.toString.call(fn2).indexOf("[native code]") !== -1;
}
function _wrapNativeSuper(Class) {
var _cache = typeof Map === "function" ? /* @__PURE__ */ new Map() : void 0;
_wrapNativeSuper = function _wrapNativeSuper2(Class2) {
if (Class2 === null || !_isNativeFunction(Class2))
return Class2;
if (typeof Class2 !== "function") {
throw new TypeError("Super expression must either be null or a function");
}
if (typeof _cache !== "undefined") {
if (_cache.has(Class2))
return _cache.get(Class2);
_cache.set(Class2, Wrapper);
}
function Wrapper() {
return _construct(Class2, arguments, _getPrototypeOf(this).constructor);
}
Wrapper.prototype = Object.create(Class2.prototype, {
constructor: {
value: Wrapper,
enumerable: false,
writable: true,
configurable: true
}
});
return _setPrototypeOf(Wrapper, Class2);
};
return _wrapNativeSuper(Class);
}
var formatRegExp = /%[sdj%]/g;
var warning = function warning2() {
};
if (typeof process !== "undefined" && process.env && false) {
warning = function warning3(type4, errors) {
if (typeof console !== "undefined" && console.warn && typeof ASYNC_VALIDATOR_NO_WARNING === "undefined") {
if (errors.every(function(e) {
return typeof e === "string";
})) {
console.warn(type4, errors);
}
}
};
}
function convertFieldsError(errors) {
if (!errors || !errors.length)
return null;
var fields = {};
errors.forEach(function(error) {
var field = error.field;
fields[field] = fields[field] || [];
fields[field].push(error);
});
return fields;
}
function format(template) {
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
var i = 0;
var len = args.length;
if (typeof template === "function") {
return template.apply(null, args);
}
if (typeof template === "string") {
var str = template.replace(formatRegExp, function(x2) {
if (x2 === "%%") {
return "%";
}
if (i >= len) {
return x2;
}
switch (x2) {
case "%s":
return String(args[i++]);
case "%d":
return Number(args[i++]);
case "%j":
try {
return JSON.stringify(args[i++]);
} catch (_2) {
return "[Circular]";
}
break;
default:
return x2;
}
});
return str;
}
return template;
}
function isNativeStringType(type4) {
return type4 === "string" || type4 === "url" || type4 === "hex" || type4 === "email" || type4 === "date" || type4 === "pattern";
}
function isEmptyValue(value, type4) {
if (value === void 0 || value === null) {
return true;
}
if (type4 === "array" && Array.isArray(value) && !value.length) {
return true;
}
if (isNativeStringType(type4) && typeof value === "string" && !value) {
return true;
}
return false;
}
function asyncParallelArray(arr, func, callback) {
var results = [];
var total = 0;
var arrLength = arr.length;
function count(errors) {
results.push.apply(results, errors || []);
total++;
if (total === arrLength) {
callback(results);
}
}
arr.forEach(function(a2) {
func(a2, count);
});
}
function asyncSerialArray(arr, func, callback) {
var index = 0;
var arrLength = arr.length;
function next(errors) {
if (errors && errors.length) {
callback(errors);
return;
}
var original = index;
index = index + 1;
if (original < arrLength) {
func(arr[original], next);
} else {
callback([]);
}
}
next([]);
}
function flattenObjArr(objArr) {
var ret = [];
Object.keys(objArr).forEach(function(k) {
ret.push.apply(ret, objArr[k] || []);
});
return ret;
}
var AsyncValidationError = /* @__PURE__ */ function(_Error) {
_inheritsLoose(AsyncValidationError2, _Error);
function AsyncValidationError2(errors, fields) {
var _this;
_this = _Error.call(this, "Async Validation Error") || this;
_this.errors = errors;
_this.fields = fields;
return _this;
}
return AsyncValidationError2;
}(/* @__PURE__ */ _wrapNativeSuper(Error));
function asyncMap(objArr, option, func, callback, source) {
if (option.first) {
var _pending = new Promise(function(resolve, reject) {
var next = function next2(errors) {
callback(errors);
return errors.length ? reject(new AsyncValidationError(errors, convertFieldsError(errors))) : resolve(source);
};
var flattenArr = flattenObjArr(objArr);
asyncSerialArray(flattenArr, func, next);
});
_pending["catch"](function(e) {
return e;
});
return _pending;
}
var firstFields = option.firstFields === true ? Object.keys(objArr) : option.firstFields || [];
var objArrKeys = Object.keys(objArr);
var objArrLength = objArrKeys.length;
var total = 0;
var results = [];
var pending = new Promise(function(resolve, reject) {
var next = function next2(errors) {
results.push.apply(results, errors);
total++;
if (total === objArrLength) {
callback(results);
return results.length ? reject(new AsyncValidationError(results, convertFieldsError(results))) : resolve(source);
}
};
if (!objArrKeys.length) {
callback(results);
resolve(source);
}
objArrKeys.forEach(function(key) {
var arr = objArr[key];
if (firstFields.indexOf(key) !== -1) {
asyncSerialArray(arr, func, next);
} else {
asyncParallelArray(arr, func, next);
}
});
});
pending["catch"](function(e) {
return e;
});
return pending;
}
function isErrorObj(obj) {
return !!(obj && obj.message !== void 0);
}
function getValue(value, path) {
var v2 = value;
for (var i = 0; i < path.length; i++) {
if (v2 == void 0) {
return v2;
}
v2 = v2[path[i]];
}
return v2;
}
function complementError(rule, source) {
return function(oe) {
var fieldValue;
if (rule.fullFields) {
fieldValue = getValue(source, rule.fullFields);
} else {
fieldValue = source[oe.field || rule.fullField];
}
if (isErrorObj(oe)) {
oe.field = oe.field || rule.fullField;
oe.fieldValue = fieldValue;
return oe;
}
return {
message: typeof oe === "function" ? oe() : oe,
fieldValue,
field: oe.field || rule.fullField
};
};
}
function deepMerge(target, source) {
if (source) {
for (var s2 in source) {
if (source.hasOwnProperty(s2)) {
var value = source[s2];
if (typeof value === "object" && typeof target[s2] === "object") {
target[s2] = _extends$1({}, target[s2], value);
} else {
target[s2] = value;
}
}
}
}
return target;
}
var required$1 = function required(rule, value, source, errors, options, type4) {
if (rule.required && (!source.hasOwnProperty(rule.field) || isEmptyValue(value, type4 || rule.type))) {
errors.push(format(options.messages.required, rule.fullField));
}
};
var whitespace = function whitespace2(rule, value, source, errors, options) {
if (/^\s+$/.test(value) || value === "") {
errors.push(format(options.messages.whitespace, rule.fullField));
}
};
var urlReg;
var getUrlRegex = function() {
if (urlReg) {
return urlReg;
}
var word = "[a-fA-F\\d:]";
var b2 = function b3(options) {
return options && options.includeBoundaries ? "(?:(?<=\\s|^)(?=" + word + ")|(?<=" + word + ")(?=\\s|$))" : "";
};
var v4 = "(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}";
var v6seg = "[a-fA-F\\d]{1,4}";
var v6 = ("\n(?:\n(?:" + v6seg + ":){7}(?:" + v6seg + "|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\n(?:" + v6seg + ":){6}(?:" + v4 + "|:" + v6seg + "|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\n(?:" + v6seg + ":){5}(?::" + v4 + "|(?::" + v6seg + "){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\n(?:" + v6seg + ":){4}(?:(?::" + v6seg + "){0,1}:" + v4 + "|(?::" + v6seg + "){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\n(?:" + v6seg + ":){3}(?:(?::" + v6seg + "){0,2}:" + v4 + "|(?::" + v6seg + "){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\n(?:" + v6seg + ":){2}(?:(?::" + v6seg + "){0,3}:" + v4 + "|(?::" + v6seg + "){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\n(?:" + v6seg + ":){1}(?:(?::" + v6seg + "){0,4}:" + v4 + "|(?::" + v6seg + "){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\n(?::(?:(?::" + v6seg + "){0,5}:" + v4 + "|(?::" + v6seg + "){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\n)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1\n").replace(/\s*\/\/.*$/gm, "").replace(/\n/g, "").trim();
var v46Exact = new RegExp("(?:^" + v4 + "$)|(?:^" + v6 + "$)");
var v4exact = new RegExp("^" + v4 + "$");
var v6exact = new RegExp("^" + v6 + "$");
var ip = function ip2(options) {
return options && options.exact ? v46Exact : new RegExp("(?:" + b2(options) + v4 + b2(options) + ")|(?:" + b2(options) + v6 + b2(options) + ")", "g");
};
ip.v4 = function(options) {
return options && options.exact ? v4exact : new RegExp("" + b2(options) + v4 + b2(options), "g");
};
ip.v6 = function(options) {
return options && options.exact ? v6exact : new RegExp("" + b2(options) + v6 + b2(options), "g");
};
var protocol = "(?:(?:[a-z]+:)?//)";
var auth = "(?:\\S+(?::\\S*)?@)?";
var ipv4 = ip.v4().source;
var ipv6 = ip.v6().source;
var host = "(?:(?:[a-z\\u00a1-\\uffff0-9][-_]*)*[a-z\\u00a1-\\uffff0-9]+)";
var domain = "(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*";
var tld = "(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))";
var port = "(?::\\d{2,5})?";
var path = '(?:[/?#][^\\s"]*)?';
var regex = "(?:" + protocol + "|www\\.)" + auth + "(?:localhost|" + ipv4 + "|" + ipv6 + "|" + host + domain + tld + ")" + port + path;
urlReg = new RegExp("(?:^" + regex + "$)", "i");
return urlReg;
};
var pattern$2 = {
email: /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,
hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i
};
var types = {
integer: function integer(value) {
return types.number(value) && parseInt(value, 10) === value;
},
"float": function float(value) {
return types.number(value) && !types.integer(value);
},
array: function array(value) {
return Array.isArray(value);
},
regexp: function regexp(value) {
if (value instanceof RegExp) {
return true;
}
try {
return !!new RegExp(value);
} catch (e) {
return false;
}
},
date: function date(value) {
return typeof value.getTime === "function" && typeof value.getMonth === "function" && typeof value.getYear === "function" && !isNaN(value.getTime());
},
number: function number(value) {
if (isNaN(value)) {
return false;
}
return typeof value === "number";
},
object: function object(value) {
return typeof value === "object" && !types.array(value);
},
method: function method(value) {
return typeof value === "function";
},
email: function email(value) {
return typeof value === "string" && value.length <= 320 && !!value.match(pattern$2.email);
},
url: function url(value) {
return typeof value === "string" && value.length <= 2048 && !!value.match(getUrlRegex());
},
hex: function hex(value) {
return typeof value === "string" && !!value.match(pattern$2.hex);
}
};
var type$1 = function type(rule, value, source, errors, options) {
if (rule.required && value === void 0) {
required$1(rule, value, source, errors, options);
return;
}
var custom = ["integer", "float", "array", "regexp", "object", "method", "email", "number", "date", "url", "hex"];
var ruleType = rule.type;
if (custom.indexOf(ruleType) > -1) {
if (!types[ruleType](value)) {
errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type));
}
} else if (ruleType && typeof value !== rule.type) {
errors.push(format(options.messages.types[ruleType], rule.fullField, rule.type));
}
};
var range = function range2(rule, value, source, errors, options) {
var len = typeof rule.len === "number";
var min2 = typeof rule.min === "number";
var max2 = typeof rule.max === "number";
var spRegexp = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
var val = value;
var key = null;
var num = typeof value === "number";
var str = typeof value === "string";
var arr = Array.isArray(value);
if (num) {
key = "number";
} else if (str) {
key = "string";
} else if (arr) {
key = "array";
}
if (!key) {
return false;
}
if (arr) {
val = value.length;
}
if (str) {
val = value.replace(spRegexp, "_").length;
}
if (len) {
if (val !== rule.len) {
errors.push(format(options.messages[key].len, rule.fullField, rule.len));
}
} else if (min2 && !max2 && val < rule.min) {
errors.push(format(options.messages[key].min, rule.fullField, rule.min));
} else if (max2 && !min2 && val > rule.max) {
errors.push(format(options.messages[key].max, rule.fullField, rule.max));
} else if (min2 && max2 && (val < rule.min || val > rule.max)) {
errors.push(format(options.messages[key].range, rule.fullField, rule.min, rule.max));
}
};
var ENUM$1 = "enum";
var enumerable$1 = function enumerable(rule, value, source, errors, options) {
rule[ENUM$1] = Array.isArray(rule[ENUM$1]) ? rule[ENUM$1] : [];
if (rule[ENUM$1].indexOf(value) === -1) {
errors.push(format(options.messages[ENUM$1], rule.fullField, rule[ENUM$1].join(", ")));
}
};
var pattern$1 = function pattern(rule, value, source, errors, options) {
if (rule.pattern) {
if (rule.pattern instanceof RegExp) {
rule.pattern.lastIndex = 0;
if (!rule.pattern.test(value)) {
errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));
}
} else if (typeof rule.pattern === "string") {
var _pattern = new RegExp(rule.pattern);
if (!_pattern.test(value)) {
errors.push(format(options.messages.pattern.mismatch, rule.fullField, value, rule.pattern));
}
}
}
};
var rules = {
required: required$1,
whitespace,
type: type$1,
range,
"enum": enumerable$1,
pattern: pattern$1
};
var string = function string2(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (isEmptyValue(value, "string") && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options, "string");
if (!isEmptyValue(value, "string")) {
rules.type(rule, value, source, errors, options);
rules.range(rule, value, source, errors, options);
rules.pattern(rule, value, source, errors, options);
if (rule.whitespace === true) {
rules.whitespace(rule, value, source, errors, options);
}
}
}
callback(errors);
};
var method2 = function method3(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (isEmptyValue(value) && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options);
if (value !== void 0) {
rules.type(rule, value, source, errors, options);
}
}
callback(errors);
};
var number2 = function number3(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (value === "") {
value = void 0;
}
if (isEmptyValue(value) && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options);
if (value !== void 0) {
rules.type(rule, value, source, errors, options);
rules.range(rule, value, source, errors, options);
}
}
callback(errors);
};
var _boolean = function _boolean2(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (isEmptyValue(value) && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options);
if (value !== void 0) {
rules.type(rule, value, source, errors, options);
}
}
callback(errors);
};
var regexp2 = function regexp3(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (isEmptyValue(value) && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options);
if (!isEmptyValue(value)) {
rules.type(rule, value, source, errors, options);
}
}
callback(errors);
};
var integer2 = function integer3(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (isEmptyValue(value) && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options);
if (value !== void 0) {
rules.type(rule, value, source, errors, options);
rules.range(rule, value, source, errors, options);
}
}
callback(errors);
};
var floatFn = function floatFn2(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (isEmptyValue(value) && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options);
if (value !== void 0) {
rules.type(rule, value, source, errors, options);
rules.range(rule, value, source, errors, options);
}
}
callback(errors);
};
var array2 = function array3(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if ((value === void 0 || value === null) && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options, "array");
if (value !== void 0 && value !== null) {
rules.type(rule, value, source, errors, options);
rules.range(rule, value, source, errors, options);
}
}
callback(errors);
};
var object2 = function object3(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (isEmptyValue(value) && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options);
if (value !== void 0) {
rules.type(rule, value, source, errors, options);
}
}
callback(errors);
};
var ENUM = "enum";
var enumerable2 = function enumerable3(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (isEmptyValue(value) && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options);
if (value !== void 0) {
rules[ENUM](rule, value, source, errors, options);
}
}
callback(errors);
};
var pattern2 = function pattern3(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (isEmptyValue(value, "string") && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options);
if (!isEmptyValue(value, "string")) {
rules.pattern(rule, value, source, errors, options);
}
}
callback(errors);
};
var date2 = function date3(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (isEmptyValue(value, "date") && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options);
if (!isEmptyValue(value, "date")) {
var dateObject;
if (value instanceof Date) {
dateObject = value;
} else {
dateObject = new Date(value);
}
rules.type(rule, dateObject, source, errors, options);
if (dateObject) {
rules.range(rule, dateObject.getTime(), source, errors, options);
}
}
}
callback(errors);
};
var required2 = function required3(rule, value, callback, source, options) {
var errors = [];
var type4 = Array.isArray(value) ? "array" : typeof value;
rules.required(rule, value, source, errors, options, type4);
callback(errors);
};
var type2 = function type3(rule, value, callback, source, options) {
var ruleType = rule.type;
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (isEmptyValue(value, ruleType) && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options, ruleType);
if (!isEmptyValue(value, ruleType)) {
rules.type(rule, value, source, errors, options);
}
}
callback(errors);
};
var any = function any2(rule, value, callback, source, options) {
var errors = [];
var validate = rule.required || !rule.required && source.hasOwnProperty(rule.field);
if (validate) {
if (isEmptyValue(value) && !rule.required) {
return callback();
}
rules.required(rule, value, source, errors, options);
}
callback(errors);
};
var validators = {
string,
method: method2,
number: number2,
"boolean": _boolean,
regexp: regexp2,
integer: integer2,
"float": floatFn,
array: array2,
object: object2,
"enum": enumerable2,
pattern: pattern2,
date: date2,
url: type2,
hex: type2,
email: type2,
required: required2,
any
};
function newMessages() {
return {
"default": "Validation error on field %s",
required: "%s is required",
"enum": "%s must be one of %s",
whitespace: "%s cannot be empty",
date: {
format: "%s date %s is invalid for format %s",
parse: "%s date could not be parsed, %s is invalid ",
invalid: "%s date %s is invalid"
},
types: {
string: "%s is not a %s",
method: "%s is not a %s (function)",
array: "%s is not an %s",
object: "%s is not an %s",
number: "%s is not a %s",
date: "%s is not a %s",
"boolean": "%s is not a %s",
integer: "%s is not an %s",
"float": "%s is not a %s",
regexp: "%s is not a valid %s",
email: "%s is not a valid %s",
url: "%s is not a valid %s",
hex: "%s is not a valid %s"
},
string: {
len: "%s must be exactly %s characters",
min: "%s must be at least %s characters",
max: "%s cannot be longer than %s characters",
range: "%s must be between %s and %s characters"
},
number: {
len: "%s must equal %s",
min: "%s cannot be less than %s",
max: "%s cannot be greater than %s",
range: "%s must be between %s and %s"
},
array: {
len: "%s must be exactly %s in length",
min: "%s cannot be less than %s in length",
max: "%s cannot be greater than %s in length",
range: "%s must be between %s and %s in length"
},
pattern: {
mismatch: "%s value %s does not match pattern %s"
},
clone: function clone2() {
var cloned = JSON.parse(JSON.stringify(this));
cloned.clone = this.clone;
return cloned;
}
};
}
var messages = newMessages();
var Schema = /* @__PURE__ */ function() {
function Schema2(descriptor) {
this.rules = null;
this._messages = messages;
this.define(descriptor);
}
var _proto = Schema2.prototype;
_proto.define = function define(rules2) {
var _this = this;
if (!rules2) {
throw new Error("Cannot configure a schema with no rules");
}
if (typeof rules2 !== "object" || Array.isArray(rules2)) {
throw new Error("Rules must be an object");
}
this.rules = {};
Object.keys(rules2).forEach(function(name) {
var item = rules2[name];
_this.rules[name] = Array.isArray(item) ? item : [item];
});
};
_proto.messages = function messages2(_messages) {
if (_messages) {
this._messages = deepMerge(newMessages(), _messages);
}
return this._messages;
};
_proto.validate = function validate(source_, o2, oc) {
var _this2 = this;
if (o2 === void 0) {
o2 = {};
}
if (oc === void 0) {
oc = function oc2() {
};
}
var source = source_;
var options = o2;
var callback = oc;
if (typeof options === "function") {
callback = options;
options = {};
}
if (!this.rules || Object.keys(this.rules).length === 0) {
if (callback) {
callback(null, source);
}
return Promise.resolve(source);
}
function complete(results) {
var errors = [];
var fields = {};
function add(e) {
if (Array.isArray(e)) {
var _errors;
errors = (_errors = errors).concat.apply(_errors, e);
} else {
errors.push(e);
}
}
for (var i = 0; i < results.length; i++) {
add(results[i]);
}
if (!errors.length) {
callback(null, source);
} else {
fields = convertFieldsError(errors);
callback(errors, fields);
}
}
if (options.messages) {
var messages$1 = this.messages();
if (messages$1 === messages) {
messages$1 = newMessages();
}
deepMerge(messages$1, options.messages);
options.messages = messages$1;
} else {
options.messages = this.messages();
}
var series = {};
var keys2 = options.keys || Object.keys(this.rules);
keys2.forEach(function(z) {
var arr = _this2.rules[z];
var value = source[z];
arr.forEach(function(r) {
var rule = r;
if (typeof rule.transform === "function") {
if (source === source_) {
source = _extends$1({}, source);
}
value = source[z] = rule.transform(value);
}
if (typeof rule === "function") {
rule = {
validator: rule
};
} else {
rule = _extends$1({}, rule);
}
rule.validator = _this2.getValidationMethod(rule);
if (!rule.validator) {
return;
}
rule.field = z;
rule.fullField = rule.fullField || z;
rule.type = _this2.getType(rule);
series[z] = series[z] || [];
series[z].push({
rule,
value,
source,
field: z
});
});
});
var errorFields = {};
return asyncMap(series, options, function(data2, doIt) {
var rule = data2.rule;
var deep = (rule.type === "object" || rule.type === "array") && (typeof rule.fields === "object" || typeof rule.defaultField === "object");
deep = deep && (rule.required || !rule.required && data2.value);
rule.field = data2.field;
function addFullField(key, schema) {
return _extends$1({}, schema, {
fullField: rule.fullField + "." + key,
fullFields: rule.fullFields ? [].concat(rule.fullFields, [key]) : [key]
});
}
function cb(e) {
if (e === void 0) {
e = [];
}
var errorList = Array.isArray(e) ? e : [e];
if (!options.suppressWarning && errorList.length) {
Schema2.warning("async-validator:", errorList);
}
if (errorList.length && rule.message !== void 0) {
errorList = [].concat(rule.message);
}
var filledErrors = errorList.map(complementError(rule, source));
if (options.first && filledErrors.length) {
errorFields[rule.field] = 1;
return doIt(filledErrors);
}
if (!deep) {
doIt(filledErrors);
} else {
if (rule.required && !data2.value) {
if (rule.message !== void 0) {
filledErrors = [].concat(rule.message).map(complementError(rule, source));
} else if (options.error) {
filledErrors = [options.error(rule, format(options.messages.required, rule.field))];
}
return doIt(filledErrors);
}
var fieldsSchema = {};
if (rule.defaultField) {
Object.keys(data2.value).map(function(key) {
fieldsSchema[key] = rule.defaultField;
});
}
fieldsSchema = _extends$1({}, fieldsSchema, data2.rule.fields);
var paredFieldsSchema = {};
Object.keys(fieldsSchema).forEach(function(field) {
var fieldSchema = fieldsSchema[field];
var fieldSchemaList = Array.isArray(fieldSchema) ? fieldSchema : [fieldSchema];
paredFieldsSchema[field] = fieldSchemaList.map(addFullField.bind(null, field));
});
var schema = new Schema2(paredFieldsSchema);
schema.messages(options.messages);
if (data2.rule.options) {
data2.rule.options.messages = options.messages;
data2.rule.options.error = options.error;
}
schema.validate(data2.value, data2.rule.options || options, function(errs) {
var finalErrors = [];
if (filledErrors && filledErrors.length) {
finalErrors.push.apply(finalErrors, filledErrors);
}
if (errs && errs.length) {
finalErrors.push.apply(finalErrors, errs);
}
doIt(finalErrors.length ? finalErrors : null);
});
}
}
var res;
if (rule.asyncValidator) {
res = rule.asyncValidator(rule, data2.value, cb, data2.source, options);
} else if (rule.validator) {
try {
res = rule.validator(rule, data2.value, cb, data2.source, options);
} catch (error) {
console.error == null ? void 0 : console.error(error);
if (!options.suppressValidatorError) {
setTimeout(function() {
throw error;
}, 0);
}
cb(error.message);
}
if (res === true) {
cb();
} else if (res === false) {
cb(typeof rule.message === "function" ? rule.message(rule.fullField || rule.field) : rule.message || (rule.fullField || rule.field) + " fails");
} else if (res instanceof Array) {
cb(res);
} else if (res instanceof Error) {
cb(res.message);
}
}
if (res && res.then) {
res.then(function() {
return cb();
}, function(e) {
return cb(e);
});
}
}, function(results) {
complete(results);
}, source);
};
_proto.getType = function getType(rule) {
if (rule.type === void 0 && rule.pattern instanceof RegExp) {
rule.type = "pattern";
}
if (typeof rule.validator !== "function" && rule.type && !validators.hasOwnProperty(rule.type)) {
throw new Error(format("Unknown rule type %s", rule.type));
}
return rule.type || "string";
};
_proto.getValidationMethod = function getValidationMethod(rule) {
if (typeof rule.validator === "function") {
return rule.validator;
}
var keys2 = Object.keys(rule);
var messageIndex = keys2.indexOf("message");
if (messageIndex !== -1) {
keys2.splice(messageIndex, 1);
}
if (keys2.length === 1 && keys2[0] === "required") {
return validators.required;
}
return validators[this.getType(rule)] || void 0;
};
return Schema2;
}();
Schema.register = function register(type4, validator) {
if (typeof validator !== "function") {
throw new Error("Cannot register a validator by type, validator is not a function");
}
validators[type4] = validator;
};
Schema.warning = warning;
Schema.messages = messages;
Schema.validators = validators;
const formItemValidateStates = [
"",
"error",
"validating",
"success"
];
const formItemProps = buildProps({
label: String,
labelWidth: {
type: [String, Number],
default: ""
},
prop: {
type: definePropType([String, Array])
},
required: {
type: Boolean,
default: void 0
},
rules: {
type: definePropType([Object, Array])
},
error: String,
validateStatus: {
type: String,
values: formItemValidateStates
},
for: String,
inlineMessage: {
type: [String, Boolean],
default: ""
},
showMessage: {
type: Boolean,
default: true
},
size: {
type: String,
values: componentSizes
}
});
const COMPONENT_NAME$2 = "ElLabelWrap";
var FormLabelWrap = defineComponent({
name: COMPONENT_NAME$2,
props: {
isAutoWidth: Boolean,
updateAll: Boolean
},
setup(props, {
slots
}) {
const formContext = inject(formContextKey, void 0);
const formItemContext = inject(formItemContextKey);
if (!formItemContext)
throwError(COMPONENT_NAME$2, "usage: ");
const ns = useNamespace("form");
const el = ref();
const computedWidth = ref(0);
const getLabelWidth = () => {
var _a2;
if ((_a2 = el.value) == null ? void 0 : _a2.firstElementChild) {
const width = window.getComputedStyle(el.value.firstElementChild).width;
return Math.ceil(Number.parseFloat(width));
} else {
return 0;
}
};
const updateLabelWidth = (action = "update") => {
nextTick(() => {
if (slots.default && props.isAutoWidth) {
if (action === "update") {
computedWidth.value = getLabelWidth();
} else if (action === "remove") {
formContext == null ? void 0 : formContext.deregisterLabelWidth(computedWidth.value);
}
}
});
};
const updateLabelWidthFn = () => updateLabelWidth("update");
onMounted(() => {
updateLabelWidthFn();
});
onBeforeUnmount(() => {
updateLabelWidth("remove");
});
onUpdated(() => updateLabelWidthFn());
watch(computedWidth, (val, oldVal) => {
if (props.updateAll) {
formContext == null ? void 0 : formContext.registerLabelWidth(val, oldVal);
}
});
useResizeObserver(computed(() => {
var _a2, _b2;
return (_b2 = (_a2 = el.value) == null ? void 0 : _a2.firstElementChild) != null ? _b2 : null;
}), updateLabelWidthFn);
return () => {
var _a2, _b2;
if (!slots)
return null;
const {
isAutoWidth
} = props;
if (isAutoWidth) {
const autoLabelWidth = formContext == null ? void 0 : formContext.autoLabelWidth;
const style = {};
if (autoLabelWidth && autoLabelWidth !== "auto") {
const marginWidth = Math.max(0, Number.parseInt(autoLabelWidth, 10) - computedWidth.value);
const marginPosition = formContext.labelPosition === "left" ? "marginRight" : "marginLeft";
if (marginWidth) {
style[marginPosition] = `${marginWidth}px`;
}
}
return createVNode("div", {
"ref": el,
"class": [ns.be("item", "label-wrap")],
"style": style
}, [(_a2 = slots.default) == null ? void 0 : _a2.call(slots)]);
} else {
return createVNode(Fragment, {
"ref": el
}, [(_b2 = slots.default) == null ? void 0 : _b2.call(slots)]);
}
};
}
});
const _hoisted_1$k = ["for"];
const __default__$8 = {
name: "ElFormItem"
};
const _sfc_main$u = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({}, __default__$8), {
props: formItemProps,
setup(__props, { expose }) {
const props = __props;
const slots = useSlots();
const formContext = inject(formContextKey, void 0);
const parentFormItemContext = inject(formItemContextKey, void 0);
const _size = useSize(void 0, { formItem: false });
const ns = useNamespace("form-item");
const validateState = ref("");
const validateStateDebounced = refDebounced(validateState, 100);
const validateMessage = ref("");
const formItemRef = ref();
let initialValue = void 0;
let isResettingField = false;
const labelStyle = computed(() => {
if ((formContext == null ? void 0 : formContext.labelPosition) === "top") {
return {};
}
const labelWidth = addUnit(props.labelWidth || (formContext == null ? void 0 : formContext.labelWidth) || "");
if (labelWidth)
return { width: labelWidth };
return {};
});
const contentStyle = computed(() => {
if ((formContext == null ? void 0 : formContext.labelPosition) === "top" || (formContext == null ? void 0 : formContext.inline)) {
return {};
}
if (!props.label && !props.labelWidth && isNested) {
return {};
}
const labelWidth = addUnit(props.labelWidth || (formContext == null ? void 0 : formContext.labelWidth) || "");
if (!props.label && !slots.label) {
return { marginLeft: labelWidth };
}
return {};
});
const formItemClasses = computed(() => [
ns.b(),
ns.m(_size.value),
ns.is("error", validateState.value === "error"),
ns.is("validating", validateState.value === "validating"),
ns.is("success", validateState.value === "success"),
ns.is("required", isRequired.value || props.required),
ns.is("no-asterisk", formContext == null ? void 0 : formContext.hideRequiredAsterisk),
{ [ns.m("feedback")]: formContext == null ? void 0 : formContext.statusIcon }
]);
const _inlineMessage = computed(() => isBoolean(props.inlineMessage) ? props.inlineMessage : (formContext == null ? void 0 : formContext.inlineMessage) || false);
const validateClasses = computed(() => [
ns.e("error"),
{ [ns.em("error", "inline")]: _inlineMessage.value }
]);
const propString = computed(() => {
if (!props.prop)
return "";
return isString(props.prop) ? props.prop : props.prop.join(".");
});
const labelFor = computed(() => props.for || propString.value);
const isNested = !!parentFormItemContext;
const fieldValue = computed(() => {
const model = formContext == null ? void 0 : formContext.model;
if (!model || !props.prop) {
return;
}
return getProp(model, props.prop).value;
});
const _rules = computed(() => {
const rules2 = props.rules ? castArray$1(props.rules) : [];
const formRules = formContext == null ? void 0 : formContext.rules;
if (formRules && props.prop) {
const _rules2 = getProp(formRules, props.prop).value;
if (_rules2) {
rules2.push(...castArray$1(_rules2));
}
}
if (props.required !== void 0) {
rules2.push({ required: !!props.required });
}
return rules2;
});
const validateEnabled = computed(() => _rules.value.length > 0);
const getFilteredRule = (trigger) => {
const rules2 = _rules.value;
return rules2.filter((rule) => {
if (!rule.trigger || !trigger)
return true;
if (Array.isArray(rule.trigger)) {
return rule.trigger.includes(trigger);
} else {
return rule.trigger === trigger;
}
}).map((_a2) => {
var _b2 = _a2, { trigger: trigger2 } = _b2, rule = __objRest(_b2, ["trigger"]);
return rule;
});
};
const isRequired = computed(() => _rules.value.some((rule) => rule.required === true));
const shouldShowError = computed(() => {
var _a2;
return validateStateDebounced.value === "error" && props.showMessage && ((_a2 = formContext == null ? void 0 : formContext.showMessage) != null ? _a2 : true);
});
const currentLabel = computed(() => `${props.label || ""}${(formContext == null ? void 0 : formContext.labelSuffix) || ""}`);
const setValidationState = (state) => {
validateState.value = state;
};
const onValidationFailed = (error) => {
var _a2, _b2;
const { errors, fields } = error;
if (!errors || !fields) {
console.error(error);
}
setValidationState("error");
validateMessage.value = errors ? (_b2 = (_a2 = errors == null ? void 0 : errors[0]) == null ? void 0 : _a2.message) != null ? _b2 : `${props.prop} is required` : "";
formContext == null ? void 0 : formContext.emit("validate", props.prop, false, validateMessage.value);
};
const onValidationSucceeded = () => {
setValidationState("success");
formContext == null ? void 0 : formContext.emit("validate", props.prop, true, "");
};
const doValidate = async (rules2) => {
const modelName = propString.value;
const validator = new Schema({
[modelName]: rules2
});
return validator.validate({ [modelName]: fieldValue.value }, { firstFields: true }).then(() => {
onValidationSucceeded();
return true;
}).catch((err) => {
onValidationFailed(err);
return Promise.reject(err);
});
};
const validate = async (trigger, callback) => {
if (isResettingField) {
isResettingField = false;
return false;
}
const hasCallback = isFunction(callback);
if (!validateEnabled.value) {
callback == null ? void 0 : callback(false);
return false;
}
const rules2 = getFilteredRule(trigger);
if (rules2.length === 0) {
callback == null ? void 0 : callback(true);
return true;
}
setValidationState("validating");
return doValidate(rules2).then(() => {
callback == null ? void 0 : callback(true);
return true;
}).catch((err) => {
const { fields } = err;
callback == null ? void 0 : callback(false, fields);
return hasCallback ? false : Promise.reject(fields);
});
};
const clearValidate = () => {
setValidationState("");
validateMessage.value = "";
};
const resetField = async () => {
const model = formContext == null ? void 0 : formContext.model;
if (!model || !props.prop)
return;
const computedValue = getProp(model, props.prop);
if (!isEqual(computedValue.value, initialValue)) {
isResettingField = true;
}
computedValue.value = initialValue;
await nextTick();
clearValidate();
};
watch(() => props.error, (val) => {
validateMessage.value = val || "";
setValidationState(val ? "error" : "");
}, { immediate: true });
watch(() => props.validateStatus, (val) => setValidationState(val || ""));
const context = reactive(__spreadProps(__spreadValues({}, toRefs(props)), {
$el: formItemRef,
size: _size,
validateState,
resetField,
clearValidate,
validate
}));
provide(formItemContextKey, context);
onMounted(() => {
if (props.prop) {
formContext == null ? void 0 : formContext.addField(context);
initialValue = clone(fieldValue.value);
}
});
onBeforeUnmount(() => {
formContext == null ? void 0 : formContext.removeField(context);
});
expose({
size: _size,
validateMessage,
validateState,
validate,
clearValidate,
resetField
});
return (_ctx, _cache) => {
var _a2;
return openBlock(), createElementBlock("div", {
ref_key: "formItemRef",
ref: formItemRef,
class: normalizeClass(unref(formItemClasses))
}, [
createVNode(unref(FormLabelWrap), {
"is-auto-width": unref(labelStyle).width === "auto",
"update-all": ((_a2 = unref(formContext)) == null ? void 0 : _a2.labelWidth) === "auto"
}, {
default: withCtx(() => [
_ctx.label || _ctx.$slots.label ? (openBlock(), createElementBlock("label", {
key: 0,
for: unref(labelFor),
class: normalizeClass(unref(ns).e("label")),
style: normalizeStyle(unref(labelStyle))
}, [
renderSlot(_ctx.$slots, "label", { label: unref(currentLabel) }, () => [
createTextVNode(toDisplayString(unref(currentLabel)), 1)
])
], 14, _hoisted_1$k)) : createCommentVNode("v-if", true)
]),
_: 3
}, 8, ["is-auto-width", "update-all"]),
createElementVNode("div", {
class: normalizeClass(unref(ns).e("content")),
style: normalizeStyle(unref(contentStyle))
}, [
renderSlot(_ctx.$slots, "default"),
createVNode(Transition, {
name: `${unref(ns).namespace.value}-zoom-in-top`
}, {
default: withCtx(() => [
unref(shouldShowError) ? renderSlot(_ctx.$slots, "error", {
key: 0,
error: validateMessage.value
}, () => [
createElementVNode("div", {
class: normalizeClass(unref(validateClasses))
}, toDisplayString(validateMessage.value), 3)
]) : createCommentVNode("v-if", true)
]),
_: 3
}, 8, ["name"])
], 6)
], 2);
};
}
}));
var FormItem = /* @__PURE__ */ _export_sfc$1(_sfc_main$u, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/form/src/form-item.vue"]]);
const ElForm = withInstall(Form, {
FormItem
});
const ElFormItem = withNoopInstall(FormItem);
const imageViewerProps = buildProps({
urlList: {
type: definePropType(Array),
default: () => mutable([])
},
zIndex: {
type: Number
},
initialIndex: {
type: Number,
default: 0
},
infinite: {
type: Boolean,
default: true
},
hideOnClickModal: {
type: Boolean,
default: false
},
teleported: {
type: Boolean,
default: false
}
});
const imageViewerEmits = {
close: () => true,
switch: (index) => typeof index === "number"
};
const _hoisted_1$j = ["src"];
const __default__$7 = {
name: "ElImageViewer"
};
const _sfc_main$t = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({}, __default__$7), {
props: imageViewerProps,
emits: imageViewerEmits,
setup(__props, { emit }) {
const props = __props;
const Mode = {
CONTAIN: {
name: "contain",
icon: markRaw(fullScreen)
},
ORIGINAL: {
name: "original",
icon: markRaw(scaleToOriginal)
}
};
const mousewheelEventName = isFirefox() ? "DOMMouseScroll" : "mousewheel";
const { t } = useLocale();
const ns = useNamespace("image-viewer");
const { nextZIndex } = useZIndex();
const wrapper = ref();
const imgRefs = ref([]);
const scopeEventListener = effectScope();
const loading2 = ref(true);
const index = ref(props.initialIndex);
const mode = ref(Mode.CONTAIN);
const transform = ref({
scale: 1,
deg: 0,
offsetX: 0,
offsetY: 0,
enableTransition: false
});
const isSingle = computed(() => {
const { urlList } = props;
return urlList.length <= 1;
});
const isFirst = computed(() => {
return index.value === 0;
});
const isLast = computed(() => {
return index.value === props.urlList.length - 1;
});
const currentImg = computed(() => {
return props.urlList[index.value];
});
const imgStyle = computed(() => {
const { scale, deg, offsetX, offsetY, enableTransition } = transform.value;
let translateX = offsetX / scale;
let translateY = offsetY / scale;
switch (deg % 360) {
case 90:
case -270:
[translateX, translateY] = [translateY, -translateX];
break;
case 180:
case -180:
[translateX, translateY] = [-translateX, -translateY];
break;
case 270:
case -90:
[translateX, translateY] = [-translateY, translateX];
break;
}
const style = {
transform: `scale(${scale}) rotate(${deg}deg) translate(${translateX}px, ${translateY}px)`,
transition: enableTransition ? "transform .3s" : ""
};
if (mode.value.name === Mode.CONTAIN.name) {
style.maxWidth = style.maxHeight = "100%";
}
return style;
});
const computedZIndex = computed(() => {
return isNumber(props.zIndex) ? props.zIndex : nextZIndex();
});
function hide2() {
unregisterEventListener();
emit("close");
}
function registerEventListener() {
const keydownHandler = throttle((e) => {
switch (e.code) {
case EVENT_CODE.esc:
hide2();
break;
case EVENT_CODE.space:
toggleMode();
break;
case EVENT_CODE.left:
prev();
break;
case EVENT_CODE.up:
handleActions("zoomIn");
break;
case EVENT_CODE.right:
next();
break;
case EVENT_CODE.down:
handleActions("zoomOut");
break;
}
});
const mousewheelHandler = throttle((e) => {
const delta = e.wheelDelta ? e.wheelDelta : -e.detail;
if (delta > 0) {
handleActions("zoomIn", {
zoomRate: 1.2,
enableTransition: false
});
} else {
handleActions("zoomOut", {
zoomRate: 1.2,
enableTransition: false
});
}
});
scopeEventListener.run(() => {
useEventListener(document, "keydown", keydownHandler);
useEventListener(document, mousewheelEventName, mousewheelHandler);
});
}
function unregisterEventListener() {
scopeEventListener.stop();
}
function handleImgLoad() {
loading2.value = false;
}
function handleImgError(e) {
loading2.value = false;
e.target.alt = t("el.image.error");
}
function handleMouseDown(e) {
if (loading2.value || e.button !== 0 || !wrapper.value)
return;
transform.value.enableTransition = false;
const { offsetX, offsetY } = transform.value;
const startX = e.pageX;
const startY = e.pageY;
const dragHandler = throttle((ev) => {
transform.value = __spreadProps(__spreadValues({}, transform.value), {
offsetX: offsetX + ev.pageX - startX,
offsetY: offsetY + ev.pageY - startY
});
});
const removeMousemove = useEventListener(document, "mousemove", dragHandler);
useEventListener(document, "mouseup", () => {
removeMousemove();
});
e.preventDefault();
}
function reset() {
transform.value = {
scale: 1,
deg: 0,
offsetX: 0,
offsetY: 0,
enableTransition: false
};
}
function toggleMode() {
if (loading2.value)
return;
const modeNames = Object.keys(Mode);
const modeValues = Object.values(Mode);
const currentMode = mode.value.name;
const index2 = modeValues.findIndex((i) => i.name === currentMode);
const nextIndex = (index2 + 1) % modeNames.length;
mode.value = Mode[modeNames[nextIndex]];
reset();
}
function prev() {
if (isFirst.value && !props.infinite)
return;
const len = props.urlList.length;
index.value = (index.value - 1 + len) % len;
}
function next() {
if (isLast.value && !props.infinite)
return;
const len = props.urlList.length;
index.value = (index.value + 1) % len;
}
function handleActions(action, options = {}) {
if (loading2.value)
return;
const { zoomRate, rotateDeg, enableTransition } = __spreadValues({
zoomRate: 1.4,
rotateDeg: 90,
enableTransition: true
}, options);
switch (action) {
case "zoomOut":
if (transform.value.scale > 0.2) {
transform.value.scale = Number.parseFloat((transform.value.scale / zoomRate).toFixed(3));
}
break;
case "zoomIn":
if (transform.value.scale < 7) {
transform.value.scale = Number.parseFloat((transform.value.scale * zoomRate).toFixed(3));
}
break;
case "clockwise":
transform.value.deg += rotateDeg;
break;
case "anticlockwise":
transform.value.deg -= rotateDeg;
break;
}
transform.value.enableTransition = enableTransition;
}
watch(currentImg, () => {
nextTick(() => {
const $img = imgRefs.value[0];
if (!($img == null ? void 0 : $img.complete)) {
loading2.value = true;
}
});
});
watch(index, (val) => {
reset();
emit("switch", val);
});
onMounted(() => {
var _a2, _b2;
registerEventListener();
(_b2 = (_a2 = wrapper.value) == null ? void 0 : _a2.focus) == null ? void 0 : _b2.call(_a2);
});
return (_ctx, _cache) => {
return openBlock(), createBlock(Teleport, {
to: "body",
disabled: !_ctx.teleported
}, [
createVNode(Transition, {
name: "viewer-fade",
appear: ""
}, {
default: withCtx(() => [
createElementVNode("div", {
ref_key: "wrapper",
ref: wrapper,
tabindex: -1,
class: normalizeClass(unref(ns).e("wrapper")),
style: normalizeStyle({ zIndex: unref(computedZIndex) })
}, [
createElementVNode("div", {
class: normalizeClass(unref(ns).e("mask")),
onClick: _cache[0] || (_cache[0] = withModifiers(($event) => _ctx.hideOnClickModal && hide2(), ["self"]))
}, null, 2),
createCommentVNode(" CLOSE "),
createElementVNode("span", {
class: normalizeClass([unref(ns).e("btn"), unref(ns).e("close")]),
onClick: hide2
}, [
createVNode(unref(ElIcon), null, {
default: withCtx(() => [
createVNode(unref(close))
]),
_: 1
})
], 2),
createCommentVNode(" ARROW "),
!unref(isSingle) ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
createElementVNode("span", {
class: normalizeClass([
unref(ns).e("btn"),
unref(ns).e("prev"),
unref(ns).is("disabled", !_ctx.infinite && unref(isFirst))
]),
onClick: prev
}, [
createVNode(unref(ElIcon), null, {
default: withCtx(() => [
createVNode(unref(arrowLeft))
]),
_: 1
})
], 2),
createElementVNode("span", {
class: normalizeClass([
unref(ns).e("btn"),
unref(ns).e("next"),
unref(ns).is("disabled", !_ctx.infinite && unref(isLast))
]),
onClick: next
}, [
createVNode(unref(ElIcon), null, {
default: withCtx(() => [
createVNode(unref(arrowRight))
]),
_: 1
})
], 2)
], 64)) : createCommentVNode("v-if", true),
createCommentVNode(" ACTIONS "),
createElementVNode("div", {
class: normalizeClass([unref(ns).e("btn"), unref(ns).e("actions")])
}, [
createElementVNode("div", {
class: normalizeClass(unref(ns).e("actions__inner"))
}, [
createVNode(unref(ElIcon), {
onClick: _cache[1] || (_cache[1] = ($event) => handleActions("zoomOut"))
}, {
default: withCtx(() => [
createVNode(unref(zoomOut))
]),
_: 1
}),
createVNode(unref(ElIcon), {
onClick: _cache[2] || (_cache[2] = ($event) => handleActions("zoomIn"))
}, {
default: withCtx(() => [
createVNode(unref(zoomIn))
]),
_: 1
}),
createElementVNode("i", {
class: normalizeClass(unref(ns).e("actions__divider"))
}, null, 2),
createVNode(unref(ElIcon), { onClick: toggleMode }, {
default: withCtx(() => [
(openBlock(), createBlock(resolveDynamicComponent(mode.value.icon)))
]),
_: 1
}),
createElementVNode("i", {
class: normalizeClass(unref(ns).e("actions__divider"))
}, null, 2),
createVNode(unref(ElIcon), {
onClick: _cache[3] || (_cache[3] = ($event) => handleActions("anticlockwise"))
}, {
default: withCtx(() => [
createVNode(unref(refreshLeft))
]),
_: 1
}),
createVNode(unref(ElIcon), {
onClick: _cache[4] || (_cache[4] = ($event) => handleActions("clockwise"))
}, {
default: withCtx(() => [
createVNode(unref(refreshRight))
]),
_: 1
})
], 2)
], 2),
createCommentVNode(" CANVAS "),
createElementVNode("div", {
class: normalizeClass(unref(ns).e("canvas"))
}, [
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.urlList, (url2, i) => {
return withDirectives((openBlock(), createElementBlock("img", {
ref_for: true,
ref: (el) => imgRefs.value[i] = el,
key: url2,
src: url2,
style: normalizeStyle(unref(imgStyle)),
class: normalizeClass(unref(ns).e("img")),
onLoad: handleImgLoad,
onError: handleImgError,
onMousedown: handleMouseDown
}, null, 46, _hoisted_1$j)), [
[vShow, i === index.value]
]);
}), 128))
], 2),
renderSlot(_ctx.$slots, "default")
], 6)
]),
_: 3
})
], 8, ["disabled"]);
};
}
}));
var ImageViewer = /* @__PURE__ */ _export_sfc$1(_sfc_main$t, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/image-viewer/src/image-viewer.vue"]]);
const ElImageViewer = withInstall(ImageViewer);
const imageProps = buildProps({
appendToBody: {
type: Boolean,
default: void 0
},
hideOnClickModal: {
type: Boolean,
default: false
},
src: {
type: String,
default: ""
},
fit: {
type: String,
values: ["", "contain", "cover", "fill", "none", "scale-down"],
default: ""
},
lazy: {
type: Boolean,
default: false
},
scrollContainer: {
type: definePropType([String, Object])
},
previewSrcList: {
type: definePropType(Array),
default: () => mutable([])
},
previewTeleported: {
type: Boolean,
default: false
},
zIndex: {
type: Number
},
initialIndex: {
type: Number,
default: 0
},
infinite: {
type: Boolean,
default: true
}
});
const imageEmits = {
error: (evt) => evt instanceof Event,
switch: (val) => isNumber(val),
close: () => true
};
const _hoisted_1$i = ["src"];
const _hoisted_2$g = { key: 0 };
const __default__$6 = {
name: "ElImage"
};
const _sfc_main$s = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({}, __default__$6), {
props: imageProps,
emits: imageEmits,
setup(__props, { emit }) {
const props = __props;
let prevOverflow = "";
useDeprecated({
scope: "el-image",
from: "append-to-body",
replacement: "preview-teleported",
version: "2.2.0",
ref: "https://element-plus.org/en-US/component/image.html#image-attributess"
}, computed(() => isBoolean(props.appendToBody)));
const { t } = useLocale();
const ns = useNamespace("image");
const attrs = useAttrs();
const hasLoadError = ref(false);
const loading2 = ref(true);
const imgWidth = ref(0);
const imgHeight = ref(0);
const showViewer = ref(false);
const container = ref();
const _scrollContainer = ref();
let stopScrollListener;
let stopWheelListener;
const containerStyle = computed(() => attrs.value.style);
const imageStyle = computed(() => {
const { fit } = props;
if (isClient && fit) {
return { objectFit: fit };
}
return {};
});
const preview = computed(() => {
const { previewSrcList } = props;
return Array.isArray(previewSrcList) && previewSrcList.length > 0;
});
const teleported = computed(() => {
return props.appendToBody || props.previewTeleported;
});
const imageIndex = computed(() => {
const { previewSrcList, initialIndex } = props;
let previewIndex = initialIndex;
if (initialIndex > previewSrcList.length - 1) {
previewIndex = 0;
}
return previewIndex;
});
const loadImage = () => {
if (!isClient)
return;
loading2.value = true;
hasLoadError.value = false;
const img = new Image();
const currentImageSrc = props.src;
img.addEventListener("load", (e) => {
if (currentImageSrc !== props.src) {
return;
}
handleLoad(e, img);
});
img.addEventListener("error", (e) => {
if (currentImageSrc !== props.src) {
return;
}
handleError(e);
});
Object.entries(attrs.value).forEach(([key, value]) => {
if (key.toLowerCase() === "onload")
return;
img.setAttribute(key, value);
});
img.src = currentImageSrc;
};
function handleLoad(e, img) {
imgWidth.value = img.width;
imgHeight.value = img.height;
loading2.value = false;
hasLoadError.value = false;
}
function handleError(event) {
loading2.value = false;
hasLoadError.value = true;
emit("error", event);
}
function handleLazyLoad() {
if (isInContainer(container.value, _scrollContainer.value)) {
loadImage();
removeLazyLoadListener();
}
}
const lazyLoadHandler = useThrottleFn(handleLazyLoad, 200);
async function addLazyLoadListener() {
var _a2;
if (!isClient)
return;
await nextTick();
const { scrollContainer } = props;
if (isElement$1(scrollContainer)) {
_scrollContainer.value = scrollContainer;
} else if (isString(scrollContainer) && scrollContainer !== "") {
_scrollContainer.value = (_a2 = document.querySelector(scrollContainer)) != null ? _a2 : void 0;
} else if (container.value) {
_scrollContainer.value = getScrollContainer(container.value);
}
if (_scrollContainer.value) {
stopScrollListener = useEventListener(_scrollContainer, "scroll", lazyLoadHandler);
setTimeout(() => handleLazyLoad(), 100);
}
}
function removeLazyLoadListener() {
if (!isClient || !_scrollContainer.value || !lazyLoadHandler)
return;
stopScrollListener();
_scrollContainer.value = void 0;
}
function wheelHandler(e) {
if (!e.ctrlKey)
return;
if (e.deltaY < 0) {
e.preventDefault();
return false;
} else if (e.deltaY > 0) {
e.preventDefault();
return false;
}
}
function clickHandler() {
if (!preview.value)
return;
stopWheelListener = useEventListener("wheel", wheelHandler, {
passive: false
});
prevOverflow = document.body.style.overflow;
document.body.style.overflow = "hidden";
showViewer.value = true;
}
function closeViewer() {
stopWheelListener == null ? void 0 : stopWheelListener();
document.body.style.overflow = prevOverflow;
showViewer.value = false;
emit("close");
}
function switchViewer(val) {
emit("switch", val);
}
watch(() => props.src, () => {
if (props.lazy) {
loading2.value = true;
hasLoadError.value = false;
removeLazyLoadListener();
addLazyLoadListener();
} else {
loadImage();
}
});
onMounted(() => {
if (props.lazy) {
addLazyLoadListener();
} else {
loadImage();
}
});
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", {
ref_key: "container",
ref: container,
class: normalizeClass([unref(ns).b(), _ctx.$attrs.class]),
style: normalizeStyle(unref(containerStyle))
}, [
loading2.value ? renderSlot(_ctx.$slots, "placeholder", { key: 0 }, () => [
createElementVNode("div", {
class: normalizeClass(unref(ns).e("placeholder"))
}, null, 2)
]) : hasLoadError.value ? renderSlot(_ctx.$slots, "error", { key: 1 }, () => [
createElementVNode("div", {
class: normalizeClass(unref(ns).e("error"))
}, toDisplayString(unref(t)("el.image.error")), 3)
]) : (openBlock(), createElementBlock("img", mergeProps({ key: 2 }, unref(attrs), {
src: _ctx.src,
style: unref(imageStyle),
class: [unref(ns).e("inner"), unref(preview) ? unref(ns).e("preview") : ""],
onClick: clickHandler
}), null, 16, _hoisted_1$i)),
unref(preview) ? (openBlock(), createElementBlock(Fragment, { key: 3 }, [
showViewer.value ? (openBlock(), createBlock(unref(ElImageViewer), {
key: 0,
"z-index": _ctx.zIndex,
"initial-index": unref(imageIndex),
infinite: _ctx.infinite,
"url-list": _ctx.previewSrcList,
"hide-on-click-modal": _ctx.hideOnClickModal,
teleported: unref(teleported),
onClose: closeViewer,
onSwitch: switchViewer
}, {
default: withCtx(() => [
_ctx.$slots.viewer ? (openBlock(), createElementBlock("div", _hoisted_2$g, [
renderSlot(_ctx.$slots, "viewer")
])) : createCommentVNode("v-if", true)
]),
_: 3
}, 8, ["z-index", "initial-index", "infinite", "url-list", "hide-on-click-modal", "teleported"])) : createCommentVNode("v-if", true)
], 2112)) : createCommentVNode("v-if", true)
], 6);
};
}
}));
var Image$1 = /* @__PURE__ */ _export_sfc$1(_sfc_main$s, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/image/src/image.vue"]]);
const ElImage = withInstall(Image$1);
const inputNumberProps = buildProps({
step: {
type: Number,
default: 1
},
stepStrictly: {
type: Boolean,
default: false
},
max: {
type: Number,
default: Number.POSITIVE_INFINITY
},
min: {
type: Number,
default: Number.NEGATIVE_INFINITY
},
modelValue: {
type: Number
},
disabled: {
type: Boolean,
default: false
},
size: {
type: String,
values: componentSizes
},
controls: {
type: Boolean,
default: true
},
controlsPosition: {
type: String,
default: "",
values: ["", "right"]
},
name: String,
label: String,
placeholder: String,
precision: {
type: Number,
validator: (val) => val >= 0 && val === Number.parseInt(`${val}`, 10)
}
});
const inputNumberEmits = {
change: (prev, cur) => prev !== cur,
blur: (e) => e instanceof FocusEvent,
focus: (e) => e instanceof FocusEvent,
input: (val) => isNumber(val),
"update:modelValue": (val) => isNumber(val) || val === void 0
};
const _sfc_main$r = defineComponent({
name: "ElInputNumber",
components: {
ElInput,
ElIcon,
ArrowUp: arrowUp,
ArrowDown: arrowDown,
Plus: plus,
Minus: minus
},
directives: {
RepeatClick
},
props: inputNumberProps,
emits: inputNumberEmits,
setup(props, { emit }) {
const input = ref();
const data2 = reactive({
currentValue: props.modelValue,
userInput: null
});
const { formItem } = useFormItem();
const ns = useNamespace("input-number");
const minDisabled = computed(() => ensurePrecision(props.modelValue, -1) < props.min);
const maxDisabled = computed(() => ensurePrecision(props.modelValue) > props.max);
const numPrecision = computed(() => {
const stepPrecision = getPrecision(props.step);
if (!isUndefined(props.precision)) {
if (stepPrecision > props.precision)
;
return props.precision;
} else {
return Math.max(getPrecision(props.modelValue), stepPrecision);
}
});
const controlsAtRight = computed(() => {
return props.controls && props.controlsPosition === "right";
});
const inputNumberSize = useSize();
const inputNumberDisabled = useDisabled$1();
const displayValue = computed(() => {
if (data2.userInput !== null) {
return data2.userInput;
}
let currentValue = data2.currentValue;
if (isNumber(currentValue)) {
if (Number.isNaN(currentValue))
return "";
if (!isUndefined(props.precision)) {
currentValue = currentValue.toFixed(props.precision);
}
}
return currentValue;
});
const toPrecision = (num, pre) => {
if (isUndefined(pre))
pre = numPrecision.value;
return Number.parseFloat(`${Math.round(num * 10 ** pre) / 10 ** pre}`);
};
const getPrecision = (value) => {
if (isUndefined(value))
return 0;
const valueString = value.toString();
const dotPosition = valueString.indexOf(".");
let precision = 0;
if (dotPosition !== -1) {
precision = valueString.length - dotPosition - 1;
}
return precision;
};
const ensurePrecision = (val, coefficient = 1) => {
if (!isNumber(val))
return data2.currentValue;
val = isNumber(val) ? val : Number.NaN;
return toPrecision(val + props.step * coefficient);
};
const increase = () => {
if (inputNumberDisabled.value || maxDisabled.value)
return;
const value = props.modelValue || 0;
const newVal = ensurePrecision(value);
setCurrentValue(newVal);
};
const decrease = () => {
if (inputNumberDisabled.value || minDisabled.value)
return;
const value = props.modelValue || 0;
const newVal = ensurePrecision(value, -1);
setCurrentValue(newVal);
};
const verifyValue = (value, update) => {
const { max: max2, min: min2, step, precision, stepStrictly } = props;
let newVal = Number(value);
if (value === null) {
newVal = Number.NaN;
}
if (!Number.isNaN(newVal)) {
if (stepStrictly) {
newVal = Math.round(newVal / step) * step;
}
if (!isUndefined(precision)) {
newVal = toPrecision(newVal, precision);
}
if (newVal > max2 || newVal < min2) {
newVal = newVal > max2 ? max2 : min2;
update && emit("update:modelValue", newVal);
}
}
return newVal;
};
const setCurrentValue = (value) => {
var _a2;
const oldVal = data2.currentValue;
let newVal = verifyValue(value);
if (oldVal === newVal)
return;
if (Number.isNaN(newVal)) {
newVal = void 0;
}
data2.userInput = null;
emit("update:modelValue", newVal);
emit("input", newVal);
emit("change", newVal, oldVal);
(_a2 = formItem == null ? void 0 : formItem.validate) == null ? void 0 : _a2.call(formItem, "change").catch((err) => debugWarn());
data2.currentValue = newVal;
};
const handleInput = (value) => {
return data2.userInput = value;
};
const handleInputChange = (value) => {
const newVal = value !== "" ? Number(value) : "";
if (isNumber(newVal) && !Number.isNaN(newVal) || value === "") {
setCurrentValue(newVal);
}
data2.userInput = null;
};
const focus = () => {
var _a2, _b2;
(_b2 = (_a2 = input.value) == null ? void 0 : _a2.focus) == null ? void 0 : _b2.call(_a2);
};
const blur = () => {
var _a2, _b2;
(_b2 = (_a2 = input.value) == null ? void 0 : _a2.blur) == null ? void 0 : _b2.call(_a2);
};
const handleFocus = (event) => {
emit("focus", event);
};
const handleBlur = (event) => {
var _a2;
emit("blur", event);
(_a2 = formItem == null ? void 0 : formItem.validate) == null ? void 0 : _a2.call(formItem, "blur").catch((err) => debugWarn());
};
watch(() => props.modelValue, (value) => {
const newVal = verifyValue(value, true);
data2.currentValue = newVal;
data2.userInput = null;
}, { immediate: true });
onMounted(() => {
var _a2;
const innerInput = (_a2 = input.value) == null ? void 0 : _a2.input;
innerInput.setAttribute("role", "spinbutton");
innerInput.setAttribute("aria-valuemax", String(props.max));
innerInput.setAttribute("aria-valuemin", String(props.min));
innerInput.setAttribute("aria-valuenow", String(data2.currentValue));
innerInput.setAttribute("aria-disabled", String(inputNumberDisabled.value));
if (!isNumber(props.modelValue)) {
let val = Number(props.modelValue);
if (Number.isNaN(val)) {
val = void 0;
}
emit("update:modelValue", val);
}
});
onUpdated(() => {
var _a2;
const innerInput = (_a2 = input.value) == null ? void 0 : _a2.input;
innerInput == null ? void 0 : innerInput.setAttribute("aria-valuenow", data2.currentValue);
});
return {
input,
displayValue,
handleInput,
handleInputChange,
controlsAtRight,
decrease,
increase,
inputNumberSize,
inputNumberDisabled,
maxDisabled,
minDisabled,
focus,
blur,
handleFocus,
handleBlur,
ns
};
}
});
function _sfc_render$d(_ctx, _cache, $props, $setup, $data, $options) {
const _component_arrow_down = resolveComponent("arrow-down");
const _component_minus = resolveComponent("minus");
const _component_el_icon = resolveComponent("el-icon");
const _component_arrow_up = resolveComponent("arrow-up");
const _component_plus = resolveComponent("plus");
const _component_el_input = resolveComponent("el-input");
const _directive_repeat_click = resolveDirective("repeat-click");
return openBlock(), createElementBlock("div", {
class: normalizeClass([
_ctx.ns.b(),
_ctx.ns.m(_ctx.inputNumberSize),
_ctx.ns.is("disabled", _ctx.inputNumberDisabled),
_ctx.ns.is("without-controls", !_ctx.controls),
_ctx.ns.is("controls-right", _ctx.controlsAtRight)
]),
onDragstart: _cache[2] || (_cache[2] = withModifiers(() => {
}, ["prevent"]))
}, [
_ctx.controls ? withDirectives((openBlock(), createElementBlock("span", {
key: 0,
role: "button",
class: normalizeClass([_ctx.ns.e("decrease"), _ctx.ns.is("disabled", _ctx.minDisabled)]),
onKeydown: _cache[0] || (_cache[0] = withKeys((...args) => _ctx.decrease && _ctx.decrease(...args), ["enter"]))
}, [
createVNode(_component_el_icon, null, {
default: withCtx(() => [
_ctx.controlsAtRight ? (openBlock(), createBlock(_component_arrow_down, { key: 0 })) : (openBlock(), createBlock(_component_minus, { key: 1 }))
]),
_: 1
})
], 34)), [
[_directive_repeat_click, _ctx.decrease]
]) : createCommentVNode("v-if", true),
_ctx.controls ? withDirectives((openBlock(), createElementBlock("span", {
key: 1,
role: "button",
class: normalizeClass([_ctx.ns.e("increase"), _ctx.ns.is("disabled", _ctx.maxDisabled)]),
onKeydown: _cache[1] || (_cache[1] = withKeys((...args) => _ctx.increase && _ctx.increase(...args), ["enter"]))
}, [
createVNode(_component_el_icon, null, {
default: withCtx(() => [
_ctx.controlsAtRight ? (openBlock(), createBlock(_component_arrow_up, { key: 0 })) : (openBlock(), createBlock(_component_plus, { key: 1 }))
]),
_: 1
})
], 34)), [
[_directive_repeat_click, _ctx.increase]
]) : createCommentVNode("v-if", true),
createVNode(_component_el_input, {
ref: "input",
type: "number",
step: _ctx.step,
"model-value": _ctx.displayValue,
placeholder: _ctx.placeholder,
disabled: _ctx.inputNumberDisabled,
size: _ctx.inputNumberSize,
max: _ctx.max,
min: _ctx.min,
name: _ctx.name,
label: _ctx.label,
"validate-event": false,
onKeydown: [
withKeys(withModifiers(_ctx.increase, ["prevent"]), ["up"]),
withKeys(withModifiers(_ctx.decrease, ["prevent"]), ["down"])
],
onBlur: _ctx.handleBlur,
onFocus: _ctx.handleFocus,
onInput: _ctx.handleInput,
onChange: _ctx.handleInputChange
}, null, 8, ["step", "model-value", "placeholder", "disabled", "size", "max", "min", "name", "label", "onKeydown", "onBlur", "onFocus", "onInput", "onChange"])
], 34);
}
var InputNumber = /* @__PURE__ */ _export_sfc$1(_sfc_main$r, [["render", _sfc_render$d], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/input-number/src/input-number.vue"]]);
const ElInputNumber = withInstall(InputNumber);
const selectGroupKey = "ElSelectGroup";
const selectKey = "ElSelect";
function useOption(props, states) {
const select = inject(selectKey);
const selectGroup = inject(selectGroupKey, { disabled: false });
const isObject2 = computed(() => {
return Object.prototype.toString.call(props.value).toLowerCase() === "[object object]";
});
const itemSelected = computed(() => {
if (!select.props.multiple) {
return isEqual2(props.value, select.props.modelValue);
} else {
return contains2(select.props.modelValue, props.value);
}
});
const limitReached = computed(() => {
if (select.props.multiple) {
const modelValue = select.props.modelValue || [];
return !itemSelected.value && modelValue.length >= select.props.multipleLimit && select.props.multipleLimit > 0;
} else {
return false;
}
});
const currentLabel = computed(() => {
return props.label || (isObject2.value ? "" : props.value);
});
const currentValue = computed(() => {
return props.value || props.label || "";
});
const isDisabled = computed(() => {
return props.disabled || states.groupDisabled || limitReached.value;
});
const instance = getCurrentInstance();
const contains2 = (arr = [], target) => {
if (!isObject2.value) {
return arr && arr.includes(target);
} else {
const valueKey = select.props.valueKey;
return arr && arr.some((item) => {
return get(item, valueKey) === get(target, valueKey);
});
}
};
const isEqual2 = (a2, b2) => {
if (!isObject2.value) {
return a2 === b2;
} else {
const { valueKey } = select.props;
return get(a2, valueKey) === get(b2, valueKey);
}
};
const hoverItem = () => {
if (!props.disabled && !selectGroup.disabled) {
select.hoverIndex = select.optionsArray.indexOf(instance.proxy);
}
};
watch(() => currentLabel.value, () => {
if (!props.created && !select.props.remote)
select.setSelected();
});
watch(() => props.value, (val, oldVal) => {
const { remote, valueKey } = select.props;
if (!props.created && !remote) {
if (valueKey && typeof val === "object" && typeof oldVal === "object" && val[valueKey] === oldVal[valueKey]) {
return;
}
select.setSelected();
}
});
watch(() => selectGroup.disabled, () => {
states.groupDisabled = selectGroup.disabled;
}, { immediate: true });
const { queryChange } = toRaw(select);
watch(queryChange, (changes) => {
const { query } = unref(changes);
const regexp4 = new RegExp(escapeStringRegexp(query), "i");
states.visible = regexp4.test(currentLabel.value) || props.created;
if (!states.visible) {
select.filteredOptionsCount--;
}
});
return {
select,
currentLabel,
currentValue,
itemSelected,
isDisabled,
hoverItem
};
}
const _sfc_main$q = defineComponent({
name: "ElOption",
componentName: "ElOption",
props: {
value: {
required: true,
type: [String, Number, Boolean, Object]
},
label: [String, Number],
created: Boolean,
disabled: {
type: Boolean,
default: false
}
},
setup(props) {
const ns = useNamespace("select");
const states = reactive({
index: -1,
groupDisabled: false,
visible: true,
hitState: false,
hover: false
});
const { currentLabel, itemSelected, isDisabled, select, hoverItem } = useOption(props, states);
const { visible, hover } = toRefs(states);
const vm = getCurrentInstance().proxy;
const key = vm.value;
select.onOptionCreate(vm);
onBeforeUnmount(() => {
const { selected } = select;
const selectedOptions = select.props.multiple ? selected : [selected];
const doesSelected = selectedOptions.some((item) => {
return item.value === vm.value;
});
if (select.cachedOptions.get(key) === vm && !doesSelected) {
nextTick(() => {
select.cachedOptions.delete(key);
});
}
select.onOptionDestroy(key, vm);
});
function selectOptionClick() {
if (props.disabled !== true && states.groupDisabled !== true) {
select.handleOptionSelect(vm, true);
}
}
return {
ns,
currentLabel,
itemSelected,
isDisabled,
select,
hoverItem,
visible,
hover,
selectOptionClick,
states
};
}
});
function _sfc_render$c(_ctx, _cache, $props, $setup, $data, $options) {
return withDirectives((openBlock(), createElementBlock("li", {
class: normalizeClass([
_ctx.ns.be("dropdown", "item"),
_ctx.ns.is("disabled", _ctx.isDisabled),
{
selected: _ctx.itemSelected,
hover: _ctx.hover
}
]),
onMouseenter: _cache[0] || (_cache[0] = (...args) => _ctx.hoverItem && _ctx.hoverItem(...args)),
onClick: _cache[1] || (_cache[1] = withModifiers((...args) => _ctx.selectOptionClick && _ctx.selectOptionClick(...args), ["stop"]))
}, [
renderSlot(_ctx.$slots, "default", {}, () => [
createElementVNode("span", null, toDisplayString(_ctx.currentLabel), 1)
])
], 34)), [
[vShow, _ctx.visible]
]);
}
var Option = /* @__PURE__ */ _export_sfc$1(_sfc_main$q, [["render", _sfc_render$c], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/select/src/option.vue"]]);
const _sfc_main$p = defineComponent({
name: "ElSelectDropdown",
componentName: "ElSelectDropdown",
setup() {
const select = inject(selectKey);
const ns = useNamespace("select");
const popperClass = computed(() => select.props.popperClass);
const isMultiple = computed(() => select.props.multiple);
const isFitInputWidth = computed(() => select.props.fitInputWidth);
const minWidth = ref("");
function updateMinWidth() {
var _a2;
minWidth.value = `${(_a2 = select.selectWrapper) == null ? void 0 : _a2.getBoundingClientRect().width}px`;
}
onMounted(() => {
updateMinWidth();
addResizeListener(select.selectWrapper, updateMinWidth);
});
onBeforeUnmount(() => {
removeResizeListener(select.selectWrapper, updateMinWidth);
});
return {
ns,
minWidth,
popperClass,
isMultiple,
isFitInputWidth
};
}
});
function _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", {
class: normalizeClass([_ctx.ns.b("dropdown"), _ctx.ns.is("multiple", _ctx.isMultiple), _ctx.popperClass]),
style: normalizeStyle({ [_ctx.isFitInputWidth ? "width" : "minWidth"]: _ctx.minWidth })
}, [
renderSlot(_ctx.$slots, "default")
], 6);
}
var ElSelectMenu = /* @__PURE__ */ _export_sfc$1(_sfc_main$p, [["render", _sfc_render$b], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/select/src/select-dropdown.vue"]]);
function useSelectStates(props) {
const { t } = useLocale();
return reactive({
options: /* @__PURE__ */ new Map(),
cachedOptions: /* @__PURE__ */ new Map(),
createdLabel: null,
createdSelected: false,
selected: props.multiple ? [] : {},
inputLength: 20,
inputWidth: 0,
initialInputHeight: 0,
optionsCount: 0,
filteredOptionsCount: 0,
visible: false,
softFocus: false,
selectedLabel: "",
hoverIndex: -1,
query: "",
previousQuery: null,
inputHovering: false,
cachedPlaceHolder: "",
currentPlaceholder: t("el.select.placeholder"),
menuVisibleOnFocus: false,
isOnComposition: false,
isSilentBlur: false,
prefixWidth: 11,
tagInMultiLine: false
});
}
const useSelect = (props, states, ctx) => {
const { t } = useLocale();
const ns = useNamespace("select");
const reference2 = ref(null);
const input = ref(null);
const tooltipRef = ref(null);
const tags = ref(null);
const selectWrapper = ref(null);
const scrollbar = ref(null);
const hoverOption = ref(-1);
const queryChange = shallowRef({ query: "" });
const groupQueryChange = shallowRef("");
const elForm2 = inject(formContextKey, {});
const elFormItem2 = inject(formItemContextKey, {});
const readonly2 = computed(() => !props.filterable || props.multiple || !states.visible);
const selectDisabled = computed(() => props.disabled || elForm2.disabled);
const showClose = computed(() => {
const hasValue = props.multiple ? Array.isArray(props.modelValue) && props.modelValue.length > 0 : props.modelValue !== void 0 && props.modelValue !== null && props.modelValue !== "";
const criteria = props.clearable && !selectDisabled.value && states.inputHovering && hasValue;
return criteria;
});
const iconComponent = computed(() => props.remote && props.filterable ? "" : props.suffixIcon);
const iconReverse = computed(() => ns.is("reverse", iconComponent.value && states.visible));
const debounce$1$1 = computed(() => props.remote ? 300 : 0);
const emptyText = computed(() => {
if (props.loading) {
return props.loadingText || t("el.select.loading");
} else {
if (props.remote && states.query === "" && states.options.size === 0)
return false;
if (props.filterable && states.query && states.options.size > 0 && states.filteredOptionsCount === 0) {
return props.noMatchText || t("el.select.noMatch");
}
if (states.options.size === 0) {
return props.noDataText || t("el.select.noData");
}
}
return null;
});
const optionsArray = computed(() => Array.from(states.options.values()));
const cachedOptionsArray = computed(() => Array.from(states.cachedOptions.values()));
const showNewOption = computed(() => {
const hasExistingOption = optionsArray.value.filter((option) => {
return !option.created;
}).some((option) => {
return option.currentLabel === states.query;
});
return props.filterable && props.allowCreate && states.query !== "" && !hasExistingOption;
});
const selectSize = useSize();
const collapseTagSize = computed(() => ["small"].includes(selectSize.value) ? "small" : "default");
const dropMenuVisible = computed({
get() {
return states.visible && emptyText.value !== false;
},
set(val) {
states.visible = val;
}
});
watch(() => selectDisabled.value, () => {
nextTick(() => {
resetInputHeight();
});
});
watch(() => props.placeholder, (val) => {
states.cachedPlaceHolder = states.currentPlaceholder = val;
});
watch(() => props.modelValue, (val, oldVal) => {
var _a2;
if (props.multiple) {
resetInputHeight();
if (val && val.length > 0 || input.value && states.query !== "") {
states.currentPlaceholder = "";
} else {
states.currentPlaceholder = states.cachedPlaceHolder;
}
if (props.filterable && !props.reserveKeyword) {
states.query = "";
handleQueryChange(states.query);
}
}
setSelected();
if (props.filterable && !props.multiple) {
states.inputLength = 20;
}
if (!isEqual(val, oldVal)) {
(_a2 = elFormItem2.validate) == null ? void 0 : _a2.call(elFormItem2, "change").catch((err) => debugWarn());
}
}, {
flush: "post",
deep: true
});
watch(() => states.visible, (val) => {
var _a2, _b2, _c;
if (!val) {
input.value && input.value.blur();
states.query = "";
states.previousQuery = null;
states.selectedLabel = "";
states.inputLength = 20;
states.menuVisibleOnFocus = false;
resetHoverIndex();
nextTick(() => {
if (input.value && input.value.value === "" && states.selected.length === 0) {
states.currentPlaceholder = states.cachedPlaceHolder;
}
});
if (!props.multiple) {
if (states.selected) {
if (props.filterable && props.allowCreate && states.createdSelected && states.createdLabel) {
states.selectedLabel = states.createdLabel;
} else {
states.selectedLabel = states.selected.currentLabel;
}
if (props.filterable)
states.query = states.selectedLabel;
}
if (props.filterable) {
states.currentPlaceholder = states.cachedPlaceHolder;
}
}
} else {
(_b2 = (_a2 = tooltipRef.value) == null ? void 0 : _a2.updatePopper) == null ? void 0 : _b2.call(_a2);
if (props.filterable) {
states.filteredOptionsCount = states.optionsCount;
states.query = props.remote ? "" : states.selectedLabel;
if (props.multiple) {
(_c = input.value) == null ? void 0 : _c.focus();
} else {
if (states.selectedLabel) {
states.currentPlaceholder = `${states.selectedLabel}`;
states.selectedLabel = "";
}
}
handleQueryChange(states.query);
if (!props.multiple && !props.remote) {
queryChange.value.query = "";
triggerRef(queryChange);
triggerRef(groupQueryChange);
}
}
}
ctx.emit("visible-change", val);
});
watch(() => states.options.entries(), () => {
var _a2, _b2, _c;
if (!isClient)
return;
(_b2 = (_a2 = tooltipRef.value) == null ? void 0 : _a2.updatePopper) == null ? void 0 : _b2.call(_a2);
if (props.multiple) {
resetInputHeight();
}
const inputs = ((_c = selectWrapper.value) == null ? void 0 : _c.querySelectorAll("input")) || [];
if (!Array.from(inputs).includes(document.activeElement)) {
setSelected();
}
if (props.defaultFirstOption && (props.filterable || props.remote) && states.filteredOptionsCount) {
checkDefaultFirstOption();
}
}, {
flush: "post"
});
watch(() => states.hoverIndex, (val) => {
if (typeof val === "number" && val > -1) {
hoverOption.value = optionsArray.value[val] || {};
}
optionsArray.value.forEach((option) => {
option.hover = hoverOption.value === option;
});
});
const resetInputHeight = () => {
if (props.collapseTags && !props.filterable)
return;
nextTick(() => {
var _a2, _b2;
if (!reference2.value)
return;
const input2 = reference2.value.$el.querySelector("input");
const _tags = tags.value;
const sizeInMap = states.initialInputHeight || getComponentSize(selectSize.value || elForm2.size);
input2.style.height = states.selected.length === 0 ? `${sizeInMap}px` : `${Math.max(_tags ? _tags.clientHeight + (_tags.clientHeight > sizeInMap ? 6 : 0) : 0, sizeInMap)}px`;
states.tagInMultiLine = Number.parseFloat(input2.style.height) >= sizeInMap;
if (states.visible && emptyText.value !== false) {
(_b2 = (_a2 = tooltipRef.value) == null ? void 0 : _a2.updatePopper) == null ? void 0 : _b2.call(_a2);
}
});
};
const handleQueryChange = (val) => {
if (states.previousQuery === val || states.isOnComposition)
return;
if (states.previousQuery === null && (typeof props.filterMethod === "function" || typeof props.remoteMethod === "function")) {
states.previousQuery = val;
return;
}
states.previousQuery = val;
nextTick(() => {
var _a2, _b2;
if (states.visible)
(_b2 = (_a2 = tooltipRef.value) == null ? void 0 : _a2.updatePopper) == null ? void 0 : _b2.call(_a2);
});
states.hoverIndex = -1;
if (props.multiple && props.filterable) {
nextTick(() => {
const length = input.value.value.length * 15 + 20;
states.inputLength = props.collapseTags ? Math.min(50, length) : length;
managePlaceholder();
resetInputHeight();
});
}
if (props.remote && typeof props.remoteMethod === "function") {
states.hoverIndex = -1;
props.remoteMethod(val);
} else if (typeof props.filterMethod === "function") {
props.filterMethod(val);
triggerRef(groupQueryChange);
} else {
states.filteredOptionsCount = states.optionsCount;
queryChange.value.query = val;
triggerRef(queryChange);
triggerRef(groupQueryChange);
}
if (props.defaultFirstOption && (props.filterable || props.remote) && states.filteredOptionsCount) {
checkDefaultFirstOption();
}
};
const managePlaceholder = () => {
if (states.currentPlaceholder !== "") {
states.currentPlaceholder = input.value.value ? "" : states.cachedPlaceHolder;
}
};
const checkDefaultFirstOption = () => {
const optionsInDropdown = optionsArray.value.filter((n) => n.visible && !n.disabled && !n.states.groupDisabled);
const userCreatedOption = optionsInDropdown.find((n) => n.created);
const firstOriginOption = optionsInDropdown[0];
states.hoverIndex = getValueIndex(optionsArray.value, userCreatedOption || firstOriginOption);
};
const setSelected = () => {
var _a2;
if (!props.multiple) {
const option = getOption(props.modelValue);
if ((_a2 = option.props) == null ? void 0 : _a2.created) {
states.createdLabel = option.props.value;
states.createdSelected = true;
} else {
states.createdSelected = false;
}
states.selectedLabel = option.currentLabel;
states.selected = option;
if (props.filterable)
states.query = states.selectedLabel;
return;
} else {
states.selectedLabel = "";
}
const result = [];
if (Array.isArray(props.modelValue)) {
props.modelValue.forEach((value) => {
result.push(getOption(value));
});
}
states.selected = result;
nextTick(() => {
resetInputHeight();
});
};
const getOption = (value) => {
let option;
const isObjectValue = toRawType(value).toLowerCase() === "object";
const isNull = toRawType(value).toLowerCase() === "null";
const isUndefined2 = toRawType(value).toLowerCase() === "undefined";
for (let i = states.cachedOptions.size - 1; i >= 0; i--) {
const cachedOption = cachedOptionsArray.value[i];
const isEqualValue = isObjectValue ? get(cachedOption, props.valueKey) === get(value, props.valueKey) : cachedOption.value === value;
if (isEqualValue) {
option = {
value,
currentLabel: cachedOption.currentLabel,
isDisabled: cachedOption.isDisabled
};
break;
}
}
if (option)
return option;
const label = isObjectValue ? value.label : !isNull && !isUndefined2 ? value : "";
const newOption = {
value,
currentLabel: label
};
if (props.multiple) {
newOption.hitState = false;
}
return newOption;
};
const resetHoverIndex = () => {
setTimeout(() => {
const valueKey = props.valueKey;
if (!props.multiple) {
states.hoverIndex = optionsArray.value.findIndex((item) => {
return getValueKey(item) === getValueKey(states.selected);
});
} else {
if (states.selected.length > 0) {
states.hoverIndex = Math.min.apply(null, states.selected.map((selected) => {
return optionsArray.value.findIndex((item) => {
return get(item, valueKey) === get(selected, valueKey);
});
}));
} else {
states.hoverIndex = -1;
}
}
}, 300);
};
const handleResize = () => {
var _a2, _b2;
resetInputWidth();
(_b2 = (_a2 = tooltipRef.value) == null ? void 0 : _a2.updatePopper) == null ? void 0 : _b2.call(_a2);
if (props.multiple && !props.filterable)
resetInputHeight();
};
const resetInputWidth = () => {
var _a2;
states.inputWidth = (_a2 = reference2.value) == null ? void 0 : _a2.$el.getBoundingClientRect().width;
};
const onInputChange = () => {
if (props.filterable && states.query !== states.selectedLabel) {
states.query = states.selectedLabel;
handleQueryChange(states.query);
}
};
const debouncedOnInputChange = debounce$1(() => {
onInputChange();
}, debounce$1$1.value);
const debouncedQueryChange = debounce$1((e) => {
handleQueryChange(e.target.value);
}, debounce$1$1.value);
const emitChange = (val) => {
if (!isEqual(props.modelValue, val)) {
ctx.emit(CHANGE_EVENT, val);
}
};
const deletePrevTag = (e) => {
if (e.target.value.length <= 0 && !toggleLastOptionHitState()) {
const value = props.modelValue.slice();
value.pop();
ctx.emit(UPDATE_MODEL_EVENT, value);
emitChange(value);
}
if (e.target.value.length === 1 && props.modelValue.length === 0) {
states.currentPlaceholder = states.cachedPlaceHolder;
}
};
const deleteTag = (event, tag) => {
const index = states.selected.indexOf(tag);
if (index > -1 && !selectDisabled.value) {
const value = props.modelValue.slice();
value.splice(index, 1);
ctx.emit(UPDATE_MODEL_EVENT, value);
emitChange(value);
ctx.emit("remove-tag", tag.value);
}
event.stopPropagation();
};
const deleteSelected = (event) => {
event.stopPropagation();
const value = props.multiple ? [] : "";
if (typeof value !== "string") {
for (const item of states.selected) {
if (item.isDisabled)
value.push(item.value);
}
}
ctx.emit(UPDATE_MODEL_EVENT, value);
emitChange(value);
states.visible = false;
ctx.emit("clear");
};
const handleOptionSelect = (option, byClick) => {
var _a2;
if (props.multiple) {
const value = (props.modelValue || []).slice();
const optionIndex = getValueIndex(value, option.value);
if (optionIndex > -1) {
value.splice(optionIndex, 1);
} else if (props.multipleLimit <= 0 || value.length < props.multipleLimit) {
value.push(option.value);
}
ctx.emit(UPDATE_MODEL_EVENT, value);
emitChange(value);
if (option.created) {
states.query = "";
handleQueryChange("");
states.inputLength = 20;
}
if (props.filterable)
(_a2 = input.value) == null ? void 0 : _a2.focus();
} else {
ctx.emit(UPDATE_MODEL_EVENT, option.value);
emitChange(option.value);
states.visible = false;
}
states.isSilentBlur = byClick;
setSoftFocus();
if (states.visible)
return;
nextTick(() => {
scrollToOption(option);
});
};
const getValueIndex = (arr = [], value) => {
if (!isObject$1(value))
return arr.indexOf(value);
const valueKey = props.valueKey;
let index = -1;
arr.some((item, i) => {
if (get(item, valueKey) === get(value, valueKey)) {
index = i;
return true;
}
return false;
});
return index;
};
const setSoftFocus = () => {
states.softFocus = true;
const _input = input.value || reference2.value;
if (_input) {
_input == null ? void 0 : _input.focus();
}
};
const scrollToOption = (option) => {
var _a2, _b2, _c, _d, _e;
const targetOption = Array.isArray(option) ? option[0] : option;
let target = null;
if (targetOption == null ? void 0 : targetOption.value) {
const options = optionsArray.value.filter((item) => item.value === targetOption.value);
if (options.length > 0) {
target = options[0].$el;
}
}
if (tooltipRef.value && target) {
const menu = (_d = (_c = (_b2 = (_a2 = tooltipRef.value) == null ? void 0 : _a2.popperRef) == null ? void 0 : _b2.contentRef) == null ? void 0 : _c.querySelector) == null ? void 0 : _d.call(_c, `.${ns.be("dropdown", "wrap")}`);
if (menu) {
scrollIntoView(menu, target);
}
}
(_e = scrollbar.value) == null ? void 0 : _e.handleScroll();
};
const onOptionCreate = (vm) => {
states.optionsCount++;
states.filteredOptionsCount++;
states.options.set(vm.value, vm);
states.cachedOptions.set(vm.value, vm);
};
const onOptionDestroy = (key, vm) => {
if (states.options.get(key) === vm) {
states.optionsCount--;
states.filteredOptionsCount--;
states.options.delete(key);
}
};
const resetInputState = (e) => {
if (e.code !== EVENT_CODE.backspace)
toggleLastOptionHitState(false);
states.inputLength = input.value.value.length * 15 + 20;
resetInputHeight();
};
const toggleLastOptionHitState = (hit) => {
if (!Array.isArray(states.selected))
return;
const option = states.selected[states.selected.length - 1];
if (!option)
return;
if (hit === true || hit === false) {
option.hitState = hit;
return hit;
}
option.hitState = !option.hitState;
return option.hitState;
};
const handleComposition = (event) => {
const text = event.target.value;
if (event.type === "compositionend") {
states.isOnComposition = false;
nextTick(() => handleQueryChange(text));
} else {
const lastCharacter = text[text.length - 1] || "";
states.isOnComposition = !isKorean(lastCharacter);
}
};
const handleMenuEnter = () => {
nextTick(() => scrollToOption(states.selected));
};
const handleFocus = (event) => {
if (!states.softFocus) {
if (props.automaticDropdown || props.filterable) {
if (props.filterable && !states.visible) {
states.menuVisibleOnFocus = true;
}
states.visible = true;
}
ctx.emit("focus", event);
} else {
states.softFocus = false;
}
};
const blur = () => {
var _a2;
states.visible = false;
(_a2 = reference2.value) == null ? void 0 : _a2.blur();
};
const handleBlur = (event) => {
nextTick(() => {
if (states.isSilentBlur) {
states.isSilentBlur = false;
} else {
ctx.emit("blur", event);
}
});
states.softFocus = false;
};
const handleClearClick = (event) => {
deleteSelected(event);
};
const handleClose = () => {
states.visible = false;
};
const toggleMenu = () => {
var _a2;
if (props.automaticDropdown)
return;
if (!selectDisabled.value) {
if (states.menuVisibleOnFocus) {
states.menuVisibleOnFocus = false;
} else {
states.visible = !states.visible;
}
if (states.visible) {
(_a2 = input.value || reference2.value) == null ? void 0 : _a2.focus();
}
}
};
const selectOption = () => {
if (!states.visible) {
toggleMenu();
} else {
if (optionsArray.value[states.hoverIndex]) {
handleOptionSelect(optionsArray.value[states.hoverIndex], void 0);
}
}
};
const getValueKey = (item) => {
return isObject$1(item.value) ? get(item.value, props.valueKey) : item.value;
};
const optionsAllDisabled = computed(() => optionsArray.value.filter((option) => option.visible).every((option) => option.disabled));
const navigateOptions = (direction) => {
if (!states.visible) {
states.visible = true;
return;
}
if (states.options.size === 0 || states.filteredOptionsCount === 0)
return;
if (states.isOnComposition)
return;
if (!optionsAllDisabled.value) {
if (direction === "next") {
states.hoverIndex++;
if (states.hoverIndex === states.options.size) {
states.hoverIndex = 0;
}
} else if (direction === "prev") {
states.hoverIndex--;
if (states.hoverIndex < 0) {
states.hoverIndex = states.options.size - 1;
}
}
const option = optionsArray.value[states.hoverIndex];
if (option.disabled === true || option.states.groupDisabled === true || !option.visible) {
navigateOptions(direction);
}
nextTick(() => scrollToOption(hoverOption.value));
}
};
return {
optionsArray,
selectSize,
handleResize,
debouncedOnInputChange,
debouncedQueryChange,
deletePrevTag,
deleteTag,
deleteSelected,
handleOptionSelect,
scrollToOption,
readonly: readonly2,
resetInputHeight,
showClose,
iconComponent,
iconReverse,
showNewOption,
collapseTagSize,
setSelected,
managePlaceholder,
selectDisabled,
emptyText,
toggleLastOptionHitState,
resetInputState,
handleComposition,
onOptionCreate,
onOptionDestroy,
handleMenuEnter,
handleFocus,
blur,
handleBlur,
handleClearClick,
handleClose,
toggleMenu,
selectOption,
getValueKey,
navigateOptions,
dropMenuVisible,
queryChange,
groupQueryChange,
reference: reference2,
input,
tooltipRef,
tags,
selectWrapper,
scrollbar
};
};
const COMPONENT_NAME$1 = "ElSelect";
const _sfc_main$o = defineComponent({
name: COMPONENT_NAME$1,
componentName: COMPONENT_NAME$1,
components: {
ElInput,
ElSelectMenu,
ElOption: Option,
ElTag,
ElScrollbar,
ElTooltip,
ElIcon
},
directives: { ClickOutside },
props: {
name: String,
id: String,
modelValue: {
type: [Array, String, Number, Boolean, Object],
default: void 0
},
autocomplete: {
type: String,
default: "off"
},
automaticDropdown: Boolean,
size: {
type: String,
validator: isValidComponentSize
},
effect: {
type: String,
default: "light"
},
disabled: Boolean,
clearable: Boolean,
filterable: Boolean,
allowCreate: Boolean,
loading: Boolean,
popperClass: {
type: String,
default: ""
},
remote: Boolean,
loadingText: String,
noMatchText: String,
noDataText: String,
remoteMethod: Function,
filterMethod: Function,
multiple: Boolean,
multipleLimit: {
type: Number,
default: 0
},
placeholder: {
type: String
},
defaultFirstOption: Boolean,
reserveKeyword: {
type: Boolean,
default: true
},
valueKey: {
type: String,
default: "value"
},
collapseTags: Boolean,
collapseTagsTooltip: {
type: Boolean,
default: false
},
popperAppendToBody: {
type: Boolean,
default: void 0
},
teleported: useTooltipContentProps.teleported,
persistent: {
type: Boolean,
default: true
},
clearIcon: {
type: [String, Object],
default: circleClose
},
fitInputWidth: {
type: Boolean,
default: false
},
suffixIcon: {
type: [String, Object],
default: arrowUp
},
tagType: __spreadProps(__spreadValues({}, tagProps.type), { default: "info" })
},
emits: [
UPDATE_MODEL_EVENT,
CHANGE_EVENT,
"remove-tag",
"clear",
"visible-change",
"focus",
"blur"
],
setup(props, ctx) {
const nsSelect = useNamespace("select");
const nsInput = useNamespace("input");
const { t } = useLocale();
const states = useSelectStates(props);
const {
optionsArray,
selectSize,
readonly: readonly2,
handleResize,
collapseTagSize,
debouncedOnInputChange,
debouncedQueryChange,
deletePrevTag,
deleteTag,
deleteSelected,
handleOptionSelect,
scrollToOption,
setSelected,
resetInputHeight,
managePlaceholder,
showClose,
selectDisabled,
iconComponent,
iconReverse,
showNewOption,
emptyText,
toggleLastOptionHitState,
resetInputState,
handleComposition,
onOptionCreate,
onOptionDestroy,
handleMenuEnter,
handleFocus,
blur,
handleBlur,
handleClearClick,
handleClose,
toggleMenu,
selectOption,
getValueKey,
navigateOptions,
dropMenuVisible,
reference: reference2,
input,
tooltipRef,
tags,
selectWrapper,
scrollbar,
queryChange,
groupQueryChange
} = useSelect(props, states, ctx);
const { focus } = useFocus(reference2);
const {
inputWidth,
selected,
inputLength,
filteredOptionsCount,
visible,
softFocus,
selectedLabel,
hoverIndex,
query,
inputHovering,
currentPlaceholder,
menuVisibleOnFocus,
isOnComposition,
isSilentBlur,
options,
cachedOptions,
optionsCount,
prefixWidth,
tagInMultiLine
} = toRefs(states);
const wrapperKls = computed(() => {
const classList = [nsSelect.b()];
const _selectSize = unref(selectSize);
if (_selectSize) {
classList.push(nsSelect.m(_selectSize));
}
if (props.disabled) {
classList.push(nsSelect.m("disabled"));
}
return classList;
});
const selectTagsStyle = computed(() => ({
maxWidth: `${unref(inputWidth) - 32}px`,
width: "100%"
}));
provide(selectKey, reactive({
props,
options,
optionsArray,
cachedOptions,
optionsCount,
filteredOptionsCount,
hoverIndex,
handleOptionSelect,
onOptionCreate,
onOptionDestroy,
selectWrapper,
selected,
setSelected,
queryChange,
groupQueryChange
}));
onMounted(() => {
states.cachedPlaceHolder = currentPlaceholder.value = props.placeholder || t("el.select.placeholder");
if (props.multiple && Array.isArray(props.modelValue) && props.modelValue.length > 0) {
currentPlaceholder.value = "";
}
addResizeListener(selectWrapper.value, handleResize);
if (reference2.value && reference2.value.$el) {
const input2 = reference2.value.input;
states.initialInputHeight = input2.getBoundingClientRect().height || getComponentSize(selectSize.value);
}
if (props.remote && props.multiple) {
resetInputHeight();
}
nextTick(() => {
if (!reference2.value)
return;
if (reference2.value.$el) {
inputWidth.value = reference2.value.$el.getBoundingClientRect().width;
}
if (ctx.slots.prefix) {
const inputChildNodes = reference2.value.$el.childNodes;
const input2 = Array.from(inputChildNodes).find((item) => item.tagName === "INPUT");
const prefix = reference2.value.$el.querySelector(`.${nsInput.e("prefix")}`);
prefixWidth.value = Math.max(prefix.getBoundingClientRect().width + 5, 30);
if (states.prefixWidth) {
input2.style.paddingLeft = `${Math.max(states.prefixWidth, 30)}px`;
}
}
});
setSelected();
});
onBeforeUnmount(() => {
removeResizeListener(selectWrapper.value, handleResize);
});
if (props.multiple && !Array.isArray(props.modelValue)) {
ctx.emit(UPDATE_MODEL_EVENT, []);
}
if (!props.multiple && Array.isArray(props.modelValue)) {
ctx.emit(UPDATE_MODEL_EVENT, "");
}
const popperPaneRef = computed(() => {
var _a2, _b2;
return (_b2 = (_a2 = tooltipRef.value) == null ? void 0 : _a2.popperRef) == null ? void 0 : _b2.contentRef;
});
const { compatTeleported } = useDeprecateAppendToBody(COMPONENT_NAME$1, "popperAppendToBody");
return {
tagInMultiLine,
prefixWidth,
selectSize,
readonly: readonly2,
handleResize,
collapseTagSize,
debouncedOnInputChange,
debouncedQueryChange,
deletePrevTag,
deleteTag,
deleteSelected,
handleOptionSelect,
scrollToOption,
inputWidth,
selected,
inputLength,
filteredOptionsCount,
visible,
softFocus,
selectedLabel,
hoverIndex,
query,
inputHovering,
currentPlaceholder,
menuVisibleOnFocus,
isOnComposition,
isSilentBlur,
options,
resetInputHeight,
managePlaceholder,
showClose,
selectDisabled,
iconComponent,
iconReverse,
showNewOption,
emptyText,
toggleLastOptionHitState,
resetInputState,
handleComposition,
handleMenuEnter,
handleFocus,
blur,
handleBlur,
handleClearClick,
handleClose,
toggleMenu,
selectOption,
getValueKey,
navigateOptions,
dropMenuVisible,
focus,
reference: reference2,
input,
tooltipRef,
popperPaneRef,
tags,
selectWrapper,
scrollbar,
wrapperKls,
selectTagsStyle,
compatTeleported,
nsSelect
};
}
});
const _hoisted_1$h = { class: "select-trigger" };
const _hoisted_2$f = ["disabled", "autocomplete"];
const _hoisted_3$a = { style: { "height": "100%", "display": "flex", "justify-content": "center", "align-items": "center" } };
function _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) {
const _component_el_tag = resolveComponent("el-tag");
const _component_el_tooltip = resolveComponent("el-tooltip");
const _component_el_icon = resolveComponent("el-icon");
const _component_el_input = resolveComponent("el-input");
const _component_el_option = resolveComponent("el-option");
const _component_el_scrollbar = resolveComponent("el-scrollbar");
const _component_el_select_menu = resolveComponent("el-select-menu");
const _directive_click_outside = resolveDirective("click-outside");
return withDirectives((openBlock(), createElementBlock("div", {
ref: "selectWrapper",
class: normalizeClass(_ctx.wrapperKls),
onClick: _cache[24] || (_cache[24] = withModifiers((...args) => _ctx.toggleMenu && _ctx.toggleMenu(...args), ["stop"]))
}, [
createVNode(_component_el_tooltip, {
ref: "tooltipRef",
visible: _ctx.dropMenuVisible,
"onUpdate:visible": _cache[23] || (_cache[23] = ($event) => _ctx.dropMenuVisible = $event),
placement: "bottom-start",
teleported: _ctx.compatTeleported,
"popper-class": [_ctx.nsSelect.e("popper"), _ctx.popperClass],
"fallback-placements": ["bottom-start", "top-start", "right", "left"],
effect: _ctx.effect,
pure: "",
trigger: "click",
transition: `${_ctx.nsSelect.namespace.value}-zoom-in-top`,
"stop-popper-mouse-event": false,
"gpu-acceleration": false,
persistent: _ctx.persistent,
onShow: _ctx.handleMenuEnter
}, {
default: withCtx(() => [
createElementVNode("div", _hoisted_1$h, [
_ctx.multiple ? (openBlock(), createElementBlock("div", {
key: 0,
ref: "tags",
class: normalizeClass(_ctx.nsSelect.e("tags")),
style: normalizeStyle(_ctx.selectTagsStyle)
}, [
_ctx.collapseTags && _ctx.selected.length ? (openBlock(), createElementBlock("span", {
key: 0,
class: normalizeClass([
_ctx.nsSelect.b("tags-wrapper"),
{ "has-prefix": _ctx.prefixWidth && _ctx.selected.length }
])
}, [
createVNode(_component_el_tag, {
closable: !_ctx.selectDisabled && !_ctx.selected[0].isDisabled,
size: _ctx.collapseTagSize,
hit: _ctx.selected[0].hitState,
type: _ctx.tagType,
"disable-transitions": "",
onClose: _cache[0] || (_cache[0] = ($event) => _ctx.deleteTag($event, _ctx.selected[0]))
}, {
default: withCtx(() => [
createElementVNode("span", {
class: normalizeClass(_ctx.nsSelect.e("tags-text")),
style: normalizeStyle({ maxWidth: _ctx.inputWidth - 123 + "px" })
}, toDisplayString(_ctx.selected[0].currentLabel), 7)
]),
_: 1
}, 8, ["closable", "size", "hit", "type"]),
_ctx.selected.length > 1 ? (openBlock(), createBlock(_component_el_tag, {
key: 0,
closable: false,
size: _ctx.collapseTagSize,
type: _ctx.tagType,
"disable-transitions": ""
}, {
default: withCtx(() => [
_ctx.collapseTagsTooltip ? (openBlock(), createBlock(_component_el_tooltip, {
key: 0,
disabled: _ctx.dropMenuVisible,
"fallback-placements": ["bottom", "top", "right", "left"],
effect: _ctx.effect,
placement: "bottom",
teleported: false
}, {
default: withCtx(() => [
createElementVNode("span", {
class: normalizeClass(_ctx.nsSelect.e("tags-text"))
}, "+ " + toDisplayString(_ctx.selected.length - 1), 3)
]),
content: withCtx(() => [
createElementVNode("div", {
class: normalizeClass(_ctx.nsSelect.e("collapse-tags"))
}, [
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.selected, (item, idx) => {
return openBlock(), createElementBlock("div", {
key: idx,
class: normalizeClass(_ctx.nsSelect.e("collapse-tag"))
}, [
(openBlock(), createBlock(_component_el_tag, {
key: _ctx.getValueKey(item),
class: "in-tooltip",
closable: !_ctx.selectDisabled && !item.isDisabled,
size: _ctx.collapseTagSize,
hit: item.hitState,
type: _ctx.tagType,
"disable-transitions": "",
style: { margin: "2px" },
onClose: ($event) => _ctx.deleteTag($event, item)
}, {
default: withCtx(() => [
createElementVNode("span", {
class: normalizeClass(_ctx.nsSelect.e("tags-text")),
style: normalizeStyle({
maxWidth: _ctx.inputWidth - 75 + "px"
})
}, toDisplayString(item.currentLabel), 7)
]),
_: 2
}, 1032, ["closable", "size", "hit", "type", "onClose"]))
], 2);
}), 128))
], 2)
]),
_: 1
}, 8, ["disabled", "effect"])) : (openBlock(), createElementBlock("span", {
key: 1,
class: normalizeClass(_ctx.nsSelect.e("tags-text"))
}, "+ " + toDisplayString(_ctx.selected.length - 1), 3))
]),
_: 1
}, 8, ["size", "type"])) : createCommentVNode("v-if", true)
], 2)) : createCommentVNode("v-if", true),
createCommentVNode("
"),
!_ctx.collapseTags ? (openBlock(), createBlock(Transition, {
key: 1,
onAfterLeave: _ctx.resetInputHeight
}, {
default: withCtx(() => [
createElementVNode("span", {
class: normalizeClass([
_ctx.nsSelect.b("tags-wrapper"),
{ "has-prefix": _ctx.prefixWidth && _ctx.selected.length }
])
}, [
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.selected, (item) => {
return openBlock(), createBlock(_component_el_tag, {
key: _ctx.getValueKey(item),
closable: !_ctx.selectDisabled && !item.isDisabled,
size: _ctx.collapseTagSize,
hit: item.hitState,
type: _ctx.tagType,
"disable-transitions": "",
onClose: ($event) => _ctx.deleteTag($event, item)
}, {
default: withCtx(() => [
createElementVNode("span", {
class: normalizeClass(_ctx.nsSelect.e("tags-text")),
style: normalizeStyle({ maxWidth: _ctx.inputWidth - 75 + "px" })
}, toDisplayString(item.currentLabel), 7)
]),
_: 2
}, 1032, ["closable", "size", "hit", "type", "onClose"]);
}), 128))
], 2)
]),
_: 1
}, 8, ["onAfterLeave"])) : createCommentVNode("v-if", true),
createCommentVNode("
"),
_ctx.filterable ? withDirectives((openBlock(), createElementBlock("input", {
key: 2,
ref: "input",
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => _ctx.query = $event),
type: "text",
class: normalizeClass([_ctx.nsSelect.e("input"), _ctx.nsSelect.is(_ctx.selectSize)]),
disabled: _ctx.selectDisabled,
autocomplete: _ctx.autocomplete,
style: normalizeStyle({
marginLeft: _ctx.prefixWidth && !_ctx.selected.length || _ctx.tagInMultiLine ? `${_ctx.prefixWidth}px` : "",
flexGrow: 1,
width: `${_ctx.inputLength / (_ctx.inputWidth - 32)}%`,
maxWidth: `${_ctx.inputWidth - 42}px`
}),
onFocus: _cache[2] || (_cache[2] = (...args) => _ctx.handleFocus && _ctx.handleFocus(...args)),
onBlur: _cache[3] || (_cache[3] = (...args) => _ctx.handleBlur && _ctx.handleBlur(...args)),
onKeyup: _cache[4] || (_cache[4] = (...args) => _ctx.managePlaceholder && _ctx.managePlaceholder(...args)),
onKeydown: [
_cache[5] || (_cache[5] = (...args) => _ctx.resetInputState && _ctx.resetInputState(...args)),
_cache[6] || (_cache[6] = withKeys(withModifiers(($event) => _ctx.navigateOptions("next"), ["prevent"]), ["down"])),
_cache[7] || (_cache[7] = withKeys(withModifiers(($event) => _ctx.navigateOptions("prev"), ["prevent"]), ["up"])),
_cache[8] || (_cache[8] = withKeys(withModifiers(($event) => _ctx.visible = false, ["stop", "prevent"]), ["esc"])),
_cache[9] || (_cache[9] = withKeys(withModifiers((...args) => _ctx.selectOption && _ctx.selectOption(...args), ["stop", "prevent"]), ["enter"])),
_cache[10] || (_cache[10] = withKeys((...args) => _ctx.deletePrevTag && _ctx.deletePrevTag(...args), ["delete"])),
_cache[11] || (_cache[11] = withKeys(($event) => _ctx.visible = false, ["tab"]))
],
onCompositionstart: _cache[12] || (_cache[12] = (...args) => _ctx.handleComposition && _ctx.handleComposition(...args)),
onCompositionupdate: _cache[13] || (_cache[13] = (...args) => _ctx.handleComposition && _ctx.handleComposition(...args)),
onCompositionend: _cache[14] || (_cache[14] = (...args) => _ctx.handleComposition && _ctx.handleComposition(...args)),
onInput: _cache[15] || (_cache[15] = (...args) => _ctx.debouncedQueryChange && _ctx.debouncedQueryChange(...args))
}, null, 46, _hoisted_2$f)), [
[vModelText, _ctx.query]
]) : createCommentVNode("v-if", true)
], 6)) : createCommentVNode("v-if", true),
createVNode(_component_el_input, {
id: _ctx.id,
ref: "reference",
modelValue: _ctx.selectedLabel,
"onUpdate:modelValue": _cache[16] || (_cache[16] = ($event) => _ctx.selectedLabel = $event),
type: "text",
placeholder: _ctx.currentPlaceholder,
name: _ctx.name,
autocomplete: _ctx.autocomplete,
size: _ctx.selectSize,
disabled: _ctx.selectDisabled,
readonly: _ctx.readonly,
"validate-event": false,
class: normalizeClass([_ctx.nsSelect.is("focus", _ctx.visible)]),
tabindex: _ctx.multiple && _ctx.filterable ? -1 : void 0,
onFocus: _ctx.handleFocus,
onBlur: _ctx.handleBlur,
onInput: _ctx.debouncedOnInputChange,
onPaste: _ctx.debouncedOnInputChange,
onCompositionstart: _ctx.handleComposition,
onCompositionupdate: _ctx.handleComposition,
onCompositionend: _ctx.handleComposition,
onKeydown: [
_cache[17] || (_cache[17] = withKeys(withModifiers(($event) => _ctx.navigateOptions("next"), ["stop", "prevent"]), ["down"])),
_cache[18] || (_cache[18] = withKeys(withModifiers(($event) => _ctx.navigateOptions("prev"), ["stop", "prevent"]), ["up"])),
withKeys(withModifiers(_ctx.selectOption, ["stop", "prevent"]), ["enter"]),
_cache[19] || (_cache[19] = withKeys(withModifiers(($event) => _ctx.visible = false, ["stop", "prevent"]), ["esc"])),
_cache[20] || (_cache[20] = withKeys(($event) => _ctx.visible = false, ["tab"]))
],
onMouseenter: _cache[21] || (_cache[21] = ($event) => _ctx.inputHovering = true),
onMouseleave: _cache[22] || (_cache[22] = ($event) => _ctx.inputHovering = false)
}, createSlots({
suffix: withCtx(() => [
_ctx.iconComponent && !_ctx.showClose ? (openBlock(), createBlock(_component_el_icon, {
key: 0,
class: normalizeClass([_ctx.nsSelect.e("caret"), _ctx.nsSelect.e("icon"), _ctx.iconReverse])
}, {
default: withCtx(() => [
(openBlock(), createBlock(resolveDynamicComponent(_ctx.iconComponent)))
]),
_: 1
}, 8, ["class"])) : createCommentVNode("v-if", true),
_ctx.showClose && _ctx.clearIcon ? (openBlock(), createBlock(_component_el_icon, {
key: 1,
class: normalizeClass([_ctx.nsSelect.e("caret"), _ctx.nsSelect.e("icon")]),
onClick: _ctx.handleClearClick
}, {
default: withCtx(() => [
(openBlock(), createBlock(resolveDynamicComponent(_ctx.clearIcon)))
]),
_: 1
}, 8, ["class", "onClick"])) : createCommentVNode("v-if", true)
]),
_: 2
}, [
_ctx.$slots.prefix ? {
name: "prefix",
fn: withCtx(() => [
createElementVNode("div", _hoisted_3$a, [
renderSlot(_ctx.$slots, "prefix")
])
])
} : void 0
]), 1032, ["id", "modelValue", "placeholder", "name", "autocomplete", "size", "disabled", "readonly", "class", "tabindex", "onFocus", "onBlur", "onInput", "onPaste", "onCompositionstart", "onCompositionupdate", "onCompositionend", "onKeydown"])
])
]),
content: withCtx(() => [
createVNode(_component_el_select_menu, null, {
default: withCtx(() => [
withDirectives(createVNode(_component_el_scrollbar, {
ref: "scrollbar",
tag: "ul",
"wrap-class": _ctx.nsSelect.be("dropdown", "wrap"),
"view-class": _ctx.nsSelect.be("dropdown", "list"),
class: normalizeClass([
_ctx.nsSelect.is("empty", !_ctx.allowCreate && Boolean(_ctx.query) && _ctx.filteredOptionsCount === 0)
])
}, {
default: withCtx(() => [
_ctx.showNewOption ? (openBlock(), createBlock(_component_el_option, {
key: 0,
value: _ctx.query,
created: true
}, null, 8, ["value"])) : createCommentVNode("v-if", true),
renderSlot(_ctx.$slots, "default")
]),
_: 3
}, 8, ["wrap-class", "view-class", "class"]), [
[vShow, _ctx.options.size > 0 && !_ctx.loading]
]),
_ctx.emptyText && (!_ctx.allowCreate || _ctx.loading || _ctx.allowCreate && _ctx.options.size === 0) ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
_ctx.$slots.empty ? renderSlot(_ctx.$slots, "empty", { key: 0 }) : (openBlock(), createElementBlock("p", {
key: 1,
class: normalizeClass(_ctx.nsSelect.be("dropdown", "empty"))
}, toDisplayString(_ctx.emptyText), 3))
], 2112)) : createCommentVNode("v-if", true)
]),
_: 3
})
]),
_: 3
}, 8, ["visible", "teleported", "popper-class", "effect", "transition", "persistent", "onShow"])
], 2)), [
[_directive_click_outside, _ctx.handleClose, _ctx.popperPaneRef]
]);
}
var Select = /* @__PURE__ */ _export_sfc$1(_sfc_main$o, [["render", _sfc_render$a], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/select/src/select.vue"]]);
const _sfc_main$n = defineComponent({
name: "ElOptionGroup",
componentName: "ElOptionGroup",
props: {
label: String,
disabled: {
type: Boolean,
default: false
}
},
setup(props) {
const ns = useNamespace("select");
const visible = ref(true);
const instance = getCurrentInstance();
const children = ref([]);
provide(selectGroupKey, reactive(__spreadValues({}, toRefs(props))));
const select = inject(selectKey);
onMounted(() => {
children.value = flattedChildren(instance.subTree);
});
const flattedChildren = (node) => {
const children2 = [];
if (Array.isArray(node.children)) {
node.children.forEach((child) => {
var _a2;
if (child.type && child.type.name === "ElOption" && child.component && child.component.proxy) {
children2.push(child.component.proxy);
} else if ((_a2 = child.children) == null ? void 0 : _a2.length) {
children2.push(...flattedChildren(child));
}
});
}
return children2;
};
const { groupQueryChange } = toRaw(select);
watch(groupQueryChange, () => {
visible.value = children.value.some((option) => option.visible === true);
});
return {
visible,
ns
};
}
});
function _sfc_render$9(_ctx, _cache, $props, $setup, $data, $options) {
return withDirectives((openBlock(), createElementBlock("ul", {
class: normalizeClass(_ctx.ns.be("group", "wrap"))
}, [
createElementVNode("li", {
class: normalizeClass(_ctx.ns.be("group", "title"))
}, toDisplayString(_ctx.label), 3),
createElementVNode("li", null, [
createElementVNode("ul", {
class: normalizeClass(_ctx.ns.b("group"))
}, [
renderSlot(_ctx.$slots, "default")
], 2)
])
], 2)), [
[vShow, _ctx.visible]
]);
}
var OptionGroup = /* @__PURE__ */ _export_sfc$1(_sfc_main$n, [["render", _sfc_render$9], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/select/src/option-group.vue"]]);
const ElSelect = withInstall(Select, {
Option,
OptionGroup
});
const ElOption = withNoopInstall(Option);
withNoopInstall(OptionGroup);
const progressProps = buildProps({
type: {
type: String,
default: "line",
values: ["line", "circle", "dashboard"]
},
percentage: {
type: Number,
default: 0,
validator: (val) => val >= 0 && val <= 100
},
status: {
type: String,
default: "",
values: ["", "success", "exception", "warning"]
},
indeterminate: {
type: Boolean,
default: false
},
duration: {
type: Number,
default: 3
},
strokeWidth: {
type: Number,
default: 6
},
strokeLinecap: {
type: definePropType(String),
default: "round"
},
textInside: {
type: Boolean,
default: false
},
width: {
type: Number,
default: 126
},
showText: {
type: Boolean,
default: true
},
color: {
type: definePropType([
String,
Array,
Function
]),
default: ""
},
format: {
type: definePropType(Function),
default: (percentage) => `${percentage}%`
}
});
const _sfc_main$m = defineComponent({
name: "ElProgress",
components: {
ElIcon,
CircleCheck: circleCheck,
CircleClose: circleClose,
Check: check,
Close: close,
WarningFilled: warningFilled
},
props: progressProps,
setup(props) {
const ns = useNamespace("progress");
const barStyle = computed(() => ({
width: `${props.percentage}%`,
animationDuration: `${props.duration}s`,
backgroundColor: getCurrentColor(props.percentage)
}));
const relativeStrokeWidth = computed(() => (props.strokeWidth / props.width * 100).toFixed(1));
const radius = computed(() => {
if (props.type === "circle" || props.type === "dashboard") {
return Number.parseInt(`${50 - Number.parseFloat(relativeStrokeWidth.value) / 2}`, 10);
} else {
return 0;
}
});
const trackPath = computed(() => {
const r = radius.value;
const isDashboard = props.type === "dashboard";
return `
M 50 50
m 0 ${isDashboard ? "" : "-"}${r}
a ${r} ${r} 0 1 1 0 ${isDashboard ? "-" : ""}${r * 2}
a ${r} ${r} 0 1 1 0 ${isDashboard ? "" : "-"}${r * 2}
`;
});
const perimeter = computed(() => 2 * Math.PI * radius.value);
const rate = computed(() => props.type === "dashboard" ? 0.75 : 1);
const strokeDashoffset = computed(() => {
const offset2 = -1 * perimeter.value * (1 - rate.value) / 2;
return `${offset2}px`;
});
const trailPathStyle = computed(() => ({
strokeDasharray: `${perimeter.value * rate.value}px, ${perimeter.value}px`,
strokeDashoffset: strokeDashoffset.value
}));
const circlePathStyle = computed(() => ({
strokeDasharray: `${perimeter.value * rate.value * (props.percentage / 100)}px, ${perimeter.value}px`,
strokeDashoffset: strokeDashoffset.value,
transition: "stroke-dasharray 0.6s ease 0s, stroke 0.6s ease"
}));
const stroke = computed(() => {
let ret;
if (props.color) {
ret = getCurrentColor(props.percentage);
} else {
switch (props.status) {
case "success":
ret = "#13ce66";
break;
case "exception":
ret = "#ff4949";
break;
case "warning":
ret = "#e6a23c";
break;
default:
ret = "#20a0ff";
}
}
return ret;
});
const statusIcon = computed(() => {
if (props.status === "warning") {
return warningFilled;
}
if (props.type === "line") {
return props.status === "success" ? circleCheck : circleClose;
} else {
return props.status === "success" ? check : close;
}
});
const progressTextSize = computed(() => {
return props.type === "line" ? 12 + props.strokeWidth * 0.4 : props.width * 0.111111 + 2;
});
const content2 = computed(() => props.format(props.percentage));
const getCurrentColor = (percentage) => {
var _a2;
const { color } = props;
if (typeof color === "function") {
return color(percentage);
} else if (typeof color === "string") {
return color;
} else {
const span = 100 / color.length;
const seriesColors = color.map((seriesColor, index) => {
if (typeof seriesColor === "string") {
return {
color: seriesColor,
percentage: (index + 1) * span
};
}
return seriesColor;
});
const colors = seriesColors.sort((a2, b2) => a2.percentage - b2.percentage);
for (const color2 of colors) {
if (color2.percentage > percentage)
return color2.color;
}
return (_a2 = colors[colors.length - 1]) == null ? void 0 : _a2.color;
}
};
const slotData = computed(() => {
return {
percentage: props.percentage
};
});
return {
ns,
barStyle,
relativeStrokeWidth,
radius,
trackPath,
perimeter,
rate,
strokeDashoffset,
trailPathStyle,
circlePathStyle,
stroke,
statusIcon,
progressTextSize,
content: content2,
slotData
};
}
});
const _hoisted_1$g = ["aria-valuenow"];
const _hoisted_2$e = { viewBox: "0 0 100 100" };
const _hoisted_3$9 = ["d", "stroke-width"];
const _hoisted_4$8 = ["d", "stroke", "stroke-linecap", "stroke-width"];
const _hoisted_5$8 = { key: 0 };
function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {
const _component_el_icon = resolveComponent("el-icon");
return openBlock(), createElementBlock("div", {
class: normalizeClass([
_ctx.ns.b(),
_ctx.ns.m(_ctx.type),
_ctx.ns.is(_ctx.status),
{
[_ctx.ns.m("without-text")]: !_ctx.showText,
[_ctx.ns.m("text-inside")]: _ctx.textInside
}
]),
role: "progressbar",
"aria-valuenow": _ctx.percentage,
"aria-valuemin": "0",
"aria-valuemax": "100"
}, [
_ctx.type === "line" ? (openBlock(), createElementBlock("div", {
key: 0,
class: normalizeClass(_ctx.ns.b("bar"))
}, [
createElementVNode("div", {
class: normalizeClass(_ctx.ns.be("bar", "outer")),
style: normalizeStyle({ height: `${_ctx.strokeWidth}px` })
}, [
createElementVNode("div", {
class: normalizeClass([
_ctx.ns.be("bar", "inner"),
{ [_ctx.ns.bem("bar", "inner", "indeterminate")]: _ctx.indeterminate }
]),
style: normalizeStyle(_ctx.barStyle)
}, [
(_ctx.showText || _ctx.$slots.default) && _ctx.textInside ? (openBlock(), createElementBlock("div", {
key: 0,
class: normalizeClass(_ctx.ns.be("bar", "innerText"))
}, [
renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(_ctx.slotData)), () => [
createElementVNode("span", null, toDisplayString(_ctx.content), 1)
])
], 2)) : createCommentVNode("v-if", true)
], 6)
], 6)
], 2)) : (openBlock(), createElementBlock("div", {
key: 1,
class: normalizeClass(_ctx.ns.b("circle")),
style: normalizeStyle({ height: `${_ctx.width}px`, width: `${_ctx.width}px` })
}, [
(openBlock(), createElementBlock("svg", _hoisted_2$e, [
createElementVNode("path", {
class: normalizeClass(_ctx.ns.be("circle", "track")),
d: _ctx.trackPath,
stroke: "var(--el-fill-color-light, #e5e9f2)",
"stroke-width": _ctx.relativeStrokeWidth,
fill: "none",
style: normalizeStyle(_ctx.trailPathStyle)
}, null, 14, _hoisted_3$9),
createElementVNode("path", {
class: normalizeClass(_ctx.ns.be("circle", "path")),
d: _ctx.trackPath,
stroke: _ctx.stroke,
fill: "none",
"stroke-linecap": _ctx.strokeLinecap,
"stroke-width": _ctx.percentage ? _ctx.relativeStrokeWidth : 0,
style: normalizeStyle(_ctx.circlePathStyle)
}, null, 14, _hoisted_4$8)
]))
], 6)),
(_ctx.showText || _ctx.$slots.default) && !_ctx.textInside ? (openBlock(), createElementBlock("div", {
key: 2,
class: normalizeClass(_ctx.ns.e("text")),
style: normalizeStyle({ fontSize: `${_ctx.progressTextSize}px` })
}, [
renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(_ctx.slotData)), () => [
!_ctx.status ? (openBlock(), createElementBlock("span", _hoisted_5$8, toDisplayString(_ctx.content), 1)) : (openBlock(), createBlock(_component_el_icon, { key: 1 }, {
default: withCtx(() => [
(openBlock(), createBlock(resolveDynamicComponent(_ctx.statusIcon)))
]),
_: 1
}))
])
], 6)) : createCommentVNode("v-if", true)
], 10, _hoisted_1$g);
}
var Progress = /* @__PURE__ */ _export_sfc$1(_sfc_main$m, [["render", _sfc_render$8], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/progress/src/progress.vue"]]);
const ElProgress = withInstall(Progress);
const rateProps = buildProps({
modelValue: {
type: Number,
default: 0
},
lowThreshold: {
type: Number,
default: 2
},
highThreshold: {
type: Number,
default: 4
},
max: {
type: Number,
default: 5
},
colors: {
type: definePropType([Array, Object]),
default: () => mutable(["", "", ""])
},
voidColor: {
type: String,
default: ""
},
disabledVoidColor: {
type: String,
default: ""
},
icons: {
type: definePropType([Array, Object]),
default: () => [starFilled, starFilled, starFilled]
},
voidIcon: {
type: iconPropType,
default: () => star
},
disabledVoidIcon: {
type: iconPropType,
default: () => starFilled
},
disabled: {
type: Boolean,
default: false
},
allowHalf: {
type: Boolean,
default: false
},
showText: {
type: Boolean,
default: false
},
showScore: {
type: Boolean,
default: false
},
textColor: {
type: String,
default: ""
},
texts: {
type: definePropType(Array),
default: () => mutable([
"Extremely bad",
"Disappointed",
"Fair",
"Satisfied",
"Surprise"
])
},
scoreTemplate: {
type: String,
default: "{value}"
},
size: {
type: String,
validator: isValidComponentSize
}
});
const rateEmits = {
change: (value) => typeof value === "number",
[UPDATE_MODEL_EVENT]: (value) => typeof value === "number"
};
const _hoisted_1$f = ["aria-valuenow", "aria-valuetext", "aria-valuemax"];
const _hoisted_2$d = ["onMousemove", "onClick"];
const __default__$5 = {
name: "ElRate"
};
const _sfc_main$l = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({}, __default__$5), {
props: rateProps,
emits: rateEmits,
setup(__props, { expose, emit }) {
const props = __props;
function getValueFromMap(value, map) {
const isExcludedObject = (val) => isObject$1(val);
const matchedKeys = Object.keys(map).map((key) => +key).filter((key) => {
const val = map[key];
const excluded = isExcludedObject(val) ? val.excluded : false;
return excluded ? value < key : value <= key;
}).sort((a2, b2) => a2 - b2);
const matchedValue = map[matchedKeys[0]];
return isExcludedObject(matchedValue) && matchedValue.value || matchedValue;
}
const formContext = inject(formContextKey, void 0);
const rateSize = useSize();
const ns = useNamespace("rate");
const currentValue = ref(props.modelValue);
const hoverIndex = ref(-1);
const pointerAtLeftHalf = ref(true);
const rateClasses = computed(() => [ns.b(), ns.m(rateSize.value)]);
const rateDisabled = computed(() => props.disabled || (formContext == null ? void 0 : formContext.disabled));
const rateStyles = computed(() => {
return {
"--el-rate-void-color": props.voidColor,
"--el-rate-disabled-void-color": props.disabledVoidColor,
"--el-rate-fill-color": activeColor.value
};
});
const text = computed(() => {
let result = "";
if (props.showScore) {
result = props.scoreTemplate.replace(/\{\s*value\s*\}/, rateDisabled.value ? `${props.modelValue}` : `${currentValue.value}`);
} else if (props.showText) {
result = props.texts[Math.ceil(currentValue.value) - 1];
}
return result;
});
const valueDecimal = computed(() => props.modelValue * 100 - Math.floor(props.modelValue) * 100);
const colorMap = computed(() => isArray(props.colors) ? {
[props.lowThreshold]: props.colors[0],
[props.highThreshold]: { value: props.colors[1], excluded: true },
[props.max]: props.colors[2]
} : props.colors);
const activeColor = computed(() => {
const color = getValueFromMap(currentValue.value, colorMap.value);
return isObject$1(color) ? "" : color;
});
const decimalStyle = computed(() => {
let width = "";
if (rateDisabled.value) {
width = `${valueDecimal.value}%`;
} else if (props.allowHalf) {
width = "50%";
}
return {
color: activeColor.value,
width
};
});
const componentMap = computed(() => isArray(props.icons) ? {
[props.lowThreshold]: props.icons[0],
[props.highThreshold]: {
value: props.icons[1],
excluded: true
},
[props.max]: props.icons[2]
} : props.icons);
const decimalIconComponent = computed(() => getValueFromMap(props.modelValue, componentMap.value));
const voidComponent = computed(() => rateDisabled.value ? props.disabledVoidIcon : props.voidIcon);
const activeComponent = computed(() => getValueFromMap(currentValue.value, componentMap.value));
const iconComponents = computed(() => {
const result = Array.from({ length: props.max });
const threshold = currentValue.value;
result.fill(activeComponent.value, 0, threshold);
result.fill(voidComponent.value, threshold, props.max);
return result;
});
function showDecimalIcon(item) {
const showWhenDisabled = rateDisabled.value && valueDecimal.value > 0 && item - 1 < props.modelValue && item > props.modelValue;
const showWhenAllowHalf = props.allowHalf && pointerAtLeftHalf.value && item - 0.5 <= currentValue.value && item > currentValue.value;
return showWhenDisabled || showWhenAllowHalf;
}
function selectValue(value) {
if (rateDisabled.value) {
return;
}
if (props.allowHalf && pointerAtLeftHalf.value) {
emit(UPDATE_MODEL_EVENT, currentValue.value);
if (props.modelValue !== currentValue.value) {
emit("change", currentValue.value);
}
} else {
emit(UPDATE_MODEL_EVENT, value);
if (props.modelValue !== value) {
emit("change", value);
}
}
}
function handleKey(e) {
if (rateDisabled.value) {
return;
}
let _currentValue = currentValue.value;
const code = e.code;
if (code === EVENT_CODE.up || code === EVENT_CODE.right) {
if (props.allowHalf) {
_currentValue += 0.5;
} else {
_currentValue += 1;
}
e.stopPropagation();
e.preventDefault();
} else if (code === EVENT_CODE.left || code === EVENT_CODE.down) {
if (props.allowHalf) {
_currentValue -= 0.5;
} else {
_currentValue -= 1;
}
e.stopPropagation();
e.preventDefault();
}
_currentValue = _currentValue < 0 ? 0 : _currentValue;
_currentValue = _currentValue > props.max ? props.max : _currentValue;
emit(UPDATE_MODEL_EVENT, _currentValue);
emit("change", _currentValue);
return _currentValue;
}
function setCurrentValue(value, event) {
if (rateDisabled.value) {
return;
}
if (props.allowHalf) {
let target = event.target;
if (hasClass(target, ns.e("item"))) {
target = target.querySelector(`.${ns.e("icon")}`);
}
if (target.clientWidth === 0 || hasClass(target, ns.e("decimal"))) {
target = target.parentNode;
}
pointerAtLeftHalf.value = event.offsetX * 2 <= target.clientWidth;
currentValue.value = pointerAtLeftHalf.value ? value - 0.5 : value;
} else {
currentValue.value = value;
}
hoverIndex.value = value;
}
function resetCurrentValue() {
if (rateDisabled.value) {
return;
}
if (props.allowHalf) {
pointerAtLeftHalf.value = props.modelValue !== Math.floor(props.modelValue);
}
currentValue.value = props.modelValue;
hoverIndex.value = -1;
}
watch(() => props.modelValue, (val) => {
currentValue.value = val;
pointerAtLeftHalf.value = props.modelValue !== Math.floor(props.modelValue);
});
if (!props.modelValue) {
emit(UPDATE_MODEL_EVENT, 0);
}
expose({
setCurrentValue,
resetCurrentValue
});
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", {
class: normalizeClass([unref(rateClasses), unref(ns).is("disabled", unref(rateDisabled))]),
role: "slider",
"aria-valuenow": currentValue.value,
"aria-valuetext": unref(text),
"aria-valuemin": "0",
"aria-valuemax": _ctx.max,
tabindex: "0",
style: normalizeStyle(unref(rateStyles)),
onKeydown: handleKey
}, [
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.max, (item, key) => {
return openBlock(), createElementBlock("span", {
key,
class: normalizeClass(unref(ns).e("item")),
onMousemove: ($event) => setCurrentValue(item, $event),
onMouseleave: resetCurrentValue,
onClick: ($event) => selectValue(item)
}, [
createVNode(unref(ElIcon), {
class: normalizeClass([
unref(ns).e("icon"),
{ hover: hoverIndex.value === item },
unref(ns).is("active", item <= currentValue.value)
])
}, {
default: withCtx(() => [
!showDecimalIcon(item) ? (openBlock(), createBlock(resolveDynamicComponent(unref(iconComponents)[item - 1]), { key: 0 })) : createCommentVNode("v-if", true),
showDecimalIcon(item) ? (openBlock(), createBlock(unref(ElIcon), {
key: 1,
style: normalizeStyle(unref(decimalStyle)),
class: normalizeClass([unref(ns).e("icon"), unref(ns).e("decimal")])
}, {
default: withCtx(() => [
(openBlock(), createBlock(resolveDynamicComponent(unref(decimalIconComponent))))
]),
_: 1
}, 8, ["style", "class"])) : createCommentVNode("v-if", true)
]),
_: 2
}, 1032, ["class"])
], 42, _hoisted_2$d);
}), 128)),
_ctx.showText || _ctx.showScore ? (openBlock(), createElementBlock("span", {
key: 0,
class: normalizeClass(unref(ns).e("text"))
}, toDisplayString(unref(text)), 3)) : createCommentVNode("v-if", true)
], 46, _hoisted_1$f);
};
}
}));
var Rate = /* @__PURE__ */ _export_sfc$1(_sfc_main$l, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/rate/src/rate.vue"]]);
const ElRate = withInstall(Rate);
const useTooltip = (props, formatTooltip, showTooltip) => {
const tooltip = ref(null);
const tooltipVisible = ref(false);
const enableFormat = computed(() => {
return formatTooltip.value instanceof Function;
});
const formatValue = computed(() => {
return enableFormat.value && formatTooltip.value(props.modelValue) || props.modelValue;
});
const displayTooltip = debounce$1(() => {
showTooltip.value && (tooltipVisible.value = true);
}, 50);
const hideTooltip = debounce$1(() => {
showTooltip.value && (tooltipVisible.value = false);
}, 50);
return {
tooltip,
tooltipVisible,
formatValue,
displayTooltip,
hideTooltip
};
};
const useSliderButton = (props, initData, emit) => {
const {
disabled,
min: min2,
max: max2,
step,
showTooltip,
precision,
sliderSize,
formatTooltip,
emitChange,
resetSize,
updateDragging
} = inject("SliderProvider");
const { tooltip, tooltipVisible, formatValue, displayTooltip, hideTooltip } = useTooltip(props, formatTooltip, showTooltip);
const currentPosition = computed(() => {
return `${(props.modelValue - min2.value) / (max2.value - min2.value) * 100}%`;
});
const wrapperStyle = computed(() => {
return props.vertical ? { bottom: currentPosition.value } : { left: currentPosition.value };
});
const handleMouseEnter = () => {
initData.hovering = true;
displayTooltip();
};
const handleMouseLeave = () => {
initData.hovering = false;
if (!initData.dragging) {
hideTooltip();
}
};
const onButtonDown = (event) => {
if (disabled.value)
return;
event.preventDefault();
onDragStart(event);
on(window, "mousemove", onDragging);
on(window, "touchmove", onDragging);
on(window, "mouseup", onDragEnd);
on(window, "touchend", onDragEnd);
on(window, "contextmenu", onDragEnd);
};
const onLeftKeyDown = () => {
if (disabled.value)
return;
initData.newPosition = Number.parseFloat(currentPosition.value) - step.value / (max2.value - min2.value) * 100;
setPosition(initData.newPosition);
emitChange();
};
const onRightKeyDown = () => {
if (disabled.value)
return;
initData.newPosition = Number.parseFloat(currentPosition.value) + step.value / (max2.value - min2.value) * 100;
setPosition(initData.newPosition);
emitChange();
};
const getClientXY = (event) => {
let clientX;
let clientY;
if (event.type.startsWith("touch")) {
clientY = event.touches[0].clientY;
clientX = event.touches[0].clientX;
} else {
clientY = event.clientY;
clientX = event.clientX;
}
return {
clientX,
clientY
};
};
const onDragStart = (event) => {
initData.dragging = true;
initData.isClick = true;
const { clientX, clientY } = getClientXY(event);
if (props.vertical) {
initData.startY = clientY;
} else {
initData.startX = clientX;
}
initData.startPosition = Number.parseFloat(currentPosition.value);
initData.newPosition = initData.startPosition;
};
const onDragging = (event) => {
if (initData.dragging) {
initData.isClick = false;
displayTooltip();
resetSize();
let diff;
const { clientX, clientY } = getClientXY(event);
if (props.vertical) {
initData.currentY = clientY;
diff = (initData.startY - initData.currentY) / sliderSize.value * 100;
} else {
initData.currentX = clientX;
diff = (initData.currentX - initData.startX) / sliderSize.value * 100;
}
initData.newPosition = initData.startPosition + diff;
setPosition(initData.newPosition);
}
};
const onDragEnd = () => {
if (initData.dragging) {
setTimeout(() => {
initData.dragging = false;
if (!initData.hovering) {
hideTooltip();
}
if (!initData.isClick) {
setPosition(initData.newPosition);
emitChange();
}
}, 0);
off(window, "mousemove", onDragging);
off(window, "touchmove", onDragging);
off(window, "mouseup", onDragEnd);
off(window, "touchend", onDragEnd);
off(window, "contextmenu", onDragEnd);
}
};
const setPosition = async (newPosition) => {
if (newPosition === null || Number.isNaN(+newPosition))
return;
if (newPosition < 0) {
newPosition = 0;
} else if (newPosition > 100) {
newPosition = 100;
}
const lengthPerStep = 100 / ((max2.value - min2.value) / step.value);
const steps = Math.round(newPosition / lengthPerStep);
let value = steps * lengthPerStep * (max2.value - min2.value) * 0.01 + min2.value;
value = Number.parseFloat(value.toFixed(precision.value));
emit(UPDATE_MODEL_EVENT, value);
if (!initData.dragging && props.modelValue !== initData.oldValue) {
initData.oldValue = props.modelValue;
}
await nextTick();
initData.dragging && displayTooltip();
tooltip.value.updatePopper();
};
watch(() => initData.dragging, (val) => {
updateDragging(val);
});
return {
tooltip,
tooltipVisible,
showTooltip,
wrapperStyle,
formatValue,
handleMouseEnter,
handleMouseLeave,
onButtonDown,
onLeftKeyDown,
onRightKeyDown,
setPosition
};
};
const _sfc_main$k = defineComponent({
name: "ElSliderButton",
components: {
ElTooltip
},
props: {
modelValue: {
type: Number,
default: 0
},
vertical: {
type: Boolean,
default: false
},
tooltipClass: {
type: String,
default: ""
}
},
emits: [UPDATE_MODEL_EVENT],
setup(props, { emit }) {
const ns = useNamespace("slider");
const initData = reactive({
hovering: false,
dragging: false,
isClick: false,
startX: 0,
currentX: 0,
startY: 0,
currentY: 0,
startPosition: 0,
newPosition: 0,
oldValue: props.modelValue
});
const {
tooltip,
showTooltip,
tooltipVisible,
wrapperStyle,
formatValue,
handleMouseEnter,
handleMouseLeave,
onButtonDown,
onLeftKeyDown,
onRightKeyDown,
setPosition
} = useSliderButton(props, initData, emit);
const { hovering, dragging } = toRefs(initData);
return {
ns,
tooltip,
tooltipVisible,
showTooltip,
wrapperStyle,
formatValue,
handleMouseEnter,
handleMouseLeave,
onButtonDown,
onLeftKeyDown,
onRightKeyDown,
setPosition,
hovering,
dragging
};
}
});
function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {
const _component_el_tooltip = resolveComponent("el-tooltip");
return openBlock(), createElementBlock("div", {
ref: "button",
class: normalizeClass([_ctx.ns.e("button-wrapper"), { hover: _ctx.hovering, dragging: _ctx.dragging }]),
style: normalizeStyle(_ctx.wrapperStyle),
tabindex: "0",
onMouseenter: _cache[1] || (_cache[1] = (...args) => _ctx.handleMouseEnter && _ctx.handleMouseEnter(...args)),
onMouseleave: _cache[2] || (_cache[2] = (...args) => _ctx.handleMouseLeave && _ctx.handleMouseLeave(...args)),
onMousedown: _cache[3] || (_cache[3] = (...args) => _ctx.onButtonDown && _ctx.onButtonDown(...args)),
onTouchstart: _cache[4] || (_cache[4] = (...args) => _ctx.onButtonDown && _ctx.onButtonDown(...args)),
onFocus: _cache[5] || (_cache[5] = (...args) => _ctx.handleMouseEnter && _ctx.handleMouseEnter(...args)),
onBlur: _cache[6] || (_cache[6] = (...args) => _ctx.handleMouseLeave && _ctx.handleMouseLeave(...args)),
onKeydown: [
_cache[7] || (_cache[7] = withKeys((...args) => _ctx.onLeftKeyDown && _ctx.onLeftKeyDown(...args), ["left"])),
_cache[8] || (_cache[8] = withKeys((...args) => _ctx.onRightKeyDown && _ctx.onRightKeyDown(...args), ["right"])),
_cache[9] || (_cache[9] = withKeys(withModifiers((...args) => _ctx.onLeftKeyDown && _ctx.onLeftKeyDown(...args), ["prevent"]), ["down"])),
_cache[10] || (_cache[10] = withKeys(withModifiers((...args) => _ctx.onRightKeyDown && _ctx.onRightKeyDown(...args), ["prevent"]), ["up"]))
]
}, [
createVNode(_component_el_tooltip, {
ref: "tooltip",
visible: _ctx.tooltipVisible,
"onUpdate:visible": _cache[0] || (_cache[0] = ($event) => _ctx.tooltipVisible = $event),
placement: "top",
"stop-popper-mouse-event": false,
"popper-class": _ctx.tooltipClass,
disabled: !_ctx.showTooltip,
persistent: ""
}, {
content: withCtx(() => [
createElementVNode("span", null, toDisplayString(_ctx.formatValue), 1)
]),
default: withCtx(() => [
createElementVNode("div", {
class: normalizeClass([_ctx.ns.e("button"), { hover: _ctx.hovering, dragging: _ctx.dragging }])
}, null, 2)
]),
_: 1
}, 8, ["visible", "popper-class", "disabled"])
], 38);
}
var SliderButton = /* @__PURE__ */ _export_sfc$1(_sfc_main$k, [["render", _sfc_render$7], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/slider/src/button.vue"]]);
const _sfc_main$j = defineComponent({
name: "ElMarker",
props: {
mark: {
type: [String, Object],
default: () => void 0
}
},
setup(props) {
const ns = useNamespace("slider");
const label = computed(() => {
return typeof props.mark === "string" ? props.mark : props.mark.label;
});
return {
ns,
label
};
},
render() {
var _a2;
return h$1("div", {
class: this.ns.e("marks-text"),
style: (_a2 = this.mark) == null ? void 0 : _a2.style
}, this.label);
}
});
var SliderMarker = /* @__PURE__ */ _export_sfc$1(_sfc_main$j, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/slider/src/marker.vue"]]);
const useMarks = (props) => {
return computed(() => {
if (!props.marks) {
return [];
}
const marksKeys = Object.keys(props.marks);
return marksKeys.map(parseFloat).sort((a2, b2) => a2 - b2).filter((point) => point <= props.max && point >= props.min).map((point) => ({
point,
position: (point - props.min) * 100 / (props.max - props.min),
mark: props.marks[point]
}));
});
};
const useSlide = (props, initData, emit) => {
const elForm2 = inject(formContextKey, {});
const elFormItem2 = inject(formItemContextKey, {});
const slider = shallowRef(null);
const firstButton = ref(null);
const secondButton = ref(null);
const buttonRefs = {
firstButton,
secondButton
};
const sliderDisabled = computed(() => {
return props.disabled || elForm2.disabled || false;
});
const minValue = computed(() => {
return Math.min(initData.firstValue, initData.secondValue);
});
const maxValue = computed(() => {
return Math.max(initData.firstValue, initData.secondValue);
});
const barSize = computed(() => {
return props.range ? `${100 * (maxValue.value - minValue.value) / (props.max - props.min)}%` : `${100 * (initData.firstValue - props.min) / (props.max - props.min)}%`;
});
const barStart = computed(() => {
return props.range ? `${100 * (minValue.value - props.min) / (props.max - props.min)}%` : "0%";
});
const runwayStyle = computed(() => {
return props.vertical ? { height: props.height } : {};
});
const barStyle = computed(() => {
return props.vertical ? {
height: barSize.value,
bottom: barStart.value
} : {
width: barSize.value,
left: barStart.value
};
});
const resetSize = () => {
if (slider.value) {
initData.sliderSize = slider.value[`client${props.vertical ? "Height" : "Width"}`];
}
};
const setPosition = (percent) => {
const targetValue = props.min + percent * (props.max - props.min) / 100;
if (!props.range) {
firstButton.value.setPosition(percent);
return;
}
let buttonRefName;
if (Math.abs(minValue.value - targetValue) < Math.abs(maxValue.value - targetValue)) {
buttonRefName = initData.firstValue < initData.secondValue ? "firstButton" : "secondButton";
} else {
buttonRefName = initData.firstValue > initData.secondValue ? "firstButton" : "secondButton";
}
buttonRefs[buttonRefName].value.setPosition(percent);
};
const setFirstValue = (firstValue) => {
initData.firstValue = firstValue;
_emit(props.range ? [minValue.value, maxValue.value] : firstValue);
};
const setSecondValue = (secondValue) => {
initData.secondValue = secondValue;
if (props.range) {
_emit([minValue.value, maxValue.value]);
}
};
const _emit = (val) => {
emit(UPDATE_MODEL_EVENT, val);
emit(INPUT_EVENT, val);
};
const emitChange = async () => {
await nextTick();
emit(CHANGE_EVENT, props.range ? [minValue.value, maxValue.value] : props.modelValue);
};
const onSliderClick = (event) => {
if (sliderDisabled.value || initData.dragging)
return;
resetSize();
if (props.vertical) {
const sliderOffsetBottom = slider.value.getBoundingClientRect().bottom;
setPosition((sliderOffsetBottom - event.clientY) / initData.sliderSize * 100);
} else {
const sliderOffsetLeft = slider.value.getBoundingClientRect().left;
setPosition((event.clientX - sliderOffsetLeft) / initData.sliderSize * 100);
}
emitChange();
};
return {
elFormItem: elFormItem2,
slider,
firstButton,
secondButton,
sliderDisabled,
minValue,
maxValue,
runwayStyle,
barStyle,
resetSize,
setPosition,
emitChange,
onSliderClick,
setFirstValue,
setSecondValue
};
};
const useStops = (props, initData, minValue, maxValue) => {
const stops = computed(() => {
if (!props.showStops || props.min > props.max)
return [];
if (props.step === 0) {
return [];
}
const stopCount = (props.max - props.min) / props.step;
const stepWidth = 100 * props.step / (props.max - props.min);
const result = Array.from({ length: stopCount - 1 }).map((_2, index) => (index + 1) * stepWidth);
if (props.range) {
return result.filter((step) => {
return step < 100 * (minValue.value - props.min) / (props.max - props.min) || step > 100 * (maxValue.value - props.min) / (props.max - props.min);
});
} else {
return result.filter((step) => step > 100 * (initData.firstValue - props.min) / (props.max - props.min));
}
});
const getStopStyle = (position) => {
return props.vertical ? { bottom: `${position}%` } : { left: `${position}%` };
};
return {
stops,
getStopStyle
};
};
const _sfc_main$i = defineComponent({
name: "ElSlider",
components: {
ElInputNumber,
SliderButton,
SliderMarker
},
props: {
modelValue: {
type: [Number, Array],
default: 0
},
min: {
type: Number,
default: 0
},
max: {
type: Number,
default: 100
},
step: {
type: Number,
default: 1
},
showInput: {
type: Boolean,
default: false
},
showInputControls: {
type: Boolean,
default: true
},
size: {
type: String,
validator: isValidComponentSize
},
inputSize: {
type: String,
validator: isValidComponentSize
},
showStops: {
type: Boolean,
default: false
},
showTooltip: {
type: Boolean,
default: true
},
formatTooltip: {
type: Function,
default: void 0
},
disabled: {
type: Boolean,
default: false
},
range: {
type: Boolean,
default: false
},
vertical: {
type: Boolean,
default: false
},
height: {
type: String,
default: ""
},
debounce: {
type: Number,
default: 300
},
label: {
type: String,
default: void 0
},
tooltipClass: {
type: String,
default: void 0
},
marks: Object
},
emits: [UPDATE_MODEL_EVENT, CHANGE_EVENT, INPUT_EVENT],
setup(props, { emit }) {
const ns = useNamespace("slider");
const initData = reactive({
firstValue: 0,
secondValue: 0,
oldValue: 0,
dragging: false,
sliderSize: 1
});
const {
elFormItem: elFormItem2,
slider,
firstButton,
secondButton,
sliderDisabled,
minValue,
maxValue,
runwayStyle,
barStyle,
resetSize,
emitChange,
onSliderClick,
setFirstValue,
setSecondValue
} = useSlide(props, initData, emit);
const { stops, getStopStyle } = useStops(props, initData, minValue, maxValue);
const sliderWrapperSize = useSize();
const sliderInputSize = computed(() => props.inputSize || sliderWrapperSize.value);
const sliderKls = computed(() => [
ns.b(),
ns.m(sliderWrapperSize.value),
ns.is("vertical", props.vertical),
{ [ns.m("with-input")]: props.showInput }
]);
const markList = useMarks(props);
useWatch(props, initData, minValue, maxValue, emit, elFormItem2);
const precision = computed(() => {
const precisions = [props.min, props.max, props.step].map((item) => {
const decimal = `${item}`.split(".")[1];
return decimal ? decimal.length : 0;
});
return Math.max.apply(null, precisions);
});
const { sliderWrapper } = useLifecycle(props, initData, resetSize);
const { firstValue, secondValue, oldValue, dragging, sliderSize } = toRefs(initData);
const updateDragging = (val) => {
initData.dragging = val;
};
provide("SliderProvider", __spreadProps(__spreadValues({}, toRefs(props)), {
sliderSize,
disabled: sliderDisabled,
precision,
emitChange,
resetSize,
updateDragging
}));
return {
ns,
firstValue,
secondValue,
oldValue,
dragging,
sliderSize,
slider,
firstButton,
secondButton,
sliderDisabled,
runwayStyle,
barStyle,
emitChange,
onSliderClick,
getStopStyle,
setFirstValue,
setSecondValue,
stops,
markList,
sliderWrapper,
sliderWrapperSize,
sliderInputSize,
sliderKls
};
}
});
const useWatch = (props, initData, minValue, maxValue, emit, elFormItem2) => {
const _emit = (val) => {
emit(UPDATE_MODEL_EVENT, val);
emit(INPUT_EVENT, val);
};
const valueChanged = () => {
if (props.range) {
return ![minValue.value, maxValue.value].every((item, index) => item === initData.oldValue[index]);
} else {
return props.modelValue !== initData.oldValue;
}
};
const setValues = () => {
var _a2, _b2;
if (props.min > props.max) {
throwError("Slider", "min should not be greater than max.");
return;
}
const val = props.modelValue;
if (props.range && Array.isArray(val)) {
if (val[1] < props.min) {
_emit([props.min, props.min]);
} else if (val[0] > props.max) {
_emit([props.max, props.max]);
} else if (val[0] < props.min) {
_emit([props.min, val[1]]);
} else if (val[1] > props.max) {
_emit([val[0], props.max]);
} else {
initData.firstValue = val[0];
initData.secondValue = val[1];
if (valueChanged()) {
(_a2 = elFormItem2.validate) == null ? void 0 : _a2.call(elFormItem2, "change").catch((err) => debugWarn());
initData.oldValue = val.slice();
}
}
} else if (!props.range && typeof val === "number" && !Number.isNaN(val)) {
if (val < props.min) {
_emit(props.min);
} else if (val > props.max) {
_emit(props.max);
} else {
initData.firstValue = val;
if (valueChanged()) {
(_b2 = elFormItem2.validate) == null ? void 0 : _b2.call(elFormItem2, "change").catch((err) => debugWarn());
initData.oldValue = val;
}
}
}
};
setValues();
watch(() => initData.dragging, (val) => {
if (!val) {
setValues();
}
});
watch(() => props.modelValue, (val, oldVal) => {
if (initData.dragging || Array.isArray(val) && Array.isArray(oldVal) && val.every((item, index) => item === oldVal[index]) && initData.firstValue === val[0] && initData.secondValue === val[1]) {
return;
}
setValues();
}, {
deep: true
});
watch(() => [props.min, props.max], () => {
setValues();
});
};
const useLifecycle = (props, initData, resetSize) => {
const sliderWrapper = ref(null);
onMounted(async () => {
let valuetext;
if (props.range) {
if (Array.isArray(props.modelValue)) {
initData.firstValue = Math.max(props.min, props.modelValue[0]);
initData.secondValue = Math.min(props.max, props.modelValue[1]);
} else {
initData.firstValue = props.min;
initData.secondValue = props.max;
}
initData.oldValue = [initData.firstValue, initData.secondValue];
valuetext = `${initData.firstValue}-${initData.secondValue}`;
} else {
if (typeof props.modelValue !== "number" || Number.isNaN(props.modelValue)) {
initData.firstValue = props.min;
} else {
initData.firstValue = Math.min(props.max, Math.max(props.min, props.modelValue));
}
initData.oldValue = initData.firstValue;
valuetext = initData.firstValue;
}
sliderWrapper.value.setAttribute("aria-valuetext", valuetext);
sliderWrapper.value.setAttribute("aria-label", props.label ? props.label : `slider between ${props.min} and ${props.max}`);
on(window, "resize", resetSize);
await nextTick();
resetSize();
});
onBeforeUnmount(() => {
off(window, "resize", resetSize);
});
return {
sliderWrapper
};
};
const _hoisted_1$e = ["aria-valuemin", "aria-valuemax", "aria-orientation", "aria-disabled"];
const _hoisted_2$c = { key: 1 };
function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {
const _component_slider_button = resolveComponent("slider-button");
const _component_slider_marker = resolveComponent("slider-marker");
const _component_el_input_number = resolveComponent("el-input-number");
return openBlock(), createElementBlock("div", {
ref: "sliderWrapper",
class: normalizeClass(_ctx.sliderKls),
role: "slider",
"aria-valuemin": _ctx.min,
"aria-valuemax": _ctx.max,
"aria-orientation": _ctx.vertical ? "vertical" : "horizontal",
"aria-disabled": _ctx.sliderDisabled
}, [
createElementVNode("div", {
ref: "slider",
class: normalizeClass([
_ctx.ns.e("runway"),
{ "show-input": _ctx.showInput && !_ctx.range },
_ctx.ns.is("disabled", _ctx.sliderDisabled)
]),
style: normalizeStyle(_ctx.runwayStyle),
onClick: _cache[0] || (_cache[0] = (...args) => _ctx.onSliderClick && _ctx.onSliderClick(...args))
}, [
createElementVNode("div", {
class: normalizeClass(_ctx.ns.e("bar")),
style: normalizeStyle(_ctx.barStyle)
}, null, 6),
createVNode(_component_slider_button, {
ref: "firstButton",
"model-value": _ctx.firstValue,
vertical: _ctx.vertical,
"tooltip-class": _ctx.tooltipClass,
"onUpdate:modelValue": _ctx.setFirstValue
}, null, 8, ["model-value", "vertical", "tooltip-class", "onUpdate:modelValue"]),
_ctx.range ? (openBlock(), createBlock(_component_slider_button, {
key: 0,
ref: "secondButton",
"model-value": _ctx.secondValue,
vertical: _ctx.vertical,
"tooltip-class": _ctx.tooltipClass,
"onUpdate:modelValue": _ctx.setSecondValue
}, null, 8, ["model-value", "vertical", "tooltip-class", "onUpdate:modelValue"])) : createCommentVNode("v-if", true),
_ctx.showStops ? (openBlock(), createElementBlock("div", _hoisted_2$c, [
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.stops, (item, key) => {
return openBlock(), createElementBlock("div", {
key,
class: normalizeClass(_ctx.ns.e("stop")),
style: normalizeStyle(_ctx.getStopStyle(item))
}, null, 6);
}), 128))
])) : createCommentVNode("v-if", true),
_ctx.markList.length > 0 ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [
createElementVNode("div", null, [
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.markList, (item, key) => {
return openBlock(), createElementBlock("div", {
key,
style: normalizeStyle(_ctx.getStopStyle(item.position)),
class: normalizeClass([_ctx.ns.e("stop"), _ctx.ns.e("marks-stop")])
}, null, 6);
}), 128))
]),
createElementVNode("div", {
class: normalizeClass(_ctx.ns.e("marks"))
}, [
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.markList, (item, key) => {
return openBlock(), createBlock(_component_slider_marker, {
key,
mark: item.mark,
style: normalizeStyle(_ctx.getStopStyle(item.position))
}, null, 8, ["mark", "style"]);
}), 128))
], 2)
], 64)) : createCommentVNode("v-if", true)
], 6),
_ctx.showInput && !_ctx.range ? (openBlock(), createBlock(_component_el_input_number, {
key: 0,
ref: "input",
"model-value": _ctx.firstValue,
class: normalizeClass(_ctx.ns.e("input")),
step: _ctx.step,
disabled: _ctx.sliderDisabled,
controls: _ctx.showInputControls,
min: _ctx.min,
max: _ctx.max,
debounce: _ctx.debounce,
size: _ctx.sliderInputSize,
"onUpdate:modelValue": _ctx.setFirstValue,
onChange: _ctx.emitChange
}, null, 8, ["model-value", "class", "step", "disabled", "controls", "min", "max", "debounce", "size", "onUpdate:modelValue", "onChange"])) : createCommentVNode("v-if", true)
], 10, _hoisted_1$e);
}
var Slider = /* @__PURE__ */ _export_sfc$1(_sfc_main$i, [["render", _sfc_render$6], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/slider/src/index.vue"]]);
Slider.install = (app) => {
app.component(Slider.name, Slider);
};
const _Slider = Slider;
const ElSlider = _Slider;
const spaceItem = buildProps({
prefixCls: {
type: String,
default: ""
}
});
const _sfc_main$h = defineComponent({
props: spaceItem,
setup(props) {
const ns = useNamespace("space");
const classes = computed(() => `${props.prefixCls || ns.b()}__item`);
return {
classes
};
}
});
function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
return openBlock(), createElementBlock("div", {
class: normalizeClass(_ctx.classes)
}, [
renderSlot(_ctx.$slots, "default")
], 2);
}
var Item = /* @__PURE__ */ _export_sfc$1(_sfc_main$h, [["render", _sfc_render$5], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/space/src/item.vue"]]);
const SIZE_MAP = {
small: 8,
default: 12,
large: 16
};
function useSpace(props) {
const ns = useNamespace("space");
const classes = computed(() => [ns.b(), ns.m(props.direction), props.class]);
const horizontalSize = ref(0);
const verticalSize = ref(0);
const containerStyle = computed(() => {
const wrapKls = props.wrap || props.fill ? { flexWrap: "wrap", marginBottom: `-${verticalSize.value}px` } : {};
const alignment = {
alignItems: props.alignment
};
return [wrapKls, alignment, props.style];
});
const itemStyle = computed(() => {
const itemBaseStyle = {
paddingBottom: `${verticalSize.value}px`,
marginRight: `${horizontalSize.value}px`
};
const fillStyle = props.fill ? { flexGrow: 1, minWidth: `${props.fillRatio}%` } : {};
return [itemBaseStyle, fillStyle];
});
watchEffect(() => {
const { size = "small", wrap, direction: dir, fill } = props;
if (Array.isArray(size)) {
const [h2 = 0, v2 = 0] = size;
horizontalSize.value = h2;
verticalSize.value = v2;
} else {
let val;
if (isNumber(size)) {
val = size;
} else {
val = SIZE_MAP[size] || SIZE_MAP.small;
}
if ((wrap || fill) && dir === "horizontal") {
horizontalSize.value = verticalSize.value = val;
} else {
if (dir === "horizontal") {
horizontalSize.value = val;
verticalSize.value = 0;
} else {
verticalSize.value = val;
horizontalSize.value = 0;
}
}
}
});
return {
classes,
containerStyle,
itemStyle
};
}
const spaceProps = buildProps({
direction: {
type: String,
values: ["horizontal", "vertical"],
default: "horizontal"
},
class: {
type: definePropType([
String,
Object,
Array
]),
default: ""
},
style: {
type: definePropType([String, Array, Object]),
default: ""
},
alignment: {
type: definePropType(String),
default: "center"
},
prefixCls: {
type: String
},
spacer: {
type: definePropType([Object, String, Number, Array]),
default: null,
validator: (val) => isVNode(val) || isNumber(val) || isString(val)
},
wrap: {
type: Boolean,
default: false
},
fill: {
type: Boolean,
default: false
},
fillRatio: {
type: Number,
default: 100
},
size: {
type: [String, Array, Number],
values: componentSizes,
validator: (val) => {
return isNumber(val) || isArray(val) && val.length === 2 && val.every((i) => isNumber(i));
}
}
});
var Space = defineComponent({
name: "ElSpace",
props: spaceProps,
setup(props, { slots }) {
const { classes, containerStyle, itemStyle } = useSpace(props);
return () => {
var _a2;
const { spacer, prefixCls, direction } = props;
const children = renderSlot(slots, "default", { key: 0 }, () => []);
if (((_a2 = children.children) != null ? _a2 : []).length === 0)
return null;
if (isArray(children.children)) {
let extractedChildren = [];
children.children.forEach((child, loopKey) => {
if (isFragment(child)) {
if (isArray(child.children)) {
child.children.forEach((nested, key) => {
extractedChildren.push(createVNode(Item, {
style: itemStyle.value,
prefixCls,
key: `nested-${key}`
}, {
default: () => [nested]
}, PatchFlags.PROPS | PatchFlags.STYLE, ["style", "prefixCls"]));
});
}
} else if (isValidElementNode(child)) {
extractedChildren.push(createVNode(Item, {
style: itemStyle.value,
prefixCls,
key: `LoopKey${loopKey}`
}, {
default: () => [child]
}, PatchFlags.PROPS | PatchFlags.STYLE, ["style", "prefixCls"]));
}
});
if (spacer) {
const len = extractedChildren.length - 1;
extractedChildren = extractedChildren.reduce((acc, child, idx) => {
const children2 = [...acc, child];
if (idx !== len) {
children2.push(createVNode("span", {
style: [
itemStyle.value,
direction === "vertical" ? "width: 100%" : null
],
key: idx
}, [
isVNode(spacer) ? spacer : createTextVNode(spacer, PatchFlags.TEXT)
], PatchFlags.STYLE));
}
return children2;
}, []);
}
return createVNode("div", {
class: classes.value,
style: containerStyle.value
}, extractedChildren, PatchFlags.STYLE | PatchFlags.CLASS);
}
return children.children;
};
}
});
const ElSpace = withInstall(Space);
const switchProps = buildProps({
modelValue: {
type: [Boolean, String, Number],
default: false
},
value: {
type: [Boolean, String, Number],
default: false
},
disabled: {
type: Boolean,
default: false
},
width: {
type: Number,
default: 40
},
inlinePrompt: {
type: Boolean,
default: false
},
activeIcon: {
type: iconPropType,
default: ""
},
inactiveIcon: {
type: iconPropType,
default: ""
},
activeText: {
type: String,
default: ""
},
inactiveText: {
type: String,
default: ""
},
activeColor: {
type: String,
default: ""
},
inactiveColor: {
type: String,
default: ""
},
borderColor: {
type: String,
default: ""
},
activeValue: {
type: [Boolean, String, Number],
default: true
},
inactiveValue: {
type: [Boolean, String, Number],
default: false
},
name: {
type: String,
default: ""
},
validateEvent: {
type: Boolean,
default: true
},
id: String,
loading: {
type: Boolean,
default: false
},
beforeChange: {
type: definePropType(Function)
},
size: {
type: String,
validator: isValidComponentSize
}
});
const switchEmits = {
[UPDATE_MODEL_EVENT]: (val) => isBoolean(val) || isString(val) || isNumber(val),
[CHANGE_EVENT]: (val) => isBoolean(val) || isString(val) || isNumber(val),
[INPUT_EVENT]: (val) => isBoolean(val) || isString(val) || isNumber(val)
};
const COMPONENT_NAME = "ElSwitch";
const _sfc_main$g = defineComponent({
name: COMPONENT_NAME,
components: { ElIcon, Loading: loading },
props: switchProps,
emits: switchEmits,
setup(props, { emit }) {
const { formItem } = useFormItem();
const switchDisabled = useDisabled$1(computed(() => props.loading));
const ns = useNamespace("switch");
const switchSize = useSize();
const isModelValue = ref(props.modelValue !== false);
const input = ref();
const core = ref();
const switchKls = computed(() => [
ns.b(),
ns.m(switchSize.value),
ns.is("disabled", switchDisabled.value),
ns.is("checked", checked.value)
]);
watch(() => props.modelValue, () => {
isModelValue.value = true;
});
watch(() => props.value, () => {
isModelValue.value = false;
});
const actualValue = computed(() => {
return isModelValue.value ? props.modelValue : props.value;
});
const checked = computed(() => actualValue.value === props.activeValue);
if (![props.activeValue, props.inactiveValue].includes(actualValue.value)) {
emit(UPDATE_MODEL_EVENT, props.inactiveValue);
emit(CHANGE_EVENT, props.inactiveValue);
emit(INPUT_EVENT, props.inactiveValue);
}
watch(checked, () => {
var _a2;
input.value.checked = checked.value;
if (props.activeColor || props.inactiveColor) {
setBackgroundColor();
}
if (props.validateEvent) {
(_a2 = formItem == null ? void 0 : formItem.validate) == null ? void 0 : _a2.call(formItem, "change").catch((err) => debugWarn());
}
});
const handleChange2 = () => {
const val = checked.value ? props.inactiveValue : props.activeValue;
emit(UPDATE_MODEL_EVENT, val);
emit(CHANGE_EVENT, val);
emit(INPUT_EVENT, val);
nextTick(() => {
input.value.checked = checked.value;
});
};
const switchValue = () => {
if (switchDisabled.value)
return;
const { beforeChange } = props;
if (!beforeChange) {
handleChange2();
return;
}
const shouldChange = beforeChange();
const isExpectType = [
isPromise(shouldChange),
isBoolean(shouldChange)
].some((i) => i);
if (!isExpectType) {
throwError(COMPONENT_NAME, "beforeChange must return type `Promise` or `boolean`");
}
if (isPromise(shouldChange)) {
shouldChange.then((result) => {
if (result) {
handleChange2();
}
}).catch((e) => {
});
} else if (shouldChange) {
handleChange2();
}
};
const setBackgroundColor = () => {
const newColor = checked.value ? props.activeColor : props.inactiveColor;
const coreEl = core.value;
if (props.borderColor)
coreEl.style.borderColor = props.borderColor;
else if (!props.borderColor)
coreEl.style.borderColor = newColor;
coreEl.style.backgroundColor = newColor;
coreEl.children[0].style.color = newColor;
};
const focus = () => {
var _a2, _b2;
(_b2 = (_a2 = input.value) == null ? void 0 : _a2.focus) == null ? void 0 : _b2.call(_a2);
};
onMounted(() => {
if (props.activeColor || props.inactiveColor || props.borderColor) {
setBackgroundColor();
}
input.value.checked = checked.value;
});
return {
ns,
input,
core,
switchDisabled,
checked,
switchKls,
handleChange: handleChange2,
switchValue,
focus
};
}
});
const _hoisted_1$d = ["aria-checked", "aria-disabled"];
const _hoisted_2$b = ["id", "name", "true-value", "false-value", "disabled"];
const _hoisted_3$8 = ["aria-hidden"];
const _hoisted_4$7 = ["aria-hidden"];
const _hoisted_5$7 = ["aria-hidden"];
const _hoisted_6$6 = ["aria-hidden"];
function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
const _component_el_icon = resolveComponent("el-icon");
const _component_loading = resolveComponent("loading");
return openBlock(), createElementBlock("div", {
class: normalizeClass(_ctx.switchKls),
role: "switch",
"aria-checked": _ctx.checked,
"aria-disabled": _ctx.switchDisabled,
onClick: _cache[2] || (_cache[2] = withModifiers((...args) => _ctx.switchValue && _ctx.switchValue(...args), ["prevent"]))
}, [
createElementVNode("input", {
id: _ctx.id,
ref: "input",
class: normalizeClass(_ctx.ns.e("input")),
type: "checkbox",
name: _ctx.name,
"true-value": _ctx.activeValue,
"false-value": _ctx.inactiveValue,
disabled: _ctx.switchDisabled,
onChange: _cache[0] || (_cache[0] = (...args) => _ctx.handleChange && _ctx.handleChange(...args)),
onKeydown: _cache[1] || (_cache[1] = withKeys((...args) => _ctx.switchValue && _ctx.switchValue(...args), ["enter"]))
}, null, 42, _hoisted_2$b),
!_ctx.inlinePrompt && (_ctx.inactiveIcon || _ctx.inactiveText) ? (openBlock(), createElementBlock("span", {
key: 0,
class: normalizeClass([
_ctx.ns.e("label"),
_ctx.ns.em("label", "left"),
_ctx.ns.is("active", !_ctx.checked)
])
}, [
_ctx.inactiveIcon ? (openBlock(), createBlock(_component_el_icon, { key: 0 }, {
default: withCtx(() => [
(openBlock(), createBlock(resolveDynamicComponent(_ctx.inactiveIcon)))
]),
_: 1
})) : createCommentVNode("v-if", true),
!_ctx.inactiveIcon && _ctx.inactiveText ? (openBlock(), createElementBlock("span", {
key: 1,
"aria-hidden": _ctx.checked
}, toDisplayString(_ctx.inactiveText), 9, _hoisted_3$8)) : createCommentVNode("v-if", true)
], 2)) : createCommentVNode("v-if", true),
createElementVNode("span", {
ref: "core",
class: normalizeClass(_ctx.ns.e("core")),
style: normalizeStyle({ width: (_ctx.width || 40) + "px" })
}, [
_ctx.inlinePrompt ? (openBlock(), createElementBlock("div", {
key: 0,
class: normalizeClass(_ctx.ns.e("inner"))
}, [
_ctx.activeIcon || _ctx.inactiveIcon ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
_ctx.activeIcon ? (openBlock(), createBlock(_component_el_icon, {
key: 0,
class: normalizeClass([_ctx.ns.is("icon"), _ctx.checked ? _ctx.ns.is("show") : _ctx.ns.is("hide")])
}, {
default: withCtx(() => [
(openBlock(), createBlock(resolveDynamicComponent(_ctx.activeIcon)))
]),
_: 1
}, 8, ["class"])) : createCommentVNode("v-if", true),
_ctx.inactiveIcon ? (openBlock(), createBlock(_component_el_icon, {
key: 1,
class: normalizeClass([_ctx.ns.is("icon"), !_ctx.checked ? _ctx.ns.is("show") : _ctx.ns.is("hide")])
}, {
default: withCtx(() => [
(openBlock(), createBlock(resolveDynamicComponent(_ctx.inactiveIcon)))
]),
_: 1
}, 8, ["class"])) : createCommentVNode("v-if", true)
], 64)) : _ctx.activeText || _ctx.inactiveIcon ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
_ctx.activeText ? (openBlock(), createElementBlock("span", {
key: 0,
class: normalizeClass([_ctx.ns.is("text"), _ctx.checked ? _ctx.ns.is("show") : _ctx.ns.is("hide")]),
"aria-hidden": !_ctx.checked
}, toDisplayString(_ctx.activeText.substring(0, 3)), 11, _hoisted_4$7)) : createCommentVNode("v-if", true),
_ctx.inactiveText ? (openBlock(), createElementBlock("span", {
key: 1,
class: normalizeClass([_ctx.ns.is("text"), !_ctx.checked ? _ctx.ns.is("show") : _ctx.ns.is("hide")]),
"aria-hidden": _ctx.checked
}, toDisplayString(_ctx.inactiveText.substring(0, 3)), 11, _hoisted_5$7)) : createCommentVNode("v-if", true)
], 64)) : createCommentVNode("v-if", true)
], 2)) : createCommentVNode("v-if", true),
createElementVNode("div", {
class: normalizeClass(_ctx.ns.e("action"))
}, [
_ctx.loading ? (openBlock(), createBlock(_component_el_icon, {
key: 0,
class: normalizeClass(_ctx.ns.is("loading"))
}, {
default: withCtx(() => [
createVNode(_component_loading)
]),
_: 1
}, 8, ["class"])) : createCommentVNode("v-if", true)
], 2)
], 6),
!_ctx.inlinePrompt && (_ctx.activeIcon || _ctx.activeText) ? (openBlock(), createElementBlock("span", {
key: 1,
class: normalizeClass([
_ctx.ns.e("label"),
_ctx.ns.em("label", "right"),
_ctx.ns.is("active", _ctx.checked)
])
}, [
_ctx.activeIcon ? (openBlock(), createBlock(_component_el_icon, { key: 0 }, {
default: withCtx(() => [
(openBlock(), createBlock(resolveDynamicComponent(_ctx.activeIcon)))
]),
_: 1
})) : createCommentVNode("v-if", true),
!_ctx.activeIcon && _ctx.activeText ? (openBlock(), createElementBlock("span", {
key: 1,
"aria-hidden": !_ctx.checked
}, toDisplayString(_ctx.activeText), 9, _hoisted_6$6)) : createCommentVNode("v-if", true)
], 2)) : createCommentVNode("v-if", true)
], 10, _hoisted_1$d);
}
var Switch = /* @__PURE__ */ _export_sfc$1(_sfc_main$g, [["render", _sfc_render$4], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/switch/src/switch.vue"]]);
const ElSwitch = withInstall(Switch);
/*!
* escape-html
* Copyright(c) 2012-2013 TJ Holowaychuk
* Copyright(c) 2015 Andreas Lubbe
* Copyright(c) 2015 Tiancheng "Timothy" Gu
* MIT Licensed
*/
var matchHtmlRegExp = /["'&<>]/;
var escapeHtml_1 = escapeHtml;
function escapeHtml(string3) {
var str = "" + string3;
var match = matchHtmlRegExp.exec(str);
if (!match) {
return str;
}
var escape;
var html = "";
var index = 0;
var lastIndex = 0;
for (index = match.index; index < str.length; index++) {
switch (str.charCodeAt(index)) {
case 34:
escape = """;
break;
case 38:
escape = "&";
break;
case 39:
escape = "'";
break;
case 60:
escape = "<";
break;
case 62:
escape = ">";
break;
default:
continue;
}
if (lastIndex !== index) {
html += str.substring(lastIndex, index);
}
lastIndex = index + 1;
html += escape;
}
return lastIndex !== index ? html + str.substring(lastIndex, index) : html;
}
const getCell = function(event) {
let cell = event.target;
while (cell && cell.tagName.toUpperCase() !== "HTML") {
if (cell.tagName.toUpperCase() === "TD") {
return cell;
}
cell = cell.parentNode;
}
return null;
};
const isObject = function(obj) {
return obj !== null && typeof obj === "object";
};
const orderBy = function(array4, sortKey, reverse, sortMethod, sortBy) {
if (!sortKey && !sortMethod && (!sortBy || Array.isArray(sortBy) && !sortBy.length)) {
return array4;
}
if (typeof reverse === "string") {
reverse = reverse === "descending" ? -1 : 1;
} else {
reverse = reverse && reverse < 0 ? -1 : 1;
}
const getKey = sortMethod ? null : function(value, index) {
if (sortBy) {
if (!Array.isArray(sortBy)) {
sortBy = [sortBy];
}
return sortBy.map((by) => {
if (typeof by === "string") {
return get(value, by);
} else {
return by(value, index, array4);
}
});
}
if (sortKey !== "$key") {
if (isObject(value) && "$value" in value)
value = value.$value;
}
return [isObject(value) ? get(value, sortKey) : value];
};
const compare = function(a2, b2) {
if (sortMethod) {
return sortMethod(a2.value, b2.value);
}
for (let i = 0, len = a2.key.length; i < len; i++) {
if (a2.key[i] < b2.key[i]) {
return -1;
}
if (a2.key[i] > b2.key[i]) {
return 1;
}
}
return 0;
};
return array4.map((value, index) => {
return {
value,
index,
key: getKey ? getKey(value, index) : null
};
}).sort((a2, b2) => {
let order2 = compare(a2, b2);
if (!order2) {
order2 = a2.index - b2.index;
}
return order2 * +reverse;
}).map((item) => item.value);
};
const getColumnById = function(table, columnId) {
let column = null;
table.columns.forEach((item) => {
if (item.id === columnId) {
column = item;
}
});
return column;
};
const getColumnByKey = function(table, columnKey) {
let column = null;
for (let i = 0; i < table.columns.length; i++) {
const item = table.columns[i];
if (item.columnKey === columnKey) {
column = item;
break;
}
}
return column;
};
const getColumnByCell = function(table, cell, namespace) {
const matches = (cell.className || "").match(new RegExp(`${namespace}-table_[^\\s]+`, "gm"));
if (matches) {
return getColumnById(table, matches[0]);
}
return null;
};
const getRowIdentity = (row, rowKey) => {
if (!row)
throw new Error("Row is required when get row identity");
if (typeof rowKey === "string") {
if (!rowKey.includes(".")) {
return `${row[rowKey]}`;
}
const key = rowKey.split(".");
let current = row;
for (const element of key) {
current = current[element];
}
return `${current}`;
} else if (typeof rowKey === "function") {
return rowKey.call(null, row);
}
};
const getKeysMap = function(array4, rowKey) {
const arrayMap2 = {};
(array4 || []).forEach((row, index) => {
arrayMap2[getRowIdentity(row, rowKey)] = { row, index };
});
return arrayMap2;
};
function mergeOptions(defaults, config) {
const options = {};
let key;
for (key in defaults) {
options[key] = defaults[key];
}
for (key in config) {
if (hasOwn(config, key)) {
const value = config[key];
if (typeof value !== "undefined") {
options[key] = value;
}
}
}
return options;
}
function parseWidth(width) {
if (width === "")
return width;
if (width !== void 0) {
width = Number.parseInt(width, 10);
if (Number.isNaN(width)) {
width = "";
}
}
return width;
}
function parseMinWidth(minWidth) {
if (minWidth === "")
return minWidth;
if (minWidth !== void 0) {
minWidth = parseWidth(minWidth);
if (Number.isNaN(minWidth)) {
minWidth = 80;
}
}
return minWidth;
}
function parseHeight(height) {
if (typeof height === "number") {
return height;
}
if (typeof height === "string") {
if (/^\d+(?:px)?$/.test(height)) {
return Number.parseInt(height, 10);
} else {
return height;
}
}
return null;
}
function compose(...funcs) {
if (funcs.length === 0) {
return (arg) => arg;
}
if (funcs.length === 1) {
return funcs[0];
}
return funcs.reduce((a2, b2) => (...args) => a2(b2(...args)));
}
function toggleRowStatus(statusArr, row, newVal) {
let changed = false;
const index = statusArr.indexOf(row);
const included = index !== -1;
const addRow = () => {
statusArr.push(row);
changed = true;
};
const removeRow = () => {
statusArr.splice(index, 1);
changed = true;
};
if (typeof newVal === "boolean") {
if (newVal && !included) {
addRow();
} else if (!newVal && included) {
removeRow();
}
} else {
if (included) {
removeRow();
} else {
addRow();
}
}
return changed;
}
function walkTreeNode(root2, cb, childrenKey = "children", lazyKey = "hasChildren") {
const isNil2 = (array4) => !(Array.isArray(array4) && array4.length);
function _walker(parent, children, level) {
cb(parent, children, level);
children.forEach((item) => {
if (item[lazyKey]) {
cb(item, null, level + 1);
return;
}
const children2 = item[childrenKey];
if (!isNil2(children2)) {
_walker(item, children2, level + 1);
}
});
}
root2.forEach((item) => {
if (item[lazyKey]) {
cb(item, null, 0);
return;
}
const children = item[childrenKey];
if (!isNil2(children)) {
_walker(item, children, 0);
}
});
}
let removePopper;
function createTablePopper(trigger, popperContent, popperOptions2, tooltipEffect) {
const { nextZIndex } = useZIndex();
function renderContent() {
const isLight = tooltipEffect === "light";
const content22 = document.createElement("div");
content22.className = `el-popper ${isLight ? "is-light" : "is-dark"}`;
popperContent = escapeHtml_1(popperContent);
content22.innerHTML = popperContent;
content22.style.zIndex = String(nextZIndex());
document.body.appendChild(content22);
return content22;
}
function renderArrow() {
const arrow22 = document.createElement("div");
arrow22.className = "el-popper__arrow";
return arrow22;
}
function showPopper() {
popperInstance && popperInstance.update();
}
removePopper = function removePopper2() {
try {
popperInstance && popperInstance.destroy();
content2 && document.body.removeChild(content2);
off(trigger, "mouseenter", showPopper);
off(trigger, "mouseleave", removePopper2);
} catch (e) {
}
};
let popperInstance = null;
const content2 = renderContent();
const arrow2 = renderArrow();
content2.appendChild(arrow2);
popperInstance = createPopper(trigger, content2, __spreadValues({
modifiers: [
{
name: "offset",
options: {
offset: [0, 8]
}
},
{
name: "arrow",
options: {
element: arrow2,
padding: 10
}
}
]
}, popperOptions2));
on(trigger, "mouseenter", showPopper);
on(trigger, "mouseleave", removePopper);
return popperInstance;
}
const isFixedColumn = (index, fixed, store, realColumns) => {
let start2 = 0;
let after = index;
if (realColumns) {
if (realColumns[index].colSpan > 1) {
return {};
}
for (let i = 0; i < index; i++) {
start2 += realColumns[i].colSpan;
}
after = start2 + realColumns[index].colSpan - 1;
} else {
start2 = index;
}
let fixedLayout;
const columns = store.states.columns;
switch (fixed) {
case "left":
if (after < store.states.fixedLeafColumnsLength.value) {
fixedLayout = "left";
}
break;
case "right":
if (start2 >= columns.value.length - store.states.rightFixedLeafColumnsLength.value) {
fixedLayout = "right";
}
break;
default:
if (after < store.states.fixedLeafColumnsLength.value) {
fixedLayout = "left";
} else if (start2 >= columns.value.length - store.states.rightFixedLeafColumnsLength.value) {
fixedLayout = "right";
}
}
return fixedLayout ? {
direction: fixedLayout,
start: start2,
after
} : {};
};
const getFixedColumnsClass = (namespace, index, fixed, store, realColumns) => {
const classes = [];
const { direction, start: start2 } = isFixedColumn(index, fixed, store, realColumns);
if (direction) {
const isLeft = direction === "left";
classes.push(`${namespace}-fixed-column--${direction}`);
if (isLeft && start2 === store.states.fixedLeafColumnsLength.value - 1) {
classes.push("is-last-column");
} else if (!isLeft && start2 === store.states.columns.value.length - store.states.rightFixedLeafColumnsLength.value) {
classes.push("is-first-column");
}
}
return classes;
};
function getOffset(offset2, column) {
return offset2 + (column.realWidth === null || Number.isNaN(column.realWidth) ? Number(column.width) : column.realWidth);
}
const getFixedColumnOffset = (index, fixed, store, realColumns) => {
const { direction, start: start2 = 0 } = isFixedColumn(index, fixed, store, realColumns);
if (!direction) {
return;
}
const styles = {};
const isLeft = direction === "left";
const columns = store.states.columns.value;
if (isLeft) {
styles.left = columns.slice(0, index).reduce(getOffset, 0);
} else {
styles.right = columns.slice(start2 + 1).reverse().reduce(getOffset, 0);
}
return styles;
};
const ensurePosition = (style, key) => {
if (!style)
return;
if (!Number.isNaN(style[key])) {
style[key] = `${style[key]}px`;
}
};
function useExpand(watcherData) {
const instance = getCurrentInstance();
const defaultExpandAll = ref(false);
const expandRows = ref([]);
const updateExpandRows = () => {
const data2 = watcherData.data.value || [];
const rowKey = watcherData.rowKey.value;
if (defaultExpandAll.value) {
expandRows.value = data2.slice();
} else if (rowKey) {
const expandRowsMap = getKeysMap(expandRows.value, rowKey);
expandRows.value = data2.reduce((prev, row) => {
const rowId = getRowIdentity(row, rowKey);
const rowInfo = expandRowsMap[rowId];
if (rowInfo) {
prev.push(row);
}
return prev;
}, []);
} else {
expandRows.value = [];
}
};
const toggleRowExpansion = (row, expanded) => {
const changed = toggleRowStatus(expandRows.value, row, expanded);
if (changed) {
instance.emit("expand-change", row, expandRows.value.slice());
}
};
const setExpandRowKeys = (rowKeys) => {
instance.store.assertRowKey();
const data2 = watcherData.data.value || [];
const rowKey = watcherData.rowKey.value;
const keysMap = getKeysMap(data2, rowKey);
expandRows.value = rowKeys.reduce((prev, cur) => {
const info = keysMap[cur];
if (info) {
prev.push(info.row);
}
return prev;
}, []);
};
const isRowExpanded = (row) => {
const rowKey = watcherData.rowKey.value;
if (rowKey) {
const expandMap = getKeysMap(expandRows.value, rowKey);
return !!expandMap[getRowIdentity(row, rowKey)];
}
return expandRows.value.includes(row);
};
return {
updateExpandRows,
toggleRowExpansion,
setExpandRowKeys,
isRowExpanded,
states: {
expandRows,
defaultExpandAll
}
};
}
function useCurrent(watcherData) {
const instance = getCurrentInstance();
const _currentRowKey = ref(null);
const currentRow = ref(null);
const setCurrentRowKey = (key) => {
instance.store.assertRowKey();
_currentRowKey.value = key;
setCurrentRowByKey(key);
};
const restoreCurrentRowKey = () => {
_currentRowKey.value = null;
};
const setCurrentRowByKey = (key) => {
const { data: data2, rowKey } = watcherData;
let _currentRow = null;
if (rowKey.value) {
_currentRow = (unref(data2) || []).find((item) => getRowIdentity(item, rowKey.value) === key);
}
currentRow.value = _currentRow;
instance.emit("current-change", currentRow.value, null);
};
const updateCurrentRow = (_currentRow) => {
const oldCurrentRow = currentRow.value;
if (_currentRow && _currentRow !== oldCurrentRow) {
currentRow.value = _currentRow;
instance.emit("current-change", currentRow.value, oldCurrentRow);
return;
}
if (!_currentRow && oldCurrentRow) {
currentRow.value = null;
instance.emit("current-change", null, oldCurrentRow);
}
};
const updateCurrentRowData = () => {
const rowKey = watcherData.rowKey.value;
const data2 = watcherData.data.value || [];
const oldCurrentRow = currentRow.value;
if (!data2.includes(oldCurrentRow) && oldCurrentRow) {
if (rowKey) {
const currentRowKey = getRowIdentity(oldCurrentRow, rowKey);
setCurrentRowByKey(currentRowKey);
} else {
currentRow.value = null;
}
if (currentRow.value === null) {
instance.emit("current-change", null, oldCurrentRow);
}
} else if (_currentRowKey.value) {
setCurrentRowByKey(_currentRowKey.value);
restoreCurrentRowKey();
}
};
return {
setCurrentRowKey,
restoreCurrentRowKey,
setCurrentRowByKey,
updateCurrentRow,
updateCurrentRowData,
states: {
_currentRowKey,
currentRow
}
};
}
function useTree(watcherData) {
const expandRowKeys = ref([]);
const treeData = ref({});
const indent = ref(16);
const lazy = ref(false);
const lazyTreeNodeMap = ref({});
const lazyColumnIdentifier = ref("hasChildren");
const childrenColumnName = ref("children");
const instance = getCurrentInstance();
const normalizedData = computed(() => {
if (!watcherData.rowKey.value)
return {};
const data2 = watcherData.data.value || [];
return normalize(data2);
});
const normalizedLazyNode = computed(() => {
const rowKey = watcherData.rowKey.value;
const keys2 = Object.keys(lazyTreeNodeMap.value);
const res = {};
if (!keys2.length)
return res;
keys2.forEach((key) => {
if (lazyTreeNodeMap.value[key].length) {
const item = { children: [] };
lazyTreeNodeMap.value[key].forEach((row) => {
const currentRowKey = getRowIdentity(row, rowKey);
item.children.push(currentRowKey);
if (row[lazyColumnIdentifier.value] && !res[currentRowKey]) {
res[currentRowKey] = { children: [] };
}
});
res[key] = item;
}
});
return res;
});
const normalize = (data2) => {
const rowKey = watcherData.rowKey.value;
const res = {};
walkTreeNode(data2, (parent, children, level) => {
const parentId = getRowIdentity(parent, rowKey);
if (Array.isArray(children)) {
res[parentId] = {
children: children.map((row) => getRowIdentity(row, rowKey)),
level
};
} else if (lazy.value) {
res[parentId] = {
children: [],
lazy: true,
level
};
}
}, childrenColumnName.value, lazyColumnIdentifier.value);
return res;
};
const updateTreeData = (ifChangeExpandRowKeys = false, ifExpandAll = ((_a2) => (_a2 = instance.store) == null ? void 0 : _a2.states.defaultExpandAll.value)()) => {
var _a2;
const nested = normalizedData.value;
const normalizedLazyNode_ = normalizedLazyNode.value;
const keys2 = Object.keys(nested);
const newTreeData = {};
if (keys2.length) {
const oldTreeData = unref(treeData);
const rootLazyRowKeys = [];
const getExpanded = (oldValue, key) => {
if (ifChangeExpandRowKeys) {
if (expandRowKeys.value) {
return ifExpandAll || expandRowKeys.value.includes(key);
} else {
return !!(ifExpandAll || (oldValue == null ? void 0 : oldValue.expanded));
}
} else {
const included = ifExpandAll || expandRowKeys.value && expandRowKeys.value.includes(key);
return !!((oldValue == null ? void 0 : oldValue.expanded) || included);
}
};
keys2.forEach((key) => {
const oldValue = oldTreeData[key];
const newValue = __spreadValues({}, nested[key]);
newValue.expanded = getExpanded(oldValue, key);
if (newValue.lazy) {
const { loaded = false, loading: loading2 = false } = oldValue || {};
newValue.loaded = !!loaded;
newValue.loading = !!loading2;
rootLazyRowKeys.push(key);
}
newTreeData[key] = newValue;
});
const lazyKeys = Object.keys(normalizedLazyNode_);
if (lazy.value && lazyKeys.length && rootLazyRowKeys.length) {
lazyKeys.forEach((key) => {
const oldValue = oldTreeData[key];
const lazyNodeChildren = normalizedLazyNode_[key].children;
if (rootLazyRowKeys.includes(key)) {
if (newTreeData[key].children.length !== 0) {
throw new Error("[ElTable]children must be an empty array.");
}
newTreeData[key].children = lazyNodeChildren;
} else {
const { loaded = false, loading: loading2 = false } = oldValue || {};
newTreeData[key] = {
lazy: true,
loaded: !!loaded,
loading: !!loading2,
expanded: getExpanded(oldValue, key),
children: lazyNodeChildren,
level: ""
};
}
});
}
}
treeData.value = newTreeData;
(_a2 = instance.store) == null ? void 0 : _a2.updateTableScrollY();
};
watch(() => expandRowKeys.value, () => {
updateTreeData(true);
});
watch(() => normalizedData.value, () => {
updateTreeData();
});
watch(() => normalizedLazyNode.value, () => {
updateTreeData();
});
const updateTreeExpandKeys = (value) => {
expandRowKeys.value = value;
updateTreeData();
};
const toggleTreeExpansion = (row, expanded) => {
instance.store.assertRowKey();
const rowKey = watcherData.rowKey.value;
const id = getRowIdentity(row, rowKey);
const data2 = id && treeData.value[id];
if (id && data2 && "expanded" in data2) {
const oldExpanded = data2.expanded;
expanded = typeof expanded === "undefined" ? !data2.expanded : expanded;
treeData.value[id].expanded = expanded;
if (oldExpanded !== expanded) {
instance.emit("expand-change", row, expanded);
}
instance.store.updateTableScrollY();
}
};
const loadOrToggle = (row) => {
instance.store.assertRowKey();
const rowKey = watcherData.rowKey.value;
const id = getRowIdentity(row, rowKey);
const data2 = treeData.value[id];
if (lazy.value && data2 && "loaded" in data2 && !data2.loaded) {
loadData(row, id, data2);
} else {
toggleTreeExpansion(row, void 0);
}
};
const loadData = (row, key, treeNode) => {
const { load } = instance.props;
if (load && !treeData.value[key].loaded) {
treeData.value[key].loading = true;
load(row, treeNode, (data2) => {
if (!Array.isArray(data2)) {
throw new TypeError("[ElTable] data must be an array");
}
treeData.value[key].loading = false;
treeData.value[key].loaded = true;
treeData.value[key].expanded = true;
if (data2.length) {
lazyTreeNodeMap.value[key] = data2;
}
instance.emit("expand-change", row, true);
});
}
};
return {
loadData,
loadOrToggle,
toggleTreeExpansion,
updateTreeExpandKeys,
updateTreeData,
normalize,
states: {
expandRowKeys,
treeData,
indent,
lazy,
lazyTreeNodeMap,
lazyColumnIdentifier,
childrenColumnName
}
};
}
const sortData = (data2, states) => {
const sortingColumn = states.sortingColumn;
if (!sortingColumn || typeof sortingColumn.sortable === "string") {
return data2;
}
return orderBy(data2, states.sortProp, states.sortOrder, sortingColumn.sortMethod, sortingColumn.sortBy);
};
const doFlattenColumns = (columns) => {
const result = [];
columns.forEach((column) => {
if (column.children) {
result.push.apply(result, doFlattenColumns(column.children));
} else {
result.push(column);
}
});
return result;
};
function useWatcher$1() {
var _a2;
const instance = getCurrentInstance();
const { size: tableSize } = toRefs((_a2 = instance.proxy) == null ? void 0 : _a2.$props);
const rowKey = ref(null);
const data2 = ref([]);
const _data = ref([]);
const isComplex = ref(false);
const _columns = ref([]);
const originColumns = ref([]);
const columns = ref([]);
const fixedColumns = ref([]);
const rightFixedColumns = ref([]);
const leafColumns = ref([]);
const fixedLeafColumns = ref([]);
const rightFixedLeafColumns = ref([]);
const leafColumnsLength = ref(0);
const fixedLeafColumnsLength = ref(0);
const rightFixedLeafColumnsLength = ref(0);
const isAllSelected = ref(false);
const selection = ref([]);
const reserveSelection = ref(false);
const selectOnIndeterminate = ref(false);
const selectable = ref(null);
const filters = ref({});
const filteredData = ref(null);
const sortingColumn = ref(null);
const sortProp = ref(null);
const sortOrder = ref(null);
const hoverRow = ref(null);
watch(data2, () => instance.state && scheduleLayout(false), {
deep: true
});
const assertRowKey = () => {
if (!rowKey.value)
throw new Error("[ElTable] prop row-key is required");
};
const updateColumns = () => {
fixedColumns.value = _columns.value.filter((column) => column.fixed === true || column.fixed === "left");
rightFixedColumns.value = _columns.value.filter((column) => column.fixed === "right");
if (fixedColumns.value.length > 0 && _columns.value[0] && _columns.value[0].type === "selection" && !_columns.value[0].fixed) {
_columns.value[0].fixed = true;
fixedColumns.value.unshift(_columns.value[0]);
}
const notFixedColumns = _columns.value.filter((column) => !column.fixed);
originColumns.value = [].concat(fixedColumns.value).concat(notFixedColumns).concat(rightFixedColumns.value);
const leafColumns2 = doFlattenColumns(notFixedColumns);
const fixedLeafColumns2 = doFlattenColumns(fixedColumns.value);
const rightFixedLeafColumns2 = doFlattenColumns(rightFixedColumns.value);
leafColumnsLength.value = leafColumns2.length;
fixedLeafColumnsLength.value = fixedLeafColumns2.length;
rightFixedLeafColumnsLength.value = rightFixedLeafColumns2.length;
columns.value = [].concat(fixedLeafColumns2).concat(leafColumns2).concat(rightFixedLeafColumns2);
isComplex.value = fixedColumns.value.length > 0 || rightFixedColumns.value.length > 0;
};
const scheduleLayout = (needUpdateColumns, immediate = false) => {
if (needUpdateColumns) {
updateColumns();
}
if (immediate) {
instance.state.doLayout();
} else {
instance.state.debouncedUpdateLayout();
}
};
const isSelected = (row) => {
return selection.value.includes(row);
};
const clearSelection = () => {
isAllSelected.value = false;
const oldSelection = selection.value;
if (oldSelection.length) {
selection.value = [];
instance.emit("selection-change", []);
}
};
const cleanSelection = () => {
let deleted;
if (rowKey.value) {
deleted = [];
const selectedMap = getKeysMap(selection.value, rowKey.value);
const dataMap = getKeysMap(data2.value, rowKey.value);
for (const key in selectedMap) {
if (hasOwn(selectedMap, key) && !dataMap[key]) {
deleted.push(selectedMap[key].row);
}
}
} else {
deleted = selection.value.filter((item) => !data2.value.includes(item));
}
if (deleted.length) {
const newSelection = selection.value.filter((item) => !deleted.includes(item));
selection.value = newSelection;
instance.emit("selection-change", newSelection.slice());
}
};
const getSelectionRows = () => {
return (selection.value || []).slice();
};
const toggleRowSelection = (row, selected = void 0, emitChange = true) => {
const changed = toggleRowStatus(selection.value, row, selected);
if (changed) {
const newSelection = (selection.value || []).slice();
if (emitChange) {
instance.emit("select", newSelection, row);
}
instance.emit("selection-change", newSelection);
}
};
const _toggleAllSelection = () => {
var _a22, _b2;
const value = selectOnIndeterminate.value ? !isAllSelected.value : !(isAllSelected.value || selection.value.length);
isAllSelected.value = value;
let selectionChanged = false;
let childrenCount = 0;
const rowKey2 = (_b2 = (_a22 = instance == null ? void 0 : instance.store) == null ? void 0 : _a22.states) == null ? void 0 : _b2.rowKey.value;
data2.value.forEach((row, index) => {
const rowIndex = index + childrenCount;
if (selectable.value) {
if (selectable.value.call(null, row, rowIndex) && toggleRowStatus(selection.value, row, value)) {
selectionChanged = true;
}
} else {
if (toggleRowStatus(selection.value, row, value)) {
selectionChanged = true;
}
}
childrenCount += getChildrenCount(getRowIdentity(row, rowKey2));
});
if (selectionChanged) {
instance.emit("selection-change", selection.value ? selection.value.slice() : []);
}
instance.emit("select-all", selection.value);
};
const updateSelectionByRowKey = () => {
const selectedMap = getKeysMap(selection.value, rowKey.value);
data2.value.forEach((row) => {
const rowId = getRowIdentity(row, rowKey.value);
const rowInfo = selectedMap[rowId];
if (rowInfo) {
selection.value[rowInfo.index] = row;
}
});
};
const updateAllSelected = () => {
var _a22, _b2, _c;
if (((_a22 = data2.value) == null ? void 0 : _a22.length) === 0) {
isAllSelected.value = false;
return;
}
let selectedMap;
if (rowKey.value) {
selectedMap = getKeysMap(selection.value, rowKey.value);
}
const isSelected2 = function(row) {
if (selectedMap) {
return !!selectedMap[getRowIdentity(row, rowKey.value)];
} else {
return selection.value.includes(row);
}
};
let isAllSelected_ = true;
let selectedCount = 0;
let childrenCount = 0;
for (let i = 0, j = (data2.value || []).length; i < j; i++) {
const keyProp = (_c = (_b2 = instance == null ? void 0 : instance.store) == null ? void 0 : _b2.states) == null ? void 0 : _c.rowKey.value;
const rowIndex = i + childrenCount;
const item = data2.value[i];
const isRowSelectable = selectable.value && selectable.value.call(null, item, rowIndex);
if (!isSelected2(item)) {
if (!selectable.value || isRowSelectable) {
isAllSelected_ = false;
break;
}
} else {
selectedCount++;
}
childrenCount += getChildrenCount(getRowIdentity(item, keyProp));
}
if (selectedCount === 0)
isAllSelected_ = false;
isAllSelected.value = isAllSelected_;
};
const getChildrenCount = (rowKey2) => {
var _a22;
if (!instance || !instance.store)
return 0;
const { treeData } = instance.store.states;
let count = 0;
const children = (_a22 = treeData.value[rowKey2]) == null ? void 0 : _a22.children;
if (children) {
count += children.length;
children.forEach((childKey) => {
count += getChildrenCount(childKey);
});
}
return count;
};
const updateFilters = (columns2, values) => {
if (!Array.isArray(columns2)) {
columns2 = [columns2];
}
const filters_ = {};
columns2.forEach((col) => {
filters.value[col.id] = values;
filters_[col.columnKey || col.id] = values;
});
return filters_;
};
const updateSort = (column, prop, order2) => {
if (sortingColumn.value && sortingColumn.value !== column) {
sortingColumn.value.order = null;
}
sortingColumn.value = column;
sortProp.value = prop;
sortOrder.value = order2;
};
const execFilter = () => {
let sourceData = unref(_data);
Object.keys(filters.value).forEach((columnId) => {
const values = filters.value[columnId];
if (!values || values.length === 0)
return;
const column = getColumnById({
columns: columns.value
}, columnId);
if (column && column.filterMethod) {
sourceData = sourceData.filter((row) => {
return values.some((value) => column.filterMethod.call(null, value, row, column));
});
}
});
filteredData.value = sourceData;
};
const execSort = () => {
data2.value = sortData(filteredData.value, {
sortingColumn: sortingColumn.value,
sortProp: sortProp.value,
sortOrder: sortOrder.value
});
};
const execQuery = (ignore = void 0) => {
if (!(ignore && ignore.filter)) {
execFilter();
}
execSort();
};
const clearFilter = (columnKeys) => {
const { tableHeaderRef } = instance.refs;
if (!tableHeaderRef)
return;
const panels = Object.assign({}, tableHeaderRef.filterPanels);
const keys2 = Object.keys(panels);
if (!keys2.length)
return;
if (typeof columnKeys === "string") {
columnKeys = [columnKeys];
}
if (Array.isArray(columnKeys)) {
const columns_ = columnKeys.map((key) => getColumnByKey({
columns: columns.value
}, key));
keys2.forEach((key) => {
const column = columns_.find((col) => col.id === key);
if (column) {
column.filteredValue = [];
}
});
instance.store.commit("filterChange", {
column: columns_,
values: [],
silent: true,
multi: true
});
} else {
keys2.forEach((key) => {
const column = columns.value.find((col) => col.id === key);
if (column) {
column.filteredValue = [];
}
});
filters.value = {};
instance.store.commit("filterChange", {
column: {},
values: [],
silent: true
});
}
};
const clearSort = () => {
if (!sortingColumn.value)
return;
updateSort(null, null, null);
instance.store.commit("changeSortCondition", {
silent: true
});
};
const {
setExpandRowKeys,
toggleRowExpansion,
updateExpandRows,
states: expandStates,
isRowExpanded
} = useExpand({
data: data2,
rowKey
});
const {
updateTreeExpandKeys,
toggleTreeExpansion,
updateTreeData,
loadOrToggle,
states: treeStates
} = useTree({
data: data2,
rowKey
});
const {
updateCurrentRowData,
updateCurrentRow,
setCurrentRowKey,
states: currentData
} = useCurrent({
data: data2,
rowKey
});
const setExpandRowKeysAdapter = (val) => {
setExpandRowKeys(val);
updateTreeExpandKeys(val);
};
const toggleRowExpansionAdapter = (row, expanded) => {
const hasExpandColumn = columns.value.some(({ type: type4 }) => type4 === "expand");
if (hasExpandColumn) {
toggleRowExpansion(row, expanded);
} else {
toggleTreeExpansion(row, expanded);
}
};
return {
assertRowKey,
updateColumns,
scheduleLayout,
isSelected,
clearSelection,
cleanSelection,
getSelectionRows,
toggleRowSelection,
_toggleAllSelection,
toggleAllSelection: null,
updateSelectionByRowKey,
updateAllSelected,
updateFilters,
updateCurrentRow,
updateSort,
execFilter,
execSort,
execQuery,
clearFilter,
clearSort,
toggleRowExpansion,
setExpandRowKeysAdapter,
setCurrentRowKey,
toggleRowExpansionAdapter,
isRowExpanded,
updateExpandRows,
updateCurrentRowData,
loadOrToggle,
updateTreeData,
states: __spreadValues(__spreadValues(__spreadValues({
tableSize,
rowKey,
data: data2,
_data,
isComplex,
_columns,
originColumns,
columns,
fixedColumns,
rightFixedColumns,
leafColumns,
fixedLeafColumns,
rightFixedLeafColumns,
leafColumnsLength,
fixedLeafColumnsLength,
rightFixedLeafColumnsLength,
isAllSelected,
selection,
reserveSelection,
selectOnIndeterminate,
selectable,
filters,
filteredData,
sortingColumn,
sortProp,
sortOrder,
hoverRow
}, expandStates), treeStates), currentData)
};
}
function replaceColumn(array4, column) {
return array4.map((item) => {
var _a2;
if (item.id === column.id) {
return column;
} else if ((_a2 = item.children) == null ? void 0 : _a2.length) {
item.children = replaceColumn(item.children, column);
}
return item;
});
}
function sortColumn(array4) {
array4.forEach((item) => {
var _a2, _b2;
item.no = (_a2 = item.getColumnIndex) == null ? void 0 : _a2.call(item);
if ((_b2 = item.children) == null ? void 0 : _b2.length) {
sortColumn(item.children);
}
});
array4.sort((cur, pre) => cur.no - pre.no);
}
function useStore() {
const instance = getCurrentInstance();
const watcher = useWatcher$1();
const ns = useNamespace("table");
const mutations = {
setData(states, data2) {
const dataInstanceChanged = unref(states._data) !== data2;
states.data.value = data2;
states._data.value = data2;
instance.store.execQuery();
instance.store.updateCurrentRowData();
instance.store.updateExpandRows();
instance.store.updateTreeData(instance.store.states.defaultExpandAll.value);
if (unref(states.reserveSelection)) {
instance.store.assertRowKey();
instance.store.updateSelectionByRowKey();
} else {
if (dataInstanceChanged) {
instance.store.clearSelection();
} else {
instance.store.cleanSelection();
}
}
instance.store.updateAllSelected();
if (instance.$ready) {
instance.store.scheduleLayout();
}
},
insertColumn(states, column, parent) {
const array4 = unref(states._columns);
let newColumns = [];
if (!parent) {
array4.push(column);
newColumns = array4;
} else {
if (parent && !parent.children) {
parent.children = [];
}
parent.children.push(column);
newColumns = replaceColumn(array4, parent);
}
sortColumn(newColumns);
states._columns.value = newColumns;
if (column.type === "selection") {
states.selectable.value = column.selectable;
states.reserveSelection.value = column.reserveSelection;
}
if (instance.$ready) {
instance.store.updateColumns();
instance.store.scheduleLayout();
}
},
removeColumn(states, column, parent) {
const array4 = unref(states._columns) || [];
if (parent) {
parent.children.splice(parent.children.findIndex((item) => item.id === column.id), 1);
if (parent.children.length === 0) {
delete parent.children;
}
states._columns.value = replaceColumn(array4, parent);
} else {
const index = array4.indexOf(column);
if (index > -1) {
array4.splice(index, 1);
states._columns.value = array4;
}
}
if (instance.$ready) {
instance.store.updateColumns();
instance.store.scheduleLayout();
}
},
sort(states, options) {
const { prop, order: order2, init } = options;
if (prop) {
const column = unref(states.columns).find((column2) => column2.property === prop);
if (column) {
column.order = order2;
instance.store.updateSort(column, prop, order2);
instance.store.commit("changeSortCondition", { init });
}
}
},
changeSortCondition(states, options) {
const { sortingColumn: column, sortProp: prop, sortOrder: order2 } = states;
if (unref(order2) === null) {
states.sortingColumn.value = null;
states.sortProp.value = null;
}
const ingore = { filter: true };
instance.store.execQuery(ingore);
if (!options || !(options.silent || options.init)) {
instance.emit("sort-change", {
column: unref(column),
prop: unref(prop),
order: unref(order2)
});
}
instance.store.updateTableScrollY();
},
filterChange(_states, options) {
const { column, values, silent } = options;
const newFilters = instance.store.updateFilters(column, values);
instance.store.execQuery();
if (!silent) {
instance.emit("filter-change", newFilters);
}
instance.store.updateTableScrollY();
},
toggleAllSelection() {
instance.store.toggleAllSelection();
},
rowSelectedChanged(_states, row) {
instance.store.toggleRowSelection(row);
instance.store.updateAllSelected();
},
setHoverRow(states, row) {
states.hoverRow.value = row;
},
setCurrentRow(_states, row) {
instance.store.updateCurrentRow(row);
}
};
const commit = function(name, ...args) {
const mutations2 = instance.store.mutations;
if (mutations2[name]) {
mutations2[name].apply(instance, [instance.store.states].concat(args));
} else {
throw new Error(`Action not found: ${name}`);
}
};
const updateTableScrollY = function() {
nextTick(() => instance.layout.updateScrollY.apply(instance.layout));
};
return __spreadProps(__spreadValues({
ns
}, watcher), {
mutations,
commit,
updateTableScrollY
});
}
const InitialStateMap = {
rowKey: "rowKey",
defaultExpandAll: "defaultExpandAll",
selectOnIndeterminate: "selectOnIndeterminate",
indent: "indent",
lazy: "lazy",
data: "data",
["treeProps.hasChildren"]: {
key: "lazyColumnIdentifier",
default: "hasChildren"
},
["treeProps.children"]: {
key: "childrenColumnName",
default: "children"
}
};
function createStore(table, props) {
if (!table) {
throw new Error("Table is required.");
}
const store = useStore();
store.toggleAllSelection = debounce$1(store._toggleAllSelection, 10);
Object.keys(InitialStateMap).forEach((key) => {
handleValue(getArrKeysValue(props, key), key, store);
});
proxyTableProps(store, props);
return store;
}
function proxyTableProps(store, props) {
Object.keys(InitialStateMap).forEach((key) => {
watch(() => getArrKeysValue(props, key), (value) => {
handleValue(value, key, store);
});
});
}
function handleValue(value, propsKey, store) {
let newVal = value;
let storeKey = InitialStateMap[propsKey];
if (typeof InitialStateMap[propsKey] === "object") {
storeKey = storeKey.key;
newVal = newVal || InitialStateMap[propsKey].default;
}
store.states[storeKey].value = newVal;
}
function getArrKeysValue(props, keys2) {
if (keys2.includes(".")) {
const keyList = keys2.split(".");
let value = props;
keyList.forEach((key) => {
value = value[key];
});
return value;
} else {
return props[keys2];
}
}
class TableLayout {
constructor(options) {
this.observers = [];
this.table = null;
this.store = null;
this.columns = [];
this.fit = true;
this.showHeader = true;
this.height = ref(null);
this.scrollX = ref(false);
this.scrollY = ref(false);
this.bodyWidth = ref(null);
this.fixedWidth = ref(null);
this.rightFixedWidth = ref(null);
this.tableHeight = ref(null);
this.headerHeight = ref(44);
this.appendHeight = ref(0);
this.footerHeight = ref(44);
this.viewportHeight = ref(null);
this.bodyHeight = ref(null);
this.bodyScrollHeight = ref(0);
this.fixedBodyHeight = ref(null);
this.gutterWidth = 0;
for (const name in options) {
if (hasOwn(options, name)) {
if (isRef(this[name])) {
this[name].value = options[name];
} else {
this[name] = options[name];
}
}
}
if (!this.table) {
throw new Error("Table is required for Table Layout");
}
if (!this.store) {
throw new Error("Store is required for Table Layout");
}
}
updateScrollY() {
const height = this.height.value;
if (height === null)
return false;
const bodyWrapper = this.table.refs.bodyWrapper;
if (this.table.vnode.el && bodyWrapper) {
let scrollY = true;
const prevScrollY = this.scrollY.value;
if (this.bodyHeight.value === null) {
scrollY = false;
} else {
scrollY = bodyWrapper.scrollHeight > this.bodyHeight.value;
}
this.scrollY.value = scrollY;
return prevScrollY !== scrollY;
}
return false;
}
setHeight(value, prop = "height") {
if (!isClient)
return;
const el = this.table.vnode.el;
value = parseHeight(value);
this.height.value = Number(value);
if (!el && (value || value === 0))
return nextTick(() => this.setHeight(value, prop));
if (typeof value === "number") {
el.style[prop] = `${value}px`;
this.updateElsHeight();
} else if (typeof value === "string") {
el.style[prop] = value;
this.updateElsHeight();
}
}
setMaxHeight(value) {
this.setHeight(value, "max-height");
}
getFlattenColumns() {
const flattenColumns = [];
const columns = this.table.store.states.columns.value;
columns.forEach((column) => {
if (column.isColumnGroup) {
flattenColumns.push.apply(flattenColumns, column.columns);
} else {
flattenColumns.push(column);
}
});
return flattenColumns;
}
updateElsHeight() {
var _a2, _b2;
if (!this.table.$ready)
return nextTick(() => this.updateElsHeight());
const {
tableWrapper,
headerWrapper,
appendWrapper,
footerWrapper,
tableHeader,
tableBody
} = this.table.refs;
if (tableWrapper && tableWrapper.style.display === "none") {
return;
}
const { tableLayout } = this.table.props;
this.appendHeight.value = appendWrapper ? appendWrapper.offsetHeight : 0;
if (this.showHeader && !headerWrapper && tableLayout === "fixed") {
return;
}
const headerTrElm = tableHeader ? tableHeader : null;
const noneHeader = this.headerDisplayNone(headerTrElm);
const headerWrapperOffsetHeight = (headerWrapper == null ? void 0 : headerWrapper.offsetHeight) || 0;
const headerHeight = this.headerHeight.value = !this.showHeader ? 0 : headerWrapperOffsetHeight;
if (this.showHeader && !noneHeader && headerWrapperOffsetHeight > 0 && (this.table.store.states.columns.value || []).length > 0 && headerHeight < 2) {
return nextTick(() => this.updateElsHeight());
}
const tableHeight = this.tableHeight.value = (_b2 = (_a2 = this.table) == null ? void 0 : _a2.vnode.el) == null ? void 0 : _b2.clientHeight;
const footerHeight = this.footerHeight.value = footerWrapper ? footerWrapper.offsetHeight : 0;
if (this.height.value !== null) {
if (this.bodyHeight.value === null) {
requestAnimationFrame(() => this.updateElsHeight());
}
this.bodyHeight.value = tableHeight - headerHeight - footerHeight + (footerWrapper ? 1 : 0);
this.bodyScrollHeight.value = tableBody == null ? void 0 : tableBody.scrollHeight;
}
this.fixedBodyHeight.value = this.scrollX.value ? this.bodyHeight.value - this.gutterWidth : this.bodyHeight.value;
this.viewportHeight.value = this.scrollX.value ? tableHeight - this.gutterWidth : tableHeight;
this.updateScrollY();
this.notifyObservers("scrollable");
}
headerDisplayNone(elm) {
if (!elm)
return true;
let headerChild = elm;
while (headerChild.tagName !== "DIV") {
if (getComputedStyle(headerChild).display === "none") {
return true;
}
headerChild = headerChild.parentElement;
}
return false;
}
updateColumnsWidth() {
if (!isClient)
return;
const fit = this.fit;
const bodyWidth = this.table.vnode.el.clientWidth;
let bodyMinWidth = 0;
const flattenColumns = this.getFlattenColumns();
const flexColumns = flattenColumns.filter((column) => typeof column.width !== "number");
flattenColumns.forEach((column) => {
if (typeof column.width === "number" && column.realWidth)
column.realWidth = null;
});
if (flexColumns.length > 0 && fit) {
flattenColumns.forEach((column) => {
bodyMinWidth += Number(column.width || column.minWidth || 80);
});
if (bodyMinWidth <= bodyWidth) {
this.scrollX.value = false;
const totalFlexWidth = bodyWidth - bodyMinWidth;
if (flexColumns.length === 1) {
flexColumns[0].realWidth = Number(flexColumns[0].minWidth || 80) + totalFlexWidth;
} else {
const allColumnsWidth = flexColumns.reduce((prev, column) => prev + Number(column.minWidth || 80), 0);
const flexWidthPerPixel = totalFlexWidth / allColumnsWidth;
let noneFirstWidth = 0;
flexColumns.forEach((column, index) => {
if (index === 0)
return;
const flexWidth = Math.floor(Number(column.minWidth || 80) * flexWidthPerPixel);
noneFirstWidth += flexWidth;
column.realWidth = Number(column.minWidth || 80) + flexWidth;
});
flexColumns[0].realWidth = Number(flexColumns[0].minWidth || 80) + totalFlexWidth - noneFirstWidth;
}
} else {
this.scrollX.value = true;
flexColumns.forEach((column) => {
column.realWidth = Number(column.minWidth);
});
}
this.bodyWidth.value = Math.max(bodyMinWidth, bodyWidth);
this.table.state.resizeState.value.width = this.bodyWidth.value;
} else {
flattenColumns.forEach((column) => {
if (!column.width && !column.minWidth) {
column.realWidth = 80;
} else {
column.realWidth = Number(column.width || column.minWidth);
}
bodyMinWidth += column.realWidth;
});
this.scrollX.value = bodyMinWidth > bodyWidth;
this.bodyWidth.value = bodyMinWidth;
}
const fixedColumns = this.store.states.fixedColumns.value;
if (fixedColumns.length > 0) {
let fixedWidth = 0;
fixedColumns.forEach((column) => {
fixedWidth += Number(column.realWidth || column.width);
});
this.fixedWidth.value = fixedWidth;
}
const rightFixedColumns = this.store.states.rightFixedColumns.value;
if (rightFixedColumns.length > 0) {
let rightFixedWidth = 0;
rightFixedColumns.forEach((column) => {
rightFixedWidth += Number(column.realWidth || column.width);
});
this.rightFixedWidth.value = rightFixedWidth;
}
this.notifyObservers("columns");
}
addObserver(observer) {
this.observers.push(observer);
}
removeObserver(observer) {
const index = this.observers.indexOf(observer);
if (index !== -1) {
this.observers.splice(index, 1);
}
}
notifyObservers(event) {
const observers = this.observers;
observers.forEach((observer) => {
var _a2, _b2;
switch (event) {
case "columns":
(_a2 = observer.state) == null ? void 0 : _a2.onColumnsChange(this);
break;
case "scrollable":
(_b2 = observer.state) == null ? void 0 : _b2.onScrollableChange(this);
break;
default:
throw new Error(`Table Layout don't have event ${event}.`);
}
});
}
}
const { CheckboxGroup: ElCheckboxGroup } = ElCheckbox;
const _sfc_main$f = defineComponent({
name: "ElTableFilterPanel",
components: {
ElCheckbox,
ElCheckboxGroup,
ElScrollbar,
ElTooltip,
ElIcon,
ArrowDown: arrowDown,
ArrowUp: arrowUp
},
directives: { ClickOutside },
props: {
placement: {
type: String,
default: "bottom-start"
},
store: {
type: Object
},
column: {
type: Object
},
upDataColumn: {
type: Function
}
},
setup(props) {
const instance = getCurrentInstance();
const { t } = useLocale();
const ns = useNamespace("table-filter");
const parent = instance == null ? void 0 : instance.parent;
if (!parent.filterPanels.value[props.column.id]) {
parent.filterPanels.value[props.column.id] = instance;
}
const tooltipVisible = ref(false);
const tooltip = ref(null);
const filters = computed(() => {
return props.column && props.column.filters;
});
const filterValue = computed({
get: () => {
var _a2;
return (((_a2 = props.column) == null ? void 0 : _a2.filteredValue) || [])[0];
},
set: (value) => {
if (filteredValue.value) {
if (typeof value !== "undefined" && value !== null) {
filteredValue.value.splice(0, 1, value);
} else {
filteredValue.value.splice(0, 1);
}
}
}
});
const filteredValue = computed({
get() {
if (props.column) {
return props.column.filteredValue || [];
}
return [];
},
set(value) {
if (props.column) {
props.upDataColumn("filteredValue", value);
}
}
});
const multiple = computed(() => {
if (props.column) {
return props.column.filterMultiple;
}
return true;
});
const isActive = (filter) => {
return filter.value === filterValue.value;
};
const hidden = () => {
tooltipVisible.value = false;
};
const showFilterPanel = (e) => {
e.stopPropagation();
tooltipVisible.value = !tooltipVisible.value;
};
const hideFilterPanel = () => {
tooltipVisible.value = false;
};
const handleConfirm = () => {
confirmFilter(filteredValue.value);
hidden();
};
const handleReset = () => {
filteredValue.value = [];
confirmFilter(filteredValue.value);
hidden();
};
const handleSelect = (_filterValue) => {
filterValue.value = _filterValue;
if (typeof _filterValue !== "undefined" && _filterValue !== null) {
confirmFilter(filteredValue.value);
} else {
confirmFilter([]);
}
hidden();
};
const confirmFilter = (filteredValue2) => {
props.store.commit("filterChange", {
column: props.column,
values: filteredValue2
});
props.store.updateAllSelected();
};
watch(tooltipVisible, (value) => {
if (props.column) {
props.upDataColumn("filterOpened", value);
}
}, {
immediate: true
});
const popperPaneRef = computed(() => {
var _a2, _b2;
return (_b2 = (_a2 = tooltip.value) == null ? void 0 : _a2.popperRef) == null ? void 0 : _b2.contentRef;
});
return {
tooltipVisible,
multiple,
filteredValue,
filterValue,
filters,
handleConfirm,
handleReset,
handleSelect,
isActive,
t,
ns,
showFilterPanel,
hideFilterPanel,
popperPaneRef,
tooltip
};
}
});
const _hoisted_1$c = { key: 0 };
const _hoisted_2$a = ["disabled"];
const _hoisted_3$7 = ["label", "onClick"];
function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
const _component_el_checkbox = resolveComponent("el-checkbox");
const _component_el_checkbox_group = resolveComponent("el-checkbox-group");
const _component_el_scrollbar = resolveComponent("el-scrollbar");
const _component_arrow_up = resolveComponent("arrow-up");
const _component_arrow_down = resolveComponent("arrow-down");
const _component_el_icon = resolveComponent("el-icon");
const _component_el_tooltip = resolveComponent("el-tooltip");
const _directive_click_outside = resolveDirective("click-outside");
return openBlock(), createBlock(_component_el_tooltip, {
ref: "tooltip",
visible: _ctx.tooltipVisible,
"onUpdate:visible": _cache[5] || (_cache[5] = ($event) => _ctx.tooltipVisible = $event),
offset: 0,
placement: _ctx.placement,
"show-arrow": false,
"stop-popper-mouse-event": false,
"append-to-body": "",
effect: "light",
pure: "",
"popper-class": _ctx.ns.b(),
persistent: ""
}, {
content: withCtx(() => [
_ctx.multiple ? (openBlock(), createElementBlock("div", _hoisted_1$c, [
createElementVNode("div", {
class: normalizeClass(_ctx.ns.e("content"))
}, [
createVNode(_component_el_scrollbar, {
"wrap-class": _ctx.ns.e("wrap")
}, {
default: withCtx(() => [
createVNode(_component_el_checkbox_group, {
modelValue: _ctx.filteredValue,
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => _ctx.filteredValue = $event),
class: normalizeClass(_ctx.ns.e("checkbox-group"))
}, {
default: withCtx(() => [
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.filters, (filter) => {
return openBlock(), createBlock(_component_el_checkbox, {
key: filter.value,
label: filter.value
}, {
default: withCtx(() => [
createTextVNode(toDisplayString(filter.text), 1)
]),
_: 2
}, 1032, ["label"]);
}), 128))
]),
_: 1
}, 8, ["modelValue", "class"])
]),
_: 1
}, 8, ["wrap-class"])
], 2),
createElementVNode("div", {
class: normalizeClass(_ctx.ns.e("bottom"))
}, [
createElementVNode("button", {
class: normalizeClass({ [_ctx.ns.is("disabled")]: _ctx.filteredValue.length === 0 }),
disabled: _ctx.filteredValue.length === 0,
type: "button",
onClick: _cache[1] || (_cache[1] = (...args) => _ctx.handleConfirm && _ctx.handleConfirm(...args))
}, toDisplayString(_ctx.t("el.table.confirmFilter")), 11, _hoisted_2$a),
createElementVNode("button", {
type: "button",
onClick: _cache[2] || (_cache[2] = (...args) => _ctx.handleReset && _ctx.handleReset(...args))
}, toDisplayString(_ctx.t("el.table.resetFilter")), 1)
], 2)
])) : (openBlock(), createElementBlock("ul", {
key: 1,
class: normalizeClass(_ctx.ns.e("list"))
}, [
createElementVNode("li", {
class: normalizeClass([
_ctx.ns.e("list-item"),
{
[_ctx.ns.is("active")]: _ctx.filterValue === void 0 || _ctx.filterValue === null
}
]),
onClick: _cache[3] || (_cache[3] = ($event) => _ctx.handleSelect(null))
}, toDisplayString(_ctx.t("el.table.clearFilter")), 3),
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.filters, (filter) => {
return openBlock(), createElementBlock("li", {
key: filter.value,
class: normalizeClass([_ctx.ns.e("list-item"), _ctx.ns.is("active", _ctx.isActive(filter))]),
label: filter.value,
onClick: ($event) => _ctx.handleSelect(filter.value)
}, toDisplayString(filter.text), 11, _hoisted_3$7);
}), 128))
], 2))
]),
default: withCtx(() => [
withDirectives((openBlock(), createElementBlock("span", {
class: normalizeClass([
`${_ctx.ns.namespace.value}-table__column-filter-trigger`,
`${_ctx.ns.namespace.value}-none-outline`
]),
onClick: _cache[4] || (_cache[4] = (...args) => _ctx.showFilterPanel && _ctx.showFilterPanel(...args))
}, [
createVNode(_component_el_icon, null, {
default: withCtx(() => [
_ctx.column.filterOpened ? (openBlock(), createBlock(_component_arrow_up, { key: 0 })) : (openBlock(), createBlock(_component_arrow_down, { key: 1 }))
]),
_: 1
})
], 2)), [
[_directive_click_outside, _ctx.hideFilterPanel, _ctx.popperPaneRef]
])
]),
_: 1
}, 8, ["visible", "placement", "popper-class"]);
}
var FilterPanel = /* @__PURE__ */ _export_sfc$1(_sfc_main$f, [["render", _sfc_render$3], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/table/src/filter-panel.vue"]]);
function useLayoutObserver(root2) {
const instance = getCurrentInstance();
onBeforeMount(() => {
tableLayout.value.addObserver(instance);
});
onMounted(() => {
onColumnsChange(tableLayout.value);
onScrollableChange(tableLayout.value);
});
onUpdated(() => {
onColumnsChange(tableLayout.value);
onScrollableChange(tableLayout.value);
});
onUnmounted(() => {
tableLayout.value.removeObserver(instance);
});
const tableLayout = computed(() => {
const layout = root2.layout;
if (!layout) {
throw new Error("Can not find table layout.");
}
return layout;
});
const onColumnsChange = (layout) => {
var _a2;
const cols = ((_a2 = root2.vnode.el) == null ? void 0 : _a2.querySelectorAll("colgroup > col")) || [];
if (!cols.length)
return;
const flattenColumns = layout.getFlattenColumns();
const columnsMap = {};
flattenColumns.forEach((column) => {
columnsMap[column.id] = column;
});
for (let i = 0, j = cols.length; i < j; i++) {
const col = cols[i];
const name = col.getAttribute("name");
const column = columnsMap[name];
if (column) {
col.setAttribute("width", column.realWidth || column.width);
}
}
};
const onScrollableChange = (layout) => {
var _a2, _b2;
const cols = ((_a2 = root2.vnode.el) == null ? void 0 : _a2.querySelectorAll("colgroup > col[name=gutter]")) || [];
for (let i = 0, j = cols.length; i < j; i++) {
const col = cols[i];
col.setAttribute("width", layout.scrollY.value ? layout.gutterWidth : "0");
}
const ths = ((_b2 = root2.vnode.el) == null ? void 0 : _b2.querySelectorAll("th.gutter")) || [];
for (let i = 0, j = ths.length; i < j; i++) {
const th = ths[i];
th.style.width = layout.scrollY.value ? `${layout.gutterWidth}px` : "0";
th.style.display = layout.scrollY.value ? "" : "none";
}
};
return {
tableLayout: tableLayout.value,
onColumnsChange,
onScrollableChange
};
}
const TABLE_INJECTION_KEY = Symbol("ElTable");
function useEvent(props, emit) {
const instance = getCurrentInstance();
const parent = inject(TABLE_INJECTION_KEY);
const handleFilterClick = (event) => {
event.stopPropagation();
return;
};
const handleHeaderClick = (event, column) => {
if (!column.filters && column.sortable) {
handleSortClick(event, column, false);
} else if (column.filterable && !column.sortable) {
handleFilterClick(event);
}
parent == null ? void 0 : parent.emit("header-click", column, event);
};
const handleHeaderContextMenu = (event, column) => {
parent == null ? void 0 : parent.emit("header-contextmenu", column, event);
};
const draggingColumn = ref(null);
const dragging = ref(false);
const dragState = ref({});
const handleMouseDown = (event, column) => {
if (!isClient)
return;
if (column.children && column.children.length > 0)
return;
if (draggingColumn.value && props.border) {
dragging.value = true;
const table = parent;
emit("set-drag-visible", true);
const tableEl = table == null ? void 0 : table.vnode.el;
const tableLeft = tableEl.getBoundingClientRect().left;
const columnEl = instance.vnode.el.querySelector(`th.${column.id}`);
const columnRect = columnEl.getBoundingClientRect();
const minLeft = columnRect.left - tableLeft + 30;
addClass(columnEl, "noclick");
dragState.value = {
startMouseLeft: event.clientX,
startLeft: columnRect.right - tableLeft,
startColumnLeft: columnRect.left - tableLeft,
tableLeft
};
const resizeProxy = table == null ? void 0 : table.refs.resizeProxy;
resizeProxy.style.left = `${dragState.value.startLeft}px`;
document.onselectstart = function() {
return false;
};
document.ondragstart = function() {
return false;
};
const handleMouseMove2 = (event2) => {
const deltaLeft = event2.clientX - dragState.value.startMouseLeft;
const proxyLeft = dragState.value.startLeft + deltaLeft;
resizeProxy.style.left = `${Math.max(minLeft, proxyLeft)}px`;
};
const handleMouseUp = () => {
if (dragging.value) {
const { startColumnLeft, startLeft } = dragState.value;
const finalLeft = Number.parseInt(resizeProxy.style.left, 10);
const columnWidth = finalLeft - startColumnLeft;
column.width = column.realWidth = columnWidth;
table == null ? void 0 : table.emit("header-dragend", column.width, startLeft - startColumnLeft, column, event);
requestAnimationFrame(() => {
props.store.scheduleLayout(false, true);
});
document.body.style.cursor = "";
dragging.value = false;
draggingColumn.value = null;
dragState.value = {};
emit("set-drag-visible", false);
}
document.removeEventListener("mousemove", handleMouseMove2);
document.removeEventListener("mouseup", handleMouseUp);
document.onselectstart = null;
document.ondragstart = null;
setTimeout(() => {
removeClass(columnEl, "noclick");
}, 0);
};
document.addEventListener("mousemove", handleMouseMove2);
document.addEventListener("mouseup", handleMouseUp);
}
};
const handleMouseMove = (event, column) => {
if (column.children && column.children.length > 0)
return;
let target = event.target;
while (target && target.tagName !== "TH") {
target = target.parentNode;
}
if (!column || !column.resizable)
return;
if (!dragging.value && props.border) {
const rect = target.getBoundingClientRect();
const bodyStyle = document.body.style;
if (rect.width > 12 && rect.right - event.pageX < 8) {
bodyStyle.cursor = "col-resize";
if (hasClass(target, "is-sortable")) {
target.style.cursor = "col-resize";
}
draggingColumn.value = column;
} else if (!dragging.value) {
bodyStyle.cursor = "";
if (hasClass(target, "is-sortable")) {
target.style.cursor = "pointer";
}
draggingColumn.value = null;
}
}
};
const handleMouseOut = () => {
if (!isClient)
return;
document.body.style.cursor = "";
};
const toggleOrder = ({ order: order2, sortOrders }) => {
if (order2 === "")
return sortOrders[0];
const index = sortOrders.indexOf(order2 || null);
return sortOrders[index > sortOrders.length - 2 ? 0 : index + 1];
};
const handleSortClick = (event, column, givenOrder) => {
event.stopPropagation();
const order2 = column.order === givenOrder ? null : givenOrder || toggleOrder(column);
let target = event.target;
while (target && target.tagName !== "TH") {
target = target.parentNode;
}
if (target && target.tagName === "TH") {
if (hasClass(target, "noclick")) {
removeClass(target, "noclick");
return;
}
}
if (!column.sortable)
return;
const states = props.store.states;
let sortProp = states.sortProp.value;
let sortOrder;
const sortingColumn = states.sortingColumn.value;
if (sortingColumn !== column || sortingColumn === column && sortingColumn.order === null) {
if (sortingColumn) {
sortingColumn.order = null;
}
states.sortingColumn.value = column;
sortProp = column.property;
}
if (!order2) {
sortOrder = column.order = null;
} else {
sortOrder = column.order = order2;
}
states.sortProp.value = sortProp;
states.sortOrder.value = sortOrder;
parent == null ? void 0 : parent.store.commit("changeSortCondition");
};
return {
handleHeaderClick,
handleHeaderContextMenu,
handleMouseDown,
handleMouseMove,
handleMouseOut,
handleSortClick,
handleFilterClick
};
}
function useStyle$2(props) {
const parent = inject(TABLE_INJECTION_KEY);
const ns = useNamespace("table");
const getHeaderRowStyle = (rowIndex) => {
const headerRowStyle = parent == null ? void 0 : parent.props.headerRowStyle;
if (typeof headerRowStyle === "function") {
return headerRowStyle.call(null, { rowIndex });
}
return headerRowStyle;
};
const getHeaderRowClass = (rowIndex) => {
const classes = [];
const headerRowClassName = parent == null ? void 0 : parent.props.headerRowClassName;
if (typeof headerRowClassName === "string") {
classes.push(headerRowClassName);
} else if (typeof headerRowClassName === "function") {
classes.push(headerRowClassName.call(null, { rowIndex }));
}
return classes.join(" ");
};
const getHeaderCellStyle = (rowIndex, columnIndex, row, column) => {
var _a2;
let headerCellStyles = (_a2 = parent == null ? void 0 : parent.props.headerCellStyle) != null ? _a2 : {};
if (typeof headerCellStyles === "function") {
headerCellStyles = headerCellStyles.call(null, {
rowIndex,
columnIndex,
row,
column
});
}
const fixedStyle = column.isSubColumn ? null : getFixedColumnOffset(columnIndex, column.fixed, props.store, row);
ensurePosition(fixedStyle, "left");
ensurePosition(fixedStyle, "right");
return Object.assign({}, headerCellStyles, fixedStyle);
};
const getHeaderCellClass = (rowIndex, columnIndex, row, column) => {
const fixedClasses = column.isSubColumn ? [] : getFixedColumnsClass(ns.b(), columnIndex, column.fixed, props.store, row);
const classes = [
column.id,
column.order,
column.headerAlign,
column.className,
column.labelClassName,
...fixedClasses
];
if (!column.children) {
classes.push("is-leaf");
}
if (column.sortable) {
classes.push("is-sortable");
}
const headerCellClassName = parent == null ? void 0 : parent.props.headerCellClassName;
if (typeof headerCellClassName === "string") {
classes.push(headerCellClassName);
} else if (typeof headerCellClassName === "function") {
classes.push(headerCellClassName.call(null, {
rowIndex,
columnIndex,
row,
column
}));
}
classes.push(ns.e("cell"));
return classes.filter((className) => Boolean(className)).join(" ");
};
return {
getHeaderRowStyle,
getHeaderRowClass,
getHeaderCellStyle,
getHeaderCellClass
};
}
const getAllColumns = (columns) => {
const result = [];
columns.forEach((column) => {
if (column.children) {
result.push(column);
result.push.apply(result, getAllColumns(column.children));
} else {
result.push(column);
}
});
return result;
};
const convertToRows = (originColumns) => {
let maxLevel = 1;
const traverse = (column, parent) => {
if (parent) {
column.level = parent.level + 1;
if (maxLevel < column.level) {
maxLevel = column.level;
}
}
if (column.children) {
let colSpan = 0;
column.children.forEach((subColumn) => {
traverse(subColumn, column);
colSpan += subColumn.colSpan;
});
column.colSpan = colSpan;
} else {
column.colSpan = 1;
}
};
originColumns.forEach((column) => {
column.level = 1;
traverse(column, void 0);
});
const rows = [];
for (let i = 0; i < maxLevel; i++) {
rows.push([]);
}
const allColumns = getAllColumns(originColumns);
allColumns.forEach((column) => {
if (!column.children) {
column.rowSpan = maxLevel - column.level + 1;
} else {
column.rowSpan = 1;
column.children.forEach((col) => col.isSubColumn = true);
}
rows[column.level - 1].push(column);
});
return rows;
};
function useUtils$1(props) {
const parent = inject(TABLE_INJECTION_KEY);
const columnRows = computed(() => {
return convertToRows(props.store.states.originColumns.value);
});
const isGroup = computed(() => {
const result = columnRows.value.length > 1;
if (result && parent) {
parent.state.isGroup.value = true;
}
return result;
});
const toggleAllSelection = (event) => {
event.stopPropagation();
parent == null ? void 0 : parent.store.commit("toggleAllSelection");
};
return {
isGroup,
toggleAllSelection,
columnRows
};
}
var TableHeader = defineComponent({
name: "ElTableHeader",
components: {
ElCheckbox
},
props: {
fixed: {
type: String,
default: ""
},
store: {
required: true,
type: Object
},
border: Boolean,
defaultSort: {
type: Object,
default: () => {
return {
prop: "",
order: ""
};
}
}
},
setup(props, { emit }) {
const instance = getCurrentInstance();
const parent = inject(TABLE_INJECTION_KEY);
const ns = useNamespace("table");
const filterPanels = ref({});
const { onColumnsChange, onScrollableChange } = useLayoutObserver(parent);
onMounted(async () => {
await nextTick();
await nextTick();
const { prop, order: order2 } = props.defaultSort;
parent == null ? void 0 : parent.store.commit("sort", { prop, order: order2, init: true });
});
const {
handleHeaderClick,
handleHeaderContextMenu,
handleMouseDown,
handleMouseMove,
handleMouseOut,
handleSortClick,
handleFilterClick
} = useEvent(props, emit);
const {
getHeaderRowStyle,
getHeaderRowClass,
getHeaderCellStyle,
getHeaderCellClass
} = useStyle$2(props);
const { isGroup, toggleAllSelection, columnRows } = useUtils$1(props);
instance.state = {
onColumnsChange,
onScrollableChange
};
instance.filterPanels = filterPanels;
return {
ns,
filterPanels,
onColumnsChange,
onScrollableChange,
columnRows,
getHeaderRowClass,
getHeaderRowStyle,
getHeaderCellClass,
getHeaderCellStyle,
handleHeaderClick,
handleHeaderContextMenu,
handleMouseDown,
handleMouseMove,
handleMouseOut,
handleSortClick,
handleFilterClick,
isGroup,
toggleAllSelection
};
},
render() {
const {
ns,
isGroup,
columnRows,
getHeaderCellStyle,
getHeaderCellClass,
getHeaderRowClass,
getHeaderRowStyle,
handleHeaderClick,
handleHeaderContextMenu,
handleMouseDown,
handleMouseMove,
handleSortClick,
handleMouseOut,
store,
$parent
} = this;
let rowSpan = 1;
return h$1("thead", {
class: { [ns.is("group")]: isGroup }
}, columnRows.map((subColumns, rowIndex) => h$1("tr", {
class: getHeaderRowClass(rowIndex),
key: rowIndex,
style: getHeaderRowStyle(rowIndex)
}, subColumns.map((column, cellIndex) => {
if (column.rowSpan > rowSpan) {
rowSpan = column.rowSpan;
}
return h$1("th", {
class: getHeaderCellClass(rowIndex, cellIndex, subColumns, column),
colspan: column.colSpan,
key: `${column.id}-thead`,
rowspan: column.rowSpan,
style: getHeaderCellStyle(rowIndex, cellIndex, subColumns, column),
onClick: ($event) => handleHeaderClick($event, column),
onContextmenu: ($event) => handleHeaderContextMenu($event, column),
onMousedown: ($event) => handleMouseDown($event, column),
onMousemove: ($event) => handleMouseMove($event, column),
onMouseout: handleMouseOut
}, [
h$1("div", {
class: [
"cell",
column.filteredValue && column.filteredValue.length > 0 ? "highlight" : "",
column.labelClassName
]
}, [
column.renderHeader ? column.renderHeader({
column,
$index: cellIndex,
store,
_self: $parent
}) : column.label,
column.sortable && h$1("span", {
onClick: ($event) => handleSortClick($event, column),
class: "caret-wrapper"
}, [
h$1("i", {
onClick: ($event) => handleSortClick($event, column, "ascending"),
class: "sort-caret ascending"
}),
h$1("i", {
onClick: ($event) => handleSortClick($event, column, "descending"),
class: "sort-caret descending"
})
]),
column.filterable && h$1(FilterPanel, {
store,
placement: column.filterPlacement || "bottom-start",
column,
upDataColumn: (key, value) => {
column[key] = value;
}
})
])
]);
}))));
}
});
function useEvents(props) {
const parent = inject(TABLE_INJECTION_KEY);
const tooltipContent = ref("");
const tooltipTrigger = ref(h$1("div"));
const handleEvent = (event, row, name) => {
var _a2;
const table = parent;
const cell = getCell(event);
let column;
const namespace = (_a2 = table == null ? void 0 : table.vnode.el) == null ? void 0 : _a2.dataset.prefix;
if (cell) {
column = getColumnByCell({
columns: props.store.states.columns.value
}, cell, namespace);
if (column) {
table == null ? void 0 : table.emit(`cell-${name}`, row, column, cell, event);
}
}
table == null ? void 0 : table.emit(`row-${name}`, row, column, event);
};
const handleDoubleClick = (event, row) => {
handleEvent(event, row, "dblclick");
};
const handleClick = (event, row) => {
props.store.commit("setCurrentRow", row);
handleEvent(event, row, "click");
};
const handleContextMenu = (event, row) => {
handleEvent(event, row, "contextmenu");
};
const handleMouseEnter = debounce$1((index) => {
props.store.commit("setHoverRow", index);
}, 30);
const handleMouseLeave = debounce$1(() => {
props.store.commit("setHoverRow", null);
}, 30);
const handleCellMouseEnter = (event, row) => {
var _a2;
const table = parent;
const cell = getCell(event);
const namespace = (_a2 = table == null ? void 0 : table.vnode.el) == null ? void 0 : _a2.dataset.prefix;
if (cell) {
const column = getColumnByCell({
columns: props.store.states.columns.value
}, cell, namespace);
const hoverState = table.hoverState = { cell, column, row };
table == null ? void 0 : table.emit("cell-mouse-enter", hoverState.row, hoverState.column, hoverState.cell, event);
}
const cellChild = event.target.querySelector(".cell");
if (!(hasClass(cellChild, `${namespace}-tooltip`) && cellChild.childNodes.length)) {
return;
}
const range3 = document.createRange();
range3.setStart(cellChild, 0);
range3.setEnd(cellChild, cellChild.childNodes.length);
const rangeWidth = range3.getBoundingClientRect().width;
const padding = (Number.parseInt(getStyle(cellChild, "paddingLeft"), 10) || 0) + (Number.parseInt(getStyle(cellChild, "paddingRight"), 10) || 0);
if (rangeWidth + padding > cellChild.offsetWidth || cellChild.scrollWidth > cellChild.offsetWidth) {
createTablePopper(cell, cell.innerText || cell.textContent, {
placement: "top",
strategy: "fixed"
}, row.tooltipEffect);
}
};
const handleCellMouseLeave = (event) => {
const cell = getCell(event);
if (!cell)
return;
const oldHoverState = parent == null ? void 0 : parent.hoverState;
parent == null ? void 0 : parent.emit("cell-mouse-leave", oldHoverState == null ? void 0 : oldHoverState.row, oldHoverState == null ? void 0 : oldHoverState.column, oldHoverState == null ? void 0 : oldHoverState.cell, event);
};
return {
handleDoubleClick,
handleClick,
handleContextMenu,
handleMouseEnter,
handleMouseLeave,
handleCellMouseEnter,
handleCellMouseLeave,
tooltipContent,
tooltipTrigger
};
}
function useStyles(props) {
const parent = inject(TABLE_INJECTION_KEY);
const ns = useNamespace("table");
const getRowStyle = (row, rowIndex) => {
const rowStyle = parent == null ? void 0 : parent.props.rowStyle;
if (typeof rowStyle === "function") {
return rowStyle.call(null, {
row,
rowIndex
});
}
return rowStyle || null;
};
const getRowClass = (row, rowIndex) => {
const classes = [ns.e("row")];
if ((parent == null ? void 0 : parent.props.highlightCurrentRow) && row === props.store.states.currentRow.value) {
classes.push("current-row");
}
if (props.stripe && rowIndex % 2 === 1) {
classes.push(ns.em("row", "striped"));
}
const rowClassName = parent == null ? void 0 : parent.props.rowClassName;
if (typeof rowClassName === "string") {
classes.push(rowClassName);
} else if (typeof rowClassName === "function") {
classes.push(rowClassName.call(null, {
row,
rowIndex
}));
}
return classes;
};
const getCellStyle = (rowIndex, columnIndex, row, column) => {
const cellStyle = parent == null ? void 0 : parent.props.cellStyle;
let cellStyles = cellStyle != null ? cellStyle : {};
if (typeof cellStyle === "function") {
cellStyles = cellStyle.call(null, {
rowIndex,
columnIndex,
row,
column
});
}
const fixedStyle = column.isSubColumn ? null : getFixedColumnOffset(columnIndex, props == null ? void 0 : props.fixed, props.store);
ensurePosition(fixedStyle, "left");
ensurePosition(fixedStyle, "right");
return Object.assign({}, cellStyles, fixedStyle);
};
const getCellClass = (rowIndex, columnIndex, row, column) => {
const fixedClasses = column.isSubColumn ? [] : getFixedColumnsClass(ns.b(), columnIndex, props == null ? void 0 : props.fixed, props.store);
const classes = [column.id, column.align, column.className, ...fixedClasses];
const cellClassName = parent == null ? void 0 : parent.props.cellClassName;
if (typeof cellClassName === "string") {
classes.push(cellClassName);
} else if (typeof cellClassName === "function") {
classes.push(cellClassName.call(null, {
rowIndex,
columnIndex,
row,
column
}));
}
classes.push(ns.e("cell"));
return classes.filter((className) => Boolean(className)).join(" ");
};
const getSpan = (row, column, rowIndex, columnIndex) => {
let rowspan = 1;
let colspan = 1;
const fn2 = parent == null ? void 0 : parent.props.spanMethod;
if (typeof fn2 === "function") {
const result = fn2({
row,
column,
rowIndex,
columnIndex
});
if (Array.isArray(result)) {
rowspan = result[0];
colspan = result[1];
} else if (typeof result === "object") {
rowspan = result.rowspan;
colspan = result.colspan;
}
}
return { rowspan, colspan };
};
const getColspanRealWidth = (columns, colspan, index) => {
if (colspan < 1) {
return columns[index].realWidth;
}
const widthArr = columns.map(({ realWidth, width }) => realWidth || width).slice(index, index + colspan);
return Number(widthArr.reduce((acc, width) => Number(acc) + Number(width), -1));
};
return {
getRowStyle,
getRowClass,
getCellStyle,
getCellClass,
getSpan,
getColspanRealWidth
};
}
function useRender$1(props) {
const parent = inject(TABLE_INJECTION_KEY);
const {
handleDoubleClick,
handleClick,
handleContextMenu,
handleMouseEnter,
handleMouseLeave,
handleCellMouseEnter,
handleCellMouseLeave,
tooltipContent,
tooltipTrigger
} = useEvents(props);
const {
getRowStyle,
getRowClass,
getCellStyle,
getCellClass,
getSpan,
getColspanRealWidth
} = useStyles(props);
const firstDefaultColumnIndex = computed(() => {
return props.store.states.columns.value.findIndex(({ type: type4 }) => type4 === "default");
});
const getKeyOfRow = (row, index) => {
const rowKey = parent.props.rowKey;
if (rowKey) {
return getRowIdentity(row, rowKey);
}
return index;
};
const rowRender = (row, $index, treeRowData, expanded = false) => {
const { tooltipEffect, store } = props;
const { indent, columns } = store.states;
const rowClasses = getRowClass(row, $index);
let display = true;
if (treeRowData) {
rowClasses.push(`el-table__row--level-${treeRowData.level}`);
display = treeRowData.display;
}
const displayStyle = display ? null : {
display: "none"
};
return h$1("tr", {
style: [displayStyle, getRowStyle(row, $index)],
class: rowClasses,
key: getKeyOfRow(row, $index),
onDblclick: ($event) => handleDoubleClick($event, row),
onClick: ($event) => handleClick($event, row),
onContextmenu: ($event) => handleContextMenu($event, row),
onMouseenter: () => handleMouseEnter($index),
onMouseleave: handleMouseLeave
}, columns.value.map((column, cellIndex) => {
const { rowspan, colspan } = getSpan(row, column, $index, cellIndex);
if (!rowspan || !colspan) {
return null;
}
const columnData = __spreadValues({}, column);
columnData.realWidth = getColspanRealWidth(columns.value, colspan, cellIndex);
const data2 = {
store: props.store,
_self: props.context || parent,
column: columnData,
row,
$index,
cellIndex,
expanded
};
if (cellIndex === firstDefaultColumnIndex.value && treeRowData) {
data2.treeNode = {
indent: treeRowData.level * indent.value,
level: treeRowData.level
};
if (typeof treeRowData.expanded === "boolean") {
data2.treeNode.expanded = treeRowData.expanded;
if ("loading" in treeRowData) {
data2.treeNode.loading = treeRowData.loading;
}
if ("noLazyChildren" in treeRowData) {
data2.treeNode.noLazyChildren = treeRowData.noLazyChildren;
}
}
}
const baseKey = `${$index},${cellIndex}`;
const patchKey = columnData.columnKey || columnData.rawColumnKey || "";
const tdChildren = cellChildren(cellIndex, column, data2);
return h$1("td", {
style: getCellStyle($index, cellIndex, row, column),
class: getCellClass($index, cellIndex, row, column),
key: `${patchKey}${baseKey}`,
rowspan,
colspan,
onMouseenter: ($event) => handleCellMouseEnter($event, __spreadProps(__spreadValues({}, row), { tooltipEffect })),
onMouseleave: handleCellMouseLeave
}, [tdChildren]);
}));
};
const cellChildren = (cellIndex, column, data2) => {
return column.renderCell(data2);
};
const wrappedRowRender = (row, $index) => {
const store = props.store;
const { isRowExpanded, assertRowKey } = store;
const { treeData, lazyTreeNodeMap, childrenColumnName, rowKey } = store.states;
const columns = store.states.columns.value;
const hasExpandColumn = columns.some(({ type: type4 }) => type4 === "expand");
if (hasExpandColumn) {
const expanded = isRowExpanded(row);
const tr = rowRender(row, $index, void 0, expanded);
const renderExpanded = parent.renderExpanded;
if (expanded) {
if (!renderExpanded) {
console.error("[Element Error]renderExpanded is required.");
return tr;
}
return [
[
tr,
h$1("tr", {
key: `expanded-row__${tr.key}`
}, [
h$1("td", {
colspan: columns.length,
class: "el-table__cell el-table__expanded-cell"
}, [renderExpanded({ row, $index, store, expanded })])
])
]
];
} else {
return [[tr]];
}
} else if (Object.keys(treeData.value).length) {
assertRowKey();
const key = getRowIdentity(row, rowKey.value);
let cur = treeData.value[key];
let treeRowData = null;
if (cur) {
treeRowData = {
expanded: cur.expanded,
level: cur.level,
display: true
};
if (typeof cur.lazy === "boolean") {
if (typeof cur.loaded === "boolean" && cur.loaded) {
treeRowData.noLazyChildren = !(cur.children && cur.children.length);
}
treeRowData.loading = cur.loading;
}
}
const tmp = [rowRender(row, $index, treeRowData)];
if (cur) {
let i = 0;
const traverse = (children, parent2) => {
if (!(children && children.length && parent2))
return;
children.forEach((node) => {
const innerTreeRowData = {
display: parent2.display && parent2.expanded,
level: parent2.level + 1,
expanded: false,
noLazyChildren: false,
loading: false
};
const childKey = getRowIdentity(node, rowKey.value);
if (childKey === void 0 || childKey === null) {
throw new Error("For nested data item, row-key is required.");
}
cur = __spreadValues({}, treeData.value[childKey]);
if (cur) {
innerTreeRowData.expanded = cur.expanded;
cur.level = cur.level || innerTreeRowData.level;
cur.display = !!(cur.expanded && innerTreeRowData.display);
if (typeof cur.lazy === "boolean") {
if (typeof cur.loaded === "boolean" && cur.loaded) {
innerTreeRowData.noLazyChildren = !(cur.children && cur.children.length);
}
innerTreeRowData.loading = cur.loading;
}
}
i++;
tmp.push(rowRender(node, $index + i, innerTreeRowData));
if (cur) {
const nodes2 = lazyTreeNodeMap.value[childKey] || node[childrenColumnName.value];
traverse(nodes2, cur);
}
});
};
cur.display = true;
const nodes = lazyTreeNodeMap.value[key] || row[childrenColumnName.value];
traverse(nodes, cur);
}
return tmp;
} else {
return rowRender(row, $index, void 0);
}
};
return {
wrappedRowRender,
tooltipContent,
tooltipTrigger
};
}
const defaultProps$2 = {
store: {
required: true,
type: Object
},
stripe: Boolean,
tooltipEffect: String,
context: {
default: () => ({}),
type: Object
},
rowClassName: [String, Function],
rowStyle: [Object, Function],
fixed: {
type: String,
default: ""
},
highlight: Boolean
};
var TableBody = defineComponent({
name: "ElTableBody",
props: defaultProps$2,
setup(props) {
const instance = getCurrentInstance();
const parent = inject(TABLE_INJECTION_KEY);
const ns = useNamespace("table");
const { wrappedRowRender, tooltipContent, tooltipTrigger } = useRender$1(props);
const { onColumnsChange, onScrollableChange } = useLayoutObserver(parent);
watch(props.store.states.hoverRow, (newVal, oldVal) => {
if (!props.store.states.isComplex.value || !isClient)
return;
let raf = window.requestAnimationFrame;
if (!raf) {
raf = (fn2) => window.setTimeout(fn2, 16);
}
raf(() => {
var _a2;
const rows = (_a2 = instance == null ? void 0 : instance.vnode.el) == null ? void 0 : _a2.querySelectorAll(`.${ns.e("row")}`);
const oldRow = rows[oldVal];
const newRow = rows[newVal];
if (oldRow) {
removeClass(oldRow, "hover-row");
}
if (newRow) {
addClass(newRow, "hover-row");
}
});
});
onUnmounted(() => {
var _a2;
(_a2 = removePopper) == null ? void 0 : _a2();
});
onUpdated(() => {
var _a2;
(_a2 = removePopper) == null ? void 0 : _a2();
});
return {
ns,
onColumnsChange,
onScrollableChange,
wrappedRowRender,
tooltipContent,
tooltipTrigger
};
},
render() {
const { wrappedRowRender, store } = this;
const data2 = store.states.data.value || [];
return h$1("tbody", {}, [
data2.reduce((acc, row) => {
return acc.concat(wrappedRowRender(row, acc.length));
}, [])
]);
}
});
function hColgroup(props) {
const isAuto = props.tableLayout === "auto";
let columns = props.columns || [];
if (isAuto) {
if (columns.every((column) => column.width === void 0)) {
columns = [];
}
}
const getPropsData = (column) => {
const propsData = {
key: `${props.tableLayout}_${column.id}`,
style: {},
name: void 0
};
if (isAuto) {
propsData.style = {
width: `${column.width}px`
};
} else {
propsData.name = column.id;
}
return propsData;
};
return h$1("colgroup", {}, columns.map((column) => h$1("col", getPropsData(column))));
}
hColgroup.props = ["columns", "tableLayout"];
function useMapState() {
const table = inject(TABLE_INJECTION_KEY);
const store = table == null ? void 0 : table.store;
const leftFixedLeafCount = computed(() => {
return store.states.fixedLeafColumnsLength.value;
});
const rightFixedLeafCount = computed(() => {
return store.states.rightFixedColumns.value.length;
});
const columnsCount = computed(() => {
return store.states.columns.value.length;
});
const leftFixedCount = computed(() => {
return store.states.fixedColumns.value.length;
});
const rightFixedCount = computed(() => {
return store.states.rightFixedColumns.value.length;
});
return {
leftFixedLeafCount,
rightFixedLeafCount,
columnsCount,
leftFixedCount,
rightFixedCount,
columns: store.states.columns
};
}
function useStyle$1(props) {
const { columns } = useMapState();
const ns = useNamespace("table");
const getCellClasses = (columns2, cellIndex) => {
const column = columns2[cellIndex];
const classes = [
ns.e("cell"),
column.id,
column.align,
column.labelClassName,
...getFixedColumnsClass(ns.b(), cellIndex, column.fixed, props.store)
];
if (column.className) {
classes.push(column.className);
}
if (!column.children) {
classes.push(ns.is("leaf"));
}
return classes;
};
const getCellStyles = (column, cellIndex) => {
const fixedStyle = getFixedColumnOffset(cellIndex, column.fixed, props.store);
ensurePosition(fixedStyle, "left");
ensurePosition(fixedStyle, "right");
return fixedStyle;
};
return {
getCellClasses,
getCellStyles,
columns
};
}
var TableFooter = defineComponent({
name: "ElTableFooter",
props: {
fixed: {
type: String,
default: ""
},
store: {
required: true,
type: Object
},
summaryMethod: Function,
sumText: String,
border: Boolean,
defaultSort: {
type: Object,
default: () => {
return {
prop: "",
order: ""
};
}
}
},
setup(props) {
const { getCellClasses, getCellStyles, columns } = useStyle$1(props);
const ns = useNamespace("table");
return {
ns,
getCellClasses,
getCellStyles,
columns
};
},
render() {
const {
columns,
getCellStyles,
getCellClasses,
summaryMethod,
sumText,
ns
} = this;
const data2 = this.store.states.data.value;
let sums = [];
if (summaryMethod) {
sums = summaryMethod({
columns,
data: data2
});
} else {
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = sumText;
return;
}
const values = data2.map((item) => Number(item[column.property]));
const precisions = [];
let notNumber = true;
values.forEach((value) => {
if (!Number.isNaN(+value)) {
notNumber = false;
const decimal = `${value}`.split(".")[1];
precisions.push(decimal ? decimal.length : 0);
}
});
const precision = Math.max.apply(null, precisions);
if (!notNumber) {
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr);
if (!Number.isNaN(+value)) {
return Number.parseFloat((prev + curr).toFixed(Math.min(precision, 20)));
} else {
return prev;
}
}, 0);
} else {
sums[index] = "";
}
});
}
return h$1("table", {
class: ns.e("footer"),
cellspacing: "0",
cellpadding: "0",
border: "0"
}, [
hColgroup({
columns
}),
h$1("tbody", [
h$1("tr", {}, [
...columns.map((column, cellIndex) => h$1("td", {
key: cellIndex,
colspan: column.colSpan,
rowspan: column.rowSpan,
class: getCellClasses(columns, cellIndex),
style: getCellStyles(column, cellIndex)
}, [
h$1("div", {
class: ["cell", column.labelClassName]
}, [sums[cellIndex]])
]))
])
])
]);
}
});
function useUtils(store) {
const setCurrentRow = (row) => {
store.commit("setCurrentRow", row);
};
const getSelectionRows = () => {
return store.getSelectionRows();
};
const toggleRowSelection = (row, selected) => {
store.toggleRowSelection(row, selected, false);
store.updateAllSelected();
};
const clearSelection = () => {
store.clearSelection();
};
const clearFilter = (columnKeys) => {
store.clearFilter(columnKeys);
};
const toggleAllSelection = () => {
store.commit("toggleAllSelection");
};
const toggleRowExpansion = (row, expanded) => {
store.toggleRowExpansionAdapter(row, expanded);
};
const clearSort = () => {
store.clearSort();
};
const sort = (prop, order2) => {
store.commit("sort", { prop, order: order2 });
};
return {
setCurrentRow,
getSelectionRows,
toggleRowSelection,
clearSelection,
clearFilter,
toggleAllSelection,
toggleRowExpansion,
clearSort,
sort
};
}
function useStyle(props, layout, store, table) {
const isHidden = ref(false);
const renderExpanded = ref(null);
const resizeProxyVisible = ref(false);
const setDragVisible = (visible) => {
resizeProxyVisible.value = visible;
};
const resizeState = ref({
width: null,
height: null
});
const isGroup = ref(false);
const scrollbarViewStyle = {
display: "inline-block",
verticalAlign: "middle"
};
const tableWidth = ref();
watchEffect(() => {
layout.setHeight(props.height);
});
watchEffect(() => {
layout.setMaxHeight(props.maxHeight);
});
watch(() => [props.currentRowKey, store.states.rowKey], ([currentRowKey, rowKey]) => {
if (!unref(rowKey))
return;
store.setCurrentRowKey(`${currentRowKey}`);
}, {
immediate: true
});
watch(() => props.data, (data2) => {
table.store.commit("setData", data2);
}, {
immediate: true,
deep: true
});
watchEffect(() => {
if (props.expandRowKeys) {
store.setExpandRowKeysAdapter(props.expandRowKeys);
}
});
const handleMouseLeave = () => {
table.store.commit("setHoverRow", null);
if (table.hoverState)
table.hoverState = null;
};
const handleHeaderFooterMousewheel = (event, data2) => {
const { pixelX, pixelY } = data2;
if (Math.abs(pixelX) >= Math.abs(pixelY)) {
table.refs.bodyWrapper.scrollLeft += data2.pixelX / 5;
}
};
const shouldUpdateHeight = computed(() => {
return props.height || props.maxHeight || store.states.fixedColumns.value.length > 0 || store.states.rightFixedColumns.value.length > 0;
});
const tableBodyStyles = computed(() => {
return {
width: layout.bodyWidth.value ? `${layout.bodyWidth.value}px` : ""
};
});
const doLayout = () => {
if (shouldUpdateHeight.value) {
layout.updateElsHeight();
}
layout.updateColumnsWidth();
requestAnimationFrame(syncPostion);
};
onMounted(async () => {
await nextTick();
store.updateColumns();
bindEvents();
requestAnimationFrame(doLayout);
resizeState.value = {
width: tableWidth.value = table.vnode.el.offsetWidth,
height: table.vnode.el.offsetHeight
};
store.states.columns.value.forEach((column) => {
if (column.filteredValue && column.filteredValue.length) {
table.store.commit("filterChange", {
column,
values: column.filteredValue,
silent: true
});
}
});
table.$ready = true;
});
const setScrollClassByEl = (el, className) => {
if (!el)
return;
const classList = Array.from(el.classList).filter((item) => !item.startsWith("is-scrolling-"));
classList.push(layout.scrollX.value ? className : "is-scrolling-none");
el.className = classList.join(" ");
};
const setScrollClass = (className) => {
const { tableWrapper } = table.refs;
setScrollClassByEl(tableWrapper, className);
};
const hasScrollClass = (className) => {
const { tableWrapper } = table.refs;
if (tableWrapper && tableWrapper.classList.contains(className)) {
return true;
}
return false;
};
const syncPostion = function() {
if (!table.refs.scrollBarRef)
return;
if (!layout.scrollX.value) {
const scrollingNoneClass = "is-scrolling-none";
if (!hasScrollClass(scrollingNoneClass)) {
setScrollClass(scrollingNoneClass);
}
return;
}
const scrollContainer = table.refs.scrollBarRef.wrap$;
if (!scrollContainer)
return;
const { scrollLeft, offsetWidth, scrollWidth } = scrollContainer;
const { headerWrapper, footerWrapper } = table.refs;
if (headerWrapper)
headerWrapper.scrollLeft = scrollLeft;
if (footerWrapper)
footerWrapper.scrollLeft = scrollLeft;
const maxScrollLeftPosition = scrollWidth - offsetWidth - 1;
if (scrollLeft >= maxScrollLeftPosition) {
setScrollClass("is-scrolling-right");
} else if (scrollLeft === 0) {
setScrollClass("is-scrolling-left");
} else {
setScrollClass("is-scrolling-middle");
}
};
const bindEvents = () => {
var _a2;
if (!table.refs.scrollBarRef)
return;
(_a2 = table.refs.scrollBarRef.wrap$) == null ? void 0 : _a2.addEventListener("scroll", syncPostion, {
passive: true
});
if (props.fit) {
addResizeListener(table.vnode.el, resizeListener);
} else {
on(window, "resize", doLayout);
}
};
onBeforeUnmount(() => {
unbindEvents();
});
const unbindEvents = () => {
var _a2;
(_a2 = table.refs.scrollBarRef.wrap$) == null ? void 0 : _a2.removeEventListener("scroll", syncPostion, true);
if (props.fit) {
removeResizeListener(table.vnode.el, resizeListener);
} else {
off(window, "resize", doLayout);
}
};
const resizeListener = () => {
if (!table.$ready)
return;
let shouldUpdateLayout = false;
const el = table.vnode.el;
const { width: oldWidth, height: oldHeight } = resizeState.value;
const width = tableWidth.value = el.offsetWidth;
if (oldWidth !== width) {
shouldUpdateLayout = true;
}
const height2 = el.offsetHeight;
if ((props.height || shouldUpdateHeight.value) && oldHeight !== height2) {
shouldUpdateLayout = true;
}
if (shouldUpdateLayout) {
resizeState.value = {
width,
height: height2
};
doLayout();
}
};
const tableSize = useSize();
const bodyWidth = computed(() => {
const { bodyWidth: bodyWidth_, scrollY, gutterWidth } = layout;
return bodyWidth_.value ? `${bodyWidth_.value - (scrollY.value ? gutterWidth : 0)}px` : "";
});
const tableLayout = computed(() => {
if (props.maxHeight)
return "fixed";
return props.tableLayout;
});
function calcMaxHeight(maxHeight, footerHeight, headerHeight) {
const parsedMaxHeight = parseHeight(maxHeight);
const tableHeaderHeight = props.showHeader ? headerHeight : 0;
if (parsedMaxHeight === null)
return;
if (isString(parsedMaxHeight)) {
return `calc(${parsedMaxHeight} - ${footerHeight}px - ${tableHeaderHeight}px)`;
}
return parsedMaxHeight - footerHeight - tableHeaderHeight;
}
const height = computed(() => {
const headerHeight = layout.headerHeight.value || 0;
const bodyHeight2 = layout.bodyHeight.value;
const footerHeight = layout.footerHeight.value || 0;
if (props.height) {
return bodyHeight2 ? bodyHeight2 : void 0;
} else if (props.maxHeight) {
return calcMaxHeight(props.maxHeight, footerHeight, headerHeight);
}
return void 0;
});
const bodyHeight = computed(() => {
const headerHeight = layout.headerHeight.value || 0;
const bodyHeight2 = layout.bodyHeight.value;
const footerHeight = layout.footerHeight.value || 0;
if (props.height) {
return {
height: bodyHeight2 ? `${bodyHeight2}px` : ""
};
} else if (props.maxHeight) {
const maxHeight = calcMaxHeight(props.maxHeight, footerHeight, headerHeight);
if (maxHeight !== null) {
return {
"max-height": `${maxHeight}${isNumber(maxHeight) ? "px" : ""}`
};
}
}
return {};
});
const emptyBlockStyle = computed(() => {
if (props.data && props.data.length)
return null;
let height2 = "100%";
if (layout.appendHeight.value) {
height2 = `calc(100% - ${layout.appendHeight.value}px)`;
}
return {
width: tableWidth.value ? `${tableWidth.value}px` : "",
height: height2
};
});
const handleFixedMousewheel = (event, data2) => {
const bodyWrapper = table.refs.bodyWrapper;
if (Math.abs(data2.spinY) > 0) {
const currentScrollTop = bodyWrapper.scrollTop;
if (data2.pixelY < 0 && currentScrollTop !== 0) {
event.preventDefault();
}
if (data2.pixelY > 0 && bodyWrapper.scrollHeight - bodyWrapper.clientHeight > currentScrollTop) {
event.preventDefault();
}
bodyWrapper.scrollTop += Math.ceil(data2.pixelY / 5);
} else {
bodyWrapper.scrollLeft += Math.ceil(data2.pixelX / 5);
}
};
const fixedHeight = computed(() => {
if (props.maxHeight) {
if (props.showSummary) {
return {
bottom: 0
};
}
return {
bottom: layout.scrollX.value && props.data.length ? `${layout.gutterWidth}px` : ""
};
} else {
if (props.showSummary) {
return {
height: layout.tableHeight.value ? `${layout.tableHeight.value}px` : ""
};
}
return {
height: layout.viewportHeight.value ? `${layout.viewportHeight.value}px` : ""
};
}
});
const fixedBodyHeight = computed(() => {
if (props.height) {
return {
height: layout.fixedBodyHeight.value ? `${layout.fixedBodyHeight.value}px` : ""
};
} else if (props.maxHeight) {
let maxHeight = parseHeight(props.maxHeight);
if (typeof maxHeight === "number") {
maxHeight = layout.scrollX.value ? maxHeight - layout.gutterWidth : maxHeight;
if (props.showHeader) {
maxHeight -= layout.headerHeight.value;
}
maxHeight -= layout.footerHeight.value;
return {
"max-height": `${maxHeight}px`
};
}
}
return {};
});
return {
isHidden,
renderExpanded,
setDragVisible,
isGroup,
handleMouseLeave,
handleHeaderFooterMousewheel,
tableSize,
bodyHeight,
height,
emptyBlockStyle,
handleFixedMousewheel,
fixedHeight,
fixedBodyHeight,
resizeProxyVisible,
bodyWidth,
resizeState,
doLayout,
tableBodyStyles,
tableLayout,
scrollbarViewStyle
};
}
var defaultProps$1 = {
data: {
type: Array,
default: () => {
return [];
}
},
size: String,
width: [String, Number],
height: [String, Number],
maxHeight: [String, Number],
fit: {
type: Boolean,
default: true
},
stripe: Boolean,
border: Boolean,
rowKey: [String, Function],
showHeader: {
type: Boolean,
default: true
},
showSummary: Boolean,
sumText: String,
summaryMethod: Function,
rowClassName: [String, Function],
rowStyle: [Object, Function],
cellClassName: [String, Function],
cellStyle: [Object, Function],
headerRowClassName: [String, Function],
headerRowStyle: [Object, Function],
headerCellClassName: [String, Function],
headerCellStyle: [Object, Function],
highlightCurrentRow: Boolean,
currentRowKey: [String, Number],
emptyText: String,
expandRowKeys: Array,
defaultExpandAll: Boolean,
defaultSort: Object,
tooltipEffect: String,
spanMethod: Function,
selectOnIndeterminate: {
type: Boolean,
default: true
},
indent: {
type: Number,
default: 16
},
treeProps: {
type: Object,
default: () => {
return {
hasChildren: "hasChildren",
children: "children"
};
}
},
lazy: Boolean,
load: Function,
style: {
type: Object,
default: () => ({})
},
className: {
type: String,
default: ""
},
tableLayout: {
type: String,
default: "fixed"
},
scrollbarAlwaysOn: {
type: Boolean,
default: false
}
};
const useScrollbar = () => {
const scrollBarRef = ref();
const scrollTo = (options, yCoord) => {
const scrollbar = scrollBarRef.value;
if (scrollbar) {
scrollbar.scrollTo(options, yCoord);
}
};
const setScrollPosition = (position, offset2) => {
const scrollbar = scrollBarRef.value;
if (scrollbar && isNumber(offset2) && ["Top", "Left"].includes(position)) {
scrollbar[`setScroll${position}`](offset2);
}
};
const setScrollTop = (top2) => setScrollPosition("Top", top2);
const setScrollLeft = (left2) => setScrollPosition("Left", left2);
return {
scrollBarRef,
scrollTo,
setScrollTop,
setScrollLeft
};
};
let tableIdSeed = 1;
const _sfc_main$e = defineComponent({
name: "ElTable",
directives: {
Mousewheel
},
components: {
TableHeader,
TableBody,
TableFooter,
ElScrollbar,
hColgroup
},
props: defaultProps$1,
emits: [
"select",
"select-all",
"selection-change",
"cell-mouse-enter",
"cell-mouse-leave",
"cell-contextmenu",
"cell-click",
"cell-dblclick",
"row-click",
"row-contextmenu",
"row-dblclick",
"header-click",
"header-contextmenu",
"sort-change",
"filter-change",
"current-change",
"header-dragend",
"expand-change"
],
setup(props) {
const { t } = useLocale();
const ns = useNamespace("table");
const table = getCurrentInstance();
provide(TABLE_INJECTION_KEY, table);
const store = createStore(table, props);
table.store = store;
const layout = new TableLayout({
store: table.store,
table,
fit: props.fit,
showHeader: props.showHeader
});
table.layout = layout;
const isEmpty3 = computed(() => (store.states.data.value || []).length === 0);
const {
setCurrentRow,
getSelectionRows,
toggleRowSelection,
clearSelection,
clearFilter,
toggleAllSelection,
toggleRowExpansion,
clearSort,
sort
} = useUtils(store);
const {
isHidden,
renderExpanded,
setDragVisible,
isGroup,
handleMouseLeave,
handleHeaderFooterMousewheel,
tableSize,
bodyHeight,
height,
emptyBlockStyle,
handleFixedMousewheel,
fixedHeight,
fixedBodyHeight,
resizeProxyVisible,
bodyWidth,
resizeState,
doLayout,
tableBodyStyles,
tableLayout,
scrollbarViewStyle
} = useStyle(props, layout, store, table);
const { scrollBarRef, scrollTo, setScrollLeft, setScrollTop } = useScrollbar();
const debouncedUpdateLayout = debounce$1(doLayout, 50);
const tableId = `el-table_${tableIdSeed++}`;
table.tableId = tableId;
table.state = {
isGroup,
resizeState,
doLayout,
debouncedUpdateLayout
};
const computedSumText = computed(() => props.sumText || t("el.table.sumText"));
const computedEmptyText = computed(() => {
return props.emptyText || t("el.table.emptyText");
});
return {
ns,
layout,
store,
handleHeaderFooterMousewheel,
handleMouseLeave,
tableId,
tableSize,
isHidden,
isEmpty: isEmpty3,
renderExpanded,
resizeProxyVisible,
resizeState,
isGroup,
bodyWidth,
bodyHeight,
height,
tableBodyStyles,
emptyBlockStyle,
debouncedUpdateLayout,
handleFixedMousewheel,
fixedHeight,
fixedBodyHeight,
setCurrentRow,
getSelectionRows,
toggleRowSelection,
clearSelection,
clearFilter,
toggleAllSelection,
toggleRowExpansion,
clearSort,
doLayout,
sort,
t,
setDragVisible,
context: table,
computedSumText,
computedEmptyText,
tableLayout,
scrollbarViewStyle,
scrollBarRef,
scrollTo,
setScrollLeft,
setScrollTop
};
}
});
const _hoisted_1$b = ["data-prefix"];
const _hoisted_2$9 = {
ref: "hiddenColumns",
class: "hidden-columns"
};
function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
const _component_hColgroup = resolveComponent("hColgroup");
const _component_table_header = resolveComponent("table-header");
const _component_table_body = resolveComponent("table-body");
const _component_el_scrollbar = resolveComponent("el-scrollbar");
const _component_table_footer = resolveComponent("table-footer");
const _directive_mousewheel = resolveDirective("mousewheel");
return openBlock(), createElementBlock("div", {
ref: "tableWrapper",
class: normalizeClass([
{
[_ctx.ns.m("fit")]: _ctx.fit,
[_ctx.ns.m("striped")]: _ctx.stripe,
[_ctx.ns.m("border")]: _ctx.border || _ctx.isGroup,
[_ctx.ns.m("hidden")]: _ctx.isHidden,
[_ctx.ns.m("group")]: _ctx.isGroup,
[_ctx.ns.m("fluid-height")]: _ctx.maxHeight,
[_ctx.ns.m("scrollable-x")]: _ctx.layout.scrollX.value,
[_ctx.ns.m("scrollable-y")]: _ctx.layout.scrollY.value,
[_ctx.ns.m("enable-row-hover")]: !_ctx.store.states.isComplex.value,
[_ctx.ns.m("enable-row-transition")]: (_ctx.store.states.data.value || []).length !== 0 && (_ctx.store.states.data.value || []).length < 100,
"has-footer": _ctx.showSummary
},
_ctx.ns.m(_ctx.tableSize),
_ctx.className,
_ctx.ns.b(),
_ctx.ns.m(`layout-${_ctx.tableLayout}`)
]),
style: normalizeStyle(_ctx.style),
"data-prefix": _ctx.ns.namespace.value,
onMouseleave: _cache[0] || (_cache[0] = ($event) => _ctx.handleMouseLeave())
}, [
createElementVNode("div", {
class: normalizeClass(_ctx.ns.e("inner-wrapper"))
}, [
createElementVNode("div", _hoisted_2$9, [
renderSlot(_ctx.$slots, "default")
], 512),
_ctx.showHeader && _ctx.tableLayout === "fixed" ? withDirectives((openBlock(), createElementBlock("div", {
key: 0,
ref: "headerWrapper",
class: normalizeClass(_ctx.ns.e("header-wrapper"))
}, [
createElementVNode("table", {
ref: "tableHeader",
class: normalizeClass(_ctx.ns.e("header")),
style: normalizeStyle(_ctx.tableBodyStyles),
border: "0",
cellpadding: "0",
cellspacing: "0"
}, [
createVNode(_component_hColgroup, {
columns: _ctx.store.states.columns.value,
"table-layout": _ctx.tableLayout
}, null, 8, ["columns", "table-layout"]),
createVNode(_component_table_header, {
ref: "tableHeaderRef",
border: _ctx.border,
"default-sort": _ctx.defaultSort,
store: _ctx.store,
onSetDragVisible: _ctx.setDragVisible
}, null, 8, ["border", "default-sort", "store", "onSetDragVisible"])
], 6)
], 2)), [
[_directive_mousewheel, _ctx.handleHeaderFooterMousewheel]
]) : createCommentVNode("v-if", true),
createElementVNode("div", {
ref: "bodyWrapper",
style: normalizeStyle(_ctx.bodyHeight),
class: normalizeClass(_ctx.ns.e("body-wrapper"))
}, [
createVNode(_component_el_scrollbar, {
ref: "scrollBarRef",
height: _ctx.maxHeight ? void 0 : _ctx.height,
"max-height": _ctx.maxHeight ? _ctx.height : void 0,
"view-style": _ctx.scrollbarViewStyle,
always: _ctx.scrollbarAlwaysOn
}, {
default: withCtx(() => [
createElementVNode("table", {
ref: "tableBody",
class: normalizeClass(_ctx.ns.e("body")),
cellspacing: "0",
cellpadding: "0",
border: "0",
style: normalizeStyle({
width: _ctx.bodyWidth,
tableLayout: _ctx.tableLayout
})
}, [
createVNode(_component_hColgroup, {
columns: _ctx.store.states.columns.value,
"table-layout": _ctx.tableLayout
}, null, 8, ["columns", "table-layout"]),
_ctx.showHeader && _ctx.tableLayout === "auto" ? (openBlock(), createBlock(_component_table_header, {
key: 0,
border: _ctx.border,
"default-sort": _ctx.defaultSort,
store: _ctx.store,
onSetDragVisible: _ctx.setDragVisible
}, null, 8, ["border", "default-sort", "store", "onSetDragVisible"])) : createCommentVNode("v-if", true),
createVNode(_component_table_body, {
context: _ctx.context,
highlight: _ctx.highlightCurrentRow,
"row-class-name": _ctx.rowClassName,
"tooltip-effect": _ctx.tooltipEffect,
"row-style": _ctx.rowStyle,
store: _ctx.store,
stripe: _ctx.stripe
}, null, 8, ["context", "highlight", "row-class-name", "tooltip-effect", "row-style", "store", "stripe"])
], 6),
_ctx.isEmpty ? (openBlock(), createElementBlock("div", {
key: 0,
ref: "emptyBlock",
style: normalizeStyle(_ctx.emptyBlockStyle),
class: normalizeClass(_ctx.ns.e("empty-block"))
}, [
createElementVNode("span", {
class: normalizeClass(_ctx.ns.e("empty-text"))
}, [
renderSlot(_ctx.$slots, "empty", {}, () => [
createTextVNode(toDisplayString(_ctx.computedEmptyText), 1)
])
], 2)
], 6)) : createCommentVNode("v-if", true),
_ctx.$slots.append ? (openBlock(), createElementBlock("div", {
key: 1,
ref: "appendWrapper",
class: normalizeClass(_ctx.ns.e("append-wrapper"))
}, [
renderSlot(_ctx.$slots, "append")
], 2)) : createCommentVNode("v-if", true)
]),
_: 3
}, 8, ["height", "max-height", "view-style", "always"])
], 6),
_ctx.border || _ctx.isGroup ? (openBlock(), createElementBlock("div", {
key: 1,
class: normalizeClass(_ctx.ns.e("border-left-patch"))
}, null, 2)) : createCommentVNode("v-if", true)
], 2),
_ctx.showSummary ? withDirectives((openBlock(), createElementBlock("div", {
key: 0,
ref: "footerWrapper",
class: normalizeClass(_ctx.ns.e("footer-wrapper"))
}, [
createVNode(_component_table_footer, {
border: _ctx.border,
"default-sort": _ctx.defaultSort,
store: _ctx.store,
style: normalizeStyle(_ctx.tableBodyStyles),
"sum-text": _ctx.computedSumText,
"summary-method": _ctx.summaryMethod
}, null, 8, ["border", "default-sort", "store", "style", "sum-text", "summary-method"])
], 2)), [
[vShow, !_ctx.isEmpty],
[_directive_mousewheel, _ctx.handleHeaderFooterMousewheel]
]) : createCommentVNode("v-if", true),
withDirectives(createElementVNode("div", {
ref: "resizeProxy",
class: normalizeClass(_ctx.ns.e("column-resize-proxy"))
}, null, 2), [
[vShow, _ctx.resizeProxyVisible]
])
], 46, _hoisted_1$b);
}
var Table = /* @__PURE__ */ _export_sfc$1(_sfc_main$e, [["render", _sfc_render$2], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/table/src/table.vue"]]);
const defaultClassNames = {
selection: "table-column--selection",
expand: "table__expand-column"
};
const cellStarts = {
default: {
order: ""
},
selection: {
width: 48,
minWidth: 48,
realWidth: 48,
order: ""
},
expand: {
width: 48,
minWidth: 48,
realWidth: 48,
order: ""
},
index: {
width: 48,
minWidth: 48,
realWidth: 48,
order: ""
}
};
const getDefaultClassName = (type4) => {
return defaultClassNames[type4] || "";
};
const cellForced = {
selection: {
renderHeader({ store }) {
function isDisabled() {
return store.states.data.value && store.states.data.value.length === 0;
}
return h$1(ElCheckbox, {
disabled: isDisabled(),
size: store.states.tableSize.value,
indeterminate: store.states.selection.value.length > 0 && !store.states.isAllSelected.value,
"onUpdate:modelValue": store.toggleAllSelection,
modelValue: store.states.isAllSelected.value
});
},
renderCell({
row,
column,
store,
$index
}) {
return h$1(ElCheckbox, {
disabled: column.selectable ? !column.selectable.call(null, row, $index) : false,
size: store.states.tableSize.value,
onChange: () => {
store.commit("rowSelectedChanged", row);
},
onClick: (event) => event.stopPropagation(),
modelValue: store.isSelected(row)
});
},
sortable: false,
resizable: false
},
index: {
renderHeader({ column }) {
return column.label || "#";
},
renderCell({
column,
$index
}) {
let i = $index + 1;
const index = column.index;
if (typeof index === "number") {
i = $index + index;
} else if (typeof index === "function") {
i = index($index);
}
return h$1("div", {}, [i]);
},
sortable: false
},
expand: {
renderHeader({ column }) {
return column.label || "";
},
renderCell({
row,
store,
expanded
}) {
const { ns } = store;
const classes = [ns.e("expand-icon")];
if (expanded) {
classes.push(ns.em("expand-icon", "expanded"));
}
const callback = function(e) {
e.stopPropagation();
store.toggleRowExpansion(row);
};
return h$1("div", {
class: classes,
onClick: callback
}, {
default: () => {
return [
h$1(ElIcon, null, {
default: () => {
return [h$1(arrowRight)];
}
})
];
}
});
},
sortable: false,
resizable: false
}
};
function defaultRenderCell({
row,
column,
$index
}) {
var _a2;
const property = column.property;
const value = property && getProp(row, property).value;
if (column && column.formatter) {
return column.formatter(row, column, value, $index);
}
return ((_a2 = value == null ? void 0 : value.toString) == null ? void 0 : _a2.call(value)) || "";
}
function treeCellPrefix({
row,
treeNode,
store
}, createPlacehoder = false) {
const { ns } = store;
if (!treeNode) {
if (createPlacehoder) {
return [
h$1("span", {
class: ns.e("placeholder")
})
];
}
return null;
}
const ele = [];
const callback = function(e) {
e.stopPropagation();
store.loadOrToggle(row);
};
if (treeNode.indent) {
ele.push(h$1("span", {
class: ns.e("indent"),
style: { "padding-left": `${treeNode.indent}px` }
}));
}
if (typeof treeNode.expanded === "boolean" && !treeNode.noLazyChildren) {
const expandClasses = [
ns.e("expand-icon"),
treeNode.expanded ? ns.em("expand-icon", "expanded") : ""
];
let icon = arrowRight;
if (treeNode.loading) {
icon = loading;
}
ele.push(h$1("div", {
class: expandClasses,
onClick: callback
}, {
default: () => {
return [
h$1(ElIcon, { class: { [ns.is("loading")]: treeNode.loading } }, {
default: () => [h$1(icon)]
})
];
}
}));
} else {
ele.push(h$1("span", {
class: ns.e("placeholder")
}));
}
return ele;
}
function getAllAliases(props, aliases) {
return props.reduce((prev, cur) => {
prev[cur] = cur;
return prev;
}, aliases);
}
function useWatcher(owner, props_) {
const instance = getCurrentInstance();
const registerComplexWatchers = () => {
const props = ["fixed"];
const aliases = {
realWidth: "width",
realMinWidth: "minWidth"
};
const allAliases = getAllAliases(props, aliases);
Object.keys(allAliases).forEach((key) => {
const columnKey = aliases[key];
if (hasOwn(props_, columnKey)) {
watch(() => props_[columnKey], (newVal) => {
let value = newVal;
if (columnKey === "width" && key === "realWidth") {
value = parseWidth(newVal);
}
if (columnKey === "minWidth" && key === "realMinWidth") {
value = parseMinWidth(newVal);
}
instance.columnConfig.value[columnKey] = value;
instance.columnConfig.value[key] = value;
const updateColumns = columnKey === "fixed";
owner.value.store.scheduleLayout(updateColumns);
});
}
});
};
const registerNormalWatchers = () => {
const props = [
"label",
"filters",
"filterMultiple",
"sortable",
"index",
"formatter",
"className",
"labelClassName",
"showOverflowTooltip"
];
const aliases = {
property: "prop",
align: "realAlign",
headerAlign: "realHeaderAlign"
};
const allAliases = getAllAliases(props, aliases);
Object.keys(allAliases).forEach((key) => {
const columnKey = aliases[key];
if (hasOwn(props_, columnKey)) {
watch(() => props_[columnKey], (newVal) => {
instance.columnConfig.value[key] = newVal;
});
}
});
};
return {
registerComplexWatchers,
registerNormalWatchers
};
}
function useRender(props, slots, owner) {
const instance = getCurrentInstance();
const columnId = ref("");
const isSubColumn = ref(false);
const realAlign = ref();
const realHeaderAlign = ref();
const ns = useNamespace("table");
watchEffect(() => {
realAlign.value = props.align ? `is-${props.align}` : null;
realAlign.value;
});
watchEffect(() => {
realHeaderAlign.value = props.headerAlign ? `is-${props.headerAlign}` : realAlign.value;
realHeaderAlign.value;
});
const columnOrTableParent = computed(() => {
let parent = instance.vnode.vParent || instance.parent;
while (parent && !parent.tableId && !parent.columnId) {
parent = parent.vnode.vParent || parent.parent;
}
return parent;
});
const hasTreeColumn = computed(() => {
const { store } = instance.parent;
if (!store)
return false;
const { treeData } = store.states;
const treeDataValue = treeData.value;
return treeDataValue && Object.keys(treeDataValue).length > 0;
});
const realWidth = ref(parseWidth(props.width));
const realMinWidth = ref(parseMinWidth(props.minWidth));
const setColumnWidth = (column) => {
if (realWidth.value)
column.width = realWidth.value;
if (realMinWidth.value) {
column.minWidth = realMinWidth.value;
}
if (!column.minWidth) {
column.minWidth = 80;
}
column.realWidth = Number(column.width === void 0 ? column.minWidth : column.width);
return column;
};
const setColumnForcedProps = (column) => {
const type4 = column.type;
const source = cellForced[type4] || {};
Object.keys(source).forEach((prop) => {
const value = source[prop];
if (prop !== "className" && value !== void 0) {
column[prop] = value;
}
});
const className = getDefaultClassName(type4);
if (className) {
const forceClass = `${unref(ns.namespace)}-${className}`;
column.className = column.className ? `${column.className} ${forceClass}` : forceClass;
}
return column;
};
const checkSubColumn = (children) => {
if (Array.isArray(children)) {
children.forEach((child) => check2(child));
} else {
check2(children);
}
function check2(item) {
var _a2;
if (((_a2 = item == null ? void 0 : item.type) == null ? void 0 : _a2.name) === "ElTableColumn") {
item.vParent = instance;
}
}
};
const setColumnRenders = (column) => {
if (props.renderHeader)
;
else if (column.type !== "selection") {
column.renderHeader = (scope) => {
instance.columnConfig.value["label"];
const renderHeader = slots.header;
return renderHeader ? renderHeader(scope) : column.label;
};
}
let originRenderCell = column.renderCell;
const hasTreeColumnValue = hasTreeColumn.value;
if (column.type === "expand") {
column.renderCell = (data2) => h$1("div", {
class: "cell"
}, [originRenderCell(data2)]);
owner.value.renderExpanded = (data2) => {
return slots.default ? slots.default(data2) : slots.default;
};
} else {
originRenderCell = originRenderCell || defaultRenderCell;
column.renderCell = (data2) => {
let children = null;
if (slots.default) {
const vnodes = slots.default(data2);
children = vnodes.some((v2) => v2.type !== Comment) ? vnodes : originRenderCell(data2);
} else {
children = originRenderCell(data2);
}
const shouldCreatePlaceholder = hasTreeColumnValue && data2.cellIndex === 0;
const prefix = treeCellPrefix(data2, shouldCreatePlaceholder);
const props2 = {
class: "cell",
style: {}
};
if (column.showOverflowTooltip) {
props2.class = `${props2.class} ${unref(ns.namespace)}-tooltip`;
props2.style = {
width: `${(data2.column.realWidth || Number(data2.column.width)) - 1}px`
};
}
checkSubColumn(children);
return h$1("div", props2, [prefix, children]);
};
}
return column;
};
const getPropsData = (...propsKey) => {
return propsKey.reduce((prev, cur) => {
if (Array.isArray(cur)) {
cur.forEach((key) => {
prev[key] = props[key];
});
}
return prev;
}, {});
};
const getColumnElIndex = (children, child) => {
return Array.prototype.indexOf.call(children, child);
};
return {
columnId,
realAlign,
isSubColumn,
realHeaderAlign,
columnOrTableParent,
setColumnWidth,
setColumnForcedProps,
setColumnRenders,
getPropsData,
getColumnElIndex
};
}
var defaultProps = {
type: {
type: String,
default: "default"
},
label: String,
className: String,
labelClassName: String,
property: String,
prop: String,
width: {
type: [String, Number],
default: ""
},
minWidth: {
type: [String, Number],
default: ""
},
renderHeader: Function,
sortable: {
type: [Boolean, String],
default: false
},
sortMethod: Function,
sortBy: [String, Function, Array],
resizable: {
type: Boolean,
default: true
},
columnKey: String,
align: String,
headerAlign: String,
showTooltipWhenOverflow: Boolean,
showOverflowTooltip: Boolean,
fixed: [Boolean, String],
formatter: Function,
selectable: Function,
reserveSelection: Boolean,
filterMethod: Function,
filteredValue: Array,
filters: Array,
filterPlacement: String,
filterMultiple: {
type: Boolean,
default: true
},
index: [Number, Function],
sortOrders: {
type: Array,
default: () => {
return ["ascending", "descending", null];
},
validator: (val) => {
return val.every((order2) => ["ascending", "descending", null].includes(order2));
}
}
};
let columnIdSeed = 1;
var ElTableColumn$1 = defineComponent({
name: "ElTableColumn",
components: {
ElCheckbox
},
props: defaultProps,
setup(props, { slots }) {
const instance = getCurrentInstance();
const columnConfig = ref({});
const owner = computed(() => {
let parent2 = instance.parent;
while (parent2 && !parent2.tableId) {
parent2 = parent2.parent;
}
return parent2;
});
const { registerNormalWatchers, registerComplexWatchers } = useWatcher(owner, props);
const {
columnId,
isSubColumn,
realHeaderAlign,
columnOrTableParent,
setColumnWidth,
setColumnForcedProps,
setColumnRenders,
getPropsData,
getColumnElIndex,
realAlign
} = useRender(props, slots, owner);
const parent = columnOrTableParent.value;
columnId.value = `${parent.tableId || parent.columnId}_column_${columnIdSeed++}`;
onBeforeMount(() => {
isSubColumn.value = owner.value !== parent;
const type4 = props.type || "default";
const sortable = props.sortable === "" ? true : props.sortable;
const defaults = __spreadProps(__spreadValues({}, cellStarts[type4]), {
id: columnId.value,
type: type4,
property: props.prop || props.property,
align: realAlign,
headerAlign: realHeaderAlign,
showOverflowTooltip: props.showOverflowTooltip || props.showTooltipWhenOverflow,
filterable: props.filters || props.filterMethod,
filteredValue: [],
filterPlacement: "",
isColumnGroup: false,
isSubColumn: false,
filterOpened: false,
sortable,
index: props.index,
rawColumnKey: instance.vnode.key
});
const basicProps = [
"columnKey",
"label",
"className",
"labelClassName",
"type",
"renderHeader",
"formatter",
"fixed",
"resizable"
];
const sortProps = ["sortMethod", "sortBy", "sortOrders"];
const selectProps = ["selectable", "reserveSelection"];
const filterProps = [
"filterMethod",
"filters",
"filterMultiple",
"filterOpened",
"filteredValue",
"filterPlacement"
];
let column = getPropsData(basicProps, sortProps, selectProps, filterProps);
column = mergeOptions(defaults, column);
const chains = compose(setColumnRenders, setColumnWidth, setColumnForcedProps);
column = chains(column);
columnConfig.value = column;
registerNormalWatchers();
registerComplexWatchers();
});
onMounted(() => {
var _a2;
const parent2 = columnOrTableParent.value;
const children = isSubColumn.value ? parent2.vnode.el.children : (_a2 = parent2.refs.hiddenColumns) == null ? void 0 : _a2.children;
const getColumnIndex = () => getColumnElIndex(children || [], instance.vnode.el);
columnConfig.value.getColumnIndex = getColumnIndex;
const columnIndex = getColumnIndex();
columnIndex > -1 && owner.value.store.commit("insertColumn", columnConfig.value, isSubColumn.value ? parent2.columnConfig.value : null);
});
onBeforeUnmount(() => {
owner.value.store.commit("removeColumn", columnConfig.value, isSubColumn.value ? parent.columnConfig.value : null);
});
instance.columnId = columnId.value;
instance.columnConfig = columnConfig;
return;
},
render() {
var _a2, _b2, _c;
try {
const renderDefault = (_b2 = (_a2 = this.$slots).default) == null ? void 0 : _b2.call(_a2, {
row: {},
column: {},
$index: -1
});
const children = [];
if (Array.isArray(renderDefault)) {
for (const childNode of renderDefault) {
if (((_c = childNode.type) == null ? void 0 : _c.name) === "ElTableColumn" || childNode.shapeFlag & 2) {
children.push(childNode);
} else if (childNode.type === Fragment && Array.isArray(childNode.children)) {
childNode.children.forEach((vnode2) => {
if ((vnode2 == null ? void 0 : vnode2.patchFlag) !== 1024 && !isString(vnode2 == null ? void 0 : vnode2.children)) {
children.push(vnode2);
}
});
}
}
}
const vnode = h$1("div", children);
return vnode;
} catch (e) {
return h$1("div", []);
}
}
});
const ElTable = withInstall(Table, {
TableColumn: ElTableColumn$1
});
const ElTableColumn = withNoopInstall(ElTableColumn$1);
const SCOPE$1 = "ElUpload";
class UploadAjaxError extends Error {
constructor(message, status, method4, url2) {
super(message);
this.name = "UploadAjaxError";
this.status = status;
this.method = method4;
this.url = url2;
}
}
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 (e) {
return text;
}
}
const ajaxUpload = (option) => {
if (typeof XMLHttpRequest === "undefined")
throwError(SCOPE$1, "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 (Array.isArray(value))
formData.append(key, ...value);
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 (isNil(value))
continue;
xhr.setRequestHeader(key, String(value));
}
}
xhr.send(formData);
return xhr;
};
const uploadListTypes = ["text", "picture", "picture-card"];
let fileId = 1;
const genFileId = () => Date.now() + fileId++;
const uploadBaseProps = buildProps({
action: {
type: String,
required: true
},
headers: {
type: definePropType(Object)
},
method: {
type: String,
default: "post"
},
data: {
type: Object,
default: () => mutable({})
},
multiple: {
type: Boolean,
default: false
},
name: {
type: String,
default: "file"
},
drag: {
type: Boolean,
default: false
},
withCredentials: Boolean,
showFileList: {
type: Boolean,
default: true
},
accept: {
type: String,
default: ""
},
type: {
type: String,
default: "select"
},
fileList: {
type: definePropType(Array),
default: () => mutable([])
},
autoUpload: {
type: Boolean,
default: true
},
listType: {
type: String,
values: uploadListTypes,
default: "text"
},
httpRequest: {
type: definePropType(Function),
default: ajaxUpload
},
disabled: Boolean,
limit: Number
});
const uploadProps = buildProps(__spreadProps(__spreadValues({}, uploadBaseProps), {
beforeUpload: {
type: definePropType(Function),
default: NOOP
},
beforeRemove: {
type: definePropType(Function)
},
onRemove: {
type: definePropType(Function),
default: NOOP
},
onChange: {
type: definePropType(Function),
default: NOOP
},
onPreview: {
type: definePropType(Function),
default: NOOP
},
onSuccess: {
type: definePropType(Function),
default: NOOP
},
onProgress: {
type: definePropType(Function),
default: NOOP
},
onError: {
type: definePropType(Function),
default: NOOP
},
onExceed: {
type: definePropType(Function),
default: NOOP
}
}));
const uploadListProps = buildProps({
files: {
type: definePropType(Array),
default: () => mutable([])
},
disabled: {
type: Boolean,
default: false
},
handlePreview: {
type: definePropType(Function),
default: NOOP
},
listType: {
type: String,
values: uploadListTypes,
default: "text"
}
});
const uploadListEmits = {
remove: (file) => !!file
};
const _hoisted_1$a = ["onKeydown"];
const _hoisted_2$8 = ["src"];
const _hoisted_3$6 = ["onClick"];
const _hoisted_4$6 = ["onClick"];
const _hoisted_5$6 = ["onClick"];
const __default__$4 = {
name: "ElUploadList"
};
const _sfc_main$d = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({}, __default__$4), {
props: uploadListProps,
emits: uploadListEmits,
setup(__props, { emit }) {
const props = __props;
const { t } = useLocale();
const nsUpload = useNamespace("upload");
const nsIcon = useNamespace("icon");
const nsList = useNamespace("list");
const focusing = ref(false);
const handleClick = (file) => {
props.handlePreview(file);
};
const onFileClicked = (e) => {
e.target.focus();
};
const handleRemove = (file) => {
emit("remove", file);
};
return (_ctx, _cache) => {
return openBlock(), createBlock(TransitionGroup, {
tag: "ul",
class: normalizeClass([
unref(nsUpload).b("list"),
unref(nsUpload).bm("list", _ctx.listType),
unref(nsUpload).is("disabled", _ctx.disabled)
]),
name: unref(nsList).b()
}, {
default: withCtx(() => [
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.files, (file) => {
return openBlock(), createElementBlock("li", {
key: file.uid || file.name,
class: normalizeClass([
unref(nsUpload).be("list", "item"),
unref(nsUpload).is(file.status),
{ focusing: focusing.value }
]),
tabindex: "0",
onKeydown: withKeys(($event) => !_ctx.disabled && handleRemove(file), ["delete"]),
onFocus: _cache[0] || (_cache[0] = ($event) => focusing.value = true),
onBlur: _cache[1] || (_cache[1] = ($event) => focusing.value = false),
onClick: onFileClicked
}, [
renderSlot(_ctx.$slots, "default", { file }, () => [
_ctx.listType === "picture" || file.status !== "uploading" && _ctx.listType === "picture-card" ? (openBlock(), createElementBlock("img", {
key: 0,
class: normalizeClass(unref(nsUpload).be("list", "item-thumbnail")),
src: file.url,
alt: ""
}, null, 10, _hoisted_2$8)) : createCommentVNode("v-if", true),
_ctx.listType !== "picture" && (file.status === "uploading" || _ctx.listType !== "picture-card") ? (openBlock(), createElementBlock("div", {
key: 1,
class: normalizeClass(unref(nsUpload).be("list", "item-info"))
}, [
createElementVNode("a", {
class: normalizeClass(unref(nsUpload).be("list", "item-name")),
onClick: ($event) => handleClick(file)
}, [
createVNode(unref(ElIcon), {
class: normalizeClass(unref(nsIcon).m("document"))
}, {
default: withCtx(() => [
createVNode(unref(document$1))
]),
_: 1
}, 8, ["class"]),
createTextVNode(" " + toDisplayString(file.name), 1)
], 10, _hoisted_3$6),
file.status === "uploading" ? (openBlock(), createBlock(unref(ElProgress), {
key: 0,
type: _ctx.listType === "picture-card" ? "circle" : "line",
"stroke-width": _ctx.listType === "picture-card" ? 6 : 2,
percentage: Number(file.percentage),
style: normalizeStyle(_ctx.listType === "picture-card" ? "" : "margin-top: 0.5rem")
}, null, 8, ["type", "stroke-width", "percentage", "style"])) : createCommentVNode("v-if", true)
], 2)) : createCommentVNode("v-if", true),
createElementVNode("label", {
class: normalizeClass(unref(nsUpload).be("list", "item-status-label"))
}, [
_ctx.listType === "text" ? (openBlock(), createBlock(unref(ElIcon), {
key: 0,
class: normalizeClass([unref(nsIcon).m("upload-success"), unref(nsIcon).m("circle-check")])
}, {
default: withCtx(() => [
createVNode(unref(circleCheck))
]),
_: 1
}, 8, ["class"])) : ["picture-card", "picture"].includes(_ctx.listType) ? (openBlock(), createBlock(unref(ElIcon), {
key: 1,
class: normalizeClass([unref(nsIcon).m("upload-success"), unref(nsIcon).m("check")])
}, {
default: withCtx(() => [
createVNode(unref(check))
]),
_: 1
}, 8, ["class"])) : createCommentVNode("v-if", true)
], 2),
!_ctx.disabled ? (openBlock(), createBlock(unref(ElIcon), {
key: 2,
class: normalizeClass(unref(nsIcon).m("close")),
onClick: ($event) => handleRemove(file)
}, {
default: withCtx(() => [
createVNode(unref(close))
]),
_: 2
}, 1032, ["class", "onClick"])) : createCommentVNode("v-if", true),
createCommentVNode(" Due to close btn only appears when li gets focused disappears after li gets blurred, thus keyboard navigation can never reach close btn"),
createCommentVNode(" This is a bug which needs to be fixed "),
createCommentVNode(" TODO: Fix the incorrect navigation interaction "),
!_ctx.disabled ? (openBlock(), createElementBlock("i", {
key: 3,
class: normalizeClass(unref(nsIcon).m("close-tip"))
}, toDisplayString(unref(t)("el.upload.deleteTip")), 3)) : createCommentVNode("v-if", true),
_ctx.listType === "picture-card" ? (openBlock(), createElementBlock("span", {
key: 4,
class: normalizeClass(unref(nsUpload).be("list", "item-actions"))
}, [
createElementVNode("span", {
class: normalizeClass(unref(nsUpload).be("list", "item-preview")),
onClick: ($event) => _ctx.handlePreview(file)
}, [
createVNode(unref(ElIcon), {
class: normalizeClass(unref(nsIcon).m("zoom-in"))
}, {
default: withCtx(() => [
createVNode(unref(zoomIn))
]),
_: 1
}, 8, ["class"])
], 10, _hoisted_4$6),
!_ctx.disabled ? (openBlock(), createElementBlock("span", {
key: 0,
class: normalizeClass(unref(nsUpload).be("list", "item-delete")),
onClick: ($event) => handleRemove(file)
}, [
createVNode(unref(ElIcon), {
class: normalizeClass(unref(nsIcon).m("delete"))
}, {
default: withCtx(() => [
createVNode(unref(_delete))
]),
_: 1
}, 8, ["class"])
], 10, _hoisted_5$6)) : createCommentVNode("v-if", true)
], 2)) : createCommentVNode("v-if", true)
])
], 42, _hoisted_1$a);
}), 128)),
renderSlot(_ctx.$slots, "append")
]),
_: 3
}, 8, ["class", "name"]);
};
}
}));
var UploadList = /* @__PURE__ */ _export_sfc$1(_sfc_main$d, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/upload/src/upload-list.vue"]]);
const uploadDraggerProps = buildProps({
disabled: {
type: Boolean,
default: false
}
});
const uploadDraggerEmits = {
file: (file) => isArray(file)
};
const _hoisted_1$9 = ["onDrop", "onDragover"];
const __default__$3 = {
name: "ElUploadDrag"
};
const _sfc_main$c = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({}, __default__$3), {
props: uploadDraggerProps,
emits: uploadDraggerEmits,
setup(__props, { emit }) {
const props = __props;
const COMPONENT_NAME2 = "ElUploadDrag";
const uploaderContext = inject(uploadContextKey);
if (!uploaderContext) {
throwError(COMPONENT_NAME2, "usage: ");
}
const ns = useNamespace("upload");
const dragover = ref(false);
const onDrop = (e) => {
if (props.disabled)
return;
dragover.value = false;
const files = Array.from(e.dataTransfer.files);
const accept = uploaderContext.accept.value;
if (!accept) {
emit("file", files);
return;
}
const filesFiltered = files.filter((file) => {
const { type: type4, name } = file;
const extension = name.includes(".") ? `.${name.split(".").pop()}` : "";
const baseType = type4.replace(/\/.*$/, "");
return accept.split(",").map((type22) => type22.trim()).filter((type22) => type22).some((acceptedType) => {
if (acceptedType.startsWith(".")) {
return extension === acceptedType;
}
if (/\/\*$/.test(acceptedType)) {
return baseType === acceptedType.replace(/\/\*$/, "");
}
if (/^[^/]+\/[^/]+$/.test(acceptedType)) {
return type4 === acceptedType;
}
return false;
});
});
emit("file", filesFiltered);
};
const onDragover = () => {
if (!props.disabled)
dragover.value = true;
};
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", {
class: normalizeClass([unref(ns).b("dragger"), unref(ns).is("dragover", dragover.value)]),
onDrop: withModifiers(onDrop, ["prevent"]),
onDragover: withModifiers(onDragover, ["prevent"]),
onDragleave: _cache[0] || (_cache[0] = withModifiers(($event) => dragover.value = false, ["prevent"]))
}, [
renderSlot(_ctx.$slots, "default")
], 42, _hoisted_1$9);
};
}
}));
var UploadDragger = /* @__PURE__ */ _export_sfc$1(_sfc_main$c, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/upload/src/upload-dragger.vue"]]);
const uploadContentProps = buildProps(__spreadProps(__spreadValues({}, uploadBaseProps), {
fileList: {
type: definePropType(Array),
default: () => mutable([])
},
beforeUpload: {
type: definePropType(Function),
default: NOOP
},
onRemove: {
type: definePropType(Function),
default: NOOP
},
onStart: {
type: definePropType(Function),
default: NOOP
},
onSuccess: {
type: definePropType(Function),
default: NOOP
},
onProgress: {
type: definePropType(Function),
default: NOOP
},
onError: {
type: definePropType(Function),
default: NOOP
},
onExceed: {
type: definePropType(Function),
default: NOOP
}
}));
const _hoisted_1$8 = ["onKeydown"];
const _hoisted_2$7 = ["name", "multiple", "accept"];
const __default__$2 = {
name: "ElUploadContent",
inheritAttrs: false
};
const _sfc_main$b = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({}, __default__$2), {
props: uploadContentProps,
setup(__props, { expose }) {
const props = __props;
const ns = useNamespace("upload");
const requests = shallowRef({});
const inputRef = 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 = genFileId();
onStart(rawFile);
if (autoUpload)
upload(rawFile);
}
};
const upload = async (rawFile) => {
inputRef.value.value = "";
if (!props.beforeUpload) {
return doUpload(rawFile);
}
let hookResult;
try {
hookResult = await props.beforeUpload(rawFile);
} catch (e) {
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
});
}
for (const key of Object.keys(rawFile)) {
file[key] = rawFile[key];
}
}
doUpload(rawFile);
};
const doUpload = (rawFile) => {
const {
headers,
data: data2,
method: method4,
withCredentials,
name: filename,
action,
onProgress,
onSuccess,
onError,
httpRequest
} = props;
const { uid: uid2 } = rawFile;
const options = {
headers: headers || {},
withCredentials,
file: rawFile,
data: data2,
method: method4,
filename,
action,
onProgress: (evt) => {
onProgress(evt, rawFile);
},
onSuccess: (res) => {
onSuccess(res, rawFile);
delete requests.value[uid2];
},
onError: (err) => {
onError(err, rawFile);
delete requests.value[uid2];
}
};
const request = httpRequest(options);
requests.value[uid2] = request;
if (request instanceof Promise) {
request.then(options.onSuccess, options.onError);
}
};
const handleChange2 = (e) => {
const files = e.target.files;
if (!files)
return;
uploadFiles(Array.from(files));
};
const handleClick = () => {
if (!props.disabled) {
inputRef.value.value = "";
inputRef.value.click();
}
};
const handleKeydown = () => {
handleClick();
};
const abort = (file) => {
const _reqs = entriesOf(requests.value).filter(file ? ([uid2]) => String(file.uid) === uid2 : () => true);
_reqs.forEach(([uid2, req]) => {
if (req instanceof XMLHttpRequest)
req.abort();
delete requests.value[uid2];
});
};
expose({
abort,
upload
});
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", {
class: normalizeClass([unref(ns).b(), unref(ns).m(_ctx.listType)]),
tabindex: "0",
onClick: handleClick,
onKeydown: withKeys(withModifiers(handleKeydown, ["self"]), ["enter", "space"])
}, [
_ctx.drag ? (openBlock(), createBlock(UploadDragger, {
key: 0,
disabled: _ctx.disabled,
onFile: uploadFiles
}, {
default: withCtx(() => [
renderSlot(_ctx.$slots, "default")
]),
_: 3
}, 8, ["disabled"])) : renderSlot(_ctx.$slots, "default", { key: 1 }),
createElementVNode("input", {
ref_key: "inputRef",
ref: inputRef,
class: normalizeClass(unref(ns).e("input")),
name: _ctx.name,
multiple: _ctx.multiple,
accept: _ctx.accept,
type: "file",
onChange: handleChange2
}, null, 42, _hoisted_2$7)
], 42, _hoisted_1$8);
};
}
}));
var UploadContent = /* @__PURE__ */ _export_sfc$1(_sfc_main$b, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/upload/src/upload-content.vue"]]);
const SCOPE = "ElUpload";
const revokeObjectURL = (file) => {
var _a2;
if ((_a2 = file.url) == null ? void 0 : _a2.startsWith("blob:")) {
URL.revokeObjectURL(file.url);
}
};
const useHandlers = (props, uploadRef) => {
const uploadFiles = ref([]);
const getFile = (rawFile) => uploadFiles.value.find((file) => file.uid === rawFile.uid);
function abort(file) {
var _a2;
(_a2 = uploadRef.value) == null ? void 0 : _a2.abort(file);
}
function clearFiles(states = ["ready", "uploading", "success", "fail"]) {
uploadFiles.value = uploadFiles.value.filter((row) => !states.includes(row.status));
}
const handleError = (err, rawFile) => {
const file = getFile(rawFile);
if (!file)
return;
file.status = "fail";
uploadFiles.value.splice(uploadFiles.value.indexOf(file), 1);
props.onError(err, file, uploadFiles.value);
props.onChange(file, uploadFiles.value);
};
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);
props.onChange(file, uploadFiles.value);
};
const handleStart = (file) => {
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) {
debugWarn(SCOPE, err.message);
props.onError(err, uploadFile, uploadFiles.value);
}
}
uploadFiles.value.push(uploadFile);
props.onChange(uploadFile, uploadFiles.value);
};
const handleRemove = async (file, rawFile) => {
if (rawFile) {
useDeprecated({
scope: SCOPE,
from: "handleRemove second argument",
version: "2.2",
replacement: "first argument `file`",
ref: "https://element-plus.org/en-US/component/upload.html#methods"
}, true);
}
const _file = rawFile || file;
const uploadFile = _file instanceof File ? getFile(_file) : _file;
if (!uploadFile)
throwError(SCOPE, "file to be removed not found");
const doRemove = (file2) => {
abort(file2);
const fileList = uploadFiles.value;
fileList.splice(fileList.indexOf(file2), 1);
props.onRemove(file2, fileList);
revokeObjectURL(file2);
};
if (props.beforeRemove) {
const before = await props.beforeRemove(uploadFile, uploadFiles.value);
if (before !== false)
doRemove(uploadFile);
} else {
doRemove(uploadFile);
}
};
function submit() {
uploadFiles.value.filter(({ status }) => status === "ready").forEach(({ raw }) => {
var _a2;
return raw && ((_a2 = uploadRef.value) == null ? void 0 : _a2.upload(raw));
});
}
watch(() => props.listType, (val) => {
if (val !== "picture-card" && val !== "picture") {
return;
}
uploadFiles.value = uploadFiles.value.map((file) => {
const { raw, url: url2 } = file;
if (!url2 && raw) {
try {
file.url = URL.createObjectURL(raw);
} catch (err) {
props.onError(err, file, uploadFiles.value);
}
}
return file;
});
});
watch(() => props.fileList, (fileList) => {
for (const file of fileList) {
file.uid || (file.uid = genFileId());
file.status || (file.status = "success");
}
uploadFiles.value = fileList;
}, { immediate: true, deep: true });
return {
abort,
clearFiles,
handleError,
handleProgress,
handleStart,
handleSuccess,
handleRemove,
submit,
uploadFiles
};
};
const __default__$1 = {
name: "ElUpload"
};
const _sfc_main$a = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({}, __default__$1), {
props: uploadProps,
setup(__props, { expose }) {
const props = __props;
const slots = useSlots();
const disabled = useDisabled$1();
const uploadRef = shallowRef();
const {
abort,
submit,
clearFiles,
uploadFiles,
handleStart,
handleError,
handleRemove,
handleSuccess,
handleProgress
} = useHandlers(props, uploadRef);
const isPictureCard = computed(() => props.listType === "picture-card");
const uploadContentProps2 = computed(() => __spreadProps(__spreadValues({}, props), {
onStart: handleStart,
onProgress: handleProgress,
onSuccess: handleSuccess,
onError: handleError,
onRemove: handleRemove
}));
onBeforeUnmount(() => {
uploadFiles.value.forEach(({ url: url2 }) => {
if (url2 == null ? void 0 : url2.startsWith("blob:"))
URL.revokeObjectURL(url2);
});
});
provide(uploadContextKey, {
accept: toRef(props, "accept")
});
expose({
abort,
submit,
clearFiles,
handleStart,
handleRemove
});
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", null, [
unref(isPictureCard) && _ctx.showFileList ? (openBlock(), createBlock(UploadList, {
key: 0,
disabled: unref(disabled),
"list-type": _ctx.listType,
files: unref(uploadFiles),
"handle-preview": _ctx.onPreview,
onRemove: unref(handleRemove)
}, createSlots({
append: withCtx(() => [
_ctx.listType === "picture-card" ? (openBlock(), createBlock(UploadContent, mergeProps({
key: 0,
ref_key: "uploadRef",
ref: uploadRef
}, unref(uploadContentProps2)), {
default: withCtx(() => [
unref(slots).trigger ? renderSlot(_ctx.$slots, "trigger", { key: 0 }) : createCommentVNode("v-if", true),
!unref(slots).trigger && unref(slots).default ? renderSlot(_ctx.$slots, "default", { key: 1 }) : createCommentVNode("v-if", true)
]),
_: 3
}, 16)) : createCommentVNode("v-if", true)
]),
_: 2
}, [
_ctx.$slots.file ? {
name: "default",
fn: withCtx(({ file }) => [
renderSlot(_ctx.$slots, "file", { file })
])
} : void 0
]), 1032, ["disabled", "list-type", "files", "handle-preview", "onRemove"])) : createCommentVNode("v-if", true),
_ctx.listType !== "picture-card" ? (openBlock(), createBlock(UploadContent, mergeProps({
key: 1,
ref_key: "uploadRef",
ref: uploadRef
}, unref(uploadContentProps2)), {
default: withCtx(() => [
unref(slots).trigger ? renderSlot(_ctx.$slots, "trigger", { key: 0 }) : createCommentVNode("v-if", true),
!unref(slots).trigger && unref(slots).default ? renderSlot(_ctx.$slots, "default", { key: 1 }) : createCommentVNode("v-if", true)
]),
_: 3
}, 16)) : createCommentVNode("v-if", true),
_ctx.$slots.trigger ? renderSlot(_ctx.$slots, "default", { key: 2 }) : createCommentVNode("v-if", true),
renderSlot(_ctx.$slots, "tip"),
!unref(isPictureCard) && _ctx.showFileList ? (openBlock(), createBlock(UploadList, {
key: 3,
disabled: unref(disabled),
"list-type": _ctx.listType,
files: unref(uploadFiles),
"handle-preview": _ctx.onPreview,
onRemove: unref(handleRemove)
}, createSlots({ _: 2 }, [
_ctx.$slots.file ? {
name: "default",
fn: withCtx(({ file }) => [
renderSlot(_ctx.$slots, "file", { file })
])
} : void 0
]), 1032, ["disabled", "list-type", "files", "handle-preview", "onRemove"])) : createCommentVNode("v-if", true)
]);
};
}
}));
var Upload = /* @__PURE__ */ _export_sfc$1(_sfc_main$a, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/upload/src/upload.vue"]]);
const ElUpload = withInstall(Upload);
var base = "";
var elDialog = "";
var elOverlay = "";
var elButton = "";
var elForm = "";
var elFormItem = "";
var elCascader = "";
var elInput = "";
var elPopper = "";
var elTag = "";
var elCascaderPanel = "";
var elCheckbox = "";
var elRadio = "";
var elScrollbar = "";
var elUpload = "";
var elProgress = "";
var elImage = "";
var elImageViewer = "";
var elSlider = "";
var elInputNumber = "";
var elTooltip = "";
var elSwitch = "";
var elOption = "";
var elOptionGroup = "";
var elSelect = "";
var elRate = "";
var elDatePicker = "";
var elConfigProvider = "";
var elTimePicker = "";
var elCheckboxGroup = "";
var elRadioGroup = "";
var elDivider = "";
var elTable = "";
var elTableColumn = "";
var zhCn = {
name: "zh-cn",
el: {
colorpicker: {
confirm: "\u786E\u5B9A",
clear: "\u6E05\u7A7A"
},
datepicker: {
now: "\u6B64\u523B",
today: "\u4ECA\u5929",
cancel: "\u53D6\u6D88",
clear: "\u6E05\u7A7A",
confirm: "\u786E\u5B9A",
selectDate: "\u9009\u62E9\u65E5\u671F",
selectTime: "\u9009\u62E9\u65F6\u95F4",
startDate: "\u5F00\u59CB\u65E5\u671F",
startTime: "\u5F00\u59CB\u65F6\u95F4",
endDate: "\u7ED3\u675F\u65E5\u671F",
endTime: "\u7ED3\u675F\u65F6\u95F4",
prevYear: "\u524D\u4E00\u5E74",
nextYear: "\u540E\u4E00\u5E74",
prevMonth: "\u4E0A\u4E2A\u6708",
nextMonth: "\u4E0B\u4E2A\u6708",
year: "\u5E74",
month1: "1 \u6708",
month2: "2 \u6708",
month3: "3 \u6708",
month4: "4 \u6708",
month5: "5 \u6708",
month6: "6 \u6708",
month7: "7 \u6708",
month8: "8 \u6708",
month9: "9 \u6708",
month10: "10 \u6708",
month11: "11 \u6708",
month12: "12 \u6708",
weeks: {
sun: "\u65E5",
mon: "\u4E00",
tue: "\u4E8C",
wed: "\u4E09",
thu: "\u56DB",
fri: "\u4E94",
sat: "\u516D"
},
months: {
jan: "\u4E00\u6708",
feb: "\u4E8C\u6708",
mar: "\u4E09\u6708",
apr: "\u56DB\u6708",
may: "\u4E94\u6708",
jun: "\u516D\u6708",
jul: "\u4E03\u6708",
aug: "\u516B\u6708",
sep: "\u4E5D\u6708",
oct: "\u5341\u6708",
nov: "\u5341\u4E00\u6708",
dec: "\u5341\u4E8C\u6708"
}
},
select: {
loading: "\u52A0\u8F7D\u4E2D",
noMatch: "\u65E0\u5339\u914D\u6570\u636E",
noData: "\u65E0\u6570\u636E",
placeholder: "\u8BF7\u9009\u62E9"
},
cascader: {
noMatch: "\u65E0\u5339\u914D\u6570\u636E",
loading: "\u52A0\u8F7D\u4E2D",
placeholder: "\u8BF7\u9009\u62E9",
noData: "\u6682\u65E0\u6570\u636E"
},
pagination: {
goto: "\u524D\u5F80",
pagesize: "\u6761/\u9875",
total: "\u5171 {total} \u6761",
pageClassifier: "\u9875",
deprecationWarning: "\u4F60\u4F7F\u7528\u4E86\u4E00\u4E9B\u5DF2\u88AB\u5E9F\u5F03\u7684\u7528\u6CD5\uFF0C\u8BF7\u53C2\u8003 el-pagination \u7684\u5B98\u65B9\u6587\u6863"
},
messagebox: {
title: "\u63D0\u793A",
confirm: "\u786E\u5B9A",
cancel: "\u53D6\u6D88",
error: "\u8F93\u5165\u7684\u6570\u636E\u4E0D\u5408\u6CD5!"
},
upload: {
deleteTip: "\u6309 delete \u952E\u53EF\u5220\u9664",
delete: "\u5220\u9664",
preview: "\u67E5\u770B\u56FE\u7247",
continue: "\u7EE7\u7EED\u4E0A\u4F20"
},
table: {
emptyText: "\u6682\u65E0\u6570\u636E",
confirmFilter: "\u7B5B\u9009",
resetFilter: "\u91CD\u7F6E",
clearFilter: "\u5168\u90E8",
sumText: "\u5408\u8BA1"
},
tree: {
emptyText: "\u6682\u65E0\u6570\u636E"
},
transfer: {
noMatch: "\u65E0\u5339\u914D\u6570\u636E",
noData: "\u65E0\u6570\u636E",
titles: ["\u5217\u8868 1", "\u5217\u8868 2"],
filterPlaceholder: "\u8BF7\u8F93\u5165\u641C\u7D22\u5185\u5BB9",
noCheckedFormat: "\u5171 {total} \u9879",
hasCheckedFormat: "\u5DF2\u9009 {checked}/{total} \u9879"
},
image: {
error: "\u52A0\u8F7D\u5931\u8D25"
},
pageHeader: {
title: "\u8FD4\u56DE"
},
popconfirm: {
confirmButtonText: "\u786E\u5B9A",
cancelButtonText: "\u53D6\u6D88"
}
}
};
var personnelSearch_vue_vue_type_style_index_0_lang = "";
const _hoisted_1$7 = { class: "selectV2SingleChoiceReset" };
const _hoisted_2$6 = {
key: 0,
style: { "color": "#A8ABB2" }
};
const _hoisted_3$5 = {
key: 1,
style: { "color": "#606266" }
};
const _hoisted_4$5 = { class: "selectV2SingleChoiceTwoReset" };
const _hoisted_5$5 = {
key: 0,
style: { "color": "#A8ABB2" }
};
const _hoisted_6$5 = { style: { "float": "left" } };
const _sfc_main$9 = /* @__PURE__ */ defineComponent({
props: {
modelValue: { type: null, required: true },
multiple: { type: Boolean, required: false, default: false },
size: { type: String, required: true, default: () => "" },
placeholder: { type: String, required: false, default: () => "\u8BF7\u9009\u62E9" },
disabled: { type: Boolean, required: false, default: false },
options: { type: Array, required: false, default: () => [] },
clearable: { type: Boolean, required: false, default: true },
width: { type: String, required: false, default: () => "100%" },
url: { type: String, required: false, default: () => "" }
},
emits: ["change", "update:modelValue"],
setup(__props, { emit }) {
const props = __props;
const personnelArray = ref([]);
const { userInfo = {}, personnelList = [] } = JSON.parse(sessionStorage.getItem("storeInfo") || "{}");
const textSize = ref({
"small": { height: "20px", fontSize: "12px" },
"default": { height: "28px", fontSize: "14px" },
"": { height: "28px", fontSize: "14px" },
"large": { height: "36px", fontSize: "14px" }
});
const selectLoading = ref(false);
const controlTranslation = reactive({
visibleFlag: false
});
const selectedValue = ref(props.modelValue);
watch(() => props.modelValue, (newValue, _oldValue) => {
if (newValue != selectedValue.value) {
selectedValue.value = newValue;
}
});
const getSelectedLabel = computed(() => {
if (!props.multiple) {
const item = getPersonnelListItems(selectedValue.value || props.modelValue);
return item ? item.label : props.placeholder;
}
if (props.multiple) {
if (Array.isArray(selectedValue.value)) {
if (selectedValue.value.length <= 0) {
return props.placeholder;
}
const item = getPersonnelListItems(selectedValue.value || props.modelValue);
return item ? item.label : props.placeholder;
} else {
return props.placeholder;
}
}
return props.placeholder;
});
function tagClose(_evt) {
if (Array.isArray(selectedValue.value)) {
selectedValue.value.shift();
updateValue(selectedValue.value);
}
}
function getPersonnelListItems(val) {
let value = val;
if (Array.isArray(val) && val.length > 0) {
value = val[0];
}
return personnelList.find((item) => item.value == value);
}
function getUserList(keyword = "") {
newPost(props.url, keyword).then((res) => {
personnelArray.value = res || [];
}).finally(() => {
selectLoading.value = false;
});
}
function newPost(url2, keyword) {
return new Promise((resolve, reject) => {
const token = sessionStorage.getItem("token");
if (!token) {
reject(new Error("Token is missing"));
return;
}
const body = new URLSearchParams();
body.append("keyword", keyword);
fetch(url2, {
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
"Token": token
},
body: body.toString()
}).then((resp) => {
if (!resp.ok) {
reject(new Error(`Error: ${resp.statusText}`));
}
return resp.json();
}).then((json) => {
const res = json.data;
if (Array.isArray(res)) {
const personnelArray2 = res.map((data2) => ({
label: data2["label"],
value: data2["value"]
}));
resolve(personnelArray2);
} else {
reject(new Error("Invalid data format"));
}
}).catch((error) => {
reject(error);
});
});
}
function visibleChange(visible) {
if (visible) {
personnelArray.value = personnelList;
}
controlTranslation.visibleFlag = visible;
}
const filterMethod = debounce2(filterMethods, 500);
function filterMethods(val) {
if (val == "") {
personnelArray.value = personnelList;
selectLoading.value = false;
return personnelArray.value;
}
selectLoading.value = true;
getUserList(val);
}
function updateValue(val) {
emit("update:modelValue", selectedValue.value);
emit("change", val);
}
function debounce2(func, delay) {
let timer;
return (...args) => {
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(() => {
func(...args);
}, delay);
};
}
onMounted(() => {
if (personnelList.length == 0) {
getUserList();
} else {
personnelArray.value = personnelList;
}
});
return (_ctx, _cache) => {
const _component_ww_open_data = resolveComponent("ww-open-data");
const _component_el_tag = ElTag;
const _component_el_option = ElOption;
const _component_el_select = ElSelect;
return openBlock(), createBlock(_component_el_select, {
modelValue: selectedValue.value,
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => selectedValue.value = $event),
multiple: __props.multiple,
size: __props.size,
loading: selectLoading.value,
placeholder: __props.placeholder,
disabled: __props.disabled,
clearable: __props.clearable,
filterable: "",
"collapse-tags": "",
style: normalizeStyle(`width: ${__props.width}`),
class: normalizeClass(`custom-select-v2-reset ${!unref(controlTranslation).visibleFlag ? "setUpInputReset" : ""}`),
onChange: updateValue,
onVisibleChange: visibleChange,
"filter-method": unref(filterMethod)
}, createSlots({
default: withCtx(() => [
(openBlock(true), createElementBlock(Fragment, null, renderList(personnelArray.value || [], (item) => {
return openBlock(), createBlock(_component_el_option, {
key: item.value,
label: item.label,
value: item.value
}, {
default: withCtx(() => [
createElementVNode("span", _hoisted_6$5, [
createVNode(_component_ww_open_data, {
type: "userName",
openid: item.label
}, null, 8, ["openid"])
])
]),
_: 2
}, 1032, ["label", "value"]);
}), 128))
]),
_: 2
}, [
!__props.multiple ? {
name: "prefix",
fn: withCtx(() => [
createElementVNode("div", _hoisted_1$7, [
!unref(controlTranslation).visibleFlag ? (openBlock(), createElementBlock("div", {
key: 0,
class: "selectSingleChoice",
style: normalizeStyle(`line-height: ${textSize.value[__props.size].height};font-size:${textSize.value[__props.size].fontSize}`)
}, [
unref(getSelectedLabel) == __props.placeholder ? (openBlock(), createElementBlock("span", _hoisted_2$6, toDisplayString(__props.placeholder), 1)) : (openBlock(), createElementBlock("span", _hoisted_3$5, [
createVNode(_component_ww_open_data, {
type: "userName",
openid: unref(getSelectedLabel)
}, null, 8, ["openid"])
]))
], 4)) : createCommentVNode("", true)
])
])
} : void 0,
__props.multiple ? {
name: "prefix",
fn: withCtx(() => [
createElementVNode("div", _hoisted_4$5, [
createElementVNode("div", {
class: "selectSingleChoice",
style: normalizeStyle(`line-height: ${textSize.value[__props.size].height};font-size:${textSize.value[__props.size].fontSize}`)
}, [
unref(getSelectedLabel) == __props.placeholder ? (openBlock(), createElementBlock("span", _hoisted_5$5, toDisplayString(__props.placeholder), 1)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
createVNode(_component_el_tag, {
type: "info",
size: __props.size,
closable: "",
onClose: tagClose,
style: { "margin-right": "5px" }
}, {
default: withCtx(() => [
createVNode(_component_ww_open_data, {
type: "userName",
openid: unref(getSelectedLabel)
}, null, 8, ["openid"])
]),
_: 1
}, 8, ["size"]),
selectedValue.value.length > 1 ? (openBlock(), createBlock(_component_el_tag, {
key: 0,
type: "info",
size: __props.size
}, {
default: withCtx(() => [
createTextVNode("+" + toDisplayString(selectedValue.value.length), 1)
]),
_: 1
}, 8, ["size"])) : createCommentVNode("", true)
], 64))
], 4)
])
])
} : void 0
]), 1032, ["modelValue", "multiple", "size", "loading", "placeholder", "disabled", "clearable", "style", "class", "filter-method"]);
};
}
});
var GenerateFormItem_vue_vue_type_style_index_0_scoped_true_lang = "";
var _export_sfc = (sfc, props) => {
const target = sfc.__vccOpts || sfc;
for (const [key, val] of props) {
target[key] = val;
}
return target;
};
const _withScopeId = (n) => (pushScopeId("data-v-38ee7c8b"), n = n(), popScopeId(), n);
const _hoisted_1$6 = { key: 12 };
const _hoisted_2$5 = {
key: 1,
class: "custom:insert"
};
const _hoisted_3$4 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createElementVNode("i", { class: "custom:img-upload mr-2" }, null, -1));
const _hoisted_4$4 = /* @__PURE__ */ createTextVNode("\u70B9\u51FB\u4E0A\u4F20 ");
const _hoisted_5$4 = ["href"];
const _hoisted_6$4 = /* @__PURE__ */ createTextVNode(" \u4E0B\u8F7D ");
const _sfc_main$8 = /* @__PURE__ */ defineComponent({
props: {
config: null,
element: null,
model: null,
updatedModel: null,
disabled: { type: Boolean },
request: null,
widgetFormData: null
},
emits: ["updateWidgetForm"],
setup(__props, { emit: emits }) {
const props = __props;
const { userInfo = {} } = JSON.parse(sessionStorage.getItem("storeInfo") || "{}");
const originData = props.model[props.element.model];
const data2 = computed({
get: () => props.model[props.element.model],
set: (val) => {
props.model[props.element.model] = val;
if (JSON.stringify(originData) === JSON.stringify(val)) {
Reflect.deleteProperty(props.updatedModel, props.element.model);
} else {
props.updatedModel[props.element.model] = val;
}
}
});
const handleUploadSuccess = (_res, _file, fileList) => {
data2.value = fileList;
};
async function download(defaultValue, label) {
const a2 = document.createElement("a");
if (!props.request)
return;
a2.href = await props.request({
url: `/sys/common/static/${defaultValue}`,
responseType: "blob"
}).then((i) => {
if (i.size === 0)
return "";
return URL.createObjectURL(i);
});
a2.download = `${label}.${defaultValue.split(".")[1]}`;
a2.click();
}
const specializedHandleSelect = (val, element) => {
const field = element.model;
if (field == "customerId") {
let list = JSON.parse(JSON.stringify(props.widgetFormData));
for (var i in list) {
if (list[i].list[0].model == "contactsId") {
let item = list[i].list[0];
const token = sessionStorage.getItem("token");
fetch(`${item.options.remoteFunc}?customerId=${val}`, {
headers: {
"Content-type": " application/x-www-form-urlencoded; charset=UTF-8",
"Token": token
}
}).then((resp) => resp.json()).then((json) => {
const res = json.data;
if (res instanceof Array) {
item.options.remoteOptions = res.map((data22) => ({
label: data22[item.options.props.label],
value: data22[item.options.props.value],
children: data22[item.options.props.children]
}));
}
list[i].list[0].options = __spreadProps(__spreadValues({}, list[i].list[0].options), { disabled: false, defaultValue: "" });
});
}
}
setTimeout(() => {
console.log("\u5F00\u59CB\u6267\u884C");
updateWidgetForm(list);
}, 100);
}
};
const updateWidgetForm = (list) => {
emits("updateWidgetForm", list);
};
return (_ctx, _cache) => {
const _component_GenerateFormItem = resolveComponent("GenerateFormItem", true);
const _component_el_table_column = ElTableColumn;
const _component_el_table = ElTable;
const _component_el_divider = ElDivider;
const _component_el_input = ElInput;
const _component_el_input_number = ElInputNumber;
const _component_el_radio = ElRadio;
const _component_el_radio_group = ElRadioGroup;
const _component_el_checkbox = ElCheckbox;
const _component_el_checkbox_group = ElCheckboxGroup$1;
const _component_el_time_picker = ElTimePicker;
const _component_el_config_provider = ElConfigProvider;
const _component_el_date_picker = ElDatePicker;
const _component_el_rate = ElRate;
const _component_el_option = ElOption;
const _component_el_select = ElSelect;
const _component_el_switch = ElSwitch;
const _component_el_slider = ElSlider;
const _component_el_image = ElImage;
const _component_el_button = ElButton;
const _component_el_upload = ElUpload;
const _component_el_cascader = ElCascader;
const _component_el_form_item = ElFormItem;
return __props.element.type === "grid" ? (openBlock(), createElementBlock("div", {
key: 0,
grid: "~ cols-24",
style: normalizeStyle(`gap: ${__props.element.options.gutter}px; align-items: ${__props.element.options.align};`)
}, [
(openBlock(true), createElementBlock(Fragment, null, renderList(__props.element.columns, (col, colIndex) => {
return openBlock(), createElementBlock("div", {
key: colIndex,
style: normalizeStyle(`grid-column: span ${col.span}`)
}, [
(openBlock(true), createElementBlock(Fragment, null, renderList(col.list, (colItem) => {
return openBlock(), createBlock(_component_GenerateFormItem, {
key: colItem.key,
request: __props.request,
model: __props.model,
"updated-model": __props.updatedModel,
element: colItem,
config: __props.config,
disabled: __props.disabled,
widgetFormData: __props.element.columns,
onUpdateWidgetForm: updateWidgetForm
}, null, 8, ["request", "model", "updated-model", "element", "config", "disabled", "widgetFormData"]);
}), 128))
], 4);
}), 128))
], 4)) : __props.element.type === "table" ? (openBlock(), createBlock(_component_el_table, {
key: 1,
border: "",
class: "mb-4.5",
data: __props.element.options.defaultValue
}, {
default: withCtx(() => [
(openBlock(true), createElementBlock(Fragment, null, renderList(__props.element.columns, (i) => {
return openBlock(), createBlock(_component_el_table_column, mergeProps({
key: i.prop,
align: __props.element.options.align
}, i), null, 16, ["align"]);
}), 128))
]),
_: 1
}, 8, ["data"])) : __props.element.type === "divider" ? (openBlock(), createBlock(_component_el_divider, {
key: 2,
data: __props.element.options.defaultValue,
"content-position": "left"
}, {
default: withCtx(() => [
createTextVNode(toDisplayString(__props.element.label), 1)
]),
_: 1
}, 8, ["data"])) : __props.element ? (openBlock(), createBlock(_component_el_form_item, {
key: __props.element.key,
label: __props.element.label,
prop: __props.element.model,
style: normalizeStyle(__props.element.type === "download" ? "display:inline-flex;margin-right:40px" : ""),
"label-width": __props.element.labelWidth
}, createSlots({
default: withCtx(() => [
__props.element.type === "input" ? (openBlock(), createBlock(_component_el_input, {
key: 0,
modelValue: unref(data2),
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(data2) ? data2.value = $event : null),
modelModifiers: { trim: true },
style: normalizeStyle({ width: __props.element.options.width }),
placeholder: __props.element.options.placeholder,
maxlength: parseInt(__props.element.options.maxlength),
clearable: __props.element.options.clearable,
readonly: __props.element.options.readonly,
disabled: __props.disabled || __props.element.options.disabled
}, createSlots({ _: 2 }, [
__props.element.options.prefix ? {
name: "prefix",
fn: withCtx(() => [
createTextVNode(toDisplayString(__props.element.options.prefix), 1)
])
} : void 0,
__props.element.options.suffix ? {
name: "suffix",
fn: withCtx(() => [
createTextVNode(toDisplayString(__props.element.options.suffix), 1)
])
} : void 0,
__props.element.options.prepend ? {
name: "prepend",
fn: withCtx(() => [
createTextVNode(toDisplayString(__props.element.options.prepend), 1)
])
} : void 0,
__props.element.options.append ? {
name: "append",
fn: withCtx(() => [
createTextVNode(toDisplayString(__props.element.options.append), 1)
])
} : void 0
]), 1032, ["modelValue", "style", "placeholder", "maxlength", "clearable", "readonly", "disabled"])) : createCommentVNode("", true),
__props.element.type === "password" ? (openBlock(), createBlock(_component_el_input, {
key: 1,
modelValue: unref(data2),
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => isRef(data2) ? data2.value = $event : null),
modelModifiers: { trim: true },
style: normalizeStyle({ width: __props.element.options.width }),
placeholder: __props.element.options.placeholder,
maxlength: parseInt(__props.element.options.maxlength),
clearable: __props.element.options.clearable,
disabled: __props.disabled || __props.element.options.disabled,
readonly: __props.element.options.readonly,
"show-password": __props.element.options.showPassword
}, createSlots({ _: 2 }, [
__props.element.options.prefix ? {
name: "prefix",
fn: withCtx(() => [
createTextVNode(toDisplayString(__props.element.options.prefix), 1)
])
} : void 0,
__props.element.options.suffix ? {
name: "suffix",
fn: withCtx(() => [
createTextVNode(toDisplayString(__props.element.options.suffix), 1)
])
} : void 0,
__props.element.options.prepend ? {
name: "prepend",
fn: withCtx(() => [
createTextVNode(toDisplayString(__props.element.options.prepend), 1)
])
} : void 0,
__props.element.options.append ? {
name: "append",
fn: withCtx(() => [
createTextVNode(toDisplayString(__props.element.options.append), 1)
])
} : void 0
]), 1032, ["modelValue", "style", "placeholder", "maxlength", "clearable", "disabled", "readonly", "show-password"])) : createCommentVNode("", true),
__props.element.type === "textarea" ? (openBlock(), createBlock(_component_el_input, {
key: 2,
modelValue: unref(data2),
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => isRef(data2) ? data2.value = $event : null),
modelModifiers: { trim: true },
type: "textarea",
resize: "none",
rows: __props.element.options.rows,
style: normalizeStyle({ width: __props.element.options.width }),
placeholder: __props.element.options.placeholder,
maxlength: parseInt(__props.element.options.maxlength),
"show-word-limit": __props.element.options.showWordLimit,
autosize: __props.element.options.autosize,
clearable: __props.element.options.clearable,
readonly: __props.element.options.readonly,
disabled: __props.disabled || __props.element.options.disabled
}, null, 8, ["modelValue", "rows", "style", "placeholder", "maxlength", "show-word-limit", "autosize", "clearable", "readonly", "disabled"])) : createCommentVNode("", true),
__props.element.type === "number" ? (openBlock(), createBlock(_component_el_input_number, {
key: 3,
modelValue: unref(data2),
"onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => isRef(data2) ? data2.value = $event : null),
style: normalizeStyle({ width: __props.element.options.width }),
max: __props.element.options.max,
min: __props.element.options.min,
disabled: __props.disabled || __props.element.options.disabled,
"controls-position": "right"
}, null, 8, ["modelValue", "style", "max", "min", "disabled"])) : createCommentVNode("", true),
__props.element.type === "radio" ? (openBlock(), createBlock(_component_el_radio_group, {
key: 4,
modelValue: unref(data2),
"onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => isRef(data2) ? data2.value = $event : null),
style: normalizeStyle({ width: __props.element.options.width }),
disabled: __props.disabled || __props.element.options.disabled
}, {
default: withCtx(() => [
(openBlock(true), createElementBlock(Fragment, null, renderList(__props.element.options.remote ? __props.element.options.remoteOptions : __props.element.options.options, (item) => {
return openBlock(), createBlock(_component_el_radio, {
key: item.value,
label: item.value,
style: normalizeStyle({
display: __props.element.options.inline ? "inline-block" : "block"
})
}, {
default: withCtx(() => [
createTextVNode(toDisplayString(__props.element.options.showLabel ? item.label : item.value), 1)
]),
_: 2
}, 1032, ["label", "style"]);
}), 128))
]),
_: 1
}, 8, ["modelValue", "style", "disabled"])) : createCommentVNode("", true),
__props.element.type === "checkbox" ? (openBlock(), createBlock(_component_el_checkbox_group, {
key: 5,
modelValue: unref(data2),
"onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => isRef(data2) ? data2.value = $event : null),
style: normalizeStyle({ width: __props.element.options.width }),
disabled: __props.disabled || __props.element.options.disabled
}, {
default: withCtx(() => [
(openBlock(true), createElementBlock(Fragment, null, renderList(__props.element.options.remote ? __props.element.options.remoteOptions : __props.element.options.options, (item) => {
return openBlock(), createBlock(_component_el_checkbox, {
key: item.value,
label: item.value,
style: normalizeStyle({
display: __props.element.options.inline ? "inline-block" : "block"
})
}, {
default: withCtx(() => [
createTextVNode(toDisplayString(__props.element.options.showLabel ? item.label : item.value), 1)
]),
_: 2
}, 1032, ["label", "style"]);
}), 128))
]),
_: 1
}, 8, ["modelValue", "style", "disabled"])) : createCommentVNode("", true),
__props.element.type === "time" ? (openBlock(), createBlock(_component_el_config_provider, {
key: 6,
locale: unref(zhCn)
}, {
default: withCtx(() => [
createVNode(_component_el_time_picker, {
modelValue: unref(data2),
"onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => isRef(data2) ? data2.value = $event : null),
placeholder: __props.element.options.placeholder,
readonly: __props.element.options.readonly,
editable: __props.element.options.editable,
clearable: __props.element.options.clearable,
format: __props.element.options.format,
disabled: __props.disabled || __props.element.options.disabled,
style: normalizeStyle({ width: __props.element.options.width })
}, null, 8, ["modelValue", "placeholder", "readonly", "editable", "clearable", "format", "disabled", "style"])
]),
_: 1
}, 8, ["locale"])) : createCommentVNode("", true),
__props.element.type === "date" ? (openBlock(), createBlock(_component_el_config_provider, {
key: 7,
locale: unref(zhCn)
}, {
default: withCtx(() => [
createVNode(_component_el_date_picker, {
modelValue: unref(data2),
"onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => isRef(data2) ? data2.value = $event : null),
placeholder: __props.element.options.placeholder,
readonly: __props.element.options.readonly,
editable: __props.element.options.editable,
clearable: __props.element.options.clearable,
format: __props.element.options.format,
disabled: __props.disabled || __props.element.options.disabled,
style: normalizeStyle({ width: __props.element.options.width })
}, null, 8, ["modelValue", "placeholder", "readonly", "editable", "clearable", "format", "disabled", "style"])
]),
_: 1
}, 8, ["locale"])) : createCommentVNode("", true),
__props.element.type === "rate" ? (openBlock(), createBlock(_component_el_rate, {
key: 8,
modelValue: unref(data2),
"onUpdate:modelValue": _cache[8] || (_cache[8] = ($event) => isRef(data2) ? data2.value = $event : null),
max: __props.element.options.max,
"allow-half": __props.element.options.allowHalf,
disabled: __props.disabled || __props.element.options.disabled
}, null, 8, ["modelValue", "max", "allow-half", "disabled"])) : createCommentVNode("", true),
__props.element.type === "select" ? (openBlock(), createElementBlock(Fragment, { key: 9 }, [
unref(userInfo).userNameNeedTranslate == 1 && __props.element.options.remoteFunc.indexOf("getSimpleActiveUserListNew") > -1 ? (openBlock(), createBlock(_sfc_main$9, {
key: 0,
modelValue: unref(data2),
"onUpdate:modelValue": _cache[9] || (_cache[9] = ($event) => isRef(data2) ? data2.value = $event : null),
multiple: __props.element.options.multiple,
placeholder: __props.element.options.placeholder,
clearable: __props.element.options.clearable,
filterable: __props.element.options.filterable,
disabled: __props.disabled || __props.element.options.disabled,
url: __props.element.options.remoteFunc,
size: __props.config.size,
options: [],
style: normalizeStyle({ width: __props.element.options.width }),
onChange: _cache[10] || (_cache[10] = (value) => specializedHandleSelect(value, __props.element))
}, null, 8, ["modelValue", "multiple", "placeholder", "clearable", "filterable", "disabled", "url", "size", "style"])) : (openBlock(), createBlock(_component_el_select, {
key: 1,
modelValue: unref(data2),
"onUpdate:modelValue": _cache[11] || (_cache[11] = ($event) => isRef(data2) ? data2.value = $event : null),
multiple: __props.element.options.multiple,
placeholder: __props.element.options.placeholder,
clearable: __props.element.options.clearable,
filterable: __props.element.options.filterable,
disabled: __props.disabled || __props.element.options.disabled,
style: normalizeStyle({ width: __props.element.options.width }),
onChange: _cache[12] || (_cache[12] = (value) => specializedHandleSelect(value, __props.element))
}, {
default: withCtx(() => [
(openBlock(true), createElementBlock(Fragment, null, renderList(__props.element.options.remote ? __props.element.options.remoteOptions : __props.element.options.options, (item) => {
return openBlock(), createBlock(_component_el_option, {
key: item.value,
value: item.value,
label: __props.element.options.showLabel ? item.label : item.value
}, null, 8, ["value", "label"]);
}), 128))
]),
_: 1
}, 8, ["modelValue", "multiple", "placeholder", "clearable", "filterable", "disabled", "style"]))
], 64)) : createCommentVNode("", true),
__props.element.type === "switch" ? (openBlock(), createBlock(_component_el_switch, {
key: 10,
modelValue: unref(data2),
"onUpdate:modelValue": _cache[13] || (_cache[13] = ($event) => isRef(data2) ? data2.value = $event : null),
"active-text": __props.element.options.activeText,
"inactive-text": __props.element.options.inactiveText,
disabled: __props.disabled || __props.element.options.disabled
}, null, 8, ["modelValue", "active-text", "inactive-text", "disabled"])) : createCommentVNode("", true),
__props.element.type === "slider" ? (openBlock(), createBlock(_component_el_slider, {
key: 11,
modelValue: unref(data2),
"onUpdate:modelValue": _cache[14] || (_cache[14] = ($event) => isRef(data2) ? data2.value = $event : null),
min: __props.element.options.min,
max: __props.element.options.max,
step: __props.element.options.step,
range: __props.element.options.range,
disabled: __props.disabled || __props.element.options.disabled,
style: normalizeStyle({ width: __props.element.options.width })
}, null, 8, ["modelValue", "min", "max", "step", "range", "disabled", "style"])) : createCommentVNode("", true),
__props.element.type == "text" ? (openBlock(), createElementBlock("span", _hoisted_1$6, toDisplayString(__props.element.options.defaultValue), 1)) : createCommentVNode("", true),
__props.element.type === "img-upload" ? (openBlock(), createBlock(_component_el_upload, {
key: 13,
name: __props.element.options.file,
action: __props.element.options.action,
accept: __props.element.options.accept,
"list-type": __props.element.options.listType,
multiple: __props.element.options.multiple,
limit: __props.element.options.limit,
disabled: __props.disabled || __props.element.options.disabled,
"on-success": handleUploadSuccess
}, {
default: withCtx(() => {
var _a2;
return [
__props.element.options.listType === "picture-card" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
((_a2 = __props.element.options.defaultValue) == null ? void 0 : _a2.length) ? (openBlock(), createBlock(_component_el_image, {
key: 0,
style: { "width": "100%", "height": "100%" },
"preview-src-list": [
"/api/sys/common/static/" + __props.element.options.defaultValue
],
src: "/api/sys/common/static/" + __props.element.options.defaultValue
}, null, 8, ["preview-src-list", "src"])) : (openBlock(), createElementBlock("i", _hoisted_2$5))
], 64)) : (openBlock(), createBlock(_component_el_button, { key: 1 }, {
default: withCtx(() => [
_hoisted_3$4,
_hoisted_4$4
]),
_: 1
}))
];
}),
_: 1
}, 8, ["name", "action", "accept", "list-type", "multiple", "limit", "disabled"])) : createCommentVNode("", true),
__props.element.type === "download" ? (openBlock(), createBlock(_component_el_button, {
key: 14,
style: { "margin-top": "-4px" },
type: "text",
onClick: _cache[15] || (_cache[15] = ($event) => download(__props.element.options.defaultValue, __props.element.label))
}, {
default: withCtx(() => [
_hoisted_6$4
]),
_: 1
})) : createCommentVNode("", true),
__props.element.type === "cascader" ? (openBlock(), createBlock(_component_el_cascader, {
key: 15,
modelValue: unref(data2),
"onUpdate:modelValue": _cache[16] || (_cache[16] = ($event) => isRef(data2) ? data2.value = $event : null),
options: __props.element.options.remoteOptions,
placeholder: __props.element.options.placeholder,
filterable: __props.element.options.filterable,
clearable: __props.element.options.clearable,
disabled: __props.disabled || __props.element.options.disabled,
style: normalizeStyle({ width: __props.element.options.width })
}, null, 8, ["modelValue", "options", "placeholder", "filterable", "clearable", "disabled", "style"])) : createCommentVNode("", true)
]),
_: 2
}, [
__props.element.type === "download" ? {
name: "label",
fn: withCtx(({ label }) => [
createElementVNode("a", {
href: `/api/sys/common/static/${__props.element.options.defaultValue}?inline=1`,
style: { "color": "#606266" },
target: "_blank"
}, toDisplayString(label), 9, _hoisted_5$4)
])
} : void 0
]), 1032, ["label", "prop", "style", "label-width"])) : createCommentVNode("", true);
};
}
});
var GenerateFormItem = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__scopeId", "data-v-38ee7c8b"]]);
const _sfc_main$7 = defineComponent({
name: "FormGenerate",
components: {
GenerateFormItem
},
props: {
data: {
type: Object,
default: getWidgetForm()
},
value: {
type: Object
},
disabled: {
type: Boolean,
default: false
},
request: {
type: Function
}
},
setup(props) {
var _a2;
const state = reactive({
generateForm: null,
model: {},
updatedModel: {},
rules: {},
widgetForm: (_a2 = props.data && JSON.parse(JSON.stringify(props.data))) != null ? _a2 : getWidgetForm()
});
const generateModel = (list) => {
for (let index = 0; index < list.length; index++) {
const model = list[index].model;
if (!model)
return;
if (list[index].type === "grid") {
list[index].columns.forEach((col) => generateModel(col.list));
} else {
if (props.value && Object.keys(props.value).includes(model))
state.model[model] = props.value[model];
else
state.model[model] = list[index].options.defaultValue;
state.rules[model] = list[index].options.rules;
}
}
};
const generateOptions = (list) => {
list.forEach(async (item) => {
if (item.type === "grid") {
item.columns.forEach((col) => generateOptions(col.list));
} else {
if (item.options.remote && item.options.remoteFunc) {
if (props.request) {
const { data: data2 } = await props.request({
url: item.options.remoteFunc
});
item.options.remoteOptions = data2.map((i) => ({
label: i[item.options.props.label],
value: i[item.options.props.value],
children: i[item.options.props.children]
}));
return;
}
const token = sessionStorage.getItem("token");
fetch(item.options.remoteFunc, {
headers: {
"Content-type": " application/x-www-form-urlencoded; charset=UTF-8",
"Token": token
}
}).then((resp) => resp.json()).then((json) => {
const res = json.data;
if (res instanceof Array) {
item.options.remoteOptions = res.map((data2) => ({
label: data2[item.options.props.label],
value: data2[item.options.props.value],
children: data2[item.options.props.children]
}));
}
});
}
}
});
};
const updateWidgetForm = (list) => {
const listIndex2 = state.widgetForm.list.findIndex((item) => item.type === "grid");
state.widgetForm.list[listIndex2].columns = list;
state.model = __spreadProps(__spreadValues({}, state.model), { contactsId: "" });
};
watch(() => props.data, (val) => {
var _a3;
state.widgetForm = (_a3 = val && JSON.parse(JSON.stringify(val))) != null ? _a3 : getWidgetForm();
state.model = {};
state.rules = {};
generateModel(state.widgetForm.list);
generateOptions(state.widgetForm.list);
}, { deep: true, immediate: true });
const getData = () => {
return new Promise((resolve, reject) => {
state.generateForm.validate().then((validate) => {
if (validate)
resolve(state.updatedModel);
else
ElMessage.error("\u9A8C\u8BC1\u5931\u8D25");
}).catch((error) => {
reject(error);
});
});
};
const reset = () => {
state.generateForm.resetFields();
};
return __spreadProps(__spreadValues({}, toRefs(state)), {
getData,
reset,
updateWidgetForm
});
}
});
function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
const _component_GenerateFormItem = resolveComponent("GenerateFormItem");
const _component_el_form = ElForm;
return openBlock(), createBlock(_component_el_form, {
ref: "generateForm",
"label-suffix": ":",
model: _ctx.model,
rules: _ctx.rules,
size: _ctx.widgetForm.config.size,
"label-position": _ctx.widgetForm.config.labelPosition,
"label-width": `${_ctx.widgetForm.config.labelWidth}px`,
"hide-required-asterisk": _ctx.widgetForm.config.hideRequiredAsterisk
}, {
default: withCtx(() => [
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.widgetForm.list, (element, index) => {
return openBlock(), createBlock(_component_GenerateFormItem, {
key: element.key,
model: _ctx.model,
"updated-model": _ctx.updatedModel,
element: _ctx.widgetForm.list[index],
config: _ctx.data.config,
disabled: _ctx.disabled,
request: _ctx.request,
widgetFormData: _ctx.widgetForm.list,
onUpdateWidgetForm: _ctx.updateWidgetForm
}, null, 8, ["model", "updated-model", "element", "config", "disabled", "request", "widgetFormData", "onUpdateWidgetForm"]);
}), 128))
]),
_: 1
}, 8, ["model", "rules", "size", "label-position", "label-width", "hide-required-asterisk"]);
}
var GenerateForm = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["render", _sfc_render$1]]);
const _hoisted_1$5 = { class: "px-3 py-2 text-sm text-gray-700" };
const _hoisted_2$4 = {
key: 0,
class: "bg-gray-100 text-xs text-gray-700 hover:text-blue-500 leading-8 cursor-move -outline-offset-1 hover:outline-dashed outline-1 outline-blue-500 list-none flex items-center"
};
let listIndex = 1;
function setListIndex(list) {
if (list.list.length > 0) {
const array4 = list.list.map((item) => item.model);
const plateNumbers = array4.filter((item) => item.includes("plate")).map((item) => {
const match = item.match(/plate(\d+)/);
return match ? match[1] : null;
});
listIndex = findMissingPositive(plateNumbers);
}
}
function cloneWidget(params) {
const key = Math.random().toString(36).substring(2, 9);
params = cloneDeep(__spreadProps(__spreadValues({}, params), {
key,
model: `plate${listIndex}`
}));
if (params.type === "grid") {
params.columns.forEach((i) => {
i.list = i.list.map(cloneWidget);
});
}
return params;
}
function findMissingPositive(nums) {
let numbers = nums.map(Number);
numbers.sort((a2, b2) => a2 - b2);
let missing = 1;
for (let i = 0; i < numbers.length; i++) {
if (numbers[i] === missing) {
missing++;
}
}
return missing;
}
const _sfc_main$6 = /* @__PURE__ */ defineComponent({
props: {
fields: null,
title: null,
list: null,
allList: null
},
setup(__props) {
const props = __props;
let moveFlag = ref(false);
const moveStart = () => {
const array4 = props.allList.list.map((item) => item.model);
const plateNumbers = array4.filter((item) => item.includes("plate")).map((item) => {
const match = item.match(/plate(\d+)/);
return match ? match[1] : null;
});
const flag = plateNumbers.length < 5;
if (!flag && !moveFlag.value) {
moveFlag.value = true;
ElMessage.warning("\u6700\u591A\u6DFB\u52A0\u4E94\u4E2A");
return false;
}
return flag;
};
const stopMove = () => {
moveFlag.value = false;
};
return (_ctx, _cache) => {
return openBlock(), createElementBlock(Fragment, null, [
createElementVNode("div", _hoisted_1$5, toDisplayString(__props.title), 1),
createVNode(unref(Draggable), {
tag: "ul",
class: "m-0 p-3 pt-0 grid grid-cols-2 gap-1",
"item-key": "type",
group: { name: "form-design", pull: "clone", put: false },
clone: cloneWidget,
sort: false,
list: __props.list,
allList: __props.allList,
move: moveStart,
choose: setListIndex(__props.allList),
onAdd: _cache[0] || (_cache[0] = ($event) => stopMove())
}, {
item: withCtx(({ element }) => [
__props.fields.includes(element.type) ? (openBlock(), createElementBlock("li", _hoisted_2$4, [
createElementVNode("i", {
class: normalizeClass(["custom:" + element.type, "ml-2 mr-1"])
}, null, 2),
createElementVNode("span", null, toDisplayString(element.label), 1)
])) : createCommentVNode("", true)
]),
_: 1
}, 8, ["list", "allList", "choose"])
], 64);
};
}
});
const _hoisted_1$4 = { key: 12 };
const _hoisted_2$3 = {
key: 1,
class: "custom:insert"
};
const _hoisted_3$3 = /* @__PURE__ */ createElementVNode("i", {
"icon-class": "custom:img-upload",
style: { "margin-right": "10px" }
}, null, -1);
const _hoisted_4$3 = /* @__PURE__ */ createTextVNode(" \u70B9\u51FB\u4E0A\u4F20 ");
const _hoisted_5$3 = /* @__PURE__ */ createTextVNode(" \u4E0B\u8F7D ");
const _hoisted_6$3 = /* @__PURE__ */ createElementVNode("i", {
class: "eva:move-outline",
"text-lg": ""
}, null, -1);
const _hoisted_7$2 = [
_hoisted_6$3
];
const _sfc_main$5 = /* @__PURE__ */ defineComponent({
props: {
list: null,
element: null,
index: null,
selectWidget: null,
configurationItems: null
},
emits: ["itemClick", "delete", "update:selectWidget"],
setup(__props) {
const props = createPropsRestProxy(__props, ["element", "index", "list"]);
let selectWidget = useVModel(props, "selectWidget");
const { userInfo = {} } = JSON.parse(sessionStorage.getItem("storeInfo") || "{}");
const handleDeleteClick = () => {
__props.list.splice(__props.index, 1);
selectWidget.value = __props.list[__props.list.length === __props.index ? __props.index - 1 : __props.index];
};
return (_ctx, _cache) => {
var _a2, _b2;
const _component_WidgetFormItem = resolveComponent("WidgetFormItem", true);
const _component_el_table_column = ElTableColumn;
const _component_el_table = ElTable;
const _component_el_divider = ElDivider;
const _component_el_input = ElInput;
const _component_el_input_number = ElInputNumber;
const _component_el_radio = ElRadio;
const _component_el_radio_group = ElRadioGroup;
const _component_el_checkbox = ElCheckbox;
const _component_el_checkbox_group = ElCheckboxGroup$1;
const _component_el_time_picker = ElTimePicker;
const _component_el_date_picker = ElDatePicker;
const _component_el_rate = ElRate;
const _component_el_option = ElOption;
const _component_el_select = ElSelect;
const _component_el_switch = ElSwitch;
const _component_el_slider = ElSlider;
const _component_el_image = ElImage;
const _component_el_button = ElButton;
const _component_el_upload = ElUpload;
const _component_el_cascader = ElCascader;
const _component_el_form_item = ElFormItem;
return openBlock(), createElementBlock("div", {
class: normalizeClass(["widget-view", { active: ((_a2 = selectWidget.value) == null ? void 0 : _a2.key) === __props.element.key, col: __props.element.type === "grid" }]),
style: normalizeStyle(__props.element.type === "grid" ? `gap: ${__props.element.options.gutter}px; align-items: ${__props.element.options.align};` : ""),
onClick: _cache[3] || (_cache[3] = withModifiers(($event) => selectWidget.value = __props.element, ["stop"]))
}, [
__props.element.type === "grid" ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(__props.element.columns, (col, key) => {
return openBlock(), createBlock(unref(Draggable), {
key,
class: "bg-white min-h-12 border border-dashed border-gray-300",
style: normalizeStyle(`grid-column: span ${col.span}`),
"item-key": "key",
handle: "[cursor-move]",
animation: 200,
group: "form-design",
"no-transition-on-drag": true,
list: col.list,
onAdd: ($event) => selectWidget.value = col.list[$event.newIndex]
}, {
item: withCtx(({ element: colElement, index: colIndex }) => [
createVNode(_component_WidgetFormItem, {
selectWidget: selectWidget.value,
"onUpdate:selectWidget": _cache[0] || (_cache[0] = ($event) => selectWidget.value = $event),
element: colElement,
list: col.list,
index: colIndex,
configurationItems: __props.configurationItems
}, null, 8, ["selectWidget", "element", "list", "index", "configurationItems"])
]),
_: 2
}, 1032, ["style", "list", "onAdd"]);
}), 128)) : __props.element.type === "table" ? (openBlock(), createBlock(_component_el_table, {
key: 1,
class: "w-0 flex-1",
border: "",
data: __props.element.options.defaultValue
}, {
default: withCtx(() => [
(openBlock(true), createElementBlock(Fragment, null, renderList(__props.element.columns, (i) => {
return openBlock(), createBlock(_component_el_table_column, mergeProps({
key: i.prop,
"header-align": __props.element.options.align,
align: __props.element.options.align
}, i), null, 16, ["header-align", "align"]);
}), 128))
]),
_: 1
}, 8, ["data"])) : __props.element.type === "divider" ? (openBlock(), createBlock(_component_el_divider, {
key: 2,
class: "pb-0",
data: __props.element.options.defaultValue,
"content-position": "left"
}, {
default: withCtx(() => [
createTextVNode(toDisplayString(__props.element.label), 1)
]),
_: 1
}, 8, ["data"])) : __props.element ? (openBlock(), createBlock(_component_el_form_item, {
key: __props.element.key,
label: __props.element.label,
"label-width": __props.element.labelWidth,
rules: __props.element.options.rules
}, {
default: withCtx(() => [
__props.element.type === "input" ? (openBlock(), createBlock(_component_el_input, {
key: 0,
readonly: "",
"model-value": __props.element.options.defaultValue,
style: normalizeStyle({ width: __props.element.options.width }),
placeholder: __props.element.options.placeholder,
maxlength: parseInt(__props.element.options.maxlength),
clearable: __props.element.options.clearable,
disabled: __props.element.options.disabled
}, createSlots({ _: 2 }, [
__props.element.options.prefix ? {
name: "prefix",
fn: withCtx(() => [
createTextVNode(toDisplayString(__props.element.options.prefix), 1)
])
} : void 0,
__props.element.options.suffix ? {
name: "suffix",
fn: withCtx(() => [
createTextVNode(toDisplayString(__props.element.options.suffix), 1)
])
} : void 0,
__props.element.options.prepend ? {
name: "prepend",
fn: withCtx(() => [
createTextVNode(toDisplayString(__props.element.options.prepend), 1)
])
} : void 0,
__props.element.options.append ? {
name: "append",
fn: withCtx(() => [
createTextVNode(toDisplayString(__props.element.options.append), 1)
])
} : void 0
]), 1032, ["model-value", "style", "placeholder", "maxlength", "clearable", "disabled"])) : createCommentVNode("", true),
__props.element.type === "password" ? (openBlock(), createBlock(_component_el_input, {
key: 1,
readonly: "",
"model-value": __props.element.options.defaultValue,
style: normalizeStyle({ width: __props.element.options.width }),
placeholder: __props.element.options.placeholder,
maxlength: parseInt(__props.element.options.maxlength),
clearable: __props.element.options.clearable,
disabled: __props.element.options.disabled,
"show-password": __props.element.options.showPassword
}, createSlots({ _: 2 }, [
__props.element.options.prefix ? {
name: "prefix",
fn: withCtx(() => [
createTextVNode(toDisplayString(__props.element.options.prefix), 1)
])
} : void 0,
__props.element.options.suffix ? {
name: "suffix",
fn: withCtx(() => [
createTextVNode(toDisplayString(__props.element.options.suffix), 1)
])
} : void 0,
__props.element.options.prepend ? {
name: "prepend",
fn: withCtx(() => [
createTextVNode(toDisplayString(__props.element.options.prepend), 1)
])
} : void 0,
__props.element.options.append ? {
name: "append",
fn: withCtx(() => [
createTextVNode(toDisplayString(__props.element.options.append), 1)
])
} : void 0
]), 1032, ["model-value", "style", "placeholder", "maxlength", "clearable", "disabled", "show-password"])) : createCommentVNode("", true),
__props.element.type === "textarea" ? (openBlock(), createBlock(_component_el_input, {
key: 2,
type: "textarea",
resize: "none",
readonly: "",
rows: __props.element.options.rows,
"model-value": __props.element.options.defaultValue,
style: normalizeStyle({ width: __props.element.options.width }),
placeholder: __props.element.options.placeholder,
maxlength: parseInt(__props.element.options.maxlength),
"show-word-limit": __props.element.options.showWordLimit,
autosize: __props.element.options.autosize,
clearable: __props.element.options.clearable,
disabled: __props.element.options.disabled
}, null, 8, ["rows", "model-value", "style", "placeholder", "maxlength", "show-word-limit", "autosize", "clearable", "disabled"])) : createCommentVNode("", true),
__props.element.type === "number" ? (openBlock(), createBlock(_component_el_input_number, {
key: 3,
"model-value": __props.element.options.defaultValue,
style: normalizeStyle({ width: __props.element.options.width }),
max: __props.element.options.max,
min: __props.element.options.min,
disabled: __props.element.options.disabled,
"controls-position": "right"
}, null, 8, ["model-value", "style", "max", "min", "disabled"])) : createCommentVNode("", true),
__props.element.type === "radio" ? (openBlock(), createBlock(_component_el_radio_group, {
key: 4,
"model-value": __props.element.options.defaultValue,
style: normalizeStyle({ width: __props.element.options.width }),
disabled: __props.element.options.disabled
}, {
default: withCtx(() => [
(openBlock(true), createElementBlock(Fragment, null, renderList(__props.element.options.options, (item) => {
return openBlock(), createBlock(_component_el_radio, {
key: item.value,
label: item.value,
style: normalizeStyle({
display: __props.element.options.inline ? "inline-block" : "block"
})
}, {
default: withCtx(() => [
createTextVNode(toDisplayString(__props.element.options.showLabel ? item.label : item.value), 1)
]),
_: 2
}, 1032, ["label", "style"]);
}), 128))
]),
_: 1
}, 8, ["model-value", "style", "disabled"])) : createCommentVNode("", true),
__props.element.type === "checkbox" ? (openBlock(), createBlock(_component_el_checkbox_group, {
key: 5,
"model-value": __props.element.options.defaultValue,
style: normalizeStyle({ width: __props.element.options.width }),
disabled: __props.element.options.disabled
}, {
default: withCtx(() => [
(openBlock(true), createElementBlock(Fragment, null, renderList(__props.element.options.options, (item) => {
return openBlock(), createBlock(_component_el_checkbox, {
key: item.value,
label: item.value,
style: normalizeStyle({
display: __props.element.options.inline ? "inline-block" : "block"
})
}, {
default: withCtx(() => [
createTextVNode(toDisplayString(__props.element.options.showLabel ? item.label : item.value), 1)
]),
_: 2
}, 1032, ["label", "style"]);
}), 128))
]),
_: 1
}, 8, ["model-value", "style", "disabled"])) : createCommentVNode("", true),
__props.element.type === "time" ? (openBlock(), createBlock(_component_el_time_picker, {
key: 6,
"model-value": __props.element.options.defaultValue,
placeholder: __props.element.options.placeholder,
readonly: __props.element.options.readonly,
editable: __props.element.options.editable,
clearable: __props.element.options.clearable,
format: __props.element.options.format,
disabled: __props.element.options.disabled,
style: normalizeStyle({ width: __props.element.options.width })
}, null, 8, ["model-value", "placeholder", "readonly", "editable", "clearable", "format", "disabled", "style"])) : createCommentVNode("", true),
__props.element.type === "date" ? (openBlock(), createBlock(_component_el_date_picker, {
key: 7,
"model-value": __props.element.options.defaultValue,
placeholder: __props.element.options.placeholder,
readonly: __props.element.options.readonly,
editable: __props.element.options.editable,
clearable: __props.element.options.clearable,
format: __props.element.options.format,
disabled: __props.element.options.disabled,
style: normalizeStyle({ width: __props.element.options.width })
}, null, 8, ["model-value", "placeholder", "readonly", "editable", "clearable", "format", "disabled", "style"])) : createCommentVNode("", true),
__props.element.type === "rate" ? (openBlock(), createBlock(_component_el_rate, {
key: 8,
"model-value": __props.element.options.defaultValue,
max: __props.element.options.max,
"allow-half": __props.element.options.allowHalf,
disabled: __props.element.options.disabled
}, null, 8, ["model-value", "max", "allow-half", "disabled"])) : createCommentVNode("", true),
__props.element.type === "select" ? (openBlock(), createElementBlock(Fragment, { key: 9 }, [
unref(userInfo).userNameNeedTranslate == 1 && __props.element.options.remoteFunc.indexOf("getSimpleActiveUserListNew") > -1 ? (openBlock(), createBlock(_sfc_main$9, {
key: 0,
"model-value": __props.element.options.defaultValue,
multiple: __props.element.options.multiple,
placeholder: __props.element.options.placeholder,
clearable: __props.element.options.clearable,
filterable: __props.element.options.filterable,
disabled: __props.element.options.disabled,
url: __props.element.options.remoteFunc,
size: __props.configurationItems.size,
options: [],
style: normalizeStyle({ width: __props.element.options.width })
}, null, 8, ["model-value", "multiple", "placeholder", "clearable", "filterable", "disabled", "url", "size", "style"])) : (openBlock(), createBlock(_component_el_select, {
key: 1,
"model-value": __props.element.options.defaultValue,
multiple: __props.element.options.multiple,
placeholder: __props.element.options.placeholder,
clearable: __props.element.options.clearable,
filterable: __props.element.options.filterable,
disabled: __props.element.options.disabled,
style: normalizeStyle({ width: __props.element.options.width })
}, {
default: withCtx(() => [
(openBlock(true), createElementBlock(Fragment, null, renderList(__props.element.options.options, (item) => {
return openBlock(), createBlock(_component_el_option, {
key: item.value,
value: item.value,
label: __props.element.options.showLabel ? item.label : item.value
}, null, 8, ["value", "label"]);
}), 128))
]),
_: 1
}, 8, ["model-value", "multiple", "placeholder", "clearable", "filterable", "disabled", "style"]))
], 64)) : createCommentVNode("", true),
__props.element.type === "switch" ? (openBlock(), createBlock(_component_el_switch, {
key: 10,
"model-value": __props.element.options.defaultValue,
"active-text": __props.element.options.activeText,
"inactive-text": __props.element.options.inactiveText,
disabled: __props.element.options.disabled
}, null, 8, ["model-value", "active-text", "inactive-text", "disabled"])) : createCommentVNode("", true),
__props.element.type === "slider" ? (openBlock(), createBlock(_component_el_slider, {
key: 11,
"model-value": __props.element.options.defaultValue,
min: __props.element.options.min,
max: __props.element.options.max,
step: __props.element.options.step,
range: __props.element.options.range,
disabled: __props.element.options.disabled,
style: normalizeStyle({ width: __props.element.options.width })
}, null, 8, ["model-value", "min", "max", "step", "range", "disabled", "style"])) : createCommentVNode("", true),
__props.element.type == "text" ? (openBlock(), createElementBlock("span", _hoisted_1$4, toDisplayString(__props.element.options.defaultValue), 1)) : createCommentVNode("", true),
__props.element.type === "img-upload" ? (openBlock(), createBlock(_component_el_upload, {
key: 13,
name: __props.element.options.file,
action: __props.element.options.action,
accept: __props.element.options.accept,
"list-type": __props.element.options.listType,
multiple: __props.element.options.multiple,
limit: __props.element.options.limit,
disabled: __props.element.options.disabled
}, {
default: withCtx(() => {
var _a3;
return [
__props.element.options.listType === "picture-card" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
((_a3 = __props.element.options.defaultValue) == null ? void 0 : _a3.length) ? (openBlock(), createBlock(_component_el_image, {
key: 0,
style: { "width": "100%", "height": "100%" },
"preview-src-list": [
"/api/sys/common/static/" + __props.element.options.defaultValue
],
src: "/api/sys/common/static/" + __props.element.options.defaultValue
}, null, 8, ["preview-src-list", "src"])) : (openBlock(), createElementBlock("i", _hoisted_2$3))
], 64)) : (openBlock(), createBlock(_component_el_button, { key: 1 }, {
default: withCtx(() => [
_hoisted_3$3,
_hoisted_4$3
]),
_: 1
}))
];
}),
_: 1
}, 8, ["name", "action", "accept", "list-type", "multiple", "limit", "disabled"])) : createCommentVNode("", true),
__props.element.type === "download" ? (openBlock(), createBlock(_component_el_button, {
key: 14,
type: "text",
style: { "margin-top": "-4px" }
}, {
default: withCtx(() => [
_hoisted_5$3
]),
_: 1
})) : createCommentVNode("", true),
__props.element.type === "cascader" ? (openBlock(), createBlock(_component_el_cascader, {
key: 15,
"model-value": __props.element.options.defaultValue,
options: __props.element.options.remoteOptions,
placeholder: __props.element.options.placeholder,
filterable: __props.element.options.filterable,
clearable: __props.element.options.clearable,
disabled: __props.element.options.disabled,
style: normalizeStyle({ width: __props.element.options.width })
}, null, 8, ["model-value", "options", "placeholder", "filterable", "clearable", "disabled", "style"])) : createCommentVNode("", true)
]),
_: 1
}, 8, ["label", "label-width", "rules"])) : createCommentVNode("", true),
((_b2 = selectWidget.value) == null ? void 0 : _b2.key) === __props.element.key ? (openBlock(), createElementBlock(Fragment, { key: 4 }, [
createElementVNode("div", {
absolute: "",
"z-10": "",
"left-0": "",
top: "-.5",
"bg-blue-500": "",
"text-white": "",
p: ".5 l-0 t-0",
"cursor-move": "",
class: normalizeClass({ "bg-yellow-500": __props.element.type === "grid" })
}, _hoisted_7$2, 2),
createElementVNode("div", {
absolute: "",
"z-10": "",
"right-0": "",
bottom: "-0.5",
"bg-blue-500": "",
flex: "",
"gap-1": "",
p: "1 r-.5",
"text-white": "",
"cursor-pointer": "",
class: normalizeClass({ "bg-yellow-500": __props.element.type === "grid" })
}, [
createCommentVNode("", true),
!__props.element.allDisable ? (openBlock(), createElementBlock("i", {
key: 1,
class: "fa6-regular:trash-can",
onClick: _cache[2] || (_cache[2] = withModifiers(($event) => handleDeleteClick(), ["stop"]))
})) : createCommentVNode("", true)
], 2)
], 64)) : createCommentVNode("", true)
], 6);
};
}
});
var WidgetForm_vue_vue_type_style_index_0_lang = "";
const _hoisted_1$3 = {
key: 0,
text: "gray-400 lg",
absolute: "",
"top-50": "",
left: "1/2",
"translate-x": "-1/2"
};
const _sfc_main$4 = /* @__PURE__ */ defineComponent({
props: {
list: null,
config: null,
selectWidget: null
},
emits: ["update:selectWidget"],
setup(__props) {
const props = __props;
const selectWidget = useVModel(props, "selectWidget");
return (_ctx, _cache) => {
const _component_el_form = ElForm;
return openBlock(), createBlock(_component_el_form, mergeProps({
"label-suffix": ":",
"bg-gray-50": "",
relative: "",
flex: "~ 1"
}, __props.config, { class: "layoutForm" }), {
default: withCtx(() => {
var _a2;
return [
!((_a2 = __props.list) == null ? void 0 : _a2.length) ? (openBlock(), createElementBlock("div", _hoisted_1$3, " \u4ECE\u5DE6\u4FA7\u62D6\u62FD\u6765\u6DFB\u52A0\u5B57\u6BB5 ")) : createCommentVNode("", true),
createVNode(unref(Draggable), {
class: "flex-1 m-2 bg-white shadow p-1",
"item-key": "key",
handle: "[cursor-move]",
animation: 200,
group: "form-design",
list: __props.list,
onAdd: _cache[1] || (_cache[1] = ($event) => selectWidget.value = __props.list[$event.newIndex])
}, {
item: withCtx(({ element, index }) => [
createVNode(_sfc_main$5, {
selectWidget: unref(selectWidget),
"onUpdate:selectWidget": _cache[0] || (_cache[0] = ($event) => isRef(selectWidget) ? selectWidget.value = $event : null),
element,
index,
list: __props.list,
configurationItems: __props.config
}, null, 8, ["selectWidget", "element", "index", "list", "configurationItems"])
]),
_: 1
}, 8, ["list"])
];
}),
_: 1
}, 16);
};
}
});
var elSpace = "";
var elRadioButton = "";
var WidgetConfig_vue_vue_type_style_index_0_lang = "";
const _sfc_main$3 = defineComponent({
name: "ElWidgetConfig",
components: {
Draggable
},
props: {
select: {
type: Object
}
},
emits: ["update:select"],
setup(props, context) {
const data2 = ref(props.select);
watch(() => props.select, (val) => data2.value = val);
watch(data2, (val) => context.emit("update:select", val), { deep: true });
const hasKey = (key) => Object.keys(data2.value.options).includes(key);
const handleInsertColumn = () => {
data2.value.columns.push({
span: 0,
list: []
});
};
const handleInsertOption = () => {
const index = data2.value.options.options.length + 1;
data2.value.options.options.push({
label: `Option ${index}`,
value: `Option ${index}`
});
};
const handleOptionsRemove = (index) => {
if (data2.value.type === "grid")
data2.value.columns.splice(index, 1);
else
data2.value.options.options.splice(index, 1);
};
const handleSliderModeChange = (checked) => {
checked ? data2.value.options.defaultValue = [10, 90] : data2.value.options.defaultValue = 0;
};
const handleSelectModeChange = (val) => {
if (data2.value.type === "img-upload")
return;
if (val) {
if (data2.value.options.defaultValue) {
if (!(data2.value.options.defaultValue instanceof Array))
data2.value.options.defaultValue = [data2.value.options.defaultValue];
} else {
data2.value.options.defaultValue = [];
}
} else {
data2.value.options.defaultValue.length ? data2.value.options.defaultValue = data2.value.options.defaultValue[0] : data2.value.options.defaultValue = null;
}
};
return {
data: data2,
hasKey,
handleInsertColumn,
handleInsertOption,
handleOptionsRemove,
handleSliderModeChange,
handleSelectModeChange
};
}
});
const _hoisted_1$2 = /* @__PURE__ */ createTextVNode(" \u884C\u5185 ");
const _hoisted_2$2 = /* @__PURE__ */ createTextVNode(" \u5757\u7EA7 ");
const _hoisted_3$2 = /* @__PURE__ */ createTextVNode(" \u9759\u6001\u6570\u636E ");
const _hoisted_4$2 = /* @__PURE__ */ createTextVNode(" \u8FDC\u7AEF\u6570\u636E ");
const _hoisted_5$2 = /* @__PURE__ */ createTextVNode(" \u8FDC\u7AEF\u65B9\u6CD5 ");
const _hoisted_6$2 = /* @__PURE__ */ createTextVNode(" \u6807\u7B7E ");
const _hoisted_7$1 = /* @__PURE__ */ createTextVNode(" \u503C ");
const _hoisted_8$1 = { class: "flex items-center" };
const _hoisted_9$1 = /* @__PURE__ */ createElementVNode("i", {
style: { "margin": "0 5px", "cursor": "move" },
class: "drag-item custom:item"
}, null, -1);
const _hoisted_10$1 = /* @__PURE__ */ createElementVNode("i", { class: "fa6-regular:trash-can" }, null, -1);
const _hoisted_11$1 = { class: "flex items-center justify-center gap-2 mb-2" };
const _hoisted_12$1 = /* @__PURE__ */ createTextVNode(/* @__PURE__ */ toDisplayString(""));
const _hoisted_13$1 = /* @__PURE__ */ createElementVNode("i", { class: "cursor-move text-sm custom:item" }, null, -1);
const _hoisted_14$1 = /* @__PURE__ */ createElementVNode("i", { class: "fa6-regular:trash-can" }, null, -1);
const _hoisted_15 = { style: { "margin-top": "5px" } };
const _hoisted_16 = /* @__PURE__ */ createTextVNode(" \u6DFB\u52A0\u9009\u9879 ");
const _hoisted_17 = /* @__PURE__ */ createTextVNode(" text ");
const _hoisted_18 = /* @__PURE__ */ createTextVNode(" picture ");
const _hoisted_19 = /* @__PURE__ */ createTextVNode(" picture-card ");
const _hoisted_20 = /* @__PURE__ */ createTextVNode(" POST ");
const _hoisted_21 = /* @__PURE__ */ createTextVNode(" PUT ");
const _hoisted_22 = /* @__PURE__ */ createTextVNode(" GET ");
const _hoisted_23 = /* @__PURE__ */ createTextVNode(" DELETE ");
const _hoisted_24 = /* @__PURE__ */ createTextVNode(" \u8FDC\u7AEF\u65B9\u6CD5 ");
const _hoisted_25 = /* @__PURE__ */ createTextVNode(" \u6807\u7B7E ");
const _hoisted_26 = /* @__PURE__ */ createTextVNode(" \u503C ");
const _hoisted_27 = /* @__PURE__ */ createTextVNode(" \u5B50\u9009\u9879 ");
const _hoisted_28 = { style: { "display": "flex", "gap": "5px", "margin-bottom": "5px" } };
const _hoisted_29 = /* @__PURE__ */ createElementVNode("i", { class: "drag-item custom:item" }, null, -1);
const _hoisted_30 = /* @__PURE__ */ createElementVNode("i", { class: "fa6-regular:trash-can" }, null, -1);
const _hoisted_31 = /* @__PURE__ */ createTextVNode(" \u6DFB\u52A0\u5217 ");
const _hoisted_32 = /* @__PURE__ */ createTextVNode(" \u5C45\u5DE6\u5BF9\u9F50 ");
const _hoisted_33 = /* @__PURE__ */ createTextVNode(" \u5C45\u4E2D\u5BF9\u9F50 ");
const _hoisted_34 = /* @__PURE__ */ createTextVNode(" \u5DE8\u53F3\u5BF9\u9F50 ");
const _hoisted_35 = { style: { "margin-bottom": "5px" } };
const _hoisted_36 = /* @__PURE__ */ createElementVNode("i", { class: "drag-item custom:item" }, null, -1);
const _hoisted_37 = /* @__PURE__ */ createElementVNode("i", { class: "fa6-regular:trash-can" }, null, -1);
const _hoisted_38 = /* @__PURE__ */ createTextVNode(" \u6DFB\u52A0\u5217 ");
const _hoisted_39 = /* @__PURE__ */ createTextVNode(" \u9876\u90E8\u5BF9\u9F50 ");
const _hoisted_40 = /* @__PURE__ */ createTextVNode(" \u5C45\u4E2D\u5BF9\u9F50 ");
const _hoisted_41 = /* @__PURE__ */ createTextVNode(" \u5E95\u90E8\u5BF9\u9F50 ");
const _hoisted_42 = /* @__PURE__ */ createTextVNode(" \u5FC5\u586B ");
const _hoisted_43 = /* @__PURE__ */ createTextVNode(" \u53EA\u8BFB ");
const _hoisted_44 = /* @__PURE__ */ createTextVNode(" \u7981\u7528 ");
const _hoisted_45 = /* @__PURE__ */ createTextVNode(" \u6E05\u9664 ");
const _hoisted_46 = /* @__PURE__ */ createElementVNode("h4", { class: "pb-2 text-gray-700 border-0 border-b-1 border-gray-200" }, " \u9A8C\u8BC1\u89C4\u5219 ", -1);
const _hoisted_47 = /* @__PURE__ */ createTextVNode(" Blur ");
const _hoisted_48 = /* @__PURE__ */ createTextVNode(" Change ");
const _hoisted_49 = /* @__PURE__ */ createTextVNode(" \u5B57\u7B26\u4E32 ");
const _hoisted_50 = /* @__PURE__ */ createTextVNode(" \u6570\u5B57 ");
const _hoisted_51 = /* @__PURE__ */ createTextVNode(" \u5E03\u5C14\u503C ");
const _hoisted_52 = /* @__PURE__ */ createTextVNode(" \u65B9\u6CD5 ");
const _hoisted_53 = /* @__PURE__ */ createTextVNode(" \u6B63\u5219\u8868\u8FBE\u5F0F ");
const _hoisted_54 = /* @__PURE__ */ createTextVNode(" \u6574\u6570 ");
const _hoisted_55 = /* @__PURE__ */ createTextVNode(" \u6D6E\u70B9\u6570 ");
const _hoisted_56 = /* @__PURE__ */ createTextVNode(" \u6570\u7EC4 ");
const _hoisted_57 = /* @__PURE__ */ createTextVNode(" \u5BF9\u8C61 ");
const _hoisted_58 = /* @__PURE__ */ createTextVNode(" \u679A\u4E3E ");
const _hoisted_59 = /* @__PURE__ */ createTextVNode(" \u65E5\u671F ");
const _hoisted_60 = /* @__PURE__ */ createTextVNode(" URL\u5730\u5740 ");
const _hoisted_61 = /* @__PURE__ */ createTextVNode(" \u5341\u516D\u8FDB\u5236 ");
const _hoisted_62 = /* @__PURE__ */ createTextVNode(" \u90AE\u7BB1\u5730\u5740 ");
const _hoisted_63 = /* @__PURE__ */ createTextVNode(" \u4EFB\u610F\u7C7B\u578B ");
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
const _component_el_input = ElInput;
const _component_el_form_item = ElFormItem;
const _component_el_rate = ElRate;
const _component_el_switch = ElSwitch;
const _component_el_input_number = ElInputNumber;
const _component_el_radio_button = ElRadioButton;
const _component_el_radio_group = ElRadioGroup;
const _component_el_space = ElSpace;
const _component_el_radio = ElRadio;
const _component_el_button = ElButton;
const _component_Draggable = resolveComponent("Draggable");
const _component_el_checkbox = ElCheckbox;
const _component_el_checkbox_group = ElCheckboxGroup$1;
const _component_el_time_picker = ElTimePicker;
const _component_el_date_picker = ElDatePicker;
const _component_el_option = ElOption;
const _component_el_select = ElSelect;
const _component_el_form = ElForm;
return _ctx.data ? (openBlock(), createBlock(_component_el_form, {
key: _ctx.data.key,
"label-position": "top",
"p-2": "",
"flex-1": "",
"overflow-auto": ""
}, {
default: withCtx(() => [
!["grid"].includes(_ctx.data.type) ? (openBlock(), createBlock(_component_el_form_item, {
key: 0,
label: "\u5B57\u6BB5\u6807\u8BC6"
}, {
default: withCtx(() => [
createVNode(_component_el_input, {
modelValue: _ctx.data.model,
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => _ctx.data.model = $event),
disabled: true
}, null, 8, ["modelValue"])
]),
_: 1
})) : createCommentVNode("", true),
!["grid", "table"].includes(_ctx.data.type) ? (openBlock(), createBlock(_component_el_form_item, {
key: 1,
label: "\u6807\u9898"
}, {
default: withCtx(() => [
createVNode(_component_el_input, {
modelValue: _ctx.data.label,
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => _ctx.data.label = $event),
disabled: _ctx.data.allDisable
}, null, 8, ["modelValue", "disabled"])
]),
_: 1
})) : createCommentVNode("", true),
_ctx.hasKey("width") ? (openBlock(), createBlock(_component_el_form_item, {
key: 2,
label: "\u5BBD\u5EA6"
}, {
default: withCtx(() => [
createVNode(_component_el_input, {
modelValue: _ctx.data.options.width,
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => _ctx.data.options.width = $event)
}, null, 8, ["modelValue"])
]),
_: 1
})) : createCommentVNode("", true),
_ctx.hasKey("placeholder") ? (openBlock(), createBlock(_component_el_form_item, {
key: 3,
label: "\u5360\u4F4D\u5185\u5BB9"
}, {
default: withCtx(() => [
createVNode(_component_el_input, {
modelValue: _ctx.data.options.placeholder,
"onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => _ctx.data.options.placeholder = $event),
disabled: _ctx.data.allDisable
}, null, 8, ["modelValue", "disabled"])
]),
_: 1
})) : createCommentVNode("", true),
_ctx.hasKey("defaultValue") && (_ctx.data.type === "input" || _ctx.data.type === "password" || _ctx.data.type === "textarea" || _ctx.data.type === "text" || _ctx.data.type === "rate" || _ctx.data.type === "switch" || _ctx.data.type === "slider") ? (openBlock(), createBlock(_component_el_form_item, {
key: 4,
label: "\u9ED8\u8BA4\u5185\u5BB9"
}, {
default: withCtx(() => [
_ctx.data.type === "input" || _ctx.data.type === "password" || _ctx.data.type === "text" ? (openBlock(), createBlock(_component_el_input, {
key: 0,
modelValue: _ctx.data.options.defaultValue,
"onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => _ctx.data.options.defaultValue = $event)
}, null, 8, ["modelValue"])) : createCommentVNode("", true),
_ctx.data.type === "textarea" ? (openBlock(), createBlock(_component_el_input, {
key: 1,
modelValue: _ctx.data.options.defaultValue,
"onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => _ctx.data.options.defaultValue = $event),
type: "textarea"
}, null, 8, ["modelValue"])) : createCommentVNode("", true),
_ctx.data.type === "rate" ? (openBlock(), createBlock(_component_el_rate, {
key: 2,
modelValue: _ctx.data.options.defaultValue,
"onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => _ctx.data.options.defaultValue = $event),
max: _ctx.data.options.max,
"allow-half": _ctx.data.options.allowHalf
}, null, 8, ["modelValue", "max", "allow-half"])) : createCommentVNode("", true),
_ctx.data.type === "switch" ? (openBlock(), createBlock(_component_el_switch, {
key: 3,
modelValue: _ctx.data.options.defaultValue,
"onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => _ctx.data.options.defaultValue = $event)
}, null, 8, ["modelValue"])) : createCommentVNode("", true),
_ctx.data.type === "slider" ? (openBlock(), createElementBlock(Fragment, { key: 4 }, [
!_ctx.data.options.range ? (openBlock(), createBlock(_component_el_input_number, {
key: 0,
modelValue: _ctx.data.options.defaultValue,
"onUpdate:modelValue": _cache[8] || (_cache[8] = ($event) => _ctx.data.options.defaultValue = $event),
modelModifiers: { number: true }
}, null, 8, ["modelValue"])) : createCommentVNode("", true),
_ctx.data.options.range ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
createVNode(_component_el_input_number, {
modelValue: _ctx.data.options.defaultValue[0],
"onUpdate:modelValue": _cache[9] || (_cache[9] = ($event) => _ctx.data.options.defaultValue[0] = $event),
modelModifiers: { number: true },
max: _ctx.data.options.max
}, null, 8, ["modelValue", "max"]),
createVNode(_component_el_input_number, {
modelValue: _ctx.data.options.defaultValue[1],
"onUpdate:modelValue": _cache[10] || (_cache[10] = ($event) => _ctx.data.options.defaultValue[1] = $event),
modelModifiers: { number: true },
max: _ctx.data.options.max
}, null, 8, ["modelValue", "max"])
], 64)) : createCommentVNode("", true)
], 64)) : createCommentVNode("", true)
]),
_: 1
})) : createCommentVNode("", true),
_ctx.hasKey("maxlength") ? (openBlock(), createBlock(_component_el_form_item, {
key: 5,
label: "\u6700\u5927\u957F\u5EA6"
}, {
default: withCtx(() => [
createVNode(_component_el_input, {
modelValue: _ctx.data.options.maxlength,
"onUpdate:modelValue": _cache[11] || (_cache[11] = ($event) => _ctx.data.options.maxlength = $event),
modelModifiers: { number: true },
disabled: _ctx.data.allDisable
}, null, 8, ["modelValue", "disabled"])
]),
_: 1
})) : createCommentVNode("", true),
_ctx.hasKey("max") ? (openBlock(), createBlock(_component_el_form_item, {
key: 6,
label: "\u6700\u5927\u503C"
}, {
default: withCtx(() => [
createVNode(_component_el_input_number, {
modelValue: _ctx.data.options.max,
"onUpdate:modelValue": _cache[12] || (_cache[12] = ($event) => _ctx.data.options.max = $event),
modelModifiers: { number: true },
disabled: _ctx.data.allDisable
}, null, 8, ["modelValue", "disabled"])
]),
_: 1
})) : createCommentVNode("", true),
_ctx.hasKey("min") ? (openBlock(), createBlock(_component_el_form_item, {
key: 7,
label: "\u6700\u5C0F\u503C"
}, {
default: withCtx(() => [
createVNode(_component_el_input_number, {
modelValue: _ctx.data.options.min,
"onUpdate:modelValue": _cache[13] || (_cache[13] = ($event) => _ctx.data.options.min = $event),
modelModifiers: { number: true },
disabled: _ctx.data.allDisable
}, null, 8, ["modelValue", "disabled"])
]),
_: 1
})) : createCommentVNode("", true),
_ctx.hasKey("step") ? (openBlock(), createBlock(_component_el_form_item, {
key: 8,
label: "\u6B65\u957F"
}, {
default: withCtx(() => [
createVNode(_component_el_input_number, {
modelValue: _ctx.data.options.step,
"onUpdate:modelValue": _cache[14] || (_cache[14] = ($event) => _ctx.data.options.step = $event),
modelModifiers: { number: true },
min: 0,
disabled: _ctx.data.allDisable
}, null, 8, ["modelValue", "disabled"])
]),
_: 1
})) : createCommentVNode("", true),
_ctx.hasKey("prefix") ? (openBlock(), createBlock(_component_el_form_item, {
key: 9,
label: "\u524D\u7F00"
}, {
default: withCtx(() => [
createVNode(_component_el_input, {
modelValue: _ctx.data.options.prefix,
"onUpdate:modelValue": _cache[15] || (_cache[15] = ($event) => _ctx.data.options.prefix = $event),
disabled: _ctx.data.allDisable
}, null, 8, ["modelValue", "disabled"])
]),
_: 1
})) : createCommentVNode("", true),
_ctx.hasKey("suffix") ? (openBlock(), createBlock(_component_el_form_item, {
key: 10,
label: "\u540E\u7F00"
}, {
default: withCtx(() => [
createVNode(_component_el_input, {
modelValue: _ctx.data.options.suffix,
"onUpdate:modelValue": _cache[16] || (_cache[16] = ($event) => _ctx.data.options.suffix = $event),
disabled: _ctx.data.allDisable
}, null, 8, ["modelValue", "disabled"])
]),
_: 1
})) : createCommentVNode("", true),
_ctx.hasKey("prepend") ? (openBlock(), createBlock(_component_el_form_item, {
key: 11,
label: "\u524D\u7F6E\u6807\u7B7E"
}, {
default: withCtx(() => [
createVNode(_component_el_input, {
modelValue: _ctx.data.options.prepend,
"onUpdate:modelValue": _cache[17] || (_cache[17] = ($event) => _ctx.data.options.prepend = $event),
disabled: _ctx.data.allDisable
}, null, 8, ["modelValue", "disabled"])
]),
_: 1
})) : createCommentVNode("", true),
_ctx.hasKey("append") ? (openBlock(), createBlock(_component_el_form_item, {
key: 12,
label: "\u540E\u7F6E\u6807\u7B7E"
}, {
default: withCtx(() => [
createVNode(_component_el_input, {
modelValue: _ctx.data.options.append,
"onUpdate:modelValue": _cache[18] || (_cache[18] = ($event) => _ctx.data.options.append = $event),
disabled: _ctx.data.allDisable
}, null, 8, ["modelValue", "disabled"])
]),
_: 1
})) : createCommentVNode("", true),
_ctx.hasKey("activeText") ? (openBlock(), createBlock(_component_el_form_item, {
key: 13,
label: "\u9009\u4E2D\u65F6\u7684\u5185\u5BB9"
}, {
default: withCtx(() => [
createVNode(_component_el_input, {
modelValue: _ctx.data.options.activeText,
"onUpdate:modelValue": _cache[19] || (_cache[19] = ($event) => _ctx.data.options.activeText = $event)
}, null, 8, ["modelValue"])
]),
_: 1
})) : createCommentVNode("", true),
_ctx.hasKey("inactiveText") ? (openBlock(), createBlock(_component_el_form_item, {
key: 14,
label: "\u975E\u9009\u4E2D\u65F6\u7684\u5185\u5BB9"
}, {
default: withCtx(() => [
createVNode(_component_el_input, {
modelValue: _ctx.data.options.inactiveText,
"onUpdate:modelValue": _cache[20] || (_cache[20] = ($event) => _ctx.data.options.inactiveText = $event)
}, null, 8, ["modelValue"])
]),
_: 1
})) : createCommentVNode("", true),
_ctx.hasKey("editable") ? (openBlock(), createBlock(_component_el_form_item, {
key: 15,
label: "\u6587\u672C\u6846\u53EF\u8F93\u5165"
}, {
default: withCtx(() => [
createVNode(_component_el_switch, {
modelValue: _ctx.data.options.editable,
"onUpdate:modelValue": _cache[21] || (_cache[21] = ($event) => _ctx.data.options.editable = $event)
}, null, 8, ["modelValue"])
]),
_: 1
})) : createCommentVNode("", true),
_ctx.hasKey("range") ? (openBlock(), createBlock(_component_el_form_item, {
key: 16,
label: "\u8303\u56F4\u9009\u62E9"
}, {
default: withCtx(() => [
createVNode(_component_el_switch, {
modelValue: _ctx.data.options.range,
"onUpdate:modelValue": _cache[22] || (_cache[22] = ($event) => _ctx.data.options.range = $event),
onChange: _ctx.handleSliderModeChange
}, null, 8, ["modelValue", "onChange"])
]),
_: 1
})) : createCommentVNode("", true),
_ctx.hasKey("showPassword") ? (openBlock(), createBlock(_component_el_form_item, {
key: 17,
label: "\u662F\u5426\u663E\u793A\u5207\u6362\u6309\u94AE"
}, {
default: withCtx(() => [
createVNode(_component_el_switch, {
modelValue: _ctx.data.options.showPassword,
"onUpdate:modelValue": _cache[23] || (_cache[23] = ($event) => _ctx.data.options.showPassword = $event)
}, null, 8, ["modelValue"])
]),
_: 1
})) : createCommentVNode("", true),
_ctx.hasKey("showWordLimit") ? (openBlock(), createBlock(_component_el_form_item, {
key: 18,
label: "\u662F\u5426\u663E\u793A\u5B57\u6570"
}, {
default: withCtx(() => [
createVNode(_component_el_switch, {
modelValue: _ctx.data.options.showWordLimit,
"onUpdate:modelValue": _cache[24] || (_cache[24] = ($event) => _ctx.data.options.showWordLimit = $event)
}, null, 8, ["modelValue"])
]),
_: 1
})) : createCommentVNode("", true),
_ctx.hasKey("autosize") ? (openBlock(), createBlock(_component_el_form_item, {
key: 19,
label: "\u662F\u5426\u81EA\u9002\u5E94\u5185\u5BB9\u9AD8\u5EA6"
}, {
default: withCtx(() => [
createVNode(_component_el_switch, {
modelValue: _ctx.data.options.autosize,
"onUpdate:modelValue": _cache[25] || (_cache[25] = ($event) => _ctx.data.options.autosize = $event)
}, null, 8, ["modelValue"])
]),
_: 1
})) : createCommentVNode("", true),
_ctx.hasKey("rows") && !_ctx.data.options.autosize ? (openBlock(), createBlock(_component_el_form_item, {
key: 20,
label: "\u884C\u6570"
}, {
default: withCtx(() => [
createVNode(_component_el_input_number, {
modelValue: _ctx.data.options.rows,
"onUpdate:modelValue": _cache[26] || (_cache[26] = ($event) => _ctx.data.options.rows = $event),
min: 0
}, null, 8, ["modelValue"])
]),
_: 1
})) : createCommentVNode("", true),
_ctx.hasKey("allowHalf") ? (openBlock(), createBlock(_component_el_form_item, {
key: 21,
label: "\u662F\u5426\u5141\u8BB8\u534A\u9009"
}, {
default: withCtx(() => [
createVNode(_component_el_switch, {
modelValue: _ctx.data.options.allowHalf,
"onUpdate:modelValue": _cache[27] || (_cache[27] = ($event) => _ctx.data.options.allowHalf = $event)
}, null, 8, ["modelValue"])
]),
_: 1
})) : createCommentVNode("", true),
_ctx.hasKey("inline") ? (openBlock(), createBlock(_component_el_form_item, {
key: 22,
label: "\u5E03\u5C40\u65B9\u5F0F"
}, {
default: withCtx(() => [
createVNode(_component_el_radio_group, {
modelValue: _ctx.data.options.inline,
"onUpdate:modelValue": _cache[28] || (_cache[28] = ($event) => _ctx.data.options.inline = $event)
}, {
default: withCtx(() => [
createVNode(_component_el_radio_button, { label: true }, {
default: withCtx(() => [
_hoisted_1$2
]),
_: 1
}),
createVNode(_component_el_radio_button, { label: false }, {
default: withCtx(() => [
_hoisted_2$2
]),
_: 1
})
]),
_: 1
}, 8, ["modelValue"])
]),
_: 1
})) : createCommentVNode("", true),
_ctx.hasKey("multiple") ? (openBlock(), createBlock(_component_el_form_item, {
key: 23,
label: "\u662F\u5426\u591A\u9009"
}, {
default: withCtx(() => [
createVNode(_component_el_switch, {
modelValue: _ctx.data.options.multiple,
"onUpdate:modelValue": _cache[29] || (_cache[29] = ($event) => _ctx.data.options.multiple = $event),
onChange: _ctx.handleSelectModeChange,
disabled: _ctx.data.allDisable
}, null, 8, ["modelValue", "onChange", "disabled"])
]),
_: 1
})) : createCommentVNode("", true),
_ctx.hasKey("filterable") ? (openBlock(), createBlock(_component_el_form_item, {
key: 24,
label: "\u662F\u5426\u53EF\u641C\u7D22"
}, {
default: withCtx(() => [
createVNode(_component_el_switch, {
modelValue: _ctx.data.options.filterable,
"onUpdate:modelValue": _cache[30] || (_cache[30] = ($event) => _ctx.data.options.filterable = $event),
disabled: _ctx.data.allDisable
}, null, 8, ["modelValue", "disabled"])
]),
_: 1
})) : createCommentVNode("", true),
_ctx.hasKey("showLabel") ? (openBlock(), createBlock(_component_el_form_item, {
key: 25,
label: "\u662F\u5426\u663E\u793A\u6807\u7B7E"
}, {
default: withCtx(() => [
createVNode(_component_el_switch, {
modelValue: _ctx.data.options.showLabel,
"onUpdate:modelValue": _cache[31] || (_cache[31] = ($event) => _ctx.data.options.showLabel = $event)
}, null, 8, ["modelValue"])
]),
_: 1
})) : createCommentVNode("", true),
_ctx.hasKey("options") ? (openBlock(), createBlock(_component_el_form_item, {
key: 26,
label: "\u9009\u9879"
}, {
default: withCtx(() => [
createVNode(_component_el_radio_group, {
modelValue: _ctx.data.options.remote,
"onUpdate:modelValue": _cache[32] || (_cache[32] = ($event) => _ctx.data.options.remote = $event)
}, {
default: withCtx(() => [
createVNode(_component_el_radio_button, { label: false }, {
default: withCtx(() => [
_hoisted_3$2
]),
_: 1
}),
createVNode(_component_el_radio_button, { label: true }, {
default: withCtx(() => [
_hoisted_4$2
]),
_: 1
})
]),
_: 1
}, 8, ["modelValue"]),
_ctx.data.options.remote ? (openBlock(), createBlock(_component_el_space, {
key: 0,
alignment: "start",
direction: "vertical",
style: { "margin-top": "10px" }
}, {
default: withCtx(() => [
createVNode(_component_el_input, {
modelValue: _ctx.data.options.remoteFunc,
"onUpdate:modelValue": _cache[33] || (_cache[33] = ($event) => _ctx.data.options.remoteFunc = $event)
}, {
prepend: withCtx(() => [
_hoisted_5$2
]),
_: 1
}, 8, ["modelValue"]),
createVNode(_component_el_input, {
modelValue: _ctx.data.options.props.label,
"onUpdate:modelValue": _cache[34] || (_cache[34] = ($event) => _ctx.data.options.props.label = $event)
}, {
prepend: withCtx(() => [
_hoisted_6$2
]),
_: 1
}, 8, ["modelValue"]),
createVNode(_component_el_input, {
modelValue: _ctx.data.options.props.value,
"onUpdate:modelValue": _cache[35] || (_cache[35] = ($event) => _ctx.data.options.props.value = $event)
}, {
prepend: withCtx(() => [
_hoisted_7$1
]),
_: 1
}, 8, ["modelValue"])
]),
_: 1
})) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
_ctx.data.type === "radio" || _ctx.data.type === "select" && !_ctx.data.options.multiple ? (openBlock(), createBlock(_component_el_radio_group, {
key: 0,
modelValue: _ctx.data.options.defaultValue,
"onUpdate:modelValue": _cache[36] || (_cache[36] = ($event) => _ctx.data.options.defaultValue = $event),
style: { "margin-top": "8px" }
}, {
default: withCtx(() => [
createVNode(_component_Draggable, {
"item-key": "index",
"ghost-class": "ghost",
handle: ".drag-item",
group: { name: "options" },
list: _ctx.data.options.options
}, {
item: withCtx(({ element, index }) => [
createElementVNode("div", _hoisted_8$1, [
createVNode(_component_el_radio, {
label: element.value,
style: { "margin-right": "0", "margin-bottom": "0" }
}, {
default: withCtx(() => [
createVNode(_component_el_input, {
modelValue: element.value,
"onUpdate:modelValue": ($event) => element.value = $event,
style: normalizeStyle({
width: _ctx.data.options.showLabel ? "90px" : "180px"
})
}, null, 8, ["modelValue", "onUpdate:modelValue", "style"]),
_ctx.data.options.showLabel ? (openBlock(), createBlock(_component_el_input, {
key: 0,
modelValue: element.label,
"onUpdate:modelValue": ($event) => element.label = $event,
class: "ml-1",
style: {
width: "90px"
}
}, null, 8, ["modelValue", "onUpdate:modelValue"])) : createCommentVNode("", true)
]),
_: 2
}, 1032, ["label"]),
_hoisted_9$1,
createVNode(_component_el_button, {
type: "primary",
circle: "",
onClick: ($event) => _ctx.handleOptionsRemove(index)
}, {
default: withCtx(() => [
_hoisted_10$1
]),
_: 2
}, 1032, ["onClick"])
])
]),
_: 1
}, 8, ["list"])
]),
_: 1
}, 8, ["modelValue"])) : createCommentVNode("", true),
_ctx.data.type === "checkbox" || _ctx.data.type === "select" && _ctx.data.options.multiple ? (openBlock(), createBlock(_component_el_checkbox_group, {
key: 1,
modelValue: _ctx.data.options.defaultValue,
"onUpdate:modelValue": _cache[37] || (_cache[37] = ($event) => _ctx.data.options.defaultValue = $event),
style: { "margin-top": "8px" }
}, {
default: withCtx(() => [
createVNode(_component_Draggable, {
"item-key": "index",
"ghost-class": "ghost",
handle: "[cursor-move]",
group: { name: "options" },
list: _ctx.data.options.options
}, {
item: withCtx(({ element, index }) => [
createElementVNode("div", _hoisted_11$1, [
createVNode(_component_el_checkbox, {
label: element.value
}, {
default: withCtx(() => [
_hoisted_12$1
]),
_: 2
}, 1032, ["label"]),
createVNode(_component_el_input, {
modelValue: element.value,
"onUpdate:modelValue": ($event) => element.value = $event,
style: normalizeStyle({
width: _ctx.data.options.showLabel ? "90px" : "180px"
})
}, null, 8, ["modelValue", "onUpdate:modelValue", "style"]),
_ctx.data.options.showLabel ? (openBlock(), createBlock(_component_el_input, {
key: 0,
modelValue: element.label,
"onUpdate:modelValue": ($event) => element.label = $event,
style: { width: "90px" }
}, null, 8, ["modelValue", "onUpdate:modelValue"])) : createCommentVNode("", true),
_hoisted_13$1,
createVNode(_component_el_button, {
type: "primary",
circle: "",
onClick: ($event) => _ctx.handleOptionsRemove(index)
}, {
default: withCtx(() => [
_hoisted_14$1
]),
_: 2
}, 1032, ["onClick"])
])
]),
_: 1
}, 8, ["list"])
]),
_: 1
}, 8, ["modelValue"])) : createCommentVNode("", true),
createElementVNode("div", _hoisted_15, [
createVNode(_component_el_button, {
type: "text",
onClick: _ctx.handleInsertOption
}, {
default: withCtx(() => [
_hoisted_16
]),
_: 1
}, 8, ["onClick"])
])
], 64))
]),
_: 1
})) : createCommentVNode("", true),
_ctx.data.type === "time" ? (openBlock(), createBlock(_component_el_form_item, {
key: 27,
label: "\u9ED8\u8BA4\u503C"
}, {
default: withCtx(() => [
createVNode(_component_el_time_picker, {
modelValue: _ctx.data.options.defaultValue,
"onUpdate:modelValue": _cache[38] || (_cache[38] = ($event) => _ctx.data.options.defaultValue = $event),
style: { "width": "100%" },
format: _ctx.data.options.format,
placeholder: _ctx.data.options.placeholder
}, null, 8, ["modelValue", "format", "placeholder"])
]),
_: 1
})) : createCommentVNode("", true),
_ctx.data.type === "date" ? (openBlock(), createBlock(_component_el_form_item, {
key: 28,
label: "\u9ED8\u8BA4\u503C"
}, {
default: withCtx(() => [
createVNode(_component_el_date_picker, {
modelValue: _ctx.data.options.defaultValue,
"onUpdate:modelValue": _cache[39] || (_cache[39] = ($event) => _ctx.data.options.defaultValue = $event),
style: { "width": "100%" },
format: _ctx.data.options.format,
placeholder: _ctx.data.options.placeholder
}, null, 8, ["modelValue", "format", "placeholder"])
]),
_: 1
})) : createCommentVNode("", true),
_ctx.data.type === "time" || _ctx.data.type === "date" ? (openBlock(), createBlock(_component_el_form_item, {
key: 29,
label: "\u683C\u5F0F"
}, {
default: withCtx(() => [
createVNode(_component_el_input, {
modelValue: _ctx.data.options.format,
"onUpdate:modelValue": _cache[40] || (_cache[40] = ($event) => _ctx.data.options.format = $event)
}, null, 8, ["modelValue"])
]),
_: 1
})) : createCommentVNode("", true),
_ctx.data.type === "download" ? (openBlock(), createBlock(_component_el_form_item, {
key: 30,
label: "\u5730\u5740"
}, {
default: withCtx(() => [
createVNode(_component_el_input, {
modelValue: _ctx.data.options.defaultValue,
"onUpdate:modelValue": _cache[41] || (_cache[41] = ($event) => _ctx.data.options.defaultValue = $event)
}, null, 8, ["modelValue"])
]),
_: 1
})) : createCommentVNode("", true),
_ctx.data.type === "img-upload" ? (openBlock(), createElementBlock(Fragment, { key: 31 }, [
createVNode(_component_el_form_item, { label: "\u6A21\u5F0F" }, {
default: withCtx(() => [
createVNode(_component_el_radio_group, {
modelValue: _ctx.data.options.listType,
"onUpdate:modelValue": _cache[42] || (_cache[42] = ($event) => _ctx.data.options.listType = $event)
}, {
default: withCtx(() => [
createVNode(_component_el_radio_button, { label: "text" }, {
default: withCtx(() => [
_hoisted_17
]),
_: 1
}),
createVNode(_component_el_radio_button, { label: "picture" }, {
default: withCtx(() => [
_hoisted_18
]),
_: 1
}),
createVNode(_component_el_radio_button, { label: "picture-card" }, {
default: withCtx(() => [
_hoisted_19
]),
_: 1
})
]),
_: 1
}, 8, ["modelValue"])
]),
_: 1
}),
createVNode(_component_el_form_item, { label: "\u6587\u4EF6\u53C2\u6570\u540D" }, {
default: withCtx(() => [
createVNode(_component_el_input, {
modelValue: _ctx.data.options.name,
"onUpdate:modelValue": _cache[43] || (_cache[43] = ($event) => _ctx.data.options.name = $event)
}, null, 8, ["modelValue"])
]),
_: 1
}),
createVNode(_component_el_form_item, { label: "\u4E0A\u4F20\u5730\u5740" }, {
default: withCtx(() => [
createVNode(_component_el_input, {
modelValue: _ctx.data.options.action,
"onUpdate:modelValue": _cache[44] || (_cache[44] = ($event) => _ctx.data.options.action = $event)
}, null, 8, ["modelValue"])
]),
_: 1
}),
createVNode(_component_el_form_item, { label: "\u63A5\u53D7\u4E0A\u4F20\u7684\u6587\u4EF6\u7C7B\u578B(\u591A\u4E2A\u4F7F\u7528 , \u9694\u5F00)" }, {
default: withCtx(() => [
createVNode(_component_el_input, {
modelValue: _ctx.data.options.accept,
"onUpdate:modelValue": _cache[45] || (_cache[45] = ($event) => _ctx.data.options.accept = $event)
}, null, 8, ["modelValue"])
]),
_: 1
}),
createVNode(_component_el_form_item, { label: "\u6700\u5927\u4E0A\u4F20\u6570\u91CF" }, {
default: withCtx(() => [
createVNode(_component_el_input_number, {
modelValue: _ctx.data.options.limit,
"onUpdate:modelValue": _cache[46] || (_cache[46] = ($event) => _ctx.data.options.limit = $event),
modelModifiers: { number: true },
min: 1
}, null, 8, ["modelValue"])
]),
_: 1
}),
createVNode(_component_el_form_item, { label: "\u4E0A\u4F20\u8BF7\u6C42\u65B9\u6CD5" }, {
default: withCtx(() => [
createVNode(_component_el_radio_group, {
modelValue: _ctx.data.options.method,
"onUpdate:modelValue": _cache[47] || (_cache[47] = ($event) => _ctx.data.options.method = $event)
}, {
default: withCtx(() => [
createVNode(_component_el_radio_button, { label: "post" }, {
default: withCtx(() => [
_hoisted_20
]),
_: 1
}),
createVNode(_component_el_radio_button, { label: "put" }, {
default: withCtx(() => [
_hoisted_21
]),
_: 1
}),
createVNode(_component_el_radio_button, { label: "get" }, {
default: withCtx(() => [
_hoisted_22
]),
_: 1
}),
createVNode(_component_el_radio_button, { label: "delete" }, {
default: withCtx(() => [
_hoisted_23
]),
_: 1
})
]),
_: 1
}, 8, ["modelValue"])
]),
_: 1
})
], 64)) : createCommentVNode("", true),
_ctx.data.type === "cascader" ? (openBlock(), createBlock(_component_el_form_item, {
key: 32,
label: "\u8FDC\u7AEF\u6570\u636E"
}, {
default: withCtx(() => [
createVNode(_component_el_space, {
direction: "vertical",
alignment: "start"
}, {
default: withCtx(() => [
createVNode(_component_el_input, {
modelValue: _ctx.data.options.remoteFunc,
"onUpdate:modelValue": _cache[48] || (_cache[48] = ($event) => _ctx.data.options.remoteFunc = $event)
}, {
prepend: withCtx(() => [
_hoisted_24
]),
_: 1
}, 8, ["modelValue"]),
createVNode(_component_el_input, {
modelValue: _ctx.data.options.props.label,
"onUpdate:modelValue": _cache[49] || (_cache[49] = ($event) => _ctx.data.options.props.label = $event)
}, {
prepend: withCtx(() => [
_hoisted_25
]),
_: 1
}, 8, ["modelValue"]),
createVNode(_component_el_input, {
modelValue: _ctx.data.options.props.value,
"onUpdate:modelValue": _cache[50] || (_cache[50] = ($event) => _ctx.data.options.props.value = $event)
}, {
prepend: withCtx(() => [
_hoisted_26
]),
_: 1
}, 8, ["modelValue"]),
createVNode(_component_el_input, {
modelValue: _ctx.data.options.props.children,
"onUpdate:modelValue": _cache[51] || (_cache[51] = ($event) => _ctx.data.options.props.children = $event)
}, {
prepend: withCtx(() => [
_hoisted_27
]),
_: 1
}, 8, ["modelValue"])
]),
_: 1
})
]),
_: 1
})) : createCommentVNode("", true),
_ctx.data.type === "table" ? (openBlock(), createElementBlock(Fragment, { key: 33 }, [
createVNode(_component_el_form_item, { label: "\u5217\u914D\u7F6E\u9879" }, {
default: withCtx(() => [
createVNode(_component_Draggable, {
tag: "ul",
"item-key": "index",
"ghost-class": "ghost",
handle: ".drag-item",
group: { name: "options" },
list: _ctx.data.columns
}, {
item: withCtx(({ element, index }) => [
createElementVNode("li", _hoisted_28, [
_hoisted_29,
createVNode(_component_el_input, {
modelValue: element.label,
"onUpdate:modelValue": ($event) => element.label = $event,
placeholder: "\u663E\u793A\u540D\u79F0"
}, null, 8, ["modelValue", "onUpdate:modelValue"]),
createVNode(_component_el_input, {
modelValue: element.prop,
"onUpdate:modelValue": ($event) => element.prop = $event,
placeholder: "\u5B57\u6BB5\u5B57\u6BB5"
}, null, 8, ["modelValue", "onUpdate:modelValue"]),
createVNode(_component_el_button, {
type: "primary",
circle: "",
style: { "margin-left": "5px" },
onClick: ($event) => _ctx.data.columns.splice(index, 1)
}, {
default: withCtx(() => [
_hoisted_30
]),
_: 2
}, 1032, ["onClick"])
])
]),
_: 1
}, 8, ["list"]),
createElementVNode("div", null, [
createVNode(_component_el_button, {
type: "text",
onClick: _cache[52] || (_cache[52] = ($event) => _ctx.data.columns.push({}))
}, {
default: withCtx(() => [
_hoisted_31
]),
_: 1
})
])
]),
_: 1
}),
createVNode(_component_el_form_item, { label: "\u5BF9\u9F50\u65B9\u5F0F" }, {
default: withCtx(() => [
createVNode(_component_el_radio_group, {
modelValue: _ctx.data.options.align,
"onUpdate:modelValue": _cache[53] || (_cache[53] = ($event) => _ctx.data.options.align = $event)
}, {
default: withCtx(() => [
createVNode(_component_el_radio_button, { label: "left" }, {
default: withCtx(() => [
_hoisted_32
]),
_: 1
}),
createVNode(_component_el_radio_button, { label: "center" }, {
default: withCtx(() => [
_hoisted_33
]),
_: 1
}),
createVNode(_component_el_radio_button, { label: "right" }, {
default: withCtx(() => [
_hoisted_34
]),
_: 1
})
]),
_: 1
}, 8, ["modelValue"])
]),
_: 1
})
], 64)) : createCommentVNode("", true),
_ctx.data.type === "grid" ? (openBlock(), createElementBlock(Fragment, { key: 34 }, [
createVNode(_component_el_form_item, { label: "\u6805\u683C\u95F4\u9694" }, {
default: withCtx(() => [
createVNode(_component_el_input_number, {
modelValue: _ctx.data.options.gutter,
"onUpdate:modelValue": _cache[54] || (_cache[54] = ($event) => _ctx.data.options.gutter = $event),
modelModifiers: { number: true },
min: 0
}, null, 8, ["modelValue"])
]),
_: 1
}),
createVNode(_component_el_form_item, { label: "\u5217\u914D\u7F6E\u9879" }, {
default: withCtx(() => [
createVNode(_component_Draggable, {
tag: "ul",
"item-key": "index",
"ghost-class": "ghost",
handle: ".drag-item",
group: { name: "options" },
list: _ctx.data.columns
}, {
item: withCtx(({ element, index }) => [
createElementVNode("li", _hoisted_35, [
_hoisted_36,
createVNode(_component_el_input_number, {
modelValue: element.span,
"onUpdate:modelValue": ($event) => element.span = $event,
modelModifiers: { number: true },
placeholder: "\u6805\u683C\u503C",
min: 0,
max: 24
}, null, 8, ["modelValue", "onUpdate:modelValue"]),
createVNode(_component_el_button, {
type: "primary",
circle: "",
style: { "margin-left": "5px" },
onClick: ($event) => _ctx.handleOptionsRemove(index)
}, {
default: withCtx(() => [
_hoisted_37
]),
_: 2
}, 1032, ["onClick"])
])
]),
_: 1
}, 8, ["list"]),
createElementVNode("div", null, [
createVNode(_component_el_button, {
type: "text",
onClick: _ctx.handleInsertColumn
}, {
default: withCtx(() => [
_hoisted_38
]),
_: 1
}, 8, ["onClick"])
])
]),
_: 1
}),
createVNode(_component_el_form_item, { label: "\u5782\u76F4\u5BF9\u9F50\u65B9\u5F0F" }, {
default: withCtx(() => [
createVNode(_component_el_radio_group, {
modelValue: _ctx.data.options.align,
"onUpdate:modelValue": _cache[55] || (_cache[55] = ($event) => _ctx.data.options.align = $event)
}, {
default: withCtx(() => [
createVNode(_component_el_radio_button, { label: "initial" }, {
default: withCtx(() => [
_hoisted_39
]),
_: 1
}),
createVNode(_component_el_radio_button, { label: "center" }, {
default: withCtx(() => [
_hoisted_40
]),
_: 1
}),
createVNode(_component_el_radio_button, { label: "flex-end" }, {
default: withCtx(() => [
_hoisted_41
]),
_: 1
})
]),
_: 1
}, 8, ["modelValue"])
]),
_: 1
})
], 64)) : createCommentVNode("", true),
_ctx.data.type !== "grid" ? (openBlock(), createElementBlock(Fragment, { key: 35 }, [
_ctx.hasKey("rules") || _ctx.hasKey("readonly") || _ctx.hasKey("disabled") || _ctx.hasKey("allowClear") ? (openBlock(), createBlock(_component_el_form_item, {
key: 0,
label: "\u64CD\u4F5C\u5C5E\u6027"
}, {
default: withCtx(() => [
_ctx.hasKey("rules") ? (openBlock(), createBlock(_component_el_checkbox, {
key: 0,
modelValue: _ctx.data.options.rules.required,
"onUpdate:modelValue": _cache[56] || (_cache[56] = ($event) => _ctx.data.options.rules.required = $event),
disabled: _ctx.data.allDisable
}, {
default: withCtx(() => [
_hoisted_42
]),
_: 1
}, 8, ["modelValue", "disabled"])) : createCommentVNode("", true),
_ctx.hasKey("readonly") ? (openBlock(), createBlock(_component_el_checkbox, {
key: 1,
modelValue: _ctx.data.options.readonly,
"onUpdate:modelValue": _cache[57] || (_cache[57] = ($event) => _ctx.data.options.readonly = $event),
disabled: _ctx.data.allDisable
}, {
default: withCtx(() => [
_hoisted_43
]),
_: 1
}, 8, ["modelValue", "disabled"])) : createCommentVNode("", true),
_ctx.hasKey("disabled") ? (openBlock(), createBlock(_component_el_checkbox, {
key: 2,
modelValue: _ctx.data.options.disabled,
"onUpdate:modelValue": _cache[58] || (_cache[58] = ($event) => _ctx.data.options.disabled = $event),
disabled: _ctx.data.allDisable
}, {
default: withCtx(() => [
_hoisted_44
]),
_: 1
}, 8, ["modelValue", "disabled"])) : createCommentVNode("", true),
_ctx.hasKey("clearable") ? (openBlock(), createBlock(_component_el_checkbox, {
key: 3,
modelValue: _ctx.data.options.clearable,
"onUpdate:modelValue": _cache[59] || (_cache[59] = ($event) => _ctx.data.options.clearable = $event),
disabled: _ctx.data.allDisable
}, {
default: withCtx(() => [
_hoisted_45
]),
_: 1
}, 8, ["modelValue", "disabled"])) : createCommentVNode("", true)
]),
_: 1
})) : createCommentVNode("", true),
_ctx.hasKey("rules") ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [
_hoisted_46,
createVNode(_component_el_form_item, { label: "\u89E6\u53D1\u65F6\u673A" }, {
default: withCtx(() => [
createVNode(_component_el_radio_group, {
modelValue: _ctx.data.options.rules.trigger,
"onUpdate:modelValue": _cache[60] || (_cache[60] = ($event) => _ctx.data.options.rules.trigger = $event)
}, {
default: withCtx(() => [
createVNode(_component_el_radio_button, { label: "blur" }, {
default: withCtx(() => [
_hoisted_47
]),
_: 1
}),
createVNode(_component_el_radio_button, { label: "change" }, {
default: withCtx(() => [
_hoisted_48
]),
_: 1
})
]),
_: 1
}, 8, ["modelValue"])
]),
_: 1
}),
createVNode(_component_el_form_item, { label: "\u679A\u4E3E\u7C7B\u578B" }, {
default: withCtx(() => [
createVNode(_component_el_input, {
value: _ctx.data.options.rules.enum,
"onUpdate:value": _cache[61] || (_cache[61] = ($event) => _ctx.data.options.rules.enum = $event)
}, null, 8, ["value"])
]),
_: 1
}),
createVNode(_component_el_form_item, { label: "\u5B57\u6BB5\u957F\u5EA6" }, {
default: withCtx(() => [
createVNode(_component_el_input, {
modelValue: _ctx.data.options.rules.len,
"onUpdate:modelValue": _cache[62] || (_cache[62] = ($event) => _ctx.data.options.rules.len = $event),
modelModifiers: { number: true }
}, null, 8, ["modelValue"])
]),
_: 1
}),
createVNode(_component_el_form_item, { label: "\u6700\u5927\u957F\u5EA6" }, {
default: withCtx(() => [
createVNode(_component_el_input, {
modelValue: _ctx.data.options.rules.max,
"onUpdate:modelValue": _cache[63] || (_cache[63] = ($event) => _ctx.data.options.rules.max = $event),
modelModifiers: { number: true }
}, null, 8, ["modelValue"])
]),
_: 1
}),
createVNode(_component_el_form_item, { label: "\u6700\u5C0F\u957F\u5EA6" }, {
default: withCtx(() => [
createVNode(_component_el_input, {
modelValue: _ctx.data.options.rules.min,
"onUpdate:modelValue": _cache[64] || (_cache[64] = ($event) => _ctx.data.options.rules.min = $event),
modelModifiers: { number: true }
}, null, 8, ["modelValue"])
]),
_: 1
}),
createVNode(_component_el_form_item, { label: "\u6821\u9A8C\u6587\u6848" }, {
default: withCtx(() => [
createVNode(_component_el_input, {
modelValue: _ctx.data.options.rules.message,
"onUpdate:modelValue": _cache[65] || (_cache[65] = ($event) => _ctx.data.options.rules.message = $event)
}, null, 8, ["modelValue"])
]),
_: 1
}),
createVNode(_component_el_form_item, { label: "\u6B63\u5219\u8868\u8FBE\u5F0F" }, {
default: withCtx(() => [
createVNode(_component_el_input, {
modelValue: _ctx.data.options.rules.pattern,
"onUpdate:modelValue": _cache[66] || (_cache[66] = ($event) => _ctx.data.options.rules.pattern = $event)
}, null, 8, ["modelValue"])
]),
_: 1
}),
createVNode(_component_el_form_item, { label: "\u6821\u9A8C\u7C7B\u578B" }, {
default: withCtx(() => [
createVNode(_component_el_select, {
modelValue: _ctx.data.options.rules.type,
"onUpdate:modelValue": _cache[67] || (_cache[67] = ($event) => _ctx.data.options.rules.type = $event)
}, {
default: withCtx(() => [
createVNode(_component_el_option, { value: "string" }, {
default: withCtx(() => [
_hoisted_49
]),
_: 1
}),
createVNode(_component_el_option, { value: "number" }, {
default: withCtx(() => [
_hoisted_50
]),
_: 1
}),
createVNode(_component_el_option, { value: "boolean" }, {
default: withCtx(() => [
_hoisted_51
]),
_: 1
}),
createVNode(_component_el_option, { value: "method" }, {
default: withCtx(() => [
_hoisted_52
]),
_: 1
}),
createVNode(_component_el_option, { value: "regexp" }, {
default: withCtx(() => [
_hoisted_53
]),
_: 1
}),
createVNode(_component_el_option, { value: "integer" }, {
default: withCtx(() => [
_hoisted_54
]),
_: 1
}),
createVNode(_component_el_option, { value: "float" }, {
default: withCtx(() => [
_hoisted_55
]),
_: 1
}),
createVNode(_component_el_option, { value: "array" }, {
default: withCtx(() => [
_hoisted_56
]),
_: 1
}),
createVNode(_component_el_option, { value: "object" }, {
default: withCtx(() => [
_hoisted_57
]),
_: 1
}),
createVNode(_component_el_option, { value: "enum" }, {
default: withCtx(() => [
_hoisted_58
]),
_: 1
}),
createVNode(_component_el_option, { value: "date" }, {
default: withCtx(() => [
_hoisted_59
]),
_: 1
}),
createVNode(_component_el_option, { value: "url" }, {
default: withCtx(() => [
_hoisted_60
]),
_: 1
}),
createVNode(_component_el_option, { value: "hex" }, {
default: withCtx(() => [
_hoisted_61
]),
_: 1
}),
createVNode(_component_el_option, { value: "email" }, {
default: withCtx(() => [
_hoisted_62
]),
_: 1
}),
createVNode(_component_el_option, { value: "any" }, {
default: withCtx(() => [
_hoisted_63
]),
_: 1
})
]),
_: 1
}, 8, ["modelValue"])
]),
_: 1
})
], 64)) : createCommentVNode("", true)
], 64)) : createCommentVNode("", true)
]),
_: 1
})) : createCommentVNode("", true);
}
var WidgetConfig = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["render", _sfc_render]]);
const _hoisted_1$1 = /* @__PURE__ */ createTextVNode(" \u5DE6\u5BF9\u9F50 ");
const _hoisted_2$1 = /* @__PURE__ */ createTextVNode(" \u53F3\u5BF9\u9F50 ");
const _hoisted_3$1 = /* @__PURE__ */ createTextVNode(" \u9876\u90E8\u5BF9\u9F50 ");
const _hoisted_4$1 = /* @__PURE__ */ createTextVNode(" \u5927 ");
const _hoisted_5$1 = /* @__PURE__ */ createTextVNode(" \u9ED8\u8BA4 ");
const _hoisted_6$1 = /* @__PURE__ */ createTextVNode(" \u5C0F ");
const _sfc_main$2 = /* @__PURE__ */ defineComponent({
props: {
config: null
},
setup(__props) {
return (_ctx, _cache) => {
const _component_el_radio_button = ElRadioButton;
const _component_el_radio_group = ElRadioGroup;
const _component_el_form_item = ElFormItem;
const _component_el_input_number = ElInputNumber;
const _component_el_switch = ElSwitch;
const _component_el_form = ElForm;
return openBlock(), createBlock(_component_el_form, {
"p-2": "",
"label-position": "top",
onSubmit: _cache[4] || (_cache[4] = withModifiers(() => {
}, ["prevent"]))
}, {
default: withCtx(() => [
createVNode(_component_el_form_item, { label: "\u6807\u7B7E\u5BF9\u9F50\u65B9\u5F0F" }, {
default: withCtx(() => [
createVNode(_component_el_radio_group, {
modelValue: __props.config.labelPosition,
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => __props.config.labelPosition = $event)
}, {
default: withCtx(() => [
createVNode(_component_el_radio_button, { label: "left" }, {
default: withCtx(() => [
_hoisted_1$1
]),
_: 1
}),
createVNode(_component_el_radio_button, { label: "right" }, {
default: withCtx(() => [
_hoisted_2$1
]),
_: 1
}),
createVNode(_component_el_radio_button, { label: "top" }, {
default: withCtx(() => [
_hoisted_3$1
]),
_: 1
})
]),
_: 1
}, 8, ["modelValue"])
]),
_: 1
}),
createVNode(_component_el_form_item, { label: "\u6807\u7B7E\u5BBD\u5EA6" }, {
default: withCtx(() => [
createVNode(_component_el_input_number, {
modelValue: __props.config.labelWidth,
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => __props.config.labelWidth = $event),
modelModifiers: { number: true },
min: 0
}, null, 8, ["modelValue"])
]),
_: 1
}),
createVNode(_component_el_form_item, { label: "\u7EC4\u4EF6\u5C3A\u5BF8" }, {
default: withCtx(() => [
createVNode(_component_el_radio_group, {
modelValue: __props.config.size,
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => __props.config.size = $event)
}, {
default: withCtx(() => [
createVNode(_component_el_radio_button, { label: "large" }, {
default: withCtx(() => [
_hoisted_4$1
]),
_: 1
}),
createVNode(_component_el_radio_button, { label: "default" }, {
default: withCtx(() => [
_hoisted_5$1
]),
_: 1
}),
createVNode(_component_el_radio_button, { label: "small" }, {
default: withCtx(() => [
_hoisted_6$1
]),
_: 1
})
]),
_: 1
}, 8, ["modelValue"])
]),
_: 1
}),
createVNode(_component_el_form_item, { label: "\u9690\u85CF\u5FC5\u9009\u6807\u8BB0" }, {
default: withCtx(() => [
createVNode(_component_el_switch, {
modelValue: __props.config.hideRequiredAsterisk,
"onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => __props.config.hideRequiredAsterisk = $event)
}, null, 8, ["modelValue"])
]),
_: 1
})
]),
_: 1
});
};
}
});
function _extends() {
_extends = Object.assign || function(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
return _extends.apply(this, arguments);
}
var KEYCODE_ENTER = 13;
var KEYCODE_TAB = 9;
var KEYCODE_BACKSPACE = 8;
var KEYCODE_Y = 89;
var KEYCODE_Z = 90;
var KEYCODE_M = 77;
var KEYCODE_PARENS = 57;
var KEYCODE_BRACKETS = 219;
var KEYCODE_QUOTE = 222;
var KEYCODE_BACK_QUOTE = 192;
var KEYCODE_ESCAPE = 27;
var HISTORY_LIMIT = 100;
var HISTORY_TIME_GAP = 3e3;
var isWindows = typeof window !== "undefined" && navigator && /* @__PURE__ */ /Win/i.test(navigator.platform);
var isMacLike = typeof window !== "undefined" && navigator && /* @__PURE__ */ /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform);
var PrismEditor = /* @__PURE__ */ defineComponent({
props: {
lineNumbers: {
type: Boolean,
"default": false
},
autoStyleLineNumbers: {
type: Boolean,
"default": true
},
readonly: {
type: Boolean,
"default": false
},
modelValue: {
type: String,
"default": ""
},
highlight: {
type: Function,
required: true
},
tabSize: {
type: Number,
"default": 2
},
insertSpaces: {
type: Boolean,
"default": true
},
ignoreTabKey: {
type: Boolean,
"default": false
},
placeholder: {
type: String,
"default": ""
}
},
data: function data() {
return {
capture: true,
history: {
stack: [],
offset: -1
},
lineNumbersHeight: "20px",
codeData: ""
};
},
watch: {
modelValue: {
immediate: true,
handler: function handler(newVal) {
if (!newVal) {
this.codeData = "";
} else {
this.codeData = newVal;
}
}
},
content: {
immediate: true,
handler: function handler2() {
var _this = this;
if (this.lineNumbers) {
this.$nextTick(function() {
_this.setLineNumbersHeight();
});
}
}
},
lineNumbers: function lineNumbers() {
var _this2 = this;
this.$nextTick(function() {
_this2.styleLineNumbers();
_this2.setLineNumbersHeight();
});
}
},
computed: {
isEmpty: function isEmpty2() {
return this.codeData.length === 0;
},
content: function content() {
var result = this.highlight(this.codeData) + "
";
return result;
},
lineNumbersCount: function lineNumbersCount() {
var totalLines = this.codeData.split(/\r\n|\n/).length;
return totalLines;
}
},
mounted: function mounted() {
this._recordCurrentState();
this.styleLineNumbers();
},
methods: {
setLineNumbersHeight: function setLineNumbersHeight() {
this.lineNumbersHeight = getComputedStyle(this.$refs.pre).height;
},
styleLineNumbers: function styleLineNumbers() {
if (!this.lineNumbers || !this.autoStyleLineNumbers)
return;
var $editor = this.$refs.pre;
var $lineNumbers = this.$el.querySelector(".prism-editor__line-numbers");
var editorStyles = window.getComputedStyle($editor);
this.$nextTick(function() {
var btlr = "border-top-left-radius";
var bblr = "border-bottom-left-radius";
if (!$lineNumbers)
return;
$lineNumbers.style[btlr] = editorStyles[btlr];
$lineNumbers.style[bblr] = editorStyles[bblr];
$editor.style[btlr] = "0";
$editor.style[bblr] = "0";
var stylesList = ["background-color", "margin-top", "padding-top", "font-family", "font-size", "line-height"];
stylesList.forEach(function(style) {
$lineNumbers.style[style] = editorStyles[style];
});
$lineNumbers.style["margin-bottom"] = "-" + editorStyles["padding-top"];
});
},
_recordCurrentState: function _recordCurrentState() {
var input = this.$refs.textarea;
if (!input)
return;
var value = input.value, selectionStart = input.selectionStart, selectionEnd = input.selectionEnd;
this._recordChange({
value,
selectionStart,
selectionEnd
});
},
_getLines: function _getLines(text, position) {
return text.substring(0, position).split("\n");
},
_applyEdits: function _applyEdits(record) {
var input = this.$refs.textarea;
var last = this.history.stack[this.history.offset];
if (last && input) {
this.history.stack[this.history.offset] = _extends({}, last, {
selectionStart: input.selectionStart,
selectionEnd: input.selectionEnd
});
}
this._recordChange(record);
this._updateInput(record);
},
_recordChange: function _recordChange(record, overwrite) {
if (overwrite === void 0) {
overwrite = false;
}
var _this$history = this.history, stack = _this$history.stack, offset2 = _this$history.offset;
if (stack.length && offset2 > -1) {
this.history.stack = stack.slice(0, offset2 + 1);
var count = this.history.stack.length;
if (count > HISTORY_LIMIT) {
var extras = count - HISTORY_LIMIT;
this.history.stack = stack.slice(extras, count);
this.history.offset = Math.max(this.history.offset - extras, 0);
}
}
var timestamp = Date.now();
if (overwrite) {
var last = this.history.stack[this.history.offset];
if (last && timestamp - last.timestamp < HISTORY_TIME_GAP) {
var _this$_getLines$pop, _this$_getLines$pop2;
var re = /[^a-z0-9]([a-z0-9]+)$/i;
var previous = (_this$_getLines$pop = this._getLines(last.value, last.selectionStart).pop()) === null || _this$_getLines$pop === void 0 ? void 0 : _this$_getLines$pop.match(re);
var current = (_this$_getLines$pop2 = this._getLines(record.value, record.selectionStart).pop()) === null || _this$_getLines$pop2 === void 0 ? void 0 : _this$_getLines$pop2.match(re);
if (previous && current && current[1].startsWith(previous[1])) {
this.history.stack[this.history.offset] = _extends({}, record, {
timestamp
});
return;
}
}
}
this.history.stack.push(_extends({}, record, {
timestamp
}));
this.history.offset++;
},
_updateInput: function _updateInput(record) {
var input = this.$refs.textarea;
if (!input)
return;
input.value = record.value;
input.selectionStart = record.selectionStart;
input.selectionEnd = record.selectionEnd;
this.$emit("update:modelValue", record.value);
},
handleChange: function handleChange(e) {
var _e$target = e.target, value = _e$target.value, selectionStart = _e$target.selectionStart, selectionEnd = _e$target.selectionEnd;
this._recordChange({
value,
selectionStart,
selectionEnd
}, true);
this.$emit("update:modelValue", value);
},
_undoEdit: function _undoEdit() {
var _this$history2 = this.history, stack = _this$history2.stack, offset2 = _this$history2.offset;
var record = stack[offset2 - 1];
if (record) {
this._updateInput(record);
this.history.offset = Math.max(offset2 - 1, 0);
}
},
_redoEdit: function _redoEdit() {
var _this$history3 = this.history, stack = _this$history3.stack, offset2 = _this$history3.offset;
var record = stack[offset2 + 1];
if (record) {
this._updateInput(record);
this.history.offset = Math.min(offset2 + 1, stack.length - 1);
}
},
handleKeyDown: function handleKeyDown(e) {
var tabSize = this.tabSize, insertSpaces = this.insertSpaces, ignoreTabKey = this.ignoreTabKey;
this.$emit("keydown", e);
if (e.defaultPrevented) {
return;
}
if (e.keyCode === KEYCODE_ESCAPE) {
e.target.blur();
this.$emit("blur", e);
}
var _e$target2 = e.target, value = _e$target2.value, selectionStart = _e$target2.selectionStart, selectionEnd = _e$target2.selectionEnd;
var tabCharacter = (insertSpaces ? " " : " ").repeat(tabSize);
if (e.keyCode === KEYCODE_TAB && !ignoreTabKey && this.capture) {
e.preventDefault();
if (e.shiftKey) {
var linesBeforeCaret = this._getLines(value, selectionStart);
var startLine = linesBeforeCaret.length - 1;
var endLine = this._getLines(value, selectionEnd).length - 1;
var nextValue = value.split("\n").map(function(line2, i) {
if (i >= startLine && i <= endLine && line2.startsWith(tabCharacter)) {
return line2.substring(tabCharacter.length);
}
return line2;
}).join("\n");
if (value !== nextValue) {
var startLineText = linesBeforeCaret[startLine];
this._applyEdits({
value: nextValue,
selectionStart: startLineText.startsWith(tabCharacter) ? selectionStart - tabCharacter.length : selectionStart,
selectionEnd: selectionEnd - (value.length - nextValue.length)
});
}
} else if (selectionStart !== selectionEnd) {
var _linesBeforeCaret = this._getLines(value, selectionStart);
var _startLine = _linesBeforeCaret.length - 1;
var _endLine = this._getLines(value, selectionEnd).length - 1;
var _startLineText = _linesBeforeCaret[_startLine];
this._applyEdits({
value: value.split("\n").map(function(line2, i) {
if (i >= _startLine && i <= _endLine) {
return tabCharacter + line2;
}
return line2;
}).join("\n"),
selectionStart: /\S/.test(_startLineText) ? selectionStart + tabCharacter.length : selectionStart,
selectionEnd: selectionEnd + tabCharacter.length * (_endLine - _startLine + 1)
});
} else {
var updatedSelection = selectionStart + tabCharacter.length;
this._applyEdits({
value: value.substring(0, selectionStart) + tabCharacter + value.substring(selectionEnd),
selectionStart: updatedSelection,
selectionEnd: updatedSelection
});
}
} else if (e.keyCode === KEYCODE_BACKSPACE) {
var hasSelection = selectionStart !== selectionEnd;
var textBeforeCaret = value.substring(0, selectionStart);
if (textBeforeCaret.endsWith(tabCharacter) && !hasSelection) {
e.preventDefault();
var _updatedSelection = selectionStart - tabCharacter.length;
this._applyEdits({
value: value.substring(0, selectionStart - tabCharacter.length) + value.substring(selectionEnd),
selectionStart: _updatedSelection,
selectionEnd: _updatedSelection
});
}
} else if (e.keyCode === KEYCODE_ENTER) {
if (selectionStart === selectionEnd) {
var line = this._getLines(value, selectionStart).pop();
var matches = line === null || line === void 0 ? void 0 : line.match(/^\s+/);
if (matches && matches[0]) {
e.preventDefault();
var indent = "\n" + matches[0];
var _updatedSelection2 = selectionStart + indent.length;
this._applyEdits({
value: value.substring(0, selectionStart) + indent + value.substring(selectionEnd),
selectionStart: _updatedSelection2,
selectionEnd: _updatedSelection2
});
}
}
} else if (e.keyCode === KEYCODE_PARENS || e.keyCode === KEYCODE_BRACKETS || e.keyCode === KEYCODE_QUOTE || e.keyCode === KEYCODE_BACK_QUOTE) {
var chars;
if (e.keyCode === KEYCODE_PARENS && e.shiftKey) {
chars = ["(", ")"];
} else if (e.keyCode === KEYCODE_BRACKETS) {
if (e.shiftKey) {
chars = ["{", "}"];
} else {
chars = ["[", "]"];
}
} else if (e.keyCode === KEYCODE_QUOTE) {
if (e.shiftKey) {
chars = ['"', '"'];
} else {
chars = ["'", "'"];
}
} else if (e.keyCode === KEYCODE_BACK_QUOTE && !e.shiftKey) {
chars = ["`", "`"];
}
if (selectionStart !== selectionEnd && chars) {
e.preventDefault();
this._applyEdits({
value: value.substring(0, selectionStart) + chars[0] + value.substring(selectionStart, selectionEnd) + chars[1] + value.substring(selectionEnd),
selectionStart,
selectionEnd: selectionEnd + 2
});
}
} else if ((isMacLike ? e.metaKey && e.keyCode === KEYCODE_Z : e.ctrlKey && e.keyCode === KEYCODE_Z) && !e.shiftKey && !e.altKey) {
e.preventDefault();
this._undoEdit();
} else if ((isMacLike ? e.metaKey && e.keyCode === KEYCODE_Z && e.shiftKey : isWindows ? e.ctrlKey && e.keyCode === KEYCODE_Y : e.ctrlKey && e.keyCode === KEYCODE_Z && e.shiftKey) && !e.altKey) {
e.preventDefault();
this._redoEdit();
} else if (e.keyCode === KEYCODE_M && e.ctrlKey && (isMacLike ? e.shiftKey : true)) {
e.preventDefault();
this.capture = !this.capture;
}
}
},
render: function render() {
var _this3 = this;
var lineNumberWidthCalculator = h$1("div", {
"class": "prism-editor__line-width-calc",
style: "height: 0px; visibility: hidden; pointer-events: none;"
}, "999");
var lineNumbers2 = h$1("div", {
"class": "prism-editor__line-numbers",
style: {
"min-height": this.lineNumbersHeight
},
"aria-hidden": "true"
}, [lineNumberWidthCalculator, Array.from(Array(this.lineNumbersCount).keys()).map(function(_2, index) {
return h$1("div", {
"class": "prism-editor__line-number token comment"
}, "" + ++index);
})]);
var textarea = h$1("textarea", {
ref: "textarea",
onInput: this.handleChange,
onKeydown: this.handleKeyDown,
onClick: function onClick($event) {
_this3.$emit("click", $event);
},
onKeyup: function onKeyup($event) {
_this3.$emit("keyup", $event);
},
onFocus: function onFocus($event) {
_this3.$emit("focus", $event);
},
onBlur: function onBlur($event) {
_this3.$emit("blur", $event);
},
"class": {
"prism-editor__textarea": true,
"prism-editor__textarea--empty": this.isEmpty
},
spellCheck: "false",
autocapitalize: "off",
autocomplete: "off",
autocorrect: "off",
"data-gramm": "false",
placeholder: this.placeholder,
"data-testid": "textarea",
readonly: this.readonly,
value: this.codeData
});
var preview = h$1("pre", {
ref: "pre",
"class": "prism-editor__editor",
"data-testid": "preview",
innerHTML: this.content
});
var editorContainer = h$1("div", {
"class": "prism-editor__container"
}, [textarea, preview]);
return h$1("div", {
"class": "prism-editor-wrapper"
}, [this.lineNumbers && lineNumbers2, editorContainer]);
}
});
var prismeditor_min = "";
var prismCore = { exports: {} };
(function(module2) {
var _self = typeof window !== "undefined" ? window : typeof WorkerGlobalScope !== "undefined" && self instanceof WorkerGlobalScope ? self : {};
/**
* Prism: Lightweight, robust, elegant syntax highlighting
*
* @license MIT
* @author Lea Verou
* @namespace
* @public
*/
var Prism2 = function(_self2) {
var lang = /(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i;
var uniqueId = 0;
var plainTextGrammar = {};
var _2 = {
manual: _self2.Prism && _self2.Prism.manual,
disableWorkerMessageHandler: _self2.Prism && _self2.Prism.disableWorkerMessageHandler,
util: {
encode: function encode(tokens) {
if (tokens instanceof Token) {
return new Token(tokens.type, encode(tokens.content), tokens.alias);
} else if (Array.isArray(tokens)) {
return tokens.map(encode);
} else {
return tokens.replace(/&/g, "&").replace(/" + env.content + "" + env.tag + ">";
};
function matchPattern(pattern4, pos, text, lookbehind) {
pattern4.lastIndex = pos;
var match = pattern4.exec(text);
if (match && lookbehind && match[1]) {
var lookbehindLength = match[1].length;
match.index += lookbehindLength;
match[0] = match[0].slice(lookbehindLength);
}
return match;
}
function matchGrammar(text, tokenList, grammar, startNode, startPos, rematch) {
for (var token in grammar) {
if (!grammar.hasOwnProperty(token) || !grammar[token]) {
continue;
}
var patterns = grammar[token];
patterns = Array.isArray(patterns) ? patterns : [patterns];
for (var j = 0; j < patterns.length; ++j) {
if (rematch && rematch.cause == token + "," + j) {
return;
}
var patternObj = patterns[j];
var inside = patternObj.inside;
var lookbehind = !!patternObj.lookbehind;
var greedy = !!patternObj.greedy;
var alias = patternObj.alias;
if (greedy && !patternObj.pattern.global) {
var flags = patternObj.pattern.toString().match(/[imsuy]*$/)[0];
patternObj.pattern = RegExp(patternObj.pattern.source, flags + "g");
}
var pattern4 = patternObj.pattern || patternObj;
for (var currentNode = startNode.next, pos = startPos; currentNode !== tokenList.tail; pos += currentNode.value.length, currentNode = currentNode.next) {
if (rematch && pos >= rematch.reach) {
break;
}
var str = currentNode.value;
if (tokenList.length > text.length) {
return;
}
if (str instanceof Token) {
continue;
}
var removeCount = 1;
var match;
if (greedy) {
match = matchPattern(pattern4, pos, text, lookbehind);
if (!match || match.index >= text.length) {
break;
}
var from = match.index;
var to = match.index + match[0].length;
var p2 = pos;
p2 += currentNode.value.length;
while (from >= p2) {
currentNode = currentNode.next;
p2 += currentNode.value.length;
}
p2 -= currentNode.value.length;
pos = p2;
if (currentNode.value instanceof Token) {
continue;
}
for (var k = currentNode; k !== tokenList.tail && (p2 < to || typeof k.value === "string"); k = k.next) {
removeCount++;
p2 += k.value.length;
}
removeCount--;
str = text.slice(pos, p2);
match.index -= pos;
} else {
match = matchPattern(pattern4, 0, str, lookbehind);
if (!match) {
continue;
}
}
var from = match.index;
var matchStr = match[0];
var before = str.slice(0, from);
var after = str.slice(from + matchStr.length);
var reach = pos + str.length;
if (rematch && reach > rematch.reach) {
rematch.reach = reach;
}
var removeFrom = currentNode.prev;
if (before) {
removeFrom = addAfter(tokenList, removeFrom, before);
pos += before.length;
}
removeRange(tokenList, removeFrom, removeCount);
var wrapped = new Token(token, inside ? _2.tokenize(matchStr, inside) : matchStr, alias, matchStr);
currentNode = addAfter(tokenList, removeFrom, wrapped);
if (after) {
addAfter(tokenList, currentNode, after);
}
if (removeCount > 1) {
var nestedRematch = {
cause: token + "," + j,
reach
};
matchGrammar(text, tokenList, grammar, currentNode.prev, pos, nestedRematch);
if (rematch && nestedRematch.reach > rematch.reach) {
rematch.reach = nestedRematch.reach;
}
}
}
}
}
}
function LinkedList() {
var head = { value: null, prev: null, next: null };
var tail = { value: null, prev: head, next: null };
head.next = tail;
this.head = head;
this.tail = tail;
this.length = 0;
}
function addAfter(list, node, value) {
var next = node.next;
var newNode = { value, prev: node, next };
node.next = newNode;
next.prev = newNode;
list.length++;
return newNode;
}
function removeRange(list, node, count) {
var next = node.next;
for (var i = 0; i < count && next !== list.tail; i++) {
next = next.next;
}
node.next = next;
next.prev = node;
list.length -= i;
}
function toArray(list) {
var array4 = [];
var node = list.head.next;
while (node !== list.tail) {
array4.push(node.value);
node = node.next;
}
return array4;
}
if (!_self2.document) {
if (!_self2.addEventListener) {
return _2;
}
if (!_2.disableWorkerMessageHandler) {
_self2.addEventListener("message", function(evt) {
var message = JSON.parse(evt.data);
var lang2 = message.language;
var code = message.code;
var immediateClose = message.immediateClose;
_self2.postMessage(_2.highlight(code, _2.languages[lang2], lang2));
if (immediateClose) {
_self2.close();
}
}, false);
}
return _2;
}
var script = _2.util.currentScript();
if (script) {
_2.filename = script.src;
if (script.hasAttribute("data-manual")) {
_2.manual = true;
}
}
function highlightAutomaticallyCallback() {
if (!_2.manual) {
_2.highlightAll();
}
}
if (!_2.manual) {
var readyState = document.readyState;
if (readyState === "loading" || readyState === "interactive" && script && script.defer) {
document.addEventListener("DOMContentLoaded", highlightAutomaticallyCallback);
} else {
if (window.requestAnimationFrame) {
window.requestAnimationFrame(highlightAutomaticallyCallback);
} else {
window.setTimeout(highlightAutomaticallyCallback, 16);
}
}
}
return _2;
}(_self);
if (module2.exports) {
module2.exports = Prism2;
}
if (typeof commonjsGlobal !== "undefined") {
commonjsGlobal.Prism = Prism2;
}
})(prismCore);
Prism.languages.clike = {
"comment": [
{
pattern: /(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,
lookbehind: true,
greedy: true
},
{
pattern: /(^|[^\\:])\/\/.*/,
lookbehind: true,
greedy: true
}
],
"string": {
pattern: /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,
greedy: true
},
"class-name": {
pattern: /(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,
lookbehind: true,
inside: {
"punctuation": /[.\\]/
}
},
"keyword": /\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,
"boolean": /\b(?:false|true)\b/,
"function": /\b\w+(?=\()/,
"number": /\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,
"operator": /[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,
"punctuation": /[{}[\];(),.:]/
};
Prism.languages.json = {
"property": {
pattern: /(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,
lookbehind: true,
greedy: true
},
"string": {
pattern: /(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,
lookbehind: true,
greedy: true
},
"comment": {
pattern: /\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,
greedy: true
},
"number": /-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,
"punctuation": /[{}[\],]/,
"operator": /:/,
"boolean": /\b(?:false|true)\b/,
"null": {
pattern: /\bnull\b/,
alias: "keyword"
}
};
Prism.languages.webmanifest = Prism.languages.json;
var prismTomorrow = "";
var CodeEditor_vue_vue_type_style_index_0_lang = "";
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
props: {
modelValue: { default: "" },
language: { default: "json" },
readonly: { type: Boolean, default: false }
},
emits: ["update:modelValue"],
setup(__props, { emit }) {
const code = computed({
get() {
return __props.modelValue;
},
set(val) {
emit("update:modelValue", val);
}
});
return (_ctx, _cache) => {
return openBlock(), createBlock(unref(PrismEditor), {
modelValue: code.value,
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => code.value = $event),
"max-h-xl": "",
class: "form-design-editor",
highlight: (code2) => {
return unref(prismCore.exports.highlight)(code2, unref(prismCore.exports.languages)[__props.language]);
},
readonly: __props.readonly,
"line-numbers": ""
}, null, 8, ["modelValue", "highlight", "readonly"]);
};
}
});
var DesignForm_vue_vue_type_style_index_0_lang = "";
const _hoisted_1 = {
"h-full": "",
"bg-white": "",
flex: ""
};
const _hoisted_2 = {
"pt-2": "",
"w-62": ""
};
const _hoisted_3 = {
border: "0 x solid gray-200",
flex: "~ 1 col nowrap"
};
const _hoisted_4 = {
border: "0 b solid gray-200",
flex: "",
"gap-2": "",
"items-center": "",
"justify-end": "",
"h-11": "",
"py-0": "",
"px-2": ""
};
const _hoisted_5 = /* @__PURE__ */ createElementVNode("i", { class: "ep:edit" }, null, -1);
const _hoisted_6 = /* @__PURE__ */ createTextVNode("\u4FEE\u6539 ");
const _hoisted_7 = /* @__PURE__ */ createElementVNode("i", { class: "custom:clearable" }, null, -1);
const _hoisted_8 = /* @__PURE__ */ createTextVNode("\u6E05\u7A7A ");
const _hoisted_9 = /* @__PURE__ */ createElementVNode("i", { class: "custom:preview" }, null, -1);
const _hoisted_10 = /* @__PURE__ */ createTextVNode("\u9884\u89C8 ");
const _hoisted_11 = {
relative: "",
"w-75": "",
flex: "~ col"
};
const _hoisted_12 = {
border: "0 b-1 gray-200",
grid: "~ cols-2",
"min-h-11": "",
"px-2": ""
};
const _hoisted_13 = /* @__PURE__ */ createTextVNode(" \u590D\u5236 ");
const _hoisted_14 = /* @__PURE__ */ createTextVNode(" \u786E\u8BA4\u4FEE\u6539 ");
const __default__ = { name: "DesignForm" };
const _sfc_main = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({}, __default__), {
props: {
preview: {
type: Boolean,
default: true
},
generateJson: {
type: Boolean,
default: true
},
clearable: {
type: Boolean,
default: true
},
basicFieldsList: {
type: Array,
default: () => basicFields
},
advanceFieldsList: {
type: Array,
default: () => advanceFields
},
layoutFieldsList: {
type: Array,
default: () => layoutFields
},
request: {
type: Function
}
},
setup(__props, { expose }) {
let tab = ref(0);
let selectWidget = ref();
watch(() => selectWidget.value, (val) => {
tab.value = val ? 0 : 1;
});
let widgetForm = ref(getWidgetForm());
let generateJsonVisible = ref(false);
let generateJsonTemplate = ref(JSON.stringify(getWidgetForm(), null, 2));
const handleUploadJson = () => {
var _a2;
try {
widgetForm.value = JSON.parse(generateJsonTemplate.value);
selectWidget.value = (_a2 = widgetForm.value.list) == null ? void 0 : _a2[0];
generateJsonVisible.value = false;
ElMessage.success("\u4FEE\u6539\u6210\u529F");
} catch (error) {
ElMessage.error("\u4FEE\u6539\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5JSON\u683C\u5F0F\u662F\u5426\u6B63\u786E\u3002");
}
};
const handleGenerateJson = () => (generateJsonTemplate.value = JSON.stringify(widgetForm.value, null, 2)) && (generateJsonVisible.value = true);
const handleClearable = () => {
widgetForm.value = getWidgetForm();
selectWidget.value = void 0;
};
let dataVisible = ref(false);
const generateFormRef = ref(null);
const handleGetData = async () => {
var _a2;
dataVisible.value = !dataVisible.value;
if (!dataVisible.value)
return;
const res = await ((_a2 = generateFormRef.value) == null ? void 0 : _a2.getData());
generateJsonTemplate.value = JSON.stringify(res, null, 2);
};
const handleReset = () => {
var _a2;
return (_a2 = generateFormRef.value) == null ? void 0 : _a2.reset();
};
const handleCopyClick = (text) => {
navigator.clipboard.writeText(text);
ElMessage.success({ message: "Copy\u6210\u529F" });
};
const previewVisible = ref(false);
expose({
getJson: () => widgetForm.value,
setJson: (json) => {
var _a2;
widgetForm.value = json;
selectWidget.value = (_a2 = json.list) == null ? void 0 : _a2[0];
},
clear: handleClearable
});
return (_ctx, _cache) => {
const _component_el_button = ElButton;
const _component_el_dialog = ElDialog;
return openBlock(), createElementBlock("section", _hoisted_1, [
createElementVNode("aside", _hoisted_2, [
createVNode(_sfc_main$6, {
title: "\u57FA\u7840\u5B57\u6BB5",
fields: __props.basicFieldsList,
list: unref(basicComponents),
allList: widgetForm.value
}, null, 8, ["fields", "list", "allList"]),
createVNode(_sfc_main$6, {
title: "\u9AD8\u7EA7\u5B57\u6BB5",
fields: __props.advanceFieldsList,
list: unref(advanceComponents),
allList: widgetForm.value
}, null, 8, ["fields", "list", "allList"]),
createVNode(_sfc_main$6, {
title: "\u5E03\u5C40\u5B57\u6BB5",
fields: __props.layoutFieldsList,
list: unref(layoutComponents),
allList: widgetForm.value
}, null, 8, ["fields", "list", "allList"])
]),
createElementVNode("main", _hoisted_3, [
createElementVNode("header", _hoisted_4, [
renderSlot(_ctx.$slots, "default"),
__props.generateJson ? (openBlock(), createBlock(_component_el_button, {
key: 0,
type: "text",
onClick: handleGenerateJson
}, {
icon: withCtx(() => [
_hoisted_5
]),
default: withCtx(() => [
_hoisted_6
]),
_: 1
})) : createCommentVNode("", true),
__props.clearable ? (openBlock(), createBlock(_component_el_button, {
key: 1,
type: "text",
onClick: handleClearable
}, {
icon: withCtx(() => [
_hoisted_7
]),
default: withCtx(() => [
_hoisted_8
]),
_: 1
})) : createCommentVNode("", true),
__props.preview ? (openBlock(), createBlock(_component_el_button, {
key: 2,
type: "text",
onClick: _cache[0] || (_cache[0] = ($event) => previewVisible.value = true)
}, {
icon: withCtx(() => [
_hoisted_9
]),
default: withCtx(() => [
_hoisted_10
]),
_: 1
})) : createCommentVNode("", true)
]),
createVNode(_sfc_main$4, mergeProps({ ref: "widgetFormRef" }, widgetForm.value, {
selectWidget: selectWidget.value,
"onUpdate:selectWidget": _cache[1] || (_cache[1] = ($event) => selectWidget.value = $event)
}), null, 16, ["selectWidget"])
]),
createElementVNode("aside", _hoisted_11, [
createElementVNode("header", _hoisted_12, [
createElementVNode("div", {
class: normalizeClass([{ active: !tab.value }, "config-tab"]),
onClick: _cache[2] || (_cache[2] = ($event) => tab.value = 0)
}, " \u5B57\u6BB5\u5C5E\u6027 ", 2),
createElementVNode("div", {
class: normalizeClass([{ active: tab.value }, "config-tab"]),
onClick: _cache[3] || (_cache[3] = ($event) => tab.value = 1)
}, " \u8868\u5355\u5C5E\u6027 ", 2)
]),
withDirectives(createVNode(WidgetConfig, {
select: selectWidget.value,
"onUpdate:select": _cache[4] || (_cache[4] = ($event) => selectWidget.value = $event)
}, null, 8, ["select"]), [
[vShow, !tab.value]
]),
withDirectives(createVNode(_sfc_main$2, {
config: widgetForm.value.config,
"onUpdate:config": _cache[5] || (_cache[5] = ($event) => widgetForm.value.config = $event)
}, null, 8, ["config"]), [
[vShow, tab.value]
])
]),
createVNode(_component_el_dialog, {
modelValue: previewVisible.value,
"onUpdate:modelValue": _cache[8] || (_cache[8] = ($event) => previewVisible.value = $event),
"destroy-on-close": "",
title: "\u9884\u89C8",
"z-index": 2e3,
width: 800,
onClose: _cache[9] || (_cache[9] = ($event) => dataVisible.value = false)
}, {
footer: withCtx(() => [
createVNode(_component_el_button, {
onClick: _cache[7] || (_cache[7] = ($event) => dataVisible.value ? handleCopyClick(generateJsonTemplate.value) : handleReset())
}, {
default: withCtx(() => [
createTextVNode(toDisplayString(dataVisible.value ? "\u590D\u5236" : "\u91CD\u7F6E"), 1)
]),
_: 1
}),
createVNode(_component_el_button, {
type: "primary",
onClick: handleGetData
}, {
default: withCtx(() => [
createTextVNode(toDisplayString(dataVisible.value ? "\u8FD4\u56DE\u9884\u89C8" : "\u83B7\u53D6\u6570\u636E"), 1)
]),
_: 1
})
]),
default: withCtx(() => [
withDirectives(createVNode(_sfc_main$1, {
modelValue: generateJsonTemplate.value,
"onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => generateJsonTemplate.value = $event)
}, null, 8, ["modelValue"]), [
[vShow, dataVisible.value]
]),
withDirectives(createVNode(GenerateForm, {
ref_key: "generateFormRef",
ref: generateFormRef,
request: __props.request,
data: widgetForm.value
}, null, 8, ["request", "data"]), [
[vShow, !dataVisible.value]
])
]),
_: 1
}, 8, ["modelValue"]),
createVNode(_component_el_dialog, {
modelValue: generateJsonVisible.value,
"onUpdate:modelValue": _cache[12] || (_cache[12] = ($event) => generateJsonVisible.value = $event),
"append-to-body": "",
title: "\u4FEE\u6539JSON",
"z-index": 2e4,
width: 800
}, {
footer: withCtx(() => [
createVNode(_component_el_button, {
onClick: _cache[11] || (_cache[11] = ($event) => handleCopyClick(generateJsonTemplate.value))
}, {
default: withCtx(() => [
_hoisted_13
]),
_: 1
}),
createVNode(_component_el_button, {
type: "primary",
onClick: handleUploadJson
}, {
default: withCtx(() => [
_hoisted_14
]),
_: 1
})
]),
default: withCtx(() => [
createVNode(_sfc_main$1, {
modelValue: generateJsonTemplate.value,
"onUpdate:modelValue": _cache[10] || (_cache[10] = ($event) => generateJsonTemplate.value = $event)
}, null, 8, ["modelValue"])
]),
_: 1
}, 8, ["modelValue"])
]);
};
}
}));
export { _sfc_main as DesignForm, GenerateForm, advanceFields, basicFields, layoutFields };
//# sourceMappingURL=index.es.js.map