var __defProp2 = Object.defineProperty; var __defNormalProp2 = (obj, key2, value7) => key2 in obj ? __defProp2(obj, key2, { enumerable: true, configurable: true, writable: true, value: value7 }) : obj[key2] = value7; var __publicField = (obj, key2, value7) => { __defNormalProp2(obj, typeof key2 !== "symbol" ? key2 + "" : key2, value7); return value7; }; import { Tooltip, Tabs, RadioGroup, RadioButton, Radio, Alert, Button as Button$1, Spin, Modal, Select as Select$5, SelectOption, Checkbox, CheckboxGroup, InputSearch, InputGroup, Dropdown, Menu, SubMenu, MenuItem, Input as Input$3, Popover, Popconfirm, Form, FormItem, message, Tag, Table, ConfigProvider as ConfigProvider$1, InputNumber, Switch, Divider, Cascader as Cascader$2, Breadcrumb, BreadcrumbItem, Badge, Skeleton, Descriptions, Tree as Tree$3, TreeSelect as TreeSelect$1, AutoComplete, Rate, Col as Col$1, Row, Drawer, SelectOptGroup, notification } from "ant-design-vue"; import { message as message2 } from "ant-design-vue"; import * as vue from "vue"; import { Fragment, isVNode, unref, defineComponent, computed, createVNode, getCurrentScope, onScopeDispose, ref, isRef, toRefs as toRefs$1, customRef, getCurrentInstance, onMounted, nextTick, onUnmounted, watch, provide, openBlock, createElementBlock, normalizeClass, renderSlot, inject, onBeforeUnmount, reactive, normalizeStyle, createElementVNode, toDisplayString, createCommentVNode, createTextVNode, useSlots, createBlock, mergeProps, createSlots, renderList, withCtx, normalizeProps, guardReactiveProps, camelize as camelize$2, resolveComponent, watchEffect, shallowRef, toRef, Transition as Transition$1, withDirectives, vShow, onUpdated, resolveDynamicComponent, h as h$2, render, resolveDirective, readonly, toRaw, onActivated, toHandlers, withModifiers, onBeforeUpdate, withKeys, vModelText, useAttrs as useAttrs$1, Comment as Comment$1, Text as Text$1, cloneVNode, onBeforeMount, Teleport, isReactive, isReadonly, vModelDynamic, createApp } from "vue"; import lodash from "lodash"; import dayjs from "dayjs"; import { ExclamationCircleFilled, QuestionCircleOutlined, InfoCircleFilled, CheckCircleFilled, CloseCircleFilled, CheckOutlined, PlusOutlined, EllipsisOutlined, CopyOutlined, DoubleRightOutlined, FilterFilled, createFromIconfontCN, ClockCircleOutlined, CalendarOutlined, LoadingOutlined, SearchOutlined as SearchOutlined$1 } from "@ant-design/icons-vue"; import weekday from "dayjs/plugin/weekday"; import localeData from "dayjs/plugin/localeData"; import weekOfYear from "dayjs/plugin/weekOfYear"; import weekYear from "dayjs/plugin/weekYear"; import advancedFormat from "dayjs/plugin/advancedFormat"; import customParseFormat from "dayjs/plugin/customParseFormat"; import * as isPlainObject$2 from "lodash/isPlainObject"; import * as moment from "moment"; import moment__default from "moment"; import LoadingOutlined$1 from "@ant-design/icons-vue/LoadingOutlined"; import FileOutlined from "@ant-design/icons-vue/FileOutlined"; import CaretDownFilled from "@ant-design/icons-vue/CaretDownFilled"; import MinusSquareOutlined from "@ant-design/icons-vue/MinusSquareOutlined"; import PlusSquareOutlined from "@ant-design/icons-vue/PlusSquareOutlined"; import FolderOpenOutlined from "@ant-design/icons-vue/FolderOpenOutlined"; import FolderOutlined from "@ant-design/icons-vue/FolderOutlined"; import DownOutlined from "@ant-design/icons-vue/DownOutlined"; import CheckOutlined$1 from "@ant-design/icons-vue/CheckOutlined"; import CloseOutlined from "@ant-design/icons-vue/CloseOutlined"; import CloseCircleFilled$1 from "@ant-design/icons-vue/CloseCircleFilled"; import SearchOutlined from "@ant-design/icons-vue/SearchOutlined"; import CaretDownOutlined from "@ant-design/icons-vue/CaretDownOutlined"; import EyeOutlined from "@ant-design/icons-vue/EyeOutlined"; import EyeInvisibleOutlined from "@ant-design/icons-vue/EyeInvisibleOutlined"; import RightOutlined from "@ant-design/icons-vue/RightOutlined"; import RedoOutlined from "@ant-design/icons-vue/RedoOutlined"; function findParentDom(currentDom, level, fn) { let count = 0; function recursion(dom, countLevel) { if (!dom) { return null; } if (countLevel >= level) { return null; } if (isFunction$6(fn)) { if (fn(dom)) { return fn(dom); } else { return recursion(dom.parentNode, ++count); } } else { return dom; } } if (currentDom.parentNode) { return recursion(currentDom, ++count); } else { return currentDom; } } const pxToRem = (px) => { if (isNaN(parseFloat(px))) { return px; } return String(px).includes("%") || String(px).includes("rem") || String(px).includes("vh") || String(px).includes("vw") || String(px).includes("vw") ? px : px + "px"; }; const toString$2 = Object.prototype.toString; function is(val, type2) { return toString$2.call(val) === `[object ${type2}]`; } function isEmptyText(text) { if (text === null || text === void 0 || text === "") { return false; } return true; } function isDef(val) { return typeof val !== "undefined"; } function isUnDef(val) { return !isDef(val); } function isObject$4(val) { return val !== null && is(val, "Object"); } function transformPxtoRem(val) { const newVal = String(val).includes("%") || String(val).includes("rem") || String(val).includes("vh") || String(val).includes("vw") || String(val).includes("px") ? val : pxToRem(val); return newVal; } function isNull(val) { return val === null; } function isNullOrUnDef(val) { return isUnDef(val) || isNull(val); } function isNumber$1(val) { return is(val, "Number"); } function isString$2(val) { return is(val, "String"); } function isFunction$6(val) { return typeof val === "function"; } function isBoolean$1(val) { return is(val, "Boolean"); } function isArray$4(val) { return val && Array.isArray(val); } const isServer = typeof window === "undefined"; const isClient$2 = !isServer; const isStringNumber = (val) => { if (!isString$2(val)) { return false; } return !Number.isNaN(Number(val)); }; class ElementPlusError extends Error { constructor(m2) { super(m2); this.name = "ElementPlusError"; } } function throwError(scope, m2) { throw new ElementPlusError(`[${scope}] ${m2}`); } function debugWarn(scope, message3) { if (process.env.NODE_ENV !== "production") { const error2 = isString$2(scope) ? new ElementPlusError(`[${scope}] ${message3}`) : scope; console.warn(error2); } } const projectName = { "BASE_URL": "/", "MODE": "production", "DEV": false, "PROD": true }.VITE_GLOB_APP_TITLE; function error$1(message3) { throw new Error(`[${projectName} error]:${message3}`); } const isElement = (e2) => { if (typeof Element === "undefined") return false; return e2 instanceof Element; }; /*! * is-plain-object * * Copyright (c) 2014-2017, Jon Schlinkert. * Released under the MIT License. */ function isObject$3(o2) { return Object.prototype.toString.call(o2) === "[object Object]"; } function isPlainObject$1(o2) { var ctor, prot; if (isObject$3(o2) === false) return false; ctor = o2.constructor; if (ctor === void 0) return true; prot = ctor.prototype; if (isObject$3(prot) === false) return false; if (prot.hasOwnProperty("isPrototypeOf") === false) { return false; } return true; } function t$1() { return t$1 = Object.assign ? Object.assign.bind() : function(e2) { for (var t2 = 1; t2 < arguments.length; t2++) { var r2 = arguments[t2]; for (var n2 in r2) Object.prototype.hasOwnProperty.call(r2, n2) && (e2[n2] = r2[n2]); } return e2; }, t$1.apply(this, arguments); } function r$1(e2, t2) { if (null == e2) return {}; var r2, n2, i2 = {}, o2 = Object.keys(e2); for (n2 = 0; n2 < o2.length; n2++) t2.indexOf(r2 = o2[n2]) >= 0 || (i2[r2] = e2[r2]); return i2; } const n$1 = { silent: false, logLevel: "warn" }, i$1 = ["validator"], o$1 = Object.prototype, a$1 = o$1.toString, s$1 = o$1.hasOwnProperty, u$1 = /^\s*function (\w+)/; function l$1(e2) { var t2; const r2 = null !== (t2 = null == e2 ? void 0 : e2.type) && void 0 !== t2 ? t2 : e2; if (r2) { const e3 = r2.toString().match(u$1); return e3 ? e3[1] : ""; } return ""; } const c$1 = isPlainObject$1, f$1 = (e2) => e2; let d$1 = f$1; if ("production" !== process.env.NODE_ENV) { const e2 = "undefined" != typeof console; d$1 = e2 ? function(e3, t2 = n$1.logLevel) { false === n$1.silent && console[t2](`[VueTypes warn]: ${e3}`); } : f$1; } const p$1 = (e2, t2) => s$1.call(e2, t2), y$1 = Number.isInteger || function(e2) { return "number" == typeof e2 && isFinite(e2) && Math.floor(e2) === e2; }, v$1 = Array.isArray || function(e2) { return "[object Array]" === a$1.call(e2); }, h$1 = (e2) => "[object Function]" === a$1.call(e2), b$1 = (e2) => c$1(e2) && p$1(e2, "_vueTypes_name"), g$1 = (e2) => c$1(e2) && (p$1(e2, "type") || ["_vueTypes_name", "validator", "default", "required"].some((t2) => p$1(e2, t2))); function O$1(e2, t2) { return Object.defineProperty(e2.bind(t2), "__original", { value: e2 }); } function m$1(e2, t2, r2 = false) { let n2, i2 = true, o2 = ""; n2 = c$1(e2) ? e2 : { type: e2 }; const a2 = b$1(n2) ? n2._vueTypes_name + " - " : ""; if (g$1(n2) && null !== n2.type) { if (void 0 === n2.type || true === n2.type) return i2; if (!n2.required && void 0 === t2) return i2; v$1(n2.type) ? (i2 = n2.type.some((e3) => true === m$1(e3, t2, true)), o2 = n2.type.map((e3) => l$1(e3)).join(" or ")) : (o2 = l$1(n2), i2 = "Array" === o2 ? v$1(t2) : "Object" === o2 ? c$1(t2) : "String" === o2 || "Number" === o2 || "Boolean" === o2 || "Function" === o2 ? function(e3) { if (null == e3) return ""; const t3 = e3.constructor.toString().match(u$1); return t3 ? t3[1] : ""; }(t2) === o2 : t2 instanceof n2.type); } if (!i2) { const e3 = `${a2}value "${t2}" should be of type "${o2}"`; return false === r2 ? (d$1(e3), false) : e3; } if (p$1(n2, "validator") && h$1(n2.validator)) { const e3 = d$1, o3 = []; if (d$1 = (e4) => { o3.push(e4); }, i2 = n2.validator(t2), d$1 = e3, !i2) { const e4 = (o3.length > 1 ? "* " : "") + o3.join("\n* "); return o3.length = 0, false === r2 ? (d$1(e4), i2) : e4; } } return i2; } function j$1(e2, t2) { const r2 = Object.defineProperties(t2, { _vueTypes_name: { value: e2, writable: true }, isRequired: { get() { return this.required = true, this; } }, def: { value(e3) { return void 0 === e3 ? (p$1(this, "default") && delete this.default, this) : h$1(e3) || true === m$1(this, e3, true) ? (this.default = v$1(e3) ? () => [...e3] : c$1(e3) ? () => Object.assign({}, e3) : e3, this) : (d$1(`${this._vueTypes_name} - invalid default value: "${e3}"`), this); } } }), { validator: n2 } = r2; return h$1(n2) && (r2.validator = O$1(n2, r2)), r2; } function _$1(e2, t2) { const r2 = j$1(e2, t2); return Object.defineProperty(r2, "validate", { value(e3) { return h$1(this.validator) && d$1(`${this._vueTypes_name} - calling .validate() will overwrite the current custom validator function. Validator info: ${JSON.stringify(this)}`), this.validator = O$1(e3, this), this; } }); } function T$1(e2, t2, n2) { const o2 = function(e3) { const t3 = {}; return Object.getOwnPropertyNames(e3).forEach((r2) => { t3[r2] = Object.getOwnPropertyDescriptor(e3, r2); }), Object.defineProperties({}, t3); }(t2); if (o2._vueTypes_name = e2, !c$1(n2)) return o2; const { validator: a2 } = n2, s2 = r$1(n2, i$1); if (h$1(a2)) { let { validator: e3 } = o2; e3 && (e3 = null !== (l2 = (u2 = e3).__original) && void 0 !== l2 ? l2 : u2), o2.validator = O$1(e3 ? function(t3) { return e3.call(this, t3) && a2.call(this, t3); } : a2, o2); } var u2, l2; return Object.assign(o2, s2); } function $$1(e2) { return e2.replace(/^(?!\s*$)/gm, " "); } const w$1 = () => _$1("any", {}), P$1 = () => _$1("function", { type: Function }), x$1 = () => _$1("boolean", { type: Boolean }), E$1 = () => _$1("string", { type: String }), N$1 = () => _$1("number", { type: Number }), q$1 = () => _$1("array", { type: Array }), A$1 = () => _$1("object", { type: Object }), V$1 = () => j$1("integer", { type: Number, validator: (e2) => y$1(e2) }), S$1 = () => j$1("symbol", { validator: (e2) => "symbol" == typeof e2 }); function D$1(e2, t2 = "custom validation failed") { if ("function" != typeof e2) throw new TypeError("[VueTypes error]: You must provide a function as argument"); return j$1(e2.name || "<>", { type: null, validator(r2) { const n2 = e2(r2); return n2 || d$1(`${this._vueTypes_name} - ${t2}`), n2; } }); } function L$1(e2) { if (!v$1(e2)) throw new TypeError("[VueTypes error]: You must provide an array as argument."); const t2 = `oneOf - value should be one of "${e2.join('", "')}".`, r2 = e2.reduce((e3, t3) => { if (null != t3) { const r3 = t3.constructor; -1 === e3.indexOf(r3) && e3.push(r3); } return e3; }, []); return j$1("oneOf", { type: r2.length > 0 ? r2 : void 0, validator(r3) { const n2 = -1 !== e2.indexOf(r3); return n2 || d$1(t2), n2; } }); } function F$1(e2) { if (!v$1(e2)) throw new TypeError("[VueTypes error]: You must provide an array as argument"); let t2 = false, r2 = []; for (let n3 = 0; n3 < e2.length; n3 += 1) { const i2 = e2[n3]; if (g$1(i2)) { if (b$1(i2) && "oneOf" === i2._vueTypes_name && i2.type) { r2 = r2.concat(i2.type); continue; } if (h$1(i2.validator) && (t2 = true), true === i2.type || !i2.type) { d$1('oneOfType - invalid usage of "true" or "null" as types.'); continue; } r2 = r2.concat(i2.type); } else r2.push(i2); } r2 = r2.filter((e3, t3) => r2.indexOf(e3) === t3); const n2 = r2.length > 0 ? r2 : null; return j$1("oneOfType", t2 ? { type: n2, validator(t3) { const r3 = [], n3 = e2.some((e3) => { const n4 = m$1(b$1(e3) && "oneOf" === e3._vueTypes_name ? e3.type || null : e3, t3, true); return "string" == typeof n4 && r3.push(n4), true === n4; }); return n3 || d$1(`oneOfType - provided value does not match any of the ${r3.length} passed-in validators: ${$$1(r3.join("\n"))}`), n3; } } : { type: n2 }); } function Y$1(e2) { return j$1("arrayOf", { type: Array, validator(t2) { let r2 = ""; const n2 = t2.every((t3) => (r2 = m$1(e2, t3, true), true === r2)); return n2 || d$1(`arrayOf - value validation error: ${$$1(r2)}`), n2; } }); } function B$1(e2) { return j$1("instanceOf", { type: e2 }); } function I$1(e2) { return j$1("objectOf", { type: Object, validator(t2) { let r2 = ""; const n2 = Object.keys(t2).every((n3) => (r2 = m$1(e2, t2[n3], true), true === r2)); return n2 || d$1(`objectOf - value validation error: ${$$1(r2)}`), n2; } }); } function J$1(e2) { const t2 = Object.keys(e2), r2 = t2.filter((t3) => { var r3; return !(null === (r3 = e2[t3]) || void 0 === r3 || !r3.required); }), n2 = j$1("shape", { type: Object, validator(n3) { if (!c$1(n3)) return false; const i2 = Object.keys(n3); if (r2.length > 0 && r2.some((e3) => -1 === i2.indexOf(e3))) { const e3 = r2.filter((e4) => -1 === i2.indexOf(e4)); return d$1(1 === e3.length ? `shape - required property "${e3[0]}" is not defined.` : `shape - required properties "${e3.join('", "')}" are not defined.`), false; } return i2.every((r3) => { if (-1 === t2.indexOf(r3)) return true === this._vueTypes_isLoose || (d$1(`shape - shape definition does not include a "${r3}" property. Allowed keys: "${t2.join('", "')}".`), false); const i3 = m$1(e2[r3], n3[r3], true); return "string" == typeof i3 && d$1(`shape - "${r3}" property validation error: ${$$1(i3)}`), true === i3; }); } }); return Object.defineProperty(n2, "_vueTypes_isLoose", { writable: true, value: false }), Object.defineProperty(n2, "loose", { get() { return this._vueTypes_isLoose = true, this; } }), n2; } const M$1 = ["name", "validate", "getter"], R$1 = /* @__PURE__ */ (() => { var e2; return (e2 = class { static get any() { return w$1(); } static get func() { return P$1().def(this.defaults.func); } static get bool() { return x$1().def(this.defaults.bool); } static get string() { return E$1().def(this.defaults.string); } static get number() { return N$1().def(this.defaults.number); } static get array() { return q$1().def(this.defaults.array); } static get object() { return A$1().def(this.defaults.object); } static get integer() { return V$1().def(this.defaults.integer); } static get symbol() { return S$1(); } static get nullable() { return { type: null }; } static extend(e3) { if (v$1(e3)) return e3.forEach((e4) => this.extend(e4)), this; const { name: t2, validate: n2 = false, getter: i2 = false } = e3, o2 = r$1(e3, M$1); if (p$1(this, t2)) throw new TypeError(`[VueTypes error]: Type "${t2}" already defined`); const { type: a2 } = o2; if (b$1(a2)) return delete o2.type, Object.defineProperty(this, t2, i2 ? { get: () => T$1(t2, a2, o2) } : { value(...e4) { const r2 = T$1(t2, a2, o2); return r2.validator && (r2.validator = r2.validator.bind(r2, ...e4)), r2; } }); let s2; return s2 = i2 ? { get() { const e4 = Object.assign({}, o2); return n2 ? _$1(t2, e4) : j$1(t2, e4); }, enumerable: true } : { value(...e4) { const r2 = Object.assign({}, o2); let i3; return i3 = n2 ? _$1(t2, r2) : j$1(t2, r2), r2.validator && (i3.validator = r2.validator.bind(i3, ...e4)), i3; }, enumerable: true }, Object.defineProperty(this, t2, s2); } }).defaults = {}, e2.sensibleDefaults = void 0, e2.config = n$1, e2.custom = D$1, e2.oneOf = L$1, e2.instanceOf = B$1, e2.oneOfType = F$1, e2.arrayOf = Y$1, e2.objectOf = I$1, e2.shape = J$1, e2.utils = { validate: (e3, t2) => true === m$1(t2, e3, true), toType: (e3, t2, r2 = false) => r2 ? _$1(e3, t2) : j$1(e3, t2) }, e2; })(); function z$1(e2 = { func: () => { }, bool: true, string: "", number: 0, array: () => [], object: () => ({}), integer: 0 }) { var r2; return (r2 = class extends R$1 { static get sensibleDefaults() { return t$1({}, this.defaults); } static set sensibleDefaults(r3) { this.defaults = false !== r3 ? t$1({}, true !== r3 ? r3 : e2) : {}; } }).defaults = t$1({}, e2), r2; } class C$1 extends z$1() { } const PropTypes$1 = z$1({ func: void 0, bool: void 0, string: void 0, number: void 0, object: void 0, integer: void 0 }); PropTypes$1.extend([ { name: "looseBool", getter: true, type: Boolean, default: void 0 }, { name: "style", getter: true, type: [String, Object], default: void 0 }, { name: "VNodeChild", getter: true, type: void 0 } ]); const definePropType$1 = (val) => val; const SCOPE = "utils/style"; function addUnit(value7, defaultUnit = "px") { if (!value7) return ""; if (isNumber$1(value7) || isStringNumber(value7)) { return `${value7}${defaultUnit}`; } else if (isString$2(value7)) { return value7; } debugWarn(SCOPE, "binding value must be a string or number"); } const DEFAULT_CONFIG = { id: "id", children: "children", pid: "pid" }; const getConfig = (config) => Object.assign({}, DEFAULT_CONFIG, config); function treeToList(tree, config = {}) { config = getConfig(config); const { children } = config; const result = [...tree]; for (let i2 = 0; i2 < result.length; i2++) { if (!result[i2][children]) continue; result.splice(i2 + 1, 0, ...result[i2][children]); } return result; } function findNode(tree, func, config = {}) { config = getConfig(config); const { children } = config; const list2 = [...tree]; for (const node of list2) { if (func(node)) return node; node[children] && list2.push(...node[children]); } return null; } function findNodeAll(tree, func, config = {}) { config = getConfig(config); const { children } = config; const list2 = [...tree]; const result = []; for (const node of list2) { func(node) && result.push(node); node[children] && list2.push(...node[children]); } return result; } function filter(tree, func, config = {}) { config = getConfig(config); const children = config.children; function listFilter(list2) { return list2.map((node) => ({ ...node })).filter((node) => { node[children] = node[children] && listFilter(node[children]); return func(node) || node[children] && node[children].length; }); } return listFilter(tree); } function treeMap(treeData, opt) { return treeData.map((item) => treeMapEach(item, opt)); } function treeMapEach(data17, { children = "children", conversion }) { const haveChildren = Array.isArray(data17[children]) && data17[children].length > 0; const conversionData = conversion(data17) || {}; if (haveChildren) { return { ...conversionData, [children]: data17[children].map( (i2) => treeMapEach(i2, { children, conversion }) ) }; } else { return { ...conversionData }; } } const hexList = []; for (let i2 = 0; i2 <= 15; i2++) { hexList[i2] = i2.toString(16); } function buildUUID() { let uuid2 = ""; for (let i2 = 1; i2 <= 36; i2++) { if (i2 === 9 || i2 === 14 || i2 === 19 || i2 === 24) { uuid2 += "-"; } else if (i2 === 15) { uuid2 += 4; } else if (i2 === 20) { uuid2 += hexList[Math.random() * 4 | 8]; } else { uuid2 += hexList[Math.random() * 16 | 0]; } } return uuid2.replace(/-/g, ""); } function getSlot$2(slots, slot = "default", data17) { if (!slots || !Reflect.has(slots, slot)) { return null; } if (!isFunction$6(slots[slot])) { console.error(`${slot} is not a function!`); return null; } const slotFn = slots[slot]; if (!slotFn) return null; return slotFn(data17); } function isEmptyElement$2(c2) { return c2 && (c2.type === Comment || c2.type === Fragment && c2.children.length === 0 || c2.type === Text && c2.children.trim() === ""); } const isValid$4 = (value7) => { return value7 !== void 0 && value7 !== null && value7 !== ""; }; function isValidElement$1(element) { if (Array.isArray(element) && element.length === 1) { element = element[0]; } return element && element.__v_isVNode && typeof element.type !== "symbol"; } const flattenChildren$2 = (children = [], filterEmpty2 = true) => { const temp = Array.isArray(children) ? children : [children]; const res = []; temp.forEach((child) => { if (Array.isArray(child)) { res.push(...flattenChildren$2(child, filterEmpty2)); } else if (child && child.type === Fragment) { res.push(...flattenChildren$2(child.children, filterEmpty2)); } else if (child && isVNode(child)) { if (filterEmpty2 && !isEmptyElement$2(child)) { res.push(child); } else if (!filterEmpty2) { res.push(child); } } else if (isValid$4(child)) { res.push(child); } }); return res; }; function getPopupContainer(node) { var _a2; return (_a2 = node == null ? void 0 : node.parentNode) != null ? _a2 : document.body; } function getBoundingClientRect(element) { if (!element || !element.getBoundingClientRect) { return 0; } return element.getBoundingClientRect(); } function trim(string) { return (string || "").replace(/^[\s\uFEFF]+|[\s\uFEFF]+$/g, ""); } function hasClass$1(el, cls) { if (!el || !cls) return false; if (cls.indexOf(" ") !== -1) throw new Error("className should not contain space."); if (el.classList) { return el.classList.contains(cls); } else { return (" " + el.className + " ").indexOf(" " + cls + " ") > -1; } } function addClass(el, cls) { if (!el) return; let curClass = el.className; const classes3 = (cls || "").split(" "); for (let i2 = 0, j2 = classes3.length; i2 < j2; i2++) { const clsName = classes3[i2]; if (!clsName) continue; if (el.classList) { el.classList.add(clsName); } else if (!hasClass$1(el, clsName)) { curClass += " " + clsName; } } if (!el.classList) { el.className = curClass; } } function removeClass(el, cls) { if (!el || !cls) return; const classes3 = cls.split(" "); let curClass = " " + el.className + " "; for (let i2 = 0, j2 = classes3.length; i2 < j2; i2++) { const clsName = classes3[i2]; if (!clsName) continue; if (el.classList) { el.classList.remove(clsName); } else if (hasClass$1(el, clsName)) { curClass = curClass.replace(" " + clsName + " ", " "); } } if (!el.classList) { el.className = trim(curClass); } } function getViewportOffset(element) { const doc = document.documentElement; const docScrollLeft = doc.scrollLeft; const docScrollTop = doc.scrollTop; const docClientLeft = doc.clientLeft; const docClientTop = doc.clientTop; const pageXOffset = window.pageXOffset; const pageYOffset = window.pageYOffset; const box = getBoundingClientRect(element); const { left: retLeft, top: rectTop, width: rectWidth, height: rectHeight } = box; const scrollLeft2 = (pageXOffset || docScrollLeft) - (docClientLeft || 0); const scrollTop2 = (pageYOffset || docScrollTop) - (docClientTop || 0); const offsetLeft = retLeft + pageXOffset; const offsetTop = rectTop + pageYOffset; const left = offsetLeft - scrollLeft2; const top = offsetTop - scrollTop2; const clientWidth = window.document.documentElement.clientWidth; const clientHeight = window.document.documentElement.clientHeight; return { left, top, right: clientWidth - rectWidth - left, bottom: clientHeight - rectHeight - top, rightIncludeBody: clientWidth - left, bottomIncludeBody: clientHeight - top }; } var MapShim = function() { if (typeof Map !== "undefined") { return Map; } function getIndex(arr, key2) { var result = -1; arr.some(function(entry, index2) { if (entry[0] === key2) { result = index2; return true; } return false; }); return result; } return function() { function class_1() { this.__entries__ = []; } Object.defineProperty(class_1.prototype, "size", { get: function() { return this.__entries__.length; }, enumerable: true, configurable: true }); class_1.prototype.get = function(key2) { var index2 = getIndex(this.__entries__, key2); var entry = this.__entries__[index2]; return entry && entry[1]; }; class_1.prototype.set = function(key2, value7) { var index2 = getIndex(this.__entries__, key2); if (~index2) { this.__entries__[index2][1] = value7; } else { this.__entries__.push([key2, value7]); } }; class_1.prototype.delete = function(key2) { var entries2 = this.__entries__; var index2 = getIndex(entries2, key2); if (~index2) { entries2.splice(index2, 1); } }; class_1.prototype.has = function(key2) { return !!~getIndex(this.__entries__, key2); }; class_1.prototype.clear = function() { this.__entries__.splice(0); }; class_1.prototype.forEach = function(callback, ctx) { if (ctx === void 0) { ctx = null; } for (var _i = 0, _a2 = this.__entries__; _i < _a2.length; _i++) { var entry = _a2[_i]; callback.call(ctx, entry[1], entry[0]); } }; return class_1; }(); }(); var isBrowser$1 = typeof window !== "undefined" && typeof document !== "undefined" && window.document === document; var global$1 = function() { if (typeof global !== "undefined" && global.Math === Math) { return global; } if (typeof self !== "undefined" && self.Math === Math) { return self; } if (typeof window !== "undefined" && window.Math === Math) { return window; } return Function("return this")(); }(); var requestAnimationFrame$1 = function() { if (typeof requestAnimationFrame === "function") { return requestAnimationFrame.bind(global$1); } return function(callback) { return setTimeout(function() { return callback(Date.now()); }, 1e3 / 60); }; }(); var trailingTimeout = 2; function throttle(callback, delay) { var leadingCall = false, trailingCall = false, lastCallTime = 0; function resolvePending() { if (leadingCall) { leadingCall = false; callback(); } if (trailingCall) { proxy(); } } function timeoutCallback() { requestAnimationFrame$1(resolvePending); } function proxy() { var timeStamp = Date.now(); if (leadingCall) { if (timeStamp - lastCallTime < trailingTimeout) { return; } trailingCall = true; } else { leadingCall = true; trailingCall = false; setTimeout(timeoutCallback, delay); } lastCallTime = timeStamp; } return proxy; } var REFRESH_DELAY = 20; var transitionKeys = ["top", "right", "bottom", "left", "width", "height", "size", "weight"]; var mutationObserverSupported = typeof MutationObserver !== "undefined"; var ResizeObserverController = function() { function ResizeObserverController2() { this.connected_ = false; this.mutationEventsAdded_ = false; this.mutationsObserver_ = null; this.observers_ = []; this.onTransitionEnd_ = this.onTransitionEnd_.bind(this); this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY); } ResizeObserverController2.prototype.addObserver = function(observer) { if (!~this.observers_.indexOf(observer)) { this.observers_.push(observer); } if (!this.connected_) { this.connect_(); } }; ResizeObserverController2.prototype.removeObserver = function(observer) { var observers2 = this.observers_; var index2 = observers2.indexOf(observer); if (~index2) { observers2.splice(index2, 1); } if (!observers2.length && this.connected_) { this.disconnect_(); } }; ResizeObserverController2.prototype.refresh = function() { var changesDetected = this.updateObservers_(); if (changesDetected) { this.refresh(); } }; ResizeObserverController2.prototype.updateObservers_ = function() { var activeObservers = this.observers_.filter(function(observer) { return observer.gatherActive(), observer.hasActive(); }); activeObservers.forEach(function(observer) { return observer.broadcastActive(); }); return activeObservers.length > 0; }; ResizeObserverController2.prototype.connect_ = function() { if (!isBrowser$1 || this.connected_) { return; } document.addEventListener("transitionend", this.onTransitionEnd_); window.addEventListener("resize", this.refresh); if (mutationObserverSupported) { this.mutationsObserver_ = new MutationObserver(this.refresh); this.mutationsObserver_.observe(document, { attributes: true, childList: true, characterData: true, subtree: true }); } else { document.addEventListener("DOMSubtreeModified", this.refresh); this.mutationEventsAdded_ = true; } this.connected_ = true; }; ResizeObserverController2.prototype.disconnect_ = function() { if (!isBrowser$1 || !this.connected_) { return; } document.removeEventListener("transitionend", this.onTransitionEnd_); window.removeEventListener("resize", this.refresh); if (this.mutationsObserver_) { this.mutationsObserver_.disconnect(); } if (this.mutationEventsAdded_) { document.removeEventListener("DOMSubtreeModified", this.refresh); } this.mutationsObserver_ = null; this.mutationEventsAdded_ = false; this.connected_ = false; }; ResizeObserverController2.prototype.onTransitionEnd_ = function(_a2) { var _b = _a2.propertyName, propertyName = _b === void 0 ? "" : _b; var isReflowProperty = transitionKeys.some(function(key2) { return !!~propertyName.indexOf(key2); }); if (isReflowProperty) { this.refresh(); } }; ResizeObserverController2.getInstance = function() { if (!this.instance_) { this.instance_ = new ResizeObserverController2(); } return this.instance_; }; ResizeObserverController2.instance_ = null; return ResizeObserverController2; }(); var defineConfigurable = function(target, props2) { for (var _i = 0, _a2 = Object.keys(props2); _i < _a2.length; _i++) { var key2 = _a2[_i]; Object.defineProperty(target, key2, { value: props2[key2], enumerable: false, writable: false, configurable: true }); } return target; }; var getWindowOf = function(target) { var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView; return ownerGlobal || global$1; }; var emptyRect = createRectInit(0, 0, 0, 0); function toFloat(value7) { return parseFloat(value7) || 0; } function getBordersSize(styles) { var positions = []; for (var _i = 1; _i < arguments.length; _i++) { positions[_i - 1] = arguments[_i]; } return positions.reduce(function(size, position) { var value7 = styles["border-" + position + "-width"]; return size + toFloat(value7); }, 0); } function getPaddings(styles) { var positions = ["top", "right", "bottom", "left"]; var paddings = {}; for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) { var position = positions_1[_i]; var value7 = styles["padding-" + position]; paddings[position] = toFloat(value7); } return paddings; } function getSVGContentRect(target) { var bbox = target.getBBox(); return createRectInit(0, 0, bbox.width, bbox.height); } function getHTMLElementContentRect(target) { var clientWidth = target.clientWidth, clientHeight = target.clientHeight; if (!clientWidth && !clientHeight) { return emptyRect; } var styles = getWindowOf(target).getComputedStyle(target); var paddings = getPaddings(styles); var horizPad = paddings.left + paddings.right; var vertPad = paddings.top + paddings.bottom; var width = toFloat(styles.width), height = toFloat(styles.height); if (styles.boxSizing === "border-box") { if (Math.round(width + horizPad) !== clientWidth) { width -= getBordersSize(styles, "left", "right") + horizPad; } if (Math.round(height + vertPad) !== clientHeight) { height -= getBordersSize(styles, "top", "bottom") + vertPad; } } if (!isDocumentElement(target)) { var vertScrollbar = Math.round(width + horizPad) - clientWidth; var horizScrollbar = Math.round(height + vertPad) - clientHeight; if (Math.abs(vertScrollbar) !== 1) { width -= vertScrollbar; } if (Math.abs(horizScrollbar) !== 1) { height -= horizScrollbar; } } return createRectInit(paddings.left, paddings.top, width, height); } var isSVGGraphicsElement = function() { if (typeof SVGGraphicsElement !== "undefined") { return function(target) { return target instanceof getWindowOf(target).SVGGraphicsElement; }; } return function(target) { return target instanceof getWindowOf(target).SVGElement && typeof target.getBBox === "function"; }; }(); function isDocumentElement(target) { return target === getWindowOf(target).document.documentElement; } function getContentRect(target) { if (!isBrowser$1) { return emptyRect; } if (isSVGGraphicsElement(target)) { return getSVGContentRect(target); } return getHTMLElementContentRect(target); } function createReadOnlyRect(_a2) { var x2 = _a2.x, y2 = _a2.y, width = _a2.width, height = _a2.height; var Constr = typeof DOMRectReadOnly !== "undefined" ? DOMRectReadOnly : Object; var rect = Object.create(Constr.prototype); defineConfigurable(rect, { x: x2, y: y2, width, height, top: y2, right: x2 + width, bottom: height + y2, left: x2 }); return rect; } function createRectInit(x2, y2, width, height) { return { x: x2, y: y2, width, height }; } var ResizeObservation = function() { function ResizeObservation2(target) { this.broadcastWidth = 0; this.broadcastHeight = 0; this.contentRect_ = createRectInit(0, 0, 0, 0); this.target = target; } ResizeObservation2.prototype.isActive = function() { var rect = getContentRect(this.target); this.contentRect_ = rect; return rect.width !== this.broadcastWidth || rect.height !== this.broadcastHeight; }; ResizeObservation2.prototype.broadcastRect = function() { var rect = this.contentRect_; this.broadcastWidth = rect.width; this.broadcastHeight = rect.height; return rect; }; return ResizeObservation2; }(); var ResizeObserverEntry = function() { function ResizeObserverEntry2(target, rectInit) { var contentRect = createReadOnlyRect(rectInit); defineConfigurable(this, { target, contentRect }); } return ResizeObserverEntry2; }(); var ResizeObserverSPI = function() { function ResizeObserverSPI2(callback, controller, callbackCtx) { this.activeObservations_ = []; this.observations_ = new MapShim(); if (typeof callback !== "function") { throw new TypeError("The callback provided as parameter 1 is not a function."); } this.callback_ = callback; this.controller_ = controller; this.callbackCtx_ = callbackCtx; } ResizeObserverSPI2.prototype.observe = function(target) { if (!arguments.length) { throw new TypeError("1 argument required, but only 0 present."); } if (typeof Element === "undefined" || !(Element instanceof Object)) { return; } if (!(target instanceof getWindowOf(target).Element)) { throw new TypeError('parameter 1 is not of type "Element".'); } var observations = this.observations_; if (observations.has(target)) { return; } observations.set(target, new ResizeObservation(target)); this.controller_.addObserver(this); this.controller_.refresh(); }; ResizeObserverSPI2.prototype.unobserve = function(target) { if (!arguments.length) { throw new TypeError("1 argument required, but only 0 present."); } if (typeof Element === "undefined" || !(Element instanceof Object)) { return; } if (!(target instanceof getWindowOf(target).Element)) { throw new TypeError('parameter 1 is not of type "Element".'); } var observations = this.observations_; if (!observations.has(target)) { return; } observations.delete(target); if (!observations.size) { this.controller_.removeObserver(this); } }; ResizeObserverSPI2.prototype.disconnect = function() { this.clearActive(); this.observations_.clear(); this.controller_.removeObserver(this); }; ResizeObserverSPI2.prototype.gatherActive = function() { var _this = this; this.clearActive(); this.observations_.forEach(function(observation) { if (observation.isActive()) { _this.activeObservations_.push(observation); } }); }; ResizeObserverSPI2.prototype.broadcastActive = function() { if (!this.hasActive()) { return; } var ctx = this.callbackCtx_; var entries2 = this.activeObservations_.map(function(observation) { return new ResizeObserverEntry(observation.target, observation.broadcastRect()); }); this.callback_.call(ctx, entries2, ctx); this.clearActive(); }; ResizeObserverSPI2.prototype.clearActive = function() { this.activeObservations_.splice(0); }; ResizeObserverSPI2.prototype.hasActive = function() { return this.activeObservations_.length > 0; }; return ResizeObserverSPI2; }(); var observers = typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : new MapShim(); var ResizeObserver$2 = function() { function ResizeObserver2(callback) { if (!(this instanceof ResizeObserver2)) { throw new TypeError("Cannot call a class as a function."); } if (!arguments.length) { throw new TypeError("1 argument required, but only 0 present."); } var controller = ResizeObserverController.getInstance(); var observer = new ResizeObserverSPI(callback, controller, this); observers.set(this, observer); } return ResizeObserver2; }(); [ "observe", "unobserve", "disconnect" ].forEach(function(method) { ResizeObserver$2.prototype[method] = function() { var _a2; return (_a2 = observers.get(this))[method].apply(_a2, arguments); }; }); var index$a = function() { if (typeof global$1.ResizeObserver !== "undefined") { return global$1.ResizeObserver; } return ResizeObserver$2; }(); function triggerWindowResize() { const event = document.createEvent("HTMLEvents"); event.initEvent("resize", true, true); event.eventType = "message"; window.dispatchEvent(event); } const dateUtil = dayjs; const cloneDeep$e = lodash; const withInstall$1 = (component, alias) => { const comp = component; comp.install = (app) => { app.component(comp.name || comp.displayName, component); if (alias) { app.config.globalProperties[alias] = component; } }; return component; }; function deepMerge(src = {}, target = {}) { let key2; const res = cloneDeep$e(src); for (key2 in target) { res[key2] = isObject$4(res[key2]) ? deepMerge(res[key2], target[key2]) : res[key2] = target[key2]; } return res; } const definePropType = (val) => val; const tuple$2 = (...args) => args; function getDynamicProps(props2) { const ret = {}; Object.keys(props2).map((key2) => { ret[key2] = unref(props2[key2]); }); return ret; } const CHANGE_EVENT$1 = "change"; const basePrefixCls = "sc"; const PAGE_SIZE = 10; const ROW_KEY$2 = "key"; const SELECTION_ROW_KEY = "selectionRowKey"; const FETCH_SETTING = { pageField: "current", sizeField: "size", listField: "records", totalField: "total" }; const props$h = { maxWidth: { type: String, default: "600px" }, showIndex: { type: Boolean }, color: { type: String }, fontSize: { type: String, default: "14px" }, placement: { type: String, default: "right" }, text: { type: [Array, String] } }; const _sfc_main$$ = defineComponent({ name: "BzHelp", components: { Tooltip }, props: props$h, setup(props2, { slots }) { const prefixCls2 = basePrefixCls + "Basic-help"; const getTooltipStyle = computed(() => ({ color: props2.color, fontSize: props2.fontSize })); const getOverlayStyle = computed(() => ({ maxWidth: props2.maxWidth })); function renderTitle() { const textList = props2.text; if (isString$2(textList)) { return createVNode("p", null, [textList]); } if (isArray$4(textList)) { return textList.map((text, index2) => { return createVNode("p", { "key": text }, [createVNode(Fragment, null, [props2.showIndex ? `${index2 + 1}. ` : "", text])]); }); } return null; } return () => { return createVNode(Tooltip, { "overlayClassName": `${prefixCls2}__wrap`, "title": createVNode("div", { "style": unref(getTooltipStyle) }, [renderTitle()]), "autoAdjustOverflow": true, "overlayStyle": unref(getOverlayStyle), "destroyTooltipOnHide": true, "placement": props2.placement, "getPopupContainer": () => getPopupContainer() }, { default: () => [createVNode("span", { "class": prefixCls2 }, [getSlot$2(slots) || createVNode("i", { "class": "sc-ui sc-question-circle" }, null)])] }); }; } }); const ScHelp = withInstall$1(_sfc_main$$); var _a; const isClient$1 = typeof window !== "undefined"; const isFunction$5 = (val) => typeof val === "function"; const isNumber = (val) => typeof val === "number"; const isString$1 = (val) => typeof val === "string"; const noop$5 = () => { }; isClient$1 && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && /iP(ad|hone|od)/.test(window.navigator.userAgent); function resolveUnref(r2) { return typeof r2 === "function" ? r2() : unref(r2); } function createFilterWrapper(filter2, fn) { function wrapper(...args) { filter2(() => fn.apply(this, args), { fn, thisArg: this, args }); } return wrapper; } function debounceFilter(ms, options2 = {}) { let timer; let maxTimer; const filter2 = (invoke) => { const duration = resolveUnref(ms); const maxDuration = resolveUnref(options2.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 filter2; } function identity$1(arg) { return arg; } function tryOnScopeDispose(fn) { if (getCurrentScope()) { onScopeDispose(fn); return true; } return false; } function useDebounceFn(fn, ms = 200, options2 = {}) { return createFilterWrapper(debounceFilter(ms, options2), fn); } var __defProp$7 = Object.defineProperty; var __defProps$5 = Object.defineProperties; var __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors; var __getOwnPropSymbols$9 = Object.getOwnPropertySymbols; var __hasOwnProp$9 = Object.prototype.hasOwnProperty; var __propIsEnum$9 = Object.prototype.propertyIsEnumerable; var __defNormalProp$7 = (obj, key2, value7) => key2 in obj ? __defProp$7(obj, key2, { enumerable: true, configurable: true, writable: true, value: value7 }) : obj[key2] = value7; var __spreadValues$7 = (a2, b2) => { for (var prop in b2 || (b2 = {})) if (__hasOwnProp$9.call(b2, prop)) __defNormalProp$7(a2, prop, b2[prop]); if (__getOwnPropSymbols$9) for (var prop of __getOwnPropSymbols$9(b2)) { if (__propIsEnum$9.call(b2, prop)) __defNormalProp$7(a2, prop, b2[prop]); } return a2; }; var __spreadProps$5 = (a2, b2) => __defProps$5(a2, __getOwnPropDescs$5(b2)); function toRefs(objectRef) { if (!isRef(objectRef)) return toRefs$1(objectRef); const result = Array.isArray(objectRef.value) ? new Array(objectRef.value.length) : {}; for (const key2 in objectRef.value) { result[key2] = customRef(() => ({ get() { return objectRef.value[key2]; }, set(v2) { if (Array.isArray(objectRef.value)) { const copy = [...objectRef.value]; copy[key2] = v2; objectRef.value = copy; } else { const newObject = __spreadProps$5(__spreadValues$7({}, objectRef.value), { [key2]: v2 }); Object.setPrototypeOf(newObject, objectRef.value); objectRef.value = newObject; } } })); } return result; } function tryOnMounted(fn, sync = true) { if (getCurrentInstance()) onMounted(fn); else if (sync) fn(); else nextTick(fn); } function tryOnUnmounted(fn) { if (getCurrentInstance()) onUnmounted(fn); } function useTimeoutFn$1(cb, interval, options2 = {}) { const { immediate = true } = options2; const isPending = ref(false); let timer = null; function clear() { if (timer) { clearTimeout(timer); timer = null; } } function stop() { isPending.value = false; clear(); } function start(...args) { clear(); isPending.value = true; timer = setTimeout(() => { isPending.value = false; timer = null; cb(...args); }, resolveUnref(interval)); } if (immediate) { isPending.value = true; if (isClient$1) start(); } tryOnScopeDispose(stop); return { isPending, start, stop }; } function unrefElement(elRef) { var _a2; const plain = resolveUnref(elRef); return (_a2 = plain == null ? void 0 : plain.$el) != null ? _a2 : plain; } const defaultWindow = isClient$1 ? window : void 0; const defaultNavigator = isClient$1 ? window.navigator : void 0; function useEventListener(...args) { let target; let event; let listener; let options2; if (isString$1(args[0])) { [event, listener, options2] = args; target = defaultWindow; } else { [target, event, listener, options2] = args; } if (!target) return noop$5; let cleanup2 = noop$5; const stopWatch = watch(() => unrefElement(target), (el) => { cleanup2(); if (!el) return; el.addEventListener(event, listener, options2); cleanup2 = () => { el.removeEventListener(event, listener, options2); cleanup2 = noop$5; }; }, { immediate: true, flush: "post" }); const stop = () => { stopWatch(); cleanup2(); }; tryOnScopeDispose(stop); return stop; } function useSupported(callback, sync = false) { const isSupported = ref(); const update = () => isSupported.value = Boolean(callback()); update(); tryOnMounted(update, sync); return isSupported; } function useClipboard(options2 = {}) { const { navigator: navigator2 = defaultNavigator, read = false, source, copiedDuring = 1500, legacy = false } = options2; const events = ["copy", "cut"]; const isClipboardApiSupported = useSupported(() => navigator2 && "clipboard" in navigator2); const isSupported = computed(() => isClipboardApiSupported.value || legacy); const text = ref(""); const copied = ref(false); const timeout = useTimeoutFn$1(() => copied.value = false, copiedDuring); function updateText() { if (isClipboardApiSupported.value) { navigator2.clipboard.readText().then((value7) => { text.value = value7; }); } else { text.value = legacyRead(); } } if (isSupported.value && read) { for (const event of events) useEventListener(event, updateText); } async function copy(value7 = resolveUnref(source)) { if (isSupported.value && value7 != null) { if (isClipboardApiSupported.value) await navigator2.clipboard.writeText(value7); else legacyCopy(value7); text.value = value7; copied.value = true; timeout.start(); } } function legacyCopy(value7) { const ta = document.createElement("textarea"); ta.value = value7 != null ? value7 : ""; ta.style.position = "absolute"; ta.style.opacity = "0"; document.body.appendChild(ta); ta.select(); document.execCommand("copy"); ta.remove(); } function legacyRead() { var _a2, _b, _c; return (_c = (_b = (_a2 = document == null ? void 0 : document.getSelection) == null ? void 0 : _a2.call(document)) == null ? void 0 : _b.toString()) != null ? _c : ""; } return { isSupported, text, copied, copy }; } 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]; function useCssVar(prop, target, { window: window2 = defaultWindow, initialValue = "" } = {}) { const variable = ref(initialValue); const elRef = computed(() => { var _a2; return unrefElement(target) || ((_a2 = window2 == null ? void 0 : window2.document) == null ? void 0 : _a2.documentElement); }); watch([elRef, () => resolveUnref(prop)], ([el, prop2]) => { var _a2; if (el && window2) { const value7 = (_a2 = window2.getComputedStyle(el).getPropertyValue(prop2)) == null ? void 0 : _a2.trim(); variable.value = value7 || initialValue; } }, { immediate: true }); watch(variable, (val) => { var _a2; if ((_a2 = elRef.value) == null ? void 0 : _a2.style) elRef.value.style.setProperty(resolveUnref(prop), val); }); return variable; } var __defProp$e = Object.defineProperty; var __defProps$4 = Object.defineProperties; var __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors; var __getOwnPropSymbols$g = Object.getOwnPropertySymbols; var __hasOwnProp$g = Object.prototype.hasOwnProperty; var __propIsEnum$g = Object.prototype.propertyIsEnumerable; var __defNormalProp$e = (obj, key2, value7) => key2 in obj ? __defProp$e(obj, key2, { enumerable: true, configurable: true, writable: true, value: value7 }) : obj[key2] = value7; var __spreadValues$e = (a2, b2) => { for (var prop in b2 || (b2 = {})) if (__hasOwnProp$g.call(b2, prop)) __defNormalProp$e(a2, prop, b2[prop]); if (__getOwnPropSymbols$g) for (var prop of __getOwnPropSymbols$g(b2)) { if (__propIsEnum$g.call(b2, prop)) __defNormalProp$e(a2, prop, b2[prop]); } return a2; }; var __spreadProps$4 = (a2, b2) => __defProps$4(a2, __getOwnPropDescs$4(b2)); function useDraggable(target, options2 = {}) { var _a2, _b, _c; const draggingElement = (_a2 = options2.draggingElement) != null ? _a2 : defaultWindow; const draggingHandle = (_b = options2.handle) != null ? _b : target; const position = ref((_c = resolveUnref(options2.initialValue)) != null ? _c : { x: 0, y: 0 }); const pressedDelta = ref(); const filterEvent = (e2) => { if (options2.pointerTypes) return options2.pointerTypes.includes(e2.pointerType); return true; }; const handleEvent = (e2) => { if (resolveUnref(options2.preventDefault)) e2.preventDefault(); if (resolveUnref(options2.stopPropagation)) e2.stopPropagation(); }; const start = (e2) => { var _a22; if (!filterEvent(e2)) return; if (resolveUnref(options2.exact) && e2.target !== resolveUnref(target)) return; const rect = resolveUnref(target).getBoundingClientRect(); const pos = { x: e2.pageX - rect.left, y: e2.pageY - rect.top }; if (((_a22 = options2.onStart) == null ? void 0 : _a22.call(options2, pos, e2)) === false) return; pressedDelta.value = pos; handleEvent(e2); }; const move = (e2) => { var _a22; if (!filterEvent(e2)) return; if (!pressedDelta.value) return; position.value = { x: e2.pageX - pressedDelta.value.x, y: e2.pageY - pressedDelta.value.y }; (_a22 = options2.onMove) == null ? void 0 : _a22.call(options2, position.value, e2); handleEvent(e2); }; const end = (e2) => { var _a22; if (!filterEvent(e2)) return; if (!pressedDelta.value) return; pressedDelta.value = void 0; (_a22 = options2.onEnd) == null ? void 0 : _a22.call(options2, position.value, e2); handleEvent(e2); }; if (isClient$1) { useEventListener(draggingHandle, "pointerdown", start, true); useEventListener(draggingElement, "pointermove", move, true); useEventListener(draggingElement, "pointerup", end, true); } return __spreadProps$4(__spreadValues$e({}, toRefs(position)), { position, isDragging: computed(() => !!pressedDelta.value), style: computed(() => `left:${position.value.x}px;top:${position.value.y}px;`) }); } var __getOwnPropSymbols$f = Object.getOwnPropertySymbols; var __hasOwnProp$f = Object.prototype.hasOwnProperty; var __propIsEnum$f = Object.prototype.propertyIsEnumerable; var __objRest$2 = (source, exclude) => { var target = {}; for (var prop in source) if (__hasOwnProp$f.call(source, prop) && exclude.indexOf(prop) < 0) target[prop] = source[prop]; if (source != null && __getOwnPropSymbols$f) for (var prop of __getOwnPropSymbols$f(source)) { if (exclude.indexOf(prop) < 0 && __propIsEnum$f.call(source, prop)) target[prop] = source[prop]; } return target; }; function useResizeObserver(target, callback, options2 = {}) { const _a2 = options2, { window: window2 = defaultWindow } = _a2, observerOptions = __objRest$2(_a2, ["window"]); let observer; const isSupported = useSupported(() => window2 && "ResizeObserver" in window2); const cleanup2 = () => { if (observer) { observer.disconnect(); observer = void 0; } }; const stopWatch = watch(() => unrefElement(target), (el) => { cleanup2(); if (isSupported.value && window2 && el) { observer = new ResizeObserver(callback); observer.observe(el, observerOptions); } }, { immediate: true, flush: "post" }); const stop = () => { cleanup2(); stopWatch(); }; tryOnScopeDispose(stop); return { isSupported, stop }; } var SwipeDirection; (function(SwipeDirection2) { SwipeDirection2["UP"] = "UP"; SwipeDirection2["RIGHT"] = "RIGHT"; SwipeDirection2["DOWN"] = "DOWN"; SwipeDirection2["LEFT"] = "LEFT"; SwipeDirection2["NONE"] = "NONE"; })(SwipeDirection || (SwipeDirection = {})); var __defProp = Object.defineProperty; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key2, value7) => key2 in obj ? __defProp(obj, key2, { enumerable: true, configurable: true, writable: true, value: value7 }) : obj[key2] = value7; 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; }; const _TransitionPresets = { easeInSine: [0.12, 0, 0.39, 0], easeOutSine: [0.61, 1, 0.88, 1], easeInOutSine: [0.37, 0, 0.63, 1], easeInQuad: [0.11, 0, 0.5, 0], easeOutQuad: [0.5, 1, 0.89, 1], easeInOutQuad: [0.45, 0, 0.55, 1], easeInCubic: [0.32, 0, 0.67, 0], easeOutCubic: [0.33, 1, 0.68, 1], easeInOutCubic: [0.65, 0, 0.35, 1], easeInQuart: [0.5, 0, 0.75, 0], easeOutQuart: [0.25, 1, 0.5, 1], easeInOutQuart: [0.76, 0, 0.24, 1], easeInQuint: [0.64, 0, 0.78, 0], easeOutQuint: [0.22, 1, 0.36, 1], easeInOutQuint: [0.83, 0, 0.17, 1], easeInExpo: [0.7, 0, 0.84, 0], easeOutExpo: [0.16, 1, 0.3, 1], easeInOutExpo: [0.87, 0, 0.13, 1], easeInCirc: [0.55, 0, 1, 0.45], easeOutCirc: [0, 0.55, 0.45, 1], easeInOutCirc: [0.85, 0, 0.15, 1], easeInBack: [0.36, 0, 0.66, -0.56], easeOutBack: [0.34, 1.56, 0.64, 1], easeInOutBack: [0.68, -0.6, 0.32, 1.6] }; __spreadValues({ linear: identity$1 }, _TransitionPresets); const stepsEmits = { [CHANGE_EVENT$1]: (newVal, oldVal) => [newVal, oldVal].every(isNumber), "changeIndex": (val) => val }; const __default__$4 = { name: "ScSteps", inheritAttrs: false }; const _sfc_main$_ = /* @__PURE__ */ defineComponent({ ...__default__$4, props: { space: null, direction: { default: "horizontal" }, active: null, alignCenter: { type: Boolean }, simple: { type: Boolean, default: false }, finishStatus: { default: "finish" }, processStatus: { default: "process" } }, emits: stepsEmits, setup(__props, { emit: emit2 }) { const props2 = __props; const steps = ref([]); const currentIndex = ref(-1); watch(steps, () => { steps.value.forEach((instance, index2) => { instance.setIndex(index2); }); }); const setCurrentIndex = (val) => { currentIndex.value = val; emit2("changeIndex", val); }; provide("ScSteps", { props: props2, steps, setCurrentIndex }); watch(() => props2.active, (newVal, oldVal) => { emit2(CHANGE_EVENT$1, newVal, oldVal); }); const prefixCls2 = computed(() => { const className = ["scSteps", "scSteps-" + props2.direction]; if (props2.simple) { className.push("scSteps-simple"); } return className; }); return (_ctx, _cache) => { return openBlock(), createElementBlock("div", { class: normalizeClass(unref(prefixCls2)) }, [ renderSlot(_ctx.$slots, "default") ], 2); }; } }); const _hoisted_1$s = { key: 1, class: /* @__PURE__ */ normalizeClass(["scStep__icon-inner", "success", "sc-ui", "sc-a-Exclude1"]) }; const _hoisted_2$m = { key: 2, class: /* @__PURE__ */ normalizeClass(["scStep__icon-inner", "success", "sc-ui", "sc-a-Union11"]) }; const _hoisted_3$e = { key: 3, class: /* @__PURE__ */ normalizeClass(["scStep__icon-inner"]) }; const _hoisted_4$9 = { key: 4, class: /* @__PURE__ */ normalizeClass(["scStep__icon-inner", "error", "sc-ui", "sc-a-Exclude1"]) }; const _hoisted_5$4 = { key: 0, class: /* @__PURE__ */ normalizeClass(["scStep-arrow"]) }; const _hoisted_6$3 = { key: 0, class: "sc-ui sc-you" }; const _hoisted_7$2 = { key: 1, class: "scStep-line" }; const _hoisted_8$1 = { class: /* @__PURE__ */ normalizeClass(["scStep-info"]) }; const _hoisted_9$1 = { class: /* @__PURE__ */ normalizeClass(["scStep-arrow"]) }; const _hoisted_10$1 = { key: 0, class: "sc-ui sc-you" }; const _hoisted_11$1 = { key: 1, class: "scStep-line" }; const __default__$3 = { name: "ScStep" }; const _sfc_main$Z = /* @__PURE__ */ defineComponent({ ...__default__$3, props: { title: { default: "" }, description: { default: "" }, status: { default: "" }, icon: null, disabled: { type: Boolean, default: false } }, setup(__props) { const props2 = __props; const index2 = ref(-1); const lineStyle = ref({}); const internalStatus = ref(""); const parent2 = inject("ScSteps"); const currentInstance = getCurrentInstance(); onMounted(() => { watch( [ () => parent2.props.active, () => parent2.props.processStatus, () => parent2.props.finishStatus ], ([active]) => { updateStatus(active); }, { immediate: true } ); }); onBeforeUnmount(() => { parent2.steps.value = parent2.steps.value.filter( (instance) => instance.uid !== (currentInstance == null ? void 0 : currentInstance.uid) ); }); const currentStatus = computed(() => { return props2.status || internalStatus.value; }); const prevStatus = computed(() => { const prevStep = parent2.steps.value[index2.value - 1]; return prevStep ? prevStep.currentStatus : "wait"; }); const isCenter = computed(() => { return parent2.props.alignCenter; }); const isVertical = computed(() => { return parent2.props.direction === "vertical"; }); const isSimple = computed(() => { return parent2.props.simple; }); const stepsCount = computed(() => { return parent2.steps.value.length; }); const isLast = computed(() => { var _a2; return ((_a2 = parent2.steps.value[stepsCount.value - 1]) == null ? void 0 : _a2.uid) === (currentInstance == null ? void 0 : currentInstance.uid); }); const space = computed(() => { return isSimple.value ? "" : parent2.props.space; }); const prefixCls2 = computed(() => { const classNames2 = ["scStep"]; if (parent2.props.simple) { classNames2.push("simple"); } else { classNames2.push("is-" + parent2.props.direction); } if (isLast && !space && !isCenter) { classNames2.push("is-flex"); } if (isCenter.value && !isVertical.value && !isSimple.value) { classNames2.push("is-center"); } return classNames2; }); const style = computed(() => { const style2 = { flexBasis: typeof space.value === "number" ? `${space.value}px` : space.value ? space.value : `${100 / (stepsCount.value - (isCenter.value ? 0 : 1))}%` }; if (isVertical.value) return style2; if (isLast.value) { style2.maxWidth = `${100 / stepsCount.value}%`; } return style2; }); const handleClick2 = () => { if (props2.disabled) { return false; } parent2.setCurrentIndex(index2.value); }; const setIndex = (val) => { index2.value = val; }; const calcProgress = (status) => { let step = 100; const style2 = {}; style2.transitionDelay = `${150 * index2.value}ms`; if (status === parent2.props.processStatus) { step = 0; } else if (status === "wait") { step = 0; style2.transitionDelay = `${-150 * index2.value}ms`; } style2.borderWidth = step && !isSimple.value ? "1px" : 0; style2[parent2.props.direction === "vertical" ? "height" : "width"] = `${step}%`; lineStyle.value = ""; }; const updateStatus = (activeIndex) => { if (activeIndex > index2.value) { internalStatus.value = parent2.props.finishStatus; } else if (activeIndex === index2.value && prevStatus.value !== "error") { internalStatus.value = parent2.props.processStatus; } else { internalStatus.value = "wait"; } const prevChild = parent2.steps.value[index2.value - 1]; if (prevChild) prevChild.calcProgress(internalStatus.value); }; const stepItemState = reactive({ uid: computed(() => currentInstance == null ? void 0 : currentInstance.uid), currentStatus, setIndex, calcProgress }); parent2.steps.value = [...parent2.steps.value, stepItemState]; return (_ctx, _cache) => { return openBlock(), createElementBlock("div", { class: normalizeClass(unref(prefixCls2)), style: normalizeStyle(unref(style)), onClick: handleClick2 }, [ createElementVNode("div", { class: normalizeClass(["scStep-head", unref(currentStatus) ? "is-" + unref(currentStatus) + " is-status" : ""]) }, [ createElementVNode("div", { class: normalizeClass(["scStep-icon", props2.icon || _ctx.$slots.icon ? "is-icon" : "is-text"]) }, [ renderSlot(_ctx.$slots, "icon", {}, () => [ props2.icon ? (openBlock(), createElementBlock("i", { key: 0, class: normalizeClass(["scStep__icon-inner", props2.icon]) }, null, 2)) : unref(currentStatus) === "success" ? (openBlock(), createElementBlock("i", _hoisted_1$s)) : unref(currentStatus) === "error" ? (openBlock(), createElementBlock("i", _hoisted_2$m)) : !unref(isSimple) ? (openBlock(), createElementBlock("div", _hoisted_3$e, toDisplayString(index2.value + 1), 1)) : unref(isSimple) ? (openBlock(), createElementBlock("i", _hoisted_4$9)) : createCommentVNode("", true) ]) ], 2), !unref(isSimple) && unref(isVertical) ? (openBlock(), createElementBlock("div", _hoisted_5$4, [ unref(isSimple) ? (openBlock(), createElementBlock("i", _hoisted_6$3)) : !unref(isSimple) && unref(isVertical) ? (openBlock(), createElementBlock("div", _hoisted_7$2)) : createCommentVNode("", true) ])) : createCommentVNode("", true) ], 2), createElementVNode("div", { class: normalizeClass(["scStep-main", unref(currentStatus) ? "is-" + unref(currentStatus) + " is-status" : ""]) }, [ createElementVNode("div", _hoisted_8$1, [ createElementVNode("div", { class: normalizeClass(["scStep-title", unref(currentStatus) ? "is-" + unref(currentStatus) + " is-status" : ""]) }, [ renderSlot(_ctx.$slots, "title", {}, () => [ createTextVNode(toDisplayString(__props.title), 1) ]) ], 2), createElementVNode("div", { class: normalizeClass(["scStep-description", unref(currentStatus) ? "is-" + unref(currentStatus) + " is-status" : ""]) }, [ renderSlot(_ctx.$slots, "description", {}, () => [ createTextVNode(toDisplayString(__props.description), 1) ]) ], 2) ]), createElementVNode("div", _hoisted_9$1, [ unref(isSimple) ? (openBlock(), createElementBlock("i", _hoisted_10$1)) : !unref(isSimple) && !unref(isVertical) ? (openBlock(), createElementBlock("div", _hoisted_11$1)) : createCommentVNode("", true) ]) ], 2) ], 6); }; } }); const ScSteps = withInstall$1(_sfc_main$_); const ScStep = withInstall$1(_sfc_main$Z); const __default__$2 = { name: "ScTabs", inheritAttrs: false }; const _sfc_main$Y = /* @__PURE__ */ defineComponent({ ...__default__$2, props: { type: null, styleMode: { default: "gradient" } }, emits: ["change"], setup(__props, { emit: emit2 }) { var _a2, _b; const props2 = __props; const slots = useSlots(); function parseTabList(children) { return children.map((node) => { if (isValidElement$1(node)) { const props22 = { ...node.props || {} }; for (const [k2, v2] of Object.entries(props22)) { delete props22[k2]; props22[camelize$2(k2)] = v2; } const slots2 = node.children || {}; const key2 = node.key !== void 0 ? node.key : void 0; const { tab = slots2.tab, disabled, forceRender, closable, animated, active, destroyInactiveTabPane } = props22; return { key: key2, ...props22, node, closeIcon: slots2.closeIcon, tab, disabled: disabled === "" || disabled, forceRender: forceRender === "" || forceRender, closable: closable === "" || closable, animated: animated === "" || animated, active: active === "" || active, destroyInactiveTabPane: destroyInactiveTabPane === "" || destroyInactiveTabPane }; } return null; }).filter((tab) => tab); } const tabs = parseTabList(flattenChildren$2((_a2 = slots.default) == null ? void 0 : _a2.call(slots))); const isTransformLeft = ref(false); const prevActiveValue = ref(((_b = tabs[0]) == null ? void 0 : _b.key) || ""); const initClass = ref(true); const className = computed(() => { const classNames2 = props2.styleMode ? [props2.styleMode] : []; return classNames2; }); const handleChange7 = (activeKey) => { const findCurItemIndex = tabs.findIndex((item) => item.key === activeKey); const findPrevItemIndex = tabs.findIndex((item) => item.key === prevActiveValue.value); isTransformLeft.value = findCurItemIndex > findPrevItemIndex; initClass.value = false; nextTick(() => { prevActiveValue.value = activeKey; }); emit2("change", activeKey); }; return (_ctx, _cache) => { return openBlock(), createBlock(unref(Tabs), mergeProps({ ...props2, ..._ctx.$attrs }, { class: [...unref(className)], onChange: handleChange7 }), createSlots({ _: 2 }, [ renderList(Object.keys(_ctx.$slots), (item) => { return { name: item, fn: withCtx((data17) => [ renderSlot(_ctx.$slots, item, normalizeProps(guardReactiveProps(data17 || {}))) ]) }; }) ]), 1040, ["class"]); }; } }); const ScTabs = withInstall$1(_sfc_main$Y); const __default__$1 = { name: "ScRadioGroup", inheritAttrs: false }; const _sfc_main$X = /* @__PURE__ */ defineComponent({ ...__default__$1, props: { styleMode: null, widthSize: null }, setup(__props) { const props2 = __props; const className = computed(() => { return [ props2.styleMode ? props2.styleMode : void 0, props2.widthSize === "large" ? "radio-min-width142" : void 0 ]; }); return (_ctx, _cache) => { return openBlock(), createBlock(unref(RadioGroup), mergeProps({ ...props2, ..._ctx.$attrs }, { class: unref(className) }), createSlots({ _: 2 }, [ renderList(Object.keys(_ctx.$slots), (item) => { return { name: item, fn: withCtx((data17) => [ renderSlot(_ctx.$slots, item, normalizeProps(guardReactiveProps(data17 || {}))) ]) }; }) ]), 1040, ["class"]); }; } }); const _hoisted_1$r = { class: "triggerMultiple-item" }; const _hoisted_2$l = { key: 1, class: "triggerMultiple-item" }; const _hoisted_3$d = { class: "isRadioTooltip" }; const _hoisted_4$8 = { key: 1 }; const __default__ = { name: "ScRadioTooltipGroup", inheritAttrs: false }; const _sfc_main$W = /* @__PURE__ */ defineComponent({ ...__default__, props: { value: { type: [String, Number], default: "" }, options: { type: Array, default: () => [] }, triggerMultiple: { type: Boolean, default: () => { return false; } }, isNotChecked: { type: Boolean, default: () => { return false; } }, radioType: { type: String, default: () => { return "RadioButton"; } }, styleMode: String, widthSize: String }, emits: ["update:value", "change", "customChange"], setup(__props, { emit: emits }) { const props2 = __props; const radioValue = ref(""); watch( () => props2.value, (val) => { radioValue.value = val; emits("update:value", val); }, { immediate: true } ); watch( () => radioValue.value, (val) => { emits("update:value", val); emits("change", val); } ); const handleChange7 = (e2) => { var _a2; const currentItem = props2.options.find((item) => { var _a3; return item.value === ((_a3 = e2 == null ? void 0 : e2.target) == null ? void 0 : _a3.value); }); emits("customChange", (_a2 = e2 == null ? void 0 : e2.target) == null ? void 0 : _a2.value, currentItem); }; const handleClick2 = (item) => { const isFlag = props2.value === item.value; if (props2.triggerMultiple && isFlag && !item.disabled) { emits("update:value", item.value); emits("change", item.value); } }; return (_ctx, _cache) => { return openBlock(), createBlock(_sfc_main$X, mergeProps({ styleMode: "scLine" }, _ctx.$attrs, { value: radioValue.value, "onUpdate:value": _cache[0] || (_cache[0] = ($event) => radioValue.value = $event), onChange: handleChange7, class: [_ctx.$attrs.class, props2.isNotChecked ? "isNotChecked" : "", props2.styleMode, "is" + props2.radioType, props2.triggerMultiple ? "triggerMultiple" : "", props2.widthSize === "large" ? "radio-min-width142" : void 0] }), { default: withCtx(() => [ props2.radioType === "RadioButton" ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(props2.options, (item) => { return openBlock(), createBlock(unref(RadioButton), { key: item.value, value: item.value, disabled: item.disabled, onClick: () => { handleClick2(item); } }, { default: withCtx(() => [ item.tooltipDes ? (openBlock(), createBlock(unref(Tooltip), mergeProps({ key: 0 }, item.toolOptions, { overlayClassName: "scTooltip-white", overlayStyle: {}, destroyTooltipOnHide: "" }), { title: withCtx(() => [ createTextVNode(toDisplayString(item.tooltipDes), 1) ]), default: withCtx(() => [ createElementVNode("span", _hoisted_1$r, toDisplayString(item.label), 1) ]), _: 2 }, 1040)) : (openBlock(), createElementBlock("span", _hoisted_2$l, toDisplayString(item.label), 1)) ]), _: 2 }, 1032, ["value", "disabled", "onClick"]); }), 128)) : (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(props2.options, (item) => { return openBlock(), createBlock(unref(Radio), { key: item.value, value: item.value, disabled: item.disabled, onClick: () => { handleClick2(item); } }, { default: withCtx(() => [ item.tooltipDes ? (openBlock(), createBlock(unref(Tooltip), mergeProps({ key: 0 }, item.toolOptions, { overlayClassName: "scTooltip-white", overlayStyle: {}, destroyTooltipOnHide: "" }), { title: withCtx(() => [ createTextVNode(toDisplayString(item.tooltipDes), 1) ]), default: withCtx(() => [ createElementVNode("span", _hoisted_3$d, toDisplayString(item.label), 1) ]), _: 2 }, 1040)) : (openBlock(), createElementBlock("span", _hoisted_4$8, toDisplayString(item.label), 1)) ]), _: 2 }, 1032, ["value", "disabled", "onClick"]); }), 128)) ]), _: 1 }, 16, ["value", "class"]); }; } }); const ScRadioGroup = withInstall$1(_sfc_main$X); const ScRadioTooltipGroup = withInstall$1(_sfc_main$W); const AlertTypes = tuple$2("success", "info", "warning", "error"); const alertProps = () => ({ type: PropTypes$1.oneOf(AlertTypes), closable: { type: Boolean, default: void 0 }, closeText: PropTypes$1.any, message: PropTypes$1.any, description: PropTypes$1.any, afterClose: Function, showIcon: { type: Boolean, default: void 0 }, prefixCls: String, banner: { type: Boolean, default: void 0 }, icon: PropTypes$1.any, closeIcon: PropTypes$1.any, onClose: Function, textColor: { type: Boolean, default: void 0 }, size: { type: String, validator: (v2) => ["mini", "default", "large"].includes(v2) } }); alertProps(); const _sfc_main$V = defineComponent({ name: "ScAlert", inheritAttrs: false, components: { Alert, ExclamationCircleFilled }, props: alertProps(), setup(props2, { attrs, slots }) { const baseClass = basePrefixCls + "Alert"; const vBind = computed(() => { return { ...props2, ...attrs }; }); const className = computed(() => { const { textColor, size, message: message3 } = props2; return [ baseClass, textColor ? "textColor" : "", size ? baseClass + "--" + size : "", message3 || slots.message ? "" : "notMessage" ]; }); const isShowDefaultErrorIcon = computed(() => { const isTypeError = props2.type === "error"; const isSlotIcon = Object.keys(slots).includes("icon"); return isTypeError && !isSlotIcon; }); return { vBind, className, isShowDefaultErrorIcon }; } }); const _export_sfc = (sfc, props2) => { const target = sfc.__vccOpts || sfc; for (const [key2, val] of props2) { target[key2] = val; } return target; }; function _sfc_render$O(_ctx, _cache, $props, $setup, $data, $options) { const _component_ExclamationCircleFilled = resolveComponent("ExclamationCircleFilled"); const _component_Alert = resolveComponent("Alert"); return openBlock(), createBlock(_component_Alert, mergeProps(_ctx.vBind, { class: _ctx.className }), createSlots({ _: 2 }, [ _ctx.isShowDefaultErrorIcon ? { name: "icon", fn: withCtx(() => [ createVNode(_component_ExclamationCircleFilled) ]) } : void 0, renderList(Object.keys(_ctx.$slots), (item) => { return { name: item, fn: withCtx((data17) => [ renderSlot(_ctx.$slots, item, normalizeProps(guardReactiveProps(data17 || {}))) ]) }; }) ]), 1040, ["class"]); } const scAlert = /* @__PURE__ */ _export_sfc(_sfc_main$V, [["render", _sfc_render$O]]); const ScAlert = withInstall$1(scAlert); function useModalDraggable(modalTitleRef, visibleRef, props2, emits) { const { x: x2, y: y2, isDragging, style, position } = useDraggable(modalTitleRef, props2.value.DragOptions); const startX = ref(0); const startY = ref(0); const startedDrag = ref(false); const transformX = ref(0); const transformY = ref(0); const preTransformX = ref(0); const preTransformY = ref(0); const dragRect = ref({ left: 0, right: 0, top: 0, bottom: 0 }); watch([x2, y2], () => { var _a2; if (!startedDrag.value) { startX.value = x2.value; startY.value = y2.value; const bodyRect = document.body.getBoundingClientRect(); const titleRect = (_a2 = modalTitleRef == null ? void 0 : modalTitleRef.value) == null ? void 0 : _a2.getBoundingClientRect(); dragRect.value.right = bodyRect.width - (titleRect == null ? void 0 : titleRect.width); dragRect.value.bottom = bodyRect.height - (titleRect == null ? void 0 : titleRect.height); preTransformX.value = transformX.value; preTransformY.value = transformY.value; } startedDrag.value = true; }); watch(isDragging, () => { if (!isDragging) { startedDrag.value = false; } }); watchEffect(() => { var _a2, _b, _c, _d; if (startedDrag.value) { transformX.value = preTransformX.value + Math.min(Math.max(dragRect.value.left, x2.value), dragRect.value.right) - startX.value; transformY.value = preTransformY.value + Math.min(Math.max(dragRect.value.top, y2.value), dragRect.value.bottom) - startY.value; if (modalTitleRef.value && props2.value.isDraggable && visibleRef.value) { const modalTitleDom = (_d = (_c = (_b = (_a2 = unref(modalTitleRef)) == null ? void 0 : _a2.parentNode) == null ? void 0 : _b.parentNode) == null ? void 0 : _c.parentNode) == null ? void 0 : _d.parentNode; modalTitleDom.style.transform = `translate(${transformX.value}px, ${transformY.value}px)`; emits("dragChange", { x: x2, y: y2, isDragging, style, position }); } } }); watch(() => unref(visibleRef), (v2) => { if (modalTitleRef.value && props2.value.isDraggable) { x2.value = startX.value; y2.value = startY.value; } }); } const buttonProps$1 = { status: { type: String, validator: (v2) => ["error", "warning", "success", "info"].includes(v2) }, type: { type: String, validator: (v2) => ["primary", "ghost", "dashed", "link", "text", "default", "shadow", "icon"].includes(v2) }, loading: { type: Boolean }, disabled: { type: Boolean }, onClick: { type: Function, default: null }, color: { type: String }, linkHover: { type: Boolean } }; const DEFAULT_EXCLUDE_KEYS = ["class", "style"]; const LISTENER_PREFIX = /^on[A-Z]/; function entries(obj) { return Object.keys(obj).map((key2) => [key2, obj[key2]]); } function useAttrs(params = {}) { const instance = getCurrentInstance(); if (!instance) return {}; const { excludeListeners = false, excludeKeys = [], excludeDefaultKeys = true } = params; const attrs = shallowRef({}); const allExcludeKeys = excludeKeys.concat(excludeDefaultKeys ? DEFAULT_EXCLUDE_KEYS : []); instance.attrs = reactive(instance.attrs); watchEffect(() => { const res = entries(instance.attrs).reduce((acm, [key2, val]) => { if (!allExcludeKeys.includes(key2) && !(excludeListeners && LISTENER_PREFIX.test(key2))) { acm[key2] = val; } return acm; }, {}); attrs.value = res; }); return attrs; } const toRgbaString = (colorObj, n2 = 1e4) => { const { r: r2, g: g2, b: b2, a: a2 = 1 } = colorObj; return `rgba(${r2},${g2},${b2},${Math.floor(a2 * n2) / n2})`; }; const parseHexColor = (color) => { let hex = color.slice(1); let a2 = 1; if (hex.length === 3) { hex = `${hex[0]}${hex[0]}${hex[1]}${hex[1]}${hex[2]}${hex[2]}`; } if (hex.length === 8) { a2 = parseInt(hex.slice(6), 16) / 255; hex = hex.slice(0, 6); } const bigint = parseInt(hex, 16); return { r: bigint >> 16 & 255, g: bigint >> 8 & 255, b: bigint & 255, a: a2 }; }; const parseRgbaColor = (color) => { const arr = color.match(/(\d(\.\d+)?)+/g) || []; const res = arr.map((s2) => parseInt(s2, 10)); return { r: res[0], g: res[1], b: res[2], a: parseFloat(arr[3]) }; }; const parseColorString = (color) => { if (color.startsWith("#")) { return parseHexColor(color); } else if (color.startsWith("rgb")) { return parseRgbaColor(color); } else if (color === "transparent") { return parseHexColor("#00000000"); } throw new Error(`color string error: ${color}`); }; const _sfc_main$U = defineComponent({ name: "ScButton", inheritAttrs: false, props: buttonProps$1, components: { Button: Button$1 }, setup(props2, { slots }) { const attrs = useAttrs({ excludeDefaultKeys: false }); const getButtonClass = computed(() => { const { status, disabled, type: type2, color, linkHover } = props2; return [ basePrefixCls + "button", type2 || status ? "" : "is-default", { [`ant-btn-${status}`]: !!status, [`is-disabled`]: disabled, [`ant-btn-${type2}`]: !!type2 }, linkHover ? "link-hover" : "", color ? "customColor" : "" ]; }); const getBindValue = computed(() => { const { type: type2, loading } = props2; return { ...unref(attrs), ...props2, loading, type: ["shadow", "icon"].includes(type2) ? void 0 : type2, color: void 0 }; }); const varStyle = computed(() => { const { color } = props2; const rgbaColor = color ? parseColorString(color) : ""; const shadowOutColor = rgbaColor ? toRgbaString(Object.assign(rgbaColor, { a: 0.38 })) : ""; const shadowInColor = rgbaColor ? toRgbaString(Object.assign(rgbaColor, { a: 0.5 })) : ""; if (!color) { return {}; } return { "--shadowBgColor": color, "--shadowOutColor": shadowOutColor, "--shadowInColor": shadowInColor }; }); const isIcon = computed(() => { return Object.keys(slots).includes("icon"); }); return { getButtonClass, getBindValue, varStyle, isIcon }; } }); const _hoisted_1$q = { class: "scButton-icon" }; function _sfc_render$N(_ctx, _cache, $props, $setup, $data, $options) { const _component_Button = resolveComponent("Button"); return openBlock(), createBlock(_component_Button, mergeProps(_ctx.getBindValue, { class: _ctx.getButtonClass, onClick: _ctx.onClick, style: { ..._ctx.varStyle } }), createSlots({ default: withCtx((data17) => [ renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps(data17 || {}))) ]), _: 2 }, [ _ctx.isIcon ? { name: "icon", fn: withCtx(() => [ createElementVNode("span", _hoisted_1$q, [ renderSlot(_ctx.$slots, "icon") ]) ]) } : void 0 ]), 1040, ["class", "onClick", "style"]); } const scButton = /* @__PURE__ */ _export_sfc(_sfc_main$U, [["render", _sfc_render$N]]); const ScButton = withInstall$1(scButton); const scrollbarContextKey = Symbol( "scrollbarContextKey" ); const GAP = 4; 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 = () => ({ vertical: Boolean, size: String, move: Number, ratio: { type: Number, required: true }, always: Boolean }); const _sfc_main$T = /* @__PURE__ */ defineComponent({ props: thumbProps(), setup(__props) { const props2 = __props; const COMPONENT_NAME2 = "Thumb"; const scrollbar = inject(scrollbarContextKey); const baseClass = basePrefixCls + "Scrollbar"; if (!scrollbar) throwError(COMPONENT_NAME2, "can not inject scrollbar context"); const instance = ref(); const thumb = ref(); const thumbState = ref({}); const visible2 = ref(false); let cursorDown = false; let cursorLeave = false; let originalOnSelectStart = isClient$1 ? document.onselectstart : null; const bar = computed(() => BAR_MAP[props2.vertical ? "vertical" : "horizontal"]); const thumbStyle = computed( () => renderThumbStyle({ size: props2.size, move: props2.move, bar: bar.value }) ); const offsetRatio = computed( () => instance.value[bar.value.offset] ** 2 / scrollbar.wrapElement[bar.value.scrollSize] / props2.ratio / thumb.value[bar.value.offset] ); const clickThumbHandler = (e2) => { var _a2; e2.stopPropagation(); if (e2.ctrlKey || [1, 2].includes(e2.button)) return; (_a2 = window.getSelection()) == null ? void 0 : _a2.removeAllRanges(); startDrag(e2); const el = e2.currentTarget; if (!el) return; thumbState.value[bar.value.axis] = el[bar.value.offset] - (e2[bar.value.client] - el.getBoundingClientRect()[bar.value.direction]); }; const clickTrackHandler = (e2) => { if (!thumb.value || !instance.value || !scrollbar.wrapElement) return; const offset3 = Math.abs( e2.target.getBoundingClientRect()[bar.value.direction] - e2[bar.value.client] ); const thumbHalf = thumb.value[bar.value.offset] / 2; const thumbPositionPercentage = (offset3 - thumbHalf) * 100 * offsetRatio.value / instance.value[bar.value.offset]; scrollbar.wrapElement[bar.value.scroll] = thumbPositionPercentage * scrollbar.wrapElement[bar.value.scrollSize] / 100; }; const startDrag = (e2) => { e2.stopImmediatePropagation(); cursorDown = true; document.addEventListener("mousemove", mouseMoveDocumentHandler); document.addEventListener("mouseup", mouseUpDocumentHandler); originalOnSelectStart = document.onselectstart; document.onselectstart = () => false; }; const mouseMoveDocumentHandler = (e2) => { if (!instance.value || !thumb.value) return; if (cursorDown === false) return; const prevPage = thumbState.value[bar.value.axis]; if (!prevPage) return; const offset3 = (instance.value.getBoundingClientRect()[bar.value.direction] - e2[bar.value.client]) * -1; const thumbClickPosition = thumb.value[bar.value.offset] - prevPage; const thumbPositionPercentage = (offset3 - 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) visible2.value = false; }; const mouseMoveScrollbarHandler = () => { cursorLeave = false; visible2.value = !!props2.size; }; const mouseLeaveScrollbarHandler = () => { cursorLeave = true; visible2.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 (_ctx, _cache) => { return openBlock(), createBlock(Transition$1, { name: baseClass + "-fade-enter-to" }, { default: withCtx(() => [ withDirectives(createElementVNode("div", { ref_key: "instance", ref: instance, class: normalizeClass([baseClass + "-bar", unref(bar).key ? "is-" + unref(bar).key : ""]), onMousedown: clickTrackHandler }, [ createElementVNode("div", { ref_key: "thumb", ref: thumb, class: normalizeClass([baseClass + "-thumb"]), style: normalizeStyle(unref(thumbStyle)), onMousedown: clickThumbHandler }, null, 38) ], 34), [ [vShow, _ctx.always || visible2.value] ]) ]), _: 1 }, 8, ["name"]); }; } }); const barProps = () => ({ always: { type: Boolean, default: true }, width: String, height: String, ratioX: { type: Number, default: 1 }, ratioY: { type: Number, default: 1 } }); const _sfc_main$S = /* @__PURE__ */ defineComponent({ props: barProps(), setup(__props, { expose }) { const props2 = __props; const moveX = ref(0); const moveY = ref(0); const handleScroll = (wrap) => { if (wrap) { const offsetHeight = wrap.offsetHeight - GAP; const offsetWidth = wrap.offsetWidth - GAP; moveY.value = wrap.scrollTop * 100 / offsetHeight * props2.ratioY; moveX.value = wrap.scrollLeft * 100 / offsetWidth * props2.ratioX; } }; expose({ handleScroll }); return (_ctx, _cache) => { return openBlock(), createElementBlock(Fragment, null, [ createVNode(_sfc_main$T, { move: moveX.value, ratio: _ctx.ratioX, size: _ctx.width, always: _ctx.always }, null, 8, ["move", "ratio", "size", "always"]), createVNode(_sfc_main$T, { move: moveY.value, ratio: _ctx.ratioY, size: _ctx.height, vertical: "", always: _ctx.always }, null, 8, ["move", "ratio", "size", "always"]) ], 64); }; } }); const scrollbarProps = () => ({ 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: Boolean, minSize: { type: Number, default: 20 }, scrollbarSize: { type: String, validator: (v2) => ["small", "medium", "large"].includes(v2) } }); const scrollbarEmits = { scroll: ({ scrollTop: scrollTop2, scrollLeft: scrollLeft2 }) => [scrollTop2, scrollLeft2].every(isNumber$1) }; const _sfc_main$R = /* @__PURE__ */ defineComponent({ props: scrollbarProps(), emits: scrollbarEmits, setup(__props, { expose, emit: emit2 }) { const props2 = __props; const COMPONENT_NAME2 = "ScScrollbar"; const baseClass = basePrefixCls + "Scrollbar"; let stopResizeObserver = void 0; let stopResizeListener = void 0; const scrollbarRef = ref(); const wrapRef = ref(); const resizeRef = ref(); const sizeWidth = ref("0"); const sizeHeight = ref("0"); const barRef = ref(); const ratioY = ref(1); const ratioX = ref(1); const style = computed(() => { const style2 = {}; if (props2.height) style2.height = addUnit(props2.height); if (props2.maxHeight) style2.maxHeight = addUnit(props2.maxHeight); if (props2.minHeight) style2.minHeight = addUnit(props2.minHeight); return [props2.wrapStyle, style2]; }); const wrapKls = computed(() => { return [ props2.wrapClass, baseClass + "-wrap", props2.scrollbarSize ? props2.native ? `native-scrollbar-` + props2.scrollbarSize : `scrollbar-` + props2.scrollbarSize : "", { [baseClass + "-wrap__hidden-default"]: !props2.native } ]; }); const resizeKls = computed(() => { return [ baseClass + "-view", props2.viewClass, sizeHeight.value ? "isVerticalScroll" : "", sizeWidth.value ? "isHorizontalScroll" : "" ]; }); const handleScroll = () => { var _a2; if (wrapRef.value) { (_a2 = barRef.value) == null ? void 0 : _a2.handleScroll(wrapRef.value); emit2("scroll", { scrollTop: wrapRef.value.scrollTop, scrollLeft: wrapRef.value.scrollLeft }); } }; function scrollTo2(arg1, arg2) { if (isObject$4(arg1)) { wrapRef.value.scrollTo(arg1); } else if (isNumber$1(arg1) && isNumber$1(arg2)) { wrapRef.value.scrollTo(arg1, arg2); } } const setScrollTop = (value7) => { if (!isNumber$1(value7)) { debugWarn(COMPONENT_NAME2, "value must be a number"); return; } wrapRef.value.scrollTop = value7; }; const setScrollLeft = (value7) => { if (!isNumber$1(value7)) { debugWarn(COMPONENT_NAME2, "value must be a number"); return; } wrapRef.value.scrollLeft = value7; }; const update = () => { if (!wrapRef.value) return; const offsetHeight = wrapRef.value.offsetHeight - GAP; const offsetWidth = wrapRef.value.offsetWidth - GAP; const originalHeight = offsetHeight ** 2 / wrapRef.value.scrollHeight; const originalWidth = offsetWidth ** 2 / wrapRef.value.scrollWidth; const height = Math.max(originalHeight, props2.minSize); const width = Math.max(originalWidth, props2.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( () => props2.noresize, (noresize) => { if (noresize) { stopResizeObserver == null ? void 0 : stopResizeObserver(); stopResizeListener == null ? void 0 : stopResizeListener(); } else { ({ stop: stopResizeObserver } = useResizeObserver(resizeRef, update)); stopResizeListener = useEventListener("resize", update); } }, { immediate: true } ); watch( () => [props2.maxHeight, props2.height], () => { if (!props2.native) nextTick(() => { var _a2; update(); if (wrapRef.value) { (_a2 = barRef.value) == null ? void 0 : _a2.handleScroll(wrapRef.value); } }); } ); provide( scrollbarContextKey, reactive({ scrollbarElement: scrollbarRef, wrapElement: wrapRef }) ); onMounted(() => { if (!props2.native) nextTick(() => { update(); }); }); onUpdated(() => update()); expose({ wrapRef, update, scrollTo: scrollTo2, setScrollTop, setScrollLeft, handleScroll }); return (_ctx, _cache) => { return openBlock(), createElementBlock("div", { ref_key: "scrollbarRef", ref: scrollbarRef, class: normalizeClass(baseClass) }, [ createElementVNode("div", { ref_key: "wrapRef", ref: wrapRef, class: normalizeClass(unref(wrapKls)), style: normalizeStyle(unref(style)), onScroll: handleScroll }, [ (openBlock(), createBlock(resolveDynamicComponent(_ctx.tag), { ref_key: "resizeRef", ref: resizeRef, class: normalizeClass(unref(resizeKls)), style: normalizeStyle(_ctx.viewStyle) }, { default: withCtx(() => [ renderSlot(_ctx.$slots, "default") ]), _: 3 }, 8, ["class", "style"])) ], 38), !_ctx.native ? (openBlock(), createBlock(_sfc_main$S, { key: 0, ref_key: "barRef", ref: barRef, height: sizeHeight.value, width: sizeWidth.value, always: _ctx.always, "ratio-x": ratioX.value, "ratio-y": ratioY.value }, null, 8, ["height", "width", "always", "ratio-x", "ratio-y"])) : createCommentVNode("", true) ], 512); }; } }); const ScScrollbar = withInstall$1(_sfc_main$R); const modalProps = () => ({ showTooltip: { type: Boolean, default: false }, isConfirm: { type: Boolean, default: false }, tooltipDes: { type: String, default: "" }, showCancelBtn: { type: Boolean, default: true }, showOkBtn: { type: Boolean, default: true }, afterClose: Function, closeFunc: Function, type: [String], infoDes: [String, Array], prefixCls: { type: String }, onCancelDisable: { type: Boolean, default: false }, onOkDisable: { type: Boolean, default: false }, isDraggable: { type: Boolean, default: true }, DragOptions: { type: Object }, scrollOptions: { type: Object }, dragChange: Function, footerAlign: { type: String, default: "center" }, visible: { type: Boolean, default: false }, loading: { type: Boolean, default: false }, loadingText: { type: String }, confirmLoading: { type: Boolean, default: void 0 }, title: PropTypes$1.any, closable: { type: Boolean, default: void 0 }, closeIcon: PropTypes$1.any, onOk: Function, onCancel: Function, "onUpdate:visible": Function, onChange: Function, centered: { type: Boolean, default: true }, width: { type: [String, Number], default: "480px" }, footer: PropTypes$1.any, okText: { type: String }, okType: String, cancelText: { type: String }, icon: PropTypes$1.any, maskClosable: { type: Boolean, default: true }, forceRender: { type: Boolean, default: void 0 }, okButtonProps: Object, cancelButtonProps: Object, destroyOnClose: { type: Boolean, default: true }, wrapClassName: String, maskTransitionName: String, transitionName: String, getContainer: { type: [String, Function, Boolean, Object], default: void 0 }, zIndex: Number, bodyStyle: { type: Object, default: void 0 }, maskStyle: { type: Object, default: void 0 }, mask: { type: Boolean, default: void 0 }, keyboard: { type: Boolean, default: void 0 }, wrapProps: Object, focusTriggerAfterClose: { type: Boolean, default: void 0 }, modalRender: Function, appContext: PropTypes$1.any, autoFocusButton: [null, String], content: PropTypes$1.any }); let supportsPassive$2 = false; try { let opts2 = Object.defineProperty({}, "passive", { get() { supportsPassive$2 = true; } }); window.addEventListener("testPassive", null, opts2); window.removeEventListener("testPassive", null, opts2); } catch (e2) { } const supportsPassive$3 = supportsPassive$2; function addEventListenerWrap$1(target, eventType, cb, option) { if (target && target.addEventListener) { let opt = option; if (opt === void 0 && supportsPassive$3 && (eventType === "touchstart" || eventType === "touchmove" || eventType === "wheel")) { opt = { passive: false }; } target.addEventListener(eventType, cb, opt); } return { remove: () => { if (target && target.removeEventListener) { target.removeEventListener(eventType, cb); } } }; } const optimizedResize = function() { const callbacks = []; let running = false; function resize() { if (!running) { running = true; if (window.requestAnimationFrame) { window.requestAnimationFrame(runCallbacks); } else { setTimeout(runCallbacks, 66); } } } function runCallbacks() { callbacks.forEach(function(callback) { callback(); }); running = false; } function addCallback(callback) { if (callback) { callbacks.push(callback); } } return { add: function(callback) { if (!callbacks.length) { window.addEventListener("resize", resize); } addCallback(callback); } }; }(); const en_US$5 = { copy: { successMessage: "Successfully Copied" }, cleanUp: "clean up", noData: "no Data", total: "Total", item: "item", customListFields: "Custom List Fields", selectItem: "Please select the listing details you want to display. You have checked " }; const zh_CN = { copy: { successMessage: "\u590D\u5236\u6210\u529F" }, cleanUp: "\u6E05\u9664", noData: "\u6682\u65E0\u6570\u636E", total: "\u5171", item: "\u6761", customListFields: "\u81EA\u5B9A\u4E49\u5217\u8868\u5B57\u6BB5", selectItem: "\u8BF7\u9009\u62E9\u60A8\u60F3\u663E\u793A\u7684\u5217\u8868\u8BE6\u7EC6\u4FE1\u606F\u3002\u60A8\u5DF2\u52FE\u9009" }; function useLocale() { const localeData2 = inject("localeData", {}) || {}; const { antLocale } = localeData2; if (!antLocale) { return { curLocale: zh_CN }; } const curLocale = antLocale.locale === "en" || antLocale.Locale === "en" ? en_US$5 : zh_CN; return { antLocale, curLocale }; } var SizeEnum = /* @__PURE__ */ ((SizeEnum2) => { SizeEnum2["DEFAULT"] = "default"; SizeEnum2["SMALL"] = "small"; SizeEnum2["LARGE"] = "large"; return SizeEnum2; })(SizeEnum || {}); const loadGif = "data:image/gif;base64,R0lGODlhyAAYAdUlACk6YoTF93u993vF95TO96XW94zF95zO97Xe/4zO987W3q3W95zW963e973F1pylva21xbW9xWNrjKWtxc7O3jFCa5yltYyUrQgZSik6Y6WtvcXO1r3FzrW9zkpae5SctSEpMYSMpWtzlIycrYSUrQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDA2IDc5LjE2NDc1MywgMjAyMS8wMi8xNS0xMTo1MjoxMyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIyLjMgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MkU2MkU4REM1NDI0MTFFREJCRjNCRDJCRjZCNzE1QTAiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MkU2MkU4REQ1NDI0MTFFREJCRjNCRDJCRjZCNzE1QTAiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyRTYyRThEQTU0MjQxMUVEQkJGM0JEMkJGNkI3MTVBMCIgc3RS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"; const _sfc_main$Q = defineComponent({ name: "ScLoading", components: { Spin }, props: { isFullPage: { type: Boolean, default() { return true; } }, tip: { type: String, default: "" }, size: { type: String, default: SizeEnum.DEFAULT, validator: (v2) => { return [SizeEnum.DEFAULT, SizeEnum.SMALL, SizeEnum.LARGE].includes(v2); } }, absolute: { type: Boolean, default: false }, loading: { type: Boolean, default: false }, background: { type: String }, theme: { type: String, default: "light" }, indicator: { type: Object, default: h$2("img", { src: loadGif, class: "loading-gif" }) } }, setup(props2) { const newIndicator = computed(() => { let nerIndiactorH = props2.indicator; if (props2.isFullPage === false) { nerIndiactorH = h$2("span", { class: "loading-transition" }); } if (props2.isFullPage === true) { nerIndiactorH = h$2("img", { src: loadGif, class: "loading-gif" }); } if (props2.indicator === null) { return props2.indicator; } return nerIndiactorH; }); return { newIndicator }; } }); function _sfc_render$M(_ctx, _cache, $props, $setup, $data, $options) { const _component_Spin = resolveComponent("Spin"); return withDirectives((openBlock(), createElementBlock("section", { class: normalizeClass(["full-loading", { absolute: _ctx.absolute, [_ctx.theme]: !!_ctx.theme }]), style: normalizeStyle([_ctx.background ? `background-color: ${_ctx.background}` : ""]) }, [ createVNode(_component_Spin, mergeProps(_ctx.$attrs, { tip: _ctx.tip, size: _ctx.size, spinning: _ctx.loading, indicator: _ctx.newIndicator }), null, 16, ["tip", "size", "spinning", "indicator"]) ], 6)), [ [vShow, _ctx.loading] ]); } const scLoading = /* @__PURE__ */ _export_sfc(_sfc_main$Q, [["render", _sfc_render$M]]); function createLoading(props2, target, wait = false) { let vm = null; const data17 = reactive({ tip: "", loading: true, ...props2 }); const LoadingWrap = defineComponent({ render() { return h$2(scLoading, { ...data17 }); } }); vm = createVNode(LoadingWrap); if (wait) { setTimeout(() => { render(vm, document.createElement("div")); }, 0); } else { render(vm, document.createElement("div")); } function close2() { if ((vm == null ? void 0 : vm.el) && vm.el.parentNode) { vm.el.parentNode.removeChild(vm.el); } } function open2(target2 = document.body) { if (!vm || !vm.el) { return; } target2.appendChild(vm.el); } if (target) { open2(target); } return { vm, close: close2, open: open2, setTip: (tip) => { data17.tip = tip; }, setLoading: (loading) => { data17.loading = loading; }, get loading() { return data17.loading; }, get $el() { return vm == null ? void 0 : vm.el; } }; } const LoadingDirective = { mounted(el, binding) { const tip = el.getAttribute("loading-tip"); const background = el.getAttribute("loading-background"); const size = el.getAttribute("loading-size"); const fullscreen = !!binding.modifiers.fullscreen || !!binding.modifiers.isFullPage; if (!fullscreen) { el.style.position = "relative"; } const instance = createLoading( { tip, background, size, loading: !!binding.value, absolute: !fullscreen, isFullPage: fullscreen }, fullscreen ? document.body : el ); el.instance = instance; }, updated(el, binding) { var _a2; const instance = el.instance; if (!instance) return; instance.setTip(el.getAttribute("loading-tip")); if (binding.oldValue !== binding.value) { (_a2 = instance.setLoading) == null ? void 0 : _a2.call(instance, binding.value && !instance.loading); } }, unmounted(el) { var _a2; (_a2 = el == null ? void 0 : el.instance) == null ? void 0 : _a2.close(); } }; const _sfc_main$P = defineComponent({ name: "ScModal", inheritAttrs: false, props: modalProps(), components: { Modal, ScButton, Tooltip, ScScrollbar, QuestionCircleOutlined, InfoCircleFilled, CheckCircleFilled, ExclamationCircleFilled, CloseCircleFilled }, directives: { loading: LoadingDirective }, setup(props2, { slots, attrs, emit: emit2, expose }) { const modalPrefixCls = basePrefixCls + "Modal"; const uuid2 = modalPrefixCls + buildUUID(); const vBind = computed(() => { return props2; }); const visibleRef = ref(false); const propsRef = ref(); const scrollbarRef = ref(); const maxHeight = ref(); const loadingRef = ref(false); const curProps = computed(() => { var _a2, _b; const { okText, cancelText } = unref(vBind); const { antLocale } = useLocale(); return { ...unref(vBind), ...propsRef.value, okText: okText || ((_a2 = antLocale == null ? void 0 : antLocale.Modal) == null ? void 0 : _a2.okText) || "\u786E\u8BA4", cancelText: cancelText || ((_b = antLocale == null ? void 0 : antLocale.Modal) == null ? void 0 : _b.cancelText) || "\u53D6\u6D88" }; }); const getBindValue = computed(() => { const filterKey = ["title", "footer", "cancelButtonProps", "okButtonProps", "cancelText", "okText"]; const newProps = Object.entries(unref(curProps)).reduce((pre, next) => { if (filterKey.includes(next[0])) { return { ...pre }; } else { return { ...pre, [next[0]]: next[1] }; } }, {}); const attr = { ...newProps, ...attrs, visible: unref(visibleRef) }; const { footer, showCancelBtn, showOkBtn, title } = unref(curProps); if (footer === null || footer === "null" || !showCancelBtn && !showOkBtn) { attr.footer = null; } if (title === null || title === "null") { attr.title = null; } if (newProps.width) { if (isNumber$1(newProps.width)) { attr.width = pxToRem(newProps.width); } else if (String(newProps.width).includes("%")) { attr.width = newProps.width; } else { attr.width = pxToRem(parseInt(newProps.width)); } } return attr; }); const scrollbarProps2 = computed(() => { const { scrollOptions } = unref(curProps); return { ...scrollOptions, maxHeight: (scrollOptions == null ? void 0 : scrollOptions.maxHeight) ? scrollOptions == null ? void 0 : scrollOptions.maxHeight : maxHeight.value }; }); const className = computed(() => { const classNames2 = [modalPrefixCls, uuid2]; if (unref(vBind).type) { classNames2.push(modalPrefixCls + "-container-" + unref(vBind).type); classNames2.push(modalPrefixCls + "-container-status"); } return classNames2; }); const footerClassName = computed(() => { const footerClassNames = [modalPrefixCls + "-footer"]; switch (unref(vBind).footerAlign) { case "left": footerClassNames.push("text-left"); break; case "right": footerClassNames.push("text-right"); break; case "center": footerClassNames.push("text-center"); break; } return footerClassNames; }); const isSlotTitle = computed(() => { return Object.keys(slots).includes("title"); }); const isSlotFooter = computed(() => { return Object.keys(slots).includes("footer"); }); const isClose = computed(() => { return Object.keys(slots).includes("closeIcon"); }); const closeVisible = async (e2) => { e2 == null ? void 0 : e2.stopPropagation(); const { confirmLoading } = curProps.value; if (confirmLoading || loadingRef.value) { return false; } if (unref(vBind).closeFunc && isFunction$6(unref(vBind).closeFunc)) { const isClose2 = await unref(vBind).closeFunc(); emit2("update:visible", isClose2); visibleRef.value = isClose2; return; } emit2("cancel", false); visibleRef.value = false; emit2("update:visible", false); }; function setModalProps(props22) { propsRef.value = deepMerge(unref(propsRef) || {}, props22); if (Reflect.has(props22, "visible")) { visibleRef.value = !!(props22 == null ? void 0 : props22.visible); } } const handleOk = async () => { const { onOk, isConfirm } = curProps.value; try { if (onOk && isFunction$6(onOk)) { const ret = onOk(); if (ret && ret.then) { loadingRef.value = true; ret.then((res) => { loadingRef.value = false; if (isConfirm) { visibleRef.value = false; } }).catch((error2) => { console.log("error: ", error2); loadingRef.value = false; }); } else { if (isConfirm) { visibleRef.value = false; } } } else { if (isConfirm) { visibleRef.value = false; } } } catch (error2) { loadingRef.value = false; console.log("error: ", error2); } }; const modalMethods = { setModalProps, emitVisible: void 0 }; const instance = getCurrentInstance(); if (instance) { emit2("register", modalMethods, instance.uid); } const updateMaxHeight = () => { var _a2, _b, _c; if (window) { const headerHeight = ((_a2 = document.querySelector("." + uuid2 + " .ant-modal-header")) == null ? void 0 : _a2.scrollHeight) || 0; const footerHeight = ((_b = document.querySelector("." + uuid2 + " .ant-modal-footer")) == null ? void 0 : _b.scrollHeight) || 0; const alertHeight = (((_c = document.querySelector("." + uuid2 + " .scModal-status")) == null ? void 0 : _c.scrollHeight) || 0) + 4; const innerHeightView = window && (window == null ? void 0 : window.innerHeight) || 0; maxHeight.value = innerHeightView - headerHeight - footerHeight - alertHeight - 88 + "px"; } }; onMounted(() => { updateMaxHeight(); optimizedResize.add(updateMaxHeight); }); watchEffect(() => { visibleRef.value = !!unref(vBind).visible; }); const modalTitleRef = ref(); watch( () => visibleRef.value, (v2) => { var _a2; emit2("visible-change", v2); emit2("update:visible", v2); instance && ((_a2 = modalMethods.emitVisible) == null ? void 0 : _a2.call(modalMethods, v2, instance.uid)); if (v2) { nextTick(() => { updateMaxHeight(); }); const timer = setTimeout(() => { nextTick(() => { useModalDraggable(modalTitleRef, visibleRef, vBind, emit2); clearTimeout(timer); }); }, 300); } }, { immediate: false } ); expose({ updateMaxHeight, setModalProps, scrollbarRef }); return { uuid: uuid2, className, getBindValue, isClose, isSlotTitle, isSlotFooter, footerClassName, props: vBind, modalPrefixCls, visibleRef, modalTitleRef, curProps, loadingRef, scrollbarRef, scrollbarProps: scrollbarProps2, isArray: isArray$4, handleOk, closeVisible }; } }); const _hoisted_1$p = { key: 1 }; const _hoisted_2$k = ["loading-tip"]; const _hoisted_3$c = { key: 1 }; function _sfc_render$L(_ctx, _cache, $props, $setup, $data, $options) { const _component_InfoCircleFilled = resolveComponent("InfoCircleFilled"); const _component_CheckCircleFilled = resolveComponent("CheckCircleFilled"); const _component_ExclamationCircleFilled = resolveComponent("ExclamationCircleFilled"); const _component_ScScrollbar = resolveComponent("ScScrollbar"); const _component_question_circle_outlined = resolveComponent("question-circle-outlined"); const _component_Tooltip = resolveComponent("Tooltip"); const _component_ScButton = resolveComponent("ScButton"); const _component_Modal = resolveComponent("Modal"); const _directive_loading = resolveDirective("loading"); return openBlock(), createBlock(_component_Modal, mergeProps({ class: _ctx.className }, _ctx.getBindValue, { visible: _ctx.visibleRef, "onUpdate:visible": _cache[3] || (_cache[3] = ($event) => _ctx.visibleRef = $event), ref: "modalRef" }), createSlots({ title: withCtx(() => { var _a2; return [ _ctx.curProps.title || _ctx.isSlotTitle ? (openBlock(), createElementBlock("header", { key: 0, ref: "modalTitleRef", class: normalizeClass({ "draggable-event": (_a2 = _ctx.curProps) == null ? void 0 : _a2.isDraggable }) }, [ _ctx.isSlotTitle ? renderSlot(_ctx.$slots, "title", { key: 0 }) : (openBlock(), createElementBlock("span", _hoisted_3$c, toDisplayString(_ctx.curProps.title), 1)), _ctx.curProps.showTooltip ? (openBlock(), createElementBlock("span", { key: 2, class: normalizeClass([_ctx.modalPrefixCls + "-tooltip"]) }, [ createVNode(_component_Tooltip, { overlayClassName: "scTooltip-white", destroyTooltipOnHide: "" }, { title: withCtx(() => [ createTextVNode(toDisplayString(_ctx.curProps.tooltipDes), 1) ]), default: withCtx(() => [ createVNode(_component_question_circle_outlined, { class: normalizeClass([_ctx.modalPrefixCls + "-tooltip__icon"]) }, null, 8, ["class"]) ]), _: 1 }) ], 2)) : createCommentVNode("", true) ], 2)) : createCommentVNode("", true) ]; }), closeIcon: withCtx(() => [ !_ctx.isClose ? (openBlock(), createElementBlock("i", { key: 0, class: normalizeClass(["sc-ui", "sc-guanbi", _ctx.curProps.confirmLoading || _ctx.loadingRef ? "not-allow" : ""]), onClick: _cache[1] || (_cache[1] = (...args) => _ctx.closeVisible && _ctx.closeVisible(...args)) }, null, 2)) : (openBlock(), createElementBlock("span", { key: 1, class: normalizeClass([_ctx.curProps.confirmLoading || _ctx.loadingRef ? "not-allow" : ""]), onClick: _cache[2] || (_cache[2] = (...args) => _ctx.closeVisible && _ctx.closeVisible(...args)) }, [ renderSlot(_ctx.$slots, "closeIcon") ], 2)) ]), _: 2 }, [ renderList(["default"], (item) => { return { name: item, fn: withCtx((data17) => [ _ctx.curProps.type && !_ctx.$slots.infoText ? (openBlock(), createElementBlock("div", { key: 0, class: normalizeClass([_ctx.modalPrefixCls + "-status", _ctx.modalPrefixCls + "-" + _ctx.curProps.type]) }, [ _ctx.props.type ? (openBlock(), createElementBlock("span", { key: 0, class: normalizeClass([_ctx.modalPrefixCls + "-status-icon"]) }, [ _ctx.curProps.type === "info" ? (openBlock(), createBlock(_component_InfoCircleFilled, { key: 0 })) : _ctx.curProps.type === "success" ? (openBlock(), createBlock(_component_CheckCircleFilled, { key: 1 })) : _ctx.curProps.type === "warning" ? (openBlock(), createBlock(_component_ExclamationCircleFilled, { key: 2 })) : _ctx.curProps.type === "error" ? (openBlock(), createBlock(_component_ExclamationCircleFilled, { key: 3 })) : createCommentVNode("", true) ], 2)) : createCommentVNode("", true), _ctx.isArray(_ctx.curProps.infoDes) ? (openBlock(), createElementBlock("div", _hoisted_1$p, [ (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.curProps.infoDes || [], (item2) => { return openBlock(), createElementBlock("p", { class: normalizeClass([_ctx.modalPrefixCls + "-txt"]) }, toDisplayString(item2), 3); }), 256)) ])) : (openBlock(), createElementBlock("p", { key: 2, class: normalizeClass([_ctx.modalPrefixCls + "-txt"]) }, toDisplayString(_ctx.curProps.infoDes), 3)) ], 2)) : renderSlot(_ctx.$slots, "infoText", { key: 1 }), withDirectives((openBlock(), createElementBlock("div", { class: normalizeClass([_ctx.modalPrefixCls + "-content"]), "loading-tip": _ctx.getBindValue.loadingText || "\u52A0\u8F7D\u4E2D..." }, [ createVNode(_component_ScScrollbar, mergeProps({ ref: "scrollBarRef" }, _ctx.scrollbarProps, { fullscreen: false }), { default: withCtx(() => [ renderSlot(_ctx.$slots, item, normalizeProps(guardReactiveProps(data17 || {}))) ]), _: 2 }, 1040) ], 10, _hoisted_2$k)), [ [_directive_loading, _ctx.getBindValue.loading] ]) ]) }; }), _ctx.curProps.footer !== null ? { name: "footer", fn: withCtx(() => { var _a2, _b, _c, _d, _e, _f; return [ !_ctx.isSlotFooter ? (openBlock(), createElementBlock("div", { key: 0, class: normalizeClass(_ctx.footerClassName) }, [ renderSlot(_ctx.$slots, "insertFooter"), _ctx.curProps.showCancelBtn ? (openBlock(), createBlock(_component_ScButton, mergeProps({ key: 0, class: [_ctx.modalPrefixCls + "-footer__cancel"], status: "info" }, { ..._ctx.curProps.cancelButtonProps, type: void 0, disabled: ((_b = (_a2 = _ctx.curProps) == null ? void 0 : _a2.cancelButtonProps) == null ? void 0 : _b.disabled) || ((_c = _ctx.curProps) == null ? void 0 : _c.onCancelDisable) || _ctx.curProps.confirmLoading }, { title: "", onClick: _ctx.closeVisible }), { default: withCtx(() => [ createTextVNode(toDisplayString(_ctx.curProps.cancelText), 1) ]), _: 1 }, 16, ["class", "onClick"])) : createCommentVNode("", true), _ctx.curProps.showOkBtn ? (openBlock(), createBlock(_component_ScButton, mergeProps({ key: 1, loading: _ctx.loadingRef || _ctx.curProps.confirmLoading, class: [_ctx.modalPrefixCls + "-footer__ok"] }, { ..._ctx.curProps.okButtonProps, type: void 0, disabled: ((_e = (_d = _ctx.curProps) == null ? void 0 : _d.okButtonProps) == null ? void 0 : _e.disabled) || ((_f = _ctx.curProps) == null ? void 0 : _f.onOkDisable) }, { type: "primary", title: "", onClick: _cache[0] || (_cache[0] = ($event) => _ctx.handleOk()) }), { default: withCtx(() => [ createTextVNode(toDisplayString(_ctx.curProps.okText), 1) ]), _: 1 }, 16, ["loading", "class"])) : createCommentVNode("", true), renderSlot(_ctx.$slots, "afterFooter") ], 2)) : renderSlot(_ctx.$slots, "footer", { key: 1 }) ]; }) } : void 0 ]), 1040, ["class", "visible"]); } const ScModal$1 = /* @__PURE__ */ _export_sfc(_sfc_main$P, [["render", _sfc_render$L]]); const locale$5 = { locale: "en_US", today: "Today", now: "Now", backToToday: "Back to today", ok: "Ok", clear: "Clear", month: "Month", year: "Year", timeSelect: "select time", dateSelect: "select date", weekSelect: "Choose a week", monthSelect: "Choose a month", yearSelect: "Choose a year", decadeSelect: "Choose a decade", yearFormat: "YYYY", dateFormat: "M/D/YYYY", dayFormat: "D", dateTimeFormat: "M/D/YYYY HH:mm:ss", monthBeforeYear: true, previousMonth: "Previous month (PageUp)", nextMonth: "Next month (PageDown)", previousYear: "Last year (Control + left)", nextYear: "Next year (Control + right)", previousDecade: "Last decade", nextDecade: "Next decade", previousCentury: "Last century", nextCentury: "Next century" }; const locale$4 = { placeholder: "Select time", rangePlaceholder: ["Start time", "End time"] }; const locale$3 = { lang: { placeholder: "Select date", yearPlaceholder: "Select year", quarterPlaceholder: "Select quarter", monthPlaceholder: "Select month", weekPlaceholder: "Select week", rangePlaceholder: ["Start date", "End date"], rangeYearPlaceholder: ["Start year", "End year"], rangeMonthPlaceholder: ["Start month", "End month"], rangeWeekPlaceholder: ["Start week", "End week"], ...locale$5 }, timePickerLocale: { ...locale$4 } }; const typeTemplate$1 = "${label} is not a valid ${type}"; const localeValues = { locale: "en", DatePicker: locale$3, global: { placeholder: "Please select" }, Table: { filterTitle: "Filter menu", filterConfirm: "OK", filterReset: "Reset", filterEmptyText: "No filters", filterCheckall: "Select all items", filterSearchPlaceholder: "Search in filters", emptyText: "No data", selectAll: "Select current page", selectInvert: "Invert current page", selectNone: "Clear all data", selectionAll: "Select all data", sortTitle: "Sort", expand: "Expand row", collapse: "Collapse row", triggerDesc: "Click to sort descending", triggerAsc: "Click to sort ascending", cancelSort: "Click to cancel sorting" }, Modal: { okText: "\u786E\u8BA4", cancelText: "\u53D6\u6D88", justOkText: "\u786E\u8BA4" }, Popconfirm: { okText: "OK", cancelText: "Cancel" }, Transfer: { titles: ["", ""], searchPlaceholder: "Search here", itemUnit: "item", itemsUnit: "items", remove: "Remove", selectCurrent: "Select current page", removeCurrent: "Remove current page", selectAll: "Select all data", removeAll: "Remove all data", selectInvert: "Invert current page" }, Upload: { uploading: "Uploading...", removeFile: "Remove file", uploadError: "Upload error", previewFile: "Preview file", downloadFile: "Download file" }, Empty: { description: "No Data" }, Icon: { icon: "icon" }, Text: { edit: "Edit", copy: "Copy", copied: "Copied", expand: "Expand" }, PageHeader: { back: "Back" }, Form: { optional: "(optional)", defaultValidateMessages: { default: "Field validation error for ${label}", required: "Please enter ${label}", enum: "${label} must be one of [${enum}]", whitespace: "${label} cannot be a blank character", date: { format: "${label} date format is invalid", parse: "${label} cannot be converted to a date", invalid: "${label} is an invalid date" }, types: { string: typeTemplate$1, method: typeTemplate$1, array: typeTemplate$1, object: typeTemplate$1, number: typeTemplate$1, date: typeTemplate$1, boolean: typeTemplate$1, integer: typeTemplate$1, float: typeTemplate$1, regexp: typeTemplate$1, email: typeTemplate$1, url: typeTemplate$1, hex: typeTemplate$1 }, string: { len: "${label} must be ${len} characters", min: "${label} must be at least ${min} characters", max: "${label} must be up to ${max} characters", range: "${label} must be between ${min}-${max} characters" }, number: { len: "${label} must be equal to ${len}", min: "${label} must be minimum ${min}", max: "${label} must be maximum ${max}", range: "${label} must be between ${min}-${max}" }, array: { len: "Must be ${len} ${label}", min: "At least ${min} ${label}", max: "At most ${max} ${label}", range: "The amount of ${label} must be between ${min}-${max}" }, pattern: { mismatch: "${label} does not match the pattern ${pattern}" } } }, Image: { preview: "Preview" } }; let runtimeLocale$1 = { ...localeValues }; function changeConfirmLocale$1(newLocale) { if (newLocale) { runtimeLocale$1 = { ...runtimeLocale$1, ...newLocale }; } else { runtimeLocale$1 = { ...localeValues }; } } function getConfirmLocale() { return runtimeLocale$1; } function renderSomeContent(_name, someContent) { if (typeof someContent === "function") { return someContent(); } return someContent; } const ConfirmDialog = (props2) => { var _a2; const { icon, footerAlign = "center", onOk, onCancel, closeFunc, closable = false, zIndex, visible: visible2, keyboard, centered, getContainer: getContainer2, maskStyle, okButtonProps, cancelButtonProps, showCancelBtn, showOkBtn, tooltipDes, footer } = props2; const okType = props2.okType || "primary"; const prefixCls2 = props2.prefixCls || "ant-modal"; const contentPrefixCls = `${prefixCls2}-confirm`; const width = props2.width || 416; const style = props2.style || {}; const mask = props2.mask === void 0 ? true : props2.mask; const uuid2 = "scModal" + buildUUID(); const classString = ["scModal-confirm", uuid2, contentPrefixCls, `${contentPrefixCls}-${props2.type}`, `${prefixCls2}-${props2.type}`, props2.class].join(" "); const maskClosable = props2.maskClosable === void 0 ? false : props2.maskClosable; const runtimeLocale2 = getConfirmLocale(); const okText = props2.okText || ((_a2 = runtimeLocale2 == null ? void 0 : runtimeLocale2.Modal) == null ? void 0 : _a2.okText) || "\u786E\u8BA4"; const cancelText = props2.cancelText || (runtimeLocale2 == null ? void 0 : runtimeLocale2.Modal.cancelText) || "\u53D6\u6D88"; const autoFocusButton = props2.autoFocusButton === null ? false : props2.autoFocusButton || "ok"; const transitionName = props2.transitionName || "zoom"; const maskTransitionName = props2.maskTransitionName || "fade"; if (autoFocusButton) { const timer = setTimeout(() => { const docCur = document.querySelectorAll(`.${uuid2} .scModal-footer .ant-btn`); if (autoFocusButton === "ok") { docCur == null ? void 0 : docCur.forEach((item) => { item.className.includes("scModal-footer__ok") ? item == null ? void 0 : item.focus() : ""; }); } else if (autoFocusButton === "cancel") { docCur == null ? void 0 : docCur.forEach((item) => { item.className.includes("scModal-footer__cancel") ? item == null ? void 0 : item.focus() : ""; }); } clearTimeout(timer); }, 200); } return createVNode(ScModal$1, { "prefixCls": prefixCls2, "wrapClassName": classString, "onCancel": onCancel, "closeFunc": closeFunc, "onOk": onOk, "visible": visible2, "title": null, "transitionName": transitionName, "maskTransitionName": maskTransitionName, "mask": mask, "okText": okText, "cancelText": cancelText, "maskClosable": maskClosable, "maskStyle": maskStyle, "style": style, "width": width, "zIndex": zIndex, "showCancelBtn": showCancelBtn, "showOkBtn": showOkBtn, "tooltipDes": tooltipDes, "keyboard": keyboard, "isConfirm": true, "centered": centered, "getContainer": getContainer2, "closable": closable, "okButtonProps": Object.assign(okButtonProps || {}, { type: okType }), "cancelButtonProps": cancelButtonProps, "footerAlign": footerAlign, "footer": footer }, { default: () => [createVNode("div", { "class": `${contentPrefixCls}-body-wrapper` }, [createVNode("div", { "class": `${contentPrefixCls}-body` }, [renderSomeContent("icon", icon), props2.title === void 0 ? null : createVNode("span", { "class": `${contentPrefixCls}-title` }, [renderSomeContent("title", props2.title)]), createVNode("div", { "class": `${contentPrefixCls}-content` }, [renderSomeContent("content", props2.content)])])])] }); }; function omit$7(obj, fields2) { var shallowCopy = Object.assign({}, obj); for (var i2 = 0; i2 < fields2.length; i2 += 1) { var key2 = fields2[i2]; delete shallowCopy[key2]; } return shallowCopy; } const confirm$1 = (config) => { const div = document.createElement("div"); document.body.appendChild(div); let currentConfig = { ...omit$7(config, ["parentContext", "appContext"]), close: close2, visible: true }; let confirmDialogInstance = null; function close2(...args) { currentConfig = { ...currentConfig, visible: false, afterClose: destroy.bind(this, ...args) }; update(currentConfig); } function update(newConfig) { currentConfig = { ...currentConfig, ...newConfig }; if (confirmDialogInstance) { Object.assign(confirmDialogInstance.component.props, currentConfig); confirmDialogInstance.component.update(); } } function destroy(...args) { if (confirmDialogInstance && div.parentNode) { Object.assign(confirmDialogInstance.component.props, { vIf: false }); confirmDialogInstance.component.update(); confirmDialogInstance = null; div.parentNode.removeChild(div); } const triggerCancel = args.some((param) => param && param.triggerCancel); if (config.onCancel && triggerCancel) { config.onCancel(...args); } for (let i2 = 0; i2 < destroyFns.length; i2++) { const fn = destroyFns[i2]; if (fn === close2) { destroyFns.splice(i2, 1); break; } } } const Wrapper = (p2) => { return p2.vIf ? createVNode(ConfirmDialog, p2, null) : null; }; function render$1(props2) { const vm = createVNode(Wrapper, { ...props2, vIf: true }); vm.appContext = config.parentContext || config.appContext || vm.appContext; render(vm, div); return vm; } confirmDialogInstance = render$1(currentConfig); destroyFns.push(close2); return { destroy: close2, update }; }; function createContext(context, key2 = Symbol(), options2 = {}) { const { readonly: readonly$1 = true, createProvider = false, native = false } = options2; const state = reactive(context); const provideData = readonly$1 ? readonly(state) : state; !createProvider && provide(key2, native ? context : provideData); return { state }; } function useContext(key2 = Symbol(), defaultValue) { return inject(key2, defaultValue || {}); } const key$2 = Symbol(); function useModalContext() { return useContext(key$2); } const { isEqual: isEqual$8 } = lodash; const dataTransfer = reactive({}); const visibleData$1 = reactive({}); function useModal() { const modal = ref(null); const loaded = ref(false); const uid2 = ref(""); function register(modalMethod, uuid2) { if (!getCurrentInstance()) { throw new Error("useModal() can only be used inside setup() or functional components!"); } uid2.value = uuid2; onUnmounted(() => { modal.value = null; loaded.value = false; dataTransfer[unref(uid2)] = null; }); if (unref(loaded) && modalMethod === unref(modal)) return; modal.value = modalMethod; loaded.value = true; modalMethod.emitVisible = (visible2, uid22) => { visibleData$1[uid22] = visible2; }; } const getInstance = () => { const instance = unref(modal); if (!instance) { error$1("useModal instance is undefined!"); } return instance; }; const methods = { setModalProps: (props2) => { var _a2; (_a2 = getInstance()) == null ? void 0 : _a2.setModalProps(props2); }, getVisible: computed(() => { return visibleData$1[~~unref(uid2)]; }), redoModalHeight: () => { var _a2, _b; (_b = (_a2 = getInstance()) == null ? void 0 : _a2.redoModalHeight) == null ? void 0 : _b.call(_a2); }, openModal: (visible2 = true, data17, openOnSet = true) => { var _a2; (_a2 = getInstance()) == null ? void 0 : _a2.setModalProps({ visible: visible2 }); if (!data17) return; const id2 = unref(uid2); if (openOnSet) { dataTransfer[id2] = null; dataTransfer[id2] = toRaw(data17); return; } const equal = isEqual$8(toRaw(dataTransfer[id2]), toRaw(data17)); if (!equal) { dataTransfer[id2] = toRaw(data17); } }, closeModal: () => { var _a2; (_a2 = getInstance()) == null ? void 0 : _a2.setModalProps({ visible: false }); } }; return [register, methods]; } const useModalInner = (callbackFn) => { const modalInstanceRef = ref(null); const currentInstance = getCurrentInstance(); const uidRef = ref(""); const getInstance = () => { const instance = unref(modalInstanceRef); if (!instance) { error$1("useModalInner instance is undefined!"); } return instance; }; const register = (modalInstance, uuid2) => { tryOnUnmounted(() => { modalInstanceRef.value = null; }); uidRef.value = uuid2; modalInstanceRef.value = modalInstance; currentInstance == null ? void 0 : currentInstance.emit("register", modalInstance, uuid2); }; watchEffect(() => { const data17 = dataTransfer[unref(uidRef)]; if (!data17) return; if (!callbackFn || !isFunction$6(callbackFn)) return; nextTick(() => { callbackFn(data17); }); }); return [ register, { changeLoading: (loading = true) => { var _a2; (_a2 = getInstance()) == null ? void 0 : _a2.setModalProps({ loading }); }, getVisible: computed(() => { return visibleData$1[~~unref(uidRef)]; }), changeOkLoading: (loading = true) => { var _a2; (_a2 = getInstance()) == null ? void 0 : _a2.setModalProps({ confirmLoading: loading }); }, closeModal: () => { var _a2; (_a2 = getInstance()) == null ? void 0 : _a2.setModalProps({ visible: false }); }, setModalProps: (props2) => { var _a2; (_a2 = getInstance()) == null ? void 0 : _a2.setModalProps(props2); }, redoModalHeight: () => { var _a2; const callRedo = (_a2 = getInstance()) == null ? void 0 : _a2.redoModalHeight; callRedo && callRedo(); } } ]; }; const info$1 = function(props2) { const config = { type: "info", icon: () => createVNode(InfoCircleFilled, null, null), okCancel: false, ...props2 }; return confirm$1(config); }; const success = function(props2) { const config = { type: "success", icon: () => createVNode(CheckCircleFilled, null, null), okCancel: false, ...props2 }; return confirm$1(config); }; const error = function(props2) { const config = { type: "error", icon: () => createVNode(CloseCircleFilled, null, null), okCancel: false, ...props2 }; return confirm$1(config); }; const warning$6 = function(props2) { const config = { type: "warning", icon: () => createVNode(ExclamationCircleFilled, null, null), okCancel: false, ...props2 }; return confirm$1(config); }; const warn = warning$6; const confirm = function confirmFn(props2) { const { type: type2, icon } = props2; let newIcon = icon; if (!icon) { switch (type2) { case "info": newIcon = () => createVNode(InfoCircleFilled, null, null); break; case "error": newIcon = () => createVNode(CloseCircleFilled, null, null); break; case "success": newIcon = () => createVNode(CheckCircleFilled, null, null); break; case "warning": newIcon = () => createVNode(ExclamationCircleFilled, null, null); break; } } const config = { type: "confirm", okCancel: true, icon: newIcon, ...props2 }; return confirm$1(config); }; ScModal$1.info = info$1; ScModal$1.success = success; ScModal$1.error = error; ScModal$1.warning = warning$6; ScModal$1.warn = warn; ScModal$1.confirm = confirm; ScModal$1.changeConfirmLocale = changeConfirmLocale$1; ScModal$1.destroyAll = function destroyAllFn() { while (destroyFns.length) { const close2 = destroyFns.pop(); if (close2) { close2(); } } }; const destroyFns = []; const ScModal = withInstall$1(ScModal$1); const props$g = () => ({ value: [Number, String, Array], disabled: { type: Boolean, default() { return false; } }, tooltip: { type: Boolean, default() { return true; } }, tooltipAlign: { type: String, default() { return "right"; } }, infoTooltip: { type: String }, isAddTooltipScrollHeight: { type: Boolean, default() { return true; } }, widthSize: { type: String, validator: (v2) => ["l", "xs", "x", "md", "xl"].includes(v2) }, optionMode: String, prefixIcon: Object, onChange: [Function, Array] }); const isVisible$1 = (element) => { if (!element) { return false; } if (element.offsetParent) { return true; } if (element.getBBox) { const box = element.getBBox(); if (box.width || box.height) { return true; } } if (element.getBoundingClientRect) { const box = element.getBoundingClientRect(); if (box.width || box.height) { return true; } } return false; }; let raf$2 = (callback) => +setTimeout(callback, 16); let caf = (num) => clearTimeout(num); if (typeof window !== "undefined" && "requestAnimationFrame" in window) { raf$2 = (callback) => window.requestAnimationFrame(callback); caf = (handle) => window.cancelAnimationFrame(handle); } let rafUUID = 0; const rafIds = /* @__PURE__ */ new Map(); function cleanup(id2) { rafIds.delete(id2); } function wrapperRaf$1(callback, times = 1) { rafUUID += 1; const id2 = rafUUID; function callRef(leftTimes) { if (leftTimes === 0) { cleanup(id2); callback(); } else { const realId = raf$2(() => { callRef(leftTimes - 1); }); rafIds.set(id2, realId); } } callRef(times); return id2; } wrapperRaf$1.cancel = (id2) => { const realId = rafIds.get(id2); cleanup(realId); return caf(realId); }; function waitElementReady$1(element, callback) { let id2; function tryOrNextFrame() { if (isVisible$1(element)) { callback(); } else { id2 = wrapperRaf$1(() => { tryOrNextFrame(); }); } } tryOrNextFrame(); return () => { wrapperRaf$1.cancel(id2); }; } const { cloneDeep: cloneDeep$d } = lodash; const _sfc_main$O = defineComponent({ name: "ScSelect", inheritAttrs: false, props: props$g(), emits: ["change", "update:value", "allowClear", "dropdownVisibleChange"], components: { Select: Select$5, SelectOption, CloseCircleFilled, QuestionCircleOutlined, Tooltip }, setup(props2, { emit: emit2, slots, attrs, expose }) { const baseClass = basePrefixCls + "Select"; const prefixWidth = ref(); const tooltipDom = ref(); const divDom = document.createElement("div"); divDom.style.position = "absolute"; divDom.style.top = "0px"; divDom.style.left = "0px"; divDom.style.width = "100%"; tooltipDom.value = divDom; const initValue = computed({ get: () => { return props2.optionMode === "checkbox" ? props2.value === void 0 ? [] : props2.value : props2.value; }, set: (val) => { emit2("update:value", val); emit2("change", val); } }); const newProps = computed(() => { return { ...props2 }; }); const uuid2 = "sc" + buildUUID(); const vBind = computed(() => { let newOptions = cloneDeep$d(attrs.options); return { ...unref(newProps), ...attrs, options: newOptions, dropdownStyle: { ...attrs.dropdownStyle || {} }, onChange: void 0, class: void 0, style: void 0 }; }); const dropdownClassName = computed(() => { const dropdownClass = ["dropdown " + uuid2, "scSelectDropdown", "selectDropdown", props2.tooltip ? "is-tooltip" : ""]; if (attrs.size) { dropdownClass.push("dropdown-" + attrs.size); } if (attrs.dropdownClassName) { dropdownClass.push(attrs.dropdownClassName); } if (props2.optionMode === "checkbox") { dropdownClass.push("scDropdown-checkbox"); } return dropdownClass.join(" "); }); const isSuffixIcon = computed(() => { return Object.keys(slots).includes("suffixIcon"); }); const isPrefixIcon = computed(() => { return Object.keys(slots).includes("prefixIcon"); }); const isClearIcon = computed(() => { return Object.keys(slots).includes("clearIcon"); }); const clearCall = (event) => { const isParent = findParentDom(event.target, 5, (dom) => { return String(dom.className).includes("clearSelect") ? dom : false; }); if (isParent) { emit2("allowClear", initValue.value); } }; const handleDropdownVisibleChange = (val) => { if (val) { nextTick(() => { const { tooltip } = props2; const dropdownDom = document.querySelector(`.${uuid2}.scSelectDropdown`); waitElementReady$1(dropdownDom, () => { if (tooltip) { showTooltip(); } nextTick(() => { var _a2; const virtualListDom = document.querySelector(`.${uuid2} .rc-virtual-list-holder div`); if ((_a2 = virtualListDom == null ? void 0 : virtualListDom.style) == null ? void 0 : _a2.height) { virtualListDom.style.marginRight = "4px"; } }); }); }); } else { const dropdownDom = document.querySelector(`.${uuid2}.scSelectDropdown`); dropdownDom && (dropdownDom == null ? void 0 : dropdownDom.removeEventListener("mouseover", mouseoverEvent)); } emit2("dropdownVisibleChange"); }; const computePrefixWidth = () => { const selectDom = document.querySelector(`.${uuid2} .ant-select-selector`); selectDom && (selectDom.style.display = "none"); const prefixDom = document.querySelector(`.${uuid2} .scSelect-prefix`); prefixWidth.value = pxToRem(String(prefixDom && (prefixDom.offsetWidth || prefixDom.clientWidth || prefixDom.scrollWidth) + 24 || 0)); selectDom && (selectDom.style.paddingLeft = prefixWidth.value); selectDom && (selectDom.style.display = "inline-block"); }; const mouseoverEvent = (event) => { var _a2, _b, _c, _d, _e; if (event.target.className.includes("ant-select-item-option")) { event.target.title = ""; } if (!event.target.className.includes("ant-select-item-option-content")) { return false; } const rect = (_a2 = event == null ? void 0 : event.target) == null ? void 0 : _a2.getBoundingClientRect(); const { isAddTooltipScrollHeight, tooltipAlign } = props2; const bodyScrollLeft = isAddTooltipScrollHeight ? document.documentElement.scrollLeft : 0; const bodyScrollTop = isAddTooltipScrollHeight ? document.documentElement.scrollTop : 0; const newPDom = document.createElement("div"); document.body.appendChild(newPDom); newPDom.className = "ant-select-item-option-content"; newPDom.style.display = "inline-block"; newPDom.style.position = "absolute"; newPDom.style.height = "0"; newPDom.innerHTML = (_b = event == null ? void 0 : event.target) == null ? void 0 : _b.innerHTML; const clientWidth = (_c = event == null ? void 0 : event.target) == null ? void 0 : _c.clientWidth; const scrollWidth = (newPDom == null ? void 0 : newPDom.clientWidth) + 16 || ((_d = event == null ? void 0 : event.target) == null ? void 0 : _d.scrollWidth) || ((_e = event == null ? void 0 : event.target) == null ? void 0 : _e.clientWidth); if (scrollWidth >= clientWidth) { const posLeft = tooltipAlign === "left" ? rect.left - 252 : rect.left + rect.width + bodyScrollLeft + 10; const posTop = rect.top + bodyScrollTop; const innerText = event == null ? void 0 : event.target.innerText; const tooltipHTML = `
`; divDom.innerHTML = tooltipHTML; } else { divDom.innerHTML = ``; } document.body.removeChild(newPDom); }; const showTooltip = () => { const dropdownDom = document.querySelector(`.${uuid2}.scSelectDropdown`); dropdownDom == null ? void 0 : dropdownDom.addEventListener("mouseover", mouseoverEvent); dropdownDom == null ? void 0 : dropdownDom.addEventListener("mouseout", () => { divDom.innerHTML = ``; }); }; watch(() => props2.tooltip, (val) => { const isInset = document.body.contains(tooltipDom.value); if (val) { if (!isInset) { document.body.appendChild(tooltipDom.value); } } else { isInset && document.body.removeChild(tooltipDom.value); } }, { immediate: true }); onMounted(() => { const dom = document.querySelector(`.${uuid2}`); dom && dom.addEventListener("mousedown", clearCall); const prefixDom = document.querySelector(`.${uuid2} .scSelect-prefix`); waitElementReady$1(prefixDom, () => { Object.keys(slots).includes("prefixIcon") && computePrefixWidth(); }); }); onBeforeUnmount(() => { const dom = document.querySelector(`.${uuid2}`); dom && dom.removeEventListener("mousedown", clearCall); }); expose({ computePrefixWidth }); return { uuid: uuid2, baseClass, newProps, initValue, isSuffixIcon, isPrefixIcon, isClearIcon, dropdownClassName, vBind, prefixWidth, handleDropdownVisibleChange }; } }); const _hoisted_1$o = { key: 0, class: "sc-ui sc-you" }; const _hoisted_2$j = /* @__PURE__ */ createElementVNode("i", { class: "sc-ui sc-you" }, null, -1); const _hoisted_3$b = /* @__PURE__ */ createElementVNode("i", { class: "sc-ui sc-question-circle" }, null, -1); const _hoisted_4$7 = { key: 1, class: "clearSelect" }; function _sfc_render$K(_ctx, _cache, $props, $setup, $data, $options) { const _component_Tooltip = resolveComponent("Tooltip"); const _component_CloseCircleFilled = resolveComponent("CloseCircleFilled"); const _component_Select = resolveComponent("Select"); return openBlock(), createElementBlock("div", { class: normalizeClass([ _ctx.baseClass, _ctx.uuid, _ctx.vBind.widthSize ? _ctx.baseClass + "-" + _ctx.vBind.widthSize : "", _ctx.newProps.disabled ? "is-disabled" : "", _ctx.$attrs.class ]), style: normalizeStyle( { "--preWidth": _ctx.prefixWidth || "7px", ..._ctx.$attrs.style } ) }, [ createElementVNode("div", { class: normalizeClass([ _ctx.isPrefixIcon ? "is-prefix" : "" ]) }, [ _ctx.isPrefixIcon ? (openBlock(), createElementBlock("span", { key: 0, class: normalizeClass([_ctx.baseClass + "-prefix"]) }, [ renderSlot(_ctx.$slots, "prefixIcon") ], 2)) : createCommentVNode("", true), createVNode(_component_Select, mergeProps({ value: _ctx.initValue, "onUpdate:value": _cache[0] || (_cache[0] = ($event) => _ctx.initValue = $event) }, _ctx.vBind, { class: [_ctx.isPrefixIcon ? "is-prefix" : "", _ctx.newProps.infoTooltip ? "is-info" : ""], disabled: _ctx.newProps.disabled, dropdownClassName: _ctx.dropdownClassName, onDropdownVisibleChange: _ctx.handleDropdownVisibleChange }), createSlots({ suffixIcon: withCtx(() => [ !_ctx.isSuffixIcon && !_ctx.newProps.infoTooltip ? (openBlock(), createElementBlock("i", _hoisted_1$o)) : _ctx.newProps.infoTooltip ? (openBlock(), createElementBlock("span", { key: 1, class: normalizeClass([_ctx.newProps.infoTooltip ? "is-info--icon" : ""]) }, [ _hoisted_2$j, createVNode(_component_Tooltip, null, { title: withCtx(() => [ createTextVNode(toDisplayString(_ctx.newProps.infoTooltip), 1) ]), default: withCtx(() => [ _hoisted_3$b ]), _: 1 }), renderSlot(_ctx.$slots, "default", { slot: "suffixIcon" }) ], 2)) : renderSlot(_ctx.$slots, "default", { key: 2, slot: "suffixIcon" }) ]), clearIcon: withCtx(() => [ !_ctx.isClearIcon ? (openBlock(), createBlock(_component_CloseCircleFilled, { key: 0, class: "clearSelect" })) : (openBlock(), createElementBlock("span", _hoisted_4$7, [ renderSlot(_ctx.$slots, "default", { slot: "clearIcon" }) ])) ]), _: 2 }, [ renderList(Object.keys(_ctx.$slots).filter((item) => !["clearIcon", "suffixIcon"].includes(item)), (item) => { return { name: item, fn: withCtx((data17) => [ renderSlot(_ctx.$slots, item, normalizeProps(guardReactiveProps(data17 || {}))) ]) }; }) ]), 1040, ["value", "class", "disabled", "dropdownClassName", "onDropdownVisibleChange"]) ], 2) ], 6); } const scSelect = /* @__PURE__ */ _export_sfc(_sfc_main$O, [["render", _sfc_render$K]]); const ScSelect = withInstall$1(scSelect); const scFilterProps = () => ({ filterList: Object, overlayClassName: String, column: Object, filterSelected: Array, dropdownProps: Object, filterLoading: { type: Boolean, default() { return false; } } }); const list = [1, 2, 3, 4, 5, 6].map((item) => { return { label: item.toString().repeat(4), value: item.toString().repeat(4), key: item.toString().repeat(4), disabled: item % 2 === 1, checked: true }; }); const ColumnModal = () => ({ visible: { type: Boolean }, columnList: { type: Object, default() { return list; } } }); function useChecked(columnList) { const list2 = ref(); const keys2 = ref([]); const checkedList = ref([]); const setItemChecked = (curKeys) => { keys2.value = curKeys; const newCheckList = []; list2.value = unref(list2).map((_item) => { if (curKeys.includes(_item.key)) { newCheckList.push(_item); } return _item; }); checkedList.value = newCheckList; return { keys: keys2, list: list2, checkedList }; }; const getCheckedKeys = () => { return unref(keys2); }; const getCheckedItems = () => { return unref(checkedList); }; const getList = () => { return unref(list2); }; const setList = (columnList2) => { list2.value = columnList2; }; const initChecked = (columnList2) => { const initKeys = []; const initChecked2 = []; columnList2 == null ? void 0 : columnList2.forEach((item) => { if (item.checked) { initKeys.push(item.key); initChecked2.push(item); } }); keys2.value = initKeys; checkedList.value = initChecked2; }; watchEffect(() => { list2.value = columnList || []; if (columnList == null ? void 0 : columnList.length) { initChecked(columnList); } }); return { setItemChecked, getCheckedKeys, getCheckedItems, getList, setList, initChecked }; } const _sfc_main$N = defineComponent({ name: "CheckoutBtn", inheritAttrs: false, components: { CheckOutlined, Checkbox, CheckboxGroup }, props: ColumnModal(), setup(props2, { emit: emit2 }) { var _a2, _b; const checkAll = ref(true); const sourceList = ref(props2.columnList); const checkedListKeys = ref([]); const checkedItems = ref([]); const { setItemChecked, getCheckedKeys, getCheckedItems } = useChecked(props2.columnList); checkedListKeys.value = getCheckedKeys(); checkedItems.value = getCheckedItems(); const { antLocale } = useLocale(); const AllLang = ((_a2 = antLocale == null ? void 0 : antLocale.locale) == null ? void 0 : _a2.includes("en")) || ((_b = antLocale == null ? void 0 : antLocale.Locale) == null ? void 0 : _b.includes("en")) ? "All" : "\u5168\u90E8"; watch(() => props2.columnList, (val) => { sourceList.value = val; const { getCheckedKeys: getCheckedKeys2, getCheckedItems: getCheckedItems2 } = useChecked(val); checkedListKeys.value = getCheckedKeys2(); checkedItems.value = getCheckedItems2(); emit2("change", { keys: unref(checkedListKeys), checkedList: unref(checkedItems) }); }); emit2("change", { keys: unref(checkedListKeys), checkedList: unref(checkedItems) }); const handleGroup = (item) => { const { keys: keys2, list: list2, checkedList } = setItemChecked(item); emit2("change", { keys: unref(keys2), checkedList: unref(checkedList), list: unref(list2) }); checkAll.value = checkedListKeys.value.length === sourceList.value.length; if (checkedListKeys.value.length === 0) { checkAll.value = false; } }; const indeterminate = computed(() => { if (checkedListKeys.value.length === 0) { return false; } return checkedListKeys.value.length !== sourceList.value.length; }); onMounted(() => { if (checkedListKeys.value.length === 0) { checkAll.value = false; } }); const onCheckAllChange = (e2) => { if (e2.target.checked) { checkedListKeys.value = Array.from(/* @__PURE__ */ new Set([...checkedListKeys.value, ...unref(sourceList).filter((item) => !item.disabled).map((item) => { return item.key; })])); } else { checkedListKeys.value = unref(sourceList).filter((item) => item.disabled).map((item) => { return item.key; }); } const { keys: keys2, list: list2, checkedList } = setItemChecked(checkedListKeys.value); emit2("change", { keys: unref(keys2), checkedList: unref(checkedList), list: unref(list2) }); }; return { AllLang, checkAll, checkedListKeys, sourceList, indeterminate, handleGroup, onCheckAllChange }; } }); const _hoisted_1$n = { class: "colBtn" }; const _hoisted_2$i = { class: "column-checkboxAll" }; function _sfc_render$J(_ctx, _cache, $props, $setup, $data, $options) { const _component_Checkbox = resolveComponent("Checkbox"); const _component_CheckboxGroup = resolveComponent("CheckboxGroup"); return openBlock(), createElementBlock("div", _hoisted_1$n, [ createElementVNode("div", _hoisted_2$i, [ createVNode(_component_Checkbox, { checked: _ctx.checkAll, "onUpdate:checked": _cache[0] || (_cache[0] = ($event) => _ctx.checkAll = $event), onChange: _ctx.onCheckAllChange, indeterminate: _ctx.indeterminate }, { default: withCtx(() => [ createTextVNode(toDisplayString(_ctx.AllLang), 1) ]), _: 1 }, 8, ["checked", "onChange", "indeterminate"]) ]), createVNode(_component_CheckboxGroup, { value: _ctx.checkedListKeys, "onUpdate:value": _cache[1] || (_cache[1] = ($event) => _ctx.checkedListKeys = $event), options: _ctx.sourceList, onChange: _ctx.handleGroup }, null, 8, ["value", "options", "onChange"]) ]); } const CheckoutBtnVue = /* @__PURE__ */ _export_sfc(_sfc_main$N, [["render", _sfc_render$J]]); const { cloneDeep: cloneDeep$c } = lodash; const _sfc_main$M = defineComponent({ name: "ColumnDialog", inheritAttrs: false, components: { ScModal: ScModal$1, CheckoutBtnVue }, emits: ["cancelModal", "okModal", "update:visible"], props: ColumnModal(), setup(props2, { emit: emit2, attrs }) { const checkInfo = ref(""); const { antLocale } = useLocale(); const curCookie = document.cookie; const isEn = curCookie.includes("en-US"); const curLocale = isEn ? { ...en_US$5 } : { ...zh_CN }; const delItemKeys = ref(); const columnList = computed(() => { const newColumnList = cloneDeep$c(props2.columnList); return newColumnList; }); const sourceList = computed(() => { const newColumnList = cloneDeep$c(props2.columnList); return newColumnList; }); const curKeys = ref(); const curCheckedList = ref(); const visible2 = computed({ get: () => { return props2.visible; }, set: (val) => { emit2("update:visible", val); } }); const getProps2 = computed(() => { return { ...props2, ...attrs, columnList: void 0 }; }); const handleCheck3 = ({ keys: keys2, checkedList }) => { curKeys.value = keys2; curCheckedList.value = checkedList; checkInfo.value = (checkedList || []).length + ""; delItemKeys.value = unref(sourceList).filter((item) => { return item.checked; }).map((item) => item.key || item.dataIndex).filter((item) => !keys2.includes(item)); }; const handleCancel = () => { emit2("cancelModal", { keys: unref(curKeys), checkedList: unref(curCheckedList) }); }; const handleOk = () => { emit2("okModal", { keys: unref(curKeys), checkedList: unref(curCheckedList), delItemKeys: unref(delItemKeys) }); }; const title = (curLocale == null ? void 0 : curLocale.customListFields) || "\u81EA\u5B9A\u4E49\u5217\u8868\u5B57\u6BB5"; const infoDesCompute = computed(() => { return `${(curLocale == null ? void 0 : curLocale.selectItem) || "\u8BF7\u9009\u62E9\u60A8\u60F3\u663E\u793A\u7684\u5217\u8868\u8BE6\u7EC6\u4FE1\u606F\u3002\u60A8\u5DF2\u52FE\u9009"}${checkInfo.value}${isEn ? "" : "\u4E2A"}\u3002`; }); return { curLocale, antLocale, infoDesCompute, title, visible: visible2, columnList, checkInfo, handleCheck: handleCheck3, handleCancel, handleOk, getProps: getProps2 }; } }); function _sfc_render$I(_ctx, _cache, $props, $setup, $data, $options) { const _component_CheckoutBtnVue = resolveComponent("CheckoutBtnVue"); const _component_ScModal = resolveComponent("ScModal"); return openBlock(), createBlock(_component_ScModal, mergeProps({ visible: _ctx.visible, "onUpdate:visible": _cache[0] || (_cache[0] = ($event) => _ctx.visible = $event), title: _ctx.title, type: "info", infoDes: _ctx.infoDesCompute, width: 840, maskClosable: "", afterClose: _ctx.handleCancel, onOk: _ctx.handleOk }, _ctx.getProps, { destroyOnClose: "" }), { default: withCtx(() => [ createVNode(_component_CheckoutBtnVue, { columnList: _ctx.columnList, onChange: _ctx.handleCheck }, null, 8, ["columnList", "onChange"]) ]), _: 1 }, 16, ["visible", "title", "infoDes", "afterClose", "onOk"]); } const columnDialog = /* @__PURE__ */ _export_sfc(_sfc_main$M, [["render", _sfc_render$I]]); const tableHeaderPrefixClas = basePrefixCls + "TableFilter"; const { cloneDeep: cloneDeep$b, debounce: debounce$4 } = lodash; const TableFilterProps = () => ({ selectValue: String, textValue: String, filterLeftStyle: { type: Object, default() { return {}; } }, filterRightStyle: { type: Object, default() { return {}; } }, selectLoading: { type: Boolean, default() { return false; } }, createButtonOptions: { type: Object, default() { return {}; } }, multipleActionOptions: { type: Object, default() { return {}; } }, searchOptions: { type: Object, default() { return {}; } }, isActiveFilter: { type: Boolean }, isTableActive: { type: Boolean }, dropdownProps: Object }); const _sfc_main$L = defineComponent({ name: "TableFilter", inheritAttrs: false, props: TableFilterProps(), components: { Button: Button$1, ScRadioTooltipGroup, Select: Select$5, ScSelect, Tooltip, SelectOption, PlusOutlined, ColumnDialogVue: columnDialog, InputSearch, InputGroup }, setup(props2, { slots, emit: emit2, expose }) { const multipleValue = ref(); const textValue = ref(); const isDefaultValue = ref(false); const searchOptionsRef = ref(); const selectedItem = ref(); const isActiveFilterRef = ref(); const isTableActiveRef = ref(); const validatorResult = ref({ result: true, tip: "" }); watch(() => props2.isActiveFilter, (val) => { isActiveFilterRef.value = val; }, { immediate: true }); watch(() => props2.isTableActive, (val) => { isTableActiveRef.value = val; }, { immediate: true }); watch(() => { var _a2, _b; return (_b = (_a2 = props2 == null ? void 0 : props2.searchOptions) == null ? void 0 : _a2.inputOptions) == null ? void 0 : _b.defaultValue; }, (val) => { var _a2, _b; if (!unref(isDefaultValue) && !unref(textValue)) { textValue.value = val || ((_b = (_a2 = props2 == null ? void 0 : props2.searchOptions) == null ? void 0 : _a2.inputOptions) == null ? void 0 : _b.defaultValue) || ""; isDefaultValue.value = true; } }, { immediate: true, deep: true }); const newProps = computed(() => { return props2; }); const isSearch = computed(() => { return Object.keys(slots).includes("search"); }); const isCreateButton = computed(() => { return Object.keys(slots).includes("createButton"); }); const isMutilpBtns = computed(() => { return Object.keys(slots).includes("multipleBtns"); }); const isShowLeftFilter = computed(() => { var _a2, _b; return ((_a2 = props2 == null ? void 0 : props2.createButtonOptions) == null ? void 0 : _a2.show) || unref(isCreateButton) || ((_b = props2 == null ? void 0 : props2.multipleActionOptions) == null ? void 0 : _b.show) || unref(isMutilpBtns); }); const isShowRightFilter = computed(() => { var _a2; return ((_a2 = props2 == null ? void 0 : props2.searchOptions) == null ? void 0 : _a2.show) || unref(isSearch) || Object.keys(slots).includes("tableActive"); }); const className = computed(() => { const classNames2 = [tableHeaderPrefixClas]; return classNames2; }); const selectValue = computed({ get: () => { var _a2, _b; const { typeList, loading } = props2.searchOptions || {}; const { defaultValue } = ((_a2 = props2 == null ? void 0 : props2.searchOptions) == null ? void 0 : _a2.selectOptions) || {}; if (!props2.selectValue && typeList) { selectedItem.value = typeList[0]; } if (!props2.selectValue && !loading && typeList && (typeList == null ? void 0 : typeList.length)) { selectedItem.value = typeList.find((item) => item.value === defaultValue); } return props2.selectValue || (!loading ? defaultValue : void 0) || ((_b = typeList == null ? void 0 : typeList[0]) == null ? void 0 : _b.value); }, set: (val) => { var _a2, _b, _c; const { clearInput } = ((_a2 = props2 == null ? void 0 : props2.searchOptions) == null ? void 0 : _a2.selectOptions) || {}; selectedItem.value = (_c = (_b = unref(searchOptions2)) == null ? void 0 : _b.typeList) == null ? void 0 : _c.find((item) => item.value === val); const newClearInput = clearInput != null ? clearInput : true; if (newClearInput) { textValue.value = ""; } validatorResult.value = { result: true, tip: "" }; emit2("selectChange", val); emit2("update:selectValue", val); } }); const createButtonOptions = computed(() => { return props2.createButtonOptions; }); const multipleActionOptions2 = computed(() => { return props2.multipleActionOptions; }); const updateSearchOptions = (searchOptions22) => { var _a2; const cloneSearchOptions = deepMerge({ inputOptions: { validatorTrigger: "all" } }, cloneDeep$b(searchOptions22)); if (cloneSearchOptions) { const newSearchOptions = { ...cloneSearchOptions }; if ((_a2 = newSearchOptions.inputOptions) == null ? void 0 : _a2.placeholder) { if (isFunction$6(newSearchOptions.inputOptions.placeholder)) { newSearchOptions.inputOptions.placeholder = newSearchOptions.inputOptions.placeholder(unref(selectedItem)); } } searchOptionsRef.value = newSearchOptions; } }; const searchOptions2 = computed(() => { if (props2.searchOptions) { updateSearchOptions(cloneDeep$b(props2.searchOptions)); } return props2.searchOptions; }); const createHandle = () => { emit2("createClick"); }; const radioHandle = (value7) => { var _a2, _b; const item = (_b = (_a2 = unref(multipleActionOptions2)) == null ? void 0 : _a2.options) == null ? void 0 : _b.filter((item2) => { return item2.value === value7; }); emit2("multipleChange", item[0] || {}); }; const resetSearch = () => { textValue.value = ""; selectValue.value = ""; }; const resetInput = () => { textValue.value = ""; }; const resetMutilp = () => { multipleValue.value = ""; }; const clearAll = () => { resetMutilp(); resetMutilp(); }; const validatorInputValue = () => { const { inputOptions } = unref(searchOptionsRef); if (inputOptions == null ? void 0 : inputOptions.validator) { if (isFunction$6(inputOptions == null ? void 0 : inputOptions.validator)) { const { result, tip } = inputOptions.validator(unref(selectedItem), unref(textValue)); validatorResult.value = { result, tip }; } } }; const updateTextValue = debounce$4(() => { const { inputOptions } = unref(searchOptionsRef); if (["all", "change"].includes(inputOptions == null ? void 0 : inputOptions.validatorTrigger)) { if (unref(textValue)) { validatorInputValue(); } else { validatorResult.value = { result: true, tip: "" }; } } emit2("update:textValue", unref(textValue)); }, 150); const onSearch = (val) => { const { inputOptions } = unref(searchOptionsRef); if (["all", "search"].includes(inputOptions == null ? void 0 : inputOptions.validatorTrigger)) { if (unref(textValue)) { validatorInputValue(); } else { validatorResult.value = { result: true, tip: "" }; } } const { result } = unref(validatorResult); if (!result) { return false; } emit2("searchClick", { value: unref(val), type: unref(selectValue) }); }; expose({ resetMutilp, resetSearch, resetInput, clearAll }); return { createButtonOptions, multipleActionOptions: multipleActionOptions2, searchOptions: searchOptions2, searchOptionsRef, isSearch, isActiveFilterRef, isTableActiveRef, isCreateButton, isMutilpBtns, className, selectValue, textValue, basePrefixCls, isShowLeftFilter, isShowRightFilter, multipleValue, newProps, validatorResult, transformPxtoRem, createHandle, radioHandle, onSearch, updateTextValue }; } }); const _hoisted_1$m = /* @__PURE__ */ createElementVNode("i", { class: "sc-ui sc-xinjian" }, null, -1); const _hoisted_2$h = { class: "scSearchInput" }; const _hoisted_3$a = { key: 0, class: "input-describe" }; function _sfc_render$H(_ctx, _cache, $props, $setup, $data, $options) { const _component_Button = resolveComponent("Button"); const _component_ScRadioTooltipGroup = resolveComponent("ScRadioTooltipGroup"); const _component_SelectOption = resolveComponent("SelectOption"); const _component_ScSelect = resolveComponent("ScSelect"); const _component_InputSearch = resolveComponent("InputSearch"); const _component_InputGroup = resolveComponent("InputGroup"); return openBlock(), createElementBlock("div", { class: normalizeClass(_ctx.className) }, [ _ctx.isShowLeftFilter ? (openBlock(), createElementBlock("div", { key: 0, class: normalizeClass([_ctx.className + "-left", _ctx.isShowLeftFilter && !_ctx.isShowRightFilter ? "isOnlyLeft" : ""]), style: normalizeStyle(_ctx.newProps.filterLeftStyle) }, [ !_ctx.isCreateButton && _ctx.createButtonOptions.show ? withDirectives((openBlock(), createBlock(_component_Button, { key: 0, disabled: _ctx.createButtonOptions.isDisabled, loading: _ctx.createButtonOptions.loading, type: _ctx.createButtonOptions.type || "primary", class: normalizeClass([_ctx.className + "-addBtns"]), onClick: _ctx.createHandle }, { default: withCtx(() => [ _hoisted_1$m, createTextVNode(" " + toDisplayString(_ctx.createButtonOptions.text), 1) ]), _: 1 }, 8, ["disabled", "loading", "type", "class", "onClick"])), [ [vShow, _ctx.createButtonOptions.show] ]) : renderSlot(_ctx.$slots, "createButton", { key: 1 }), !_ctx.isMutilpBtns && _ctx.multipleActionOptions.show ? (openBlock(), createBlock(_component_ScRadioTooltipGroup, { key: 2, value: _ctx.multipleValue, "onUpdate:value": _cache[0] || (_cache[0] = ($event) => _ctx.multipleValue = $event), options: _ctx.multipleActionOptions.options, styleMode: "btnLine", triggerMultiple: _ctx.multipleActionOptions.triggerMultiple, isNotChecked: _ctx.multipleActionOptions.isNotChecked, onChange: _ctx.radioHandle }, null, 8, ["value", "options", "triggerMultiple", "isNotChecked", "onChange"])) : renderSlot(_ctx.$slots, "multipleBtns", { key: 3 }) ], 6)) : createCommentVNode("", true), _ctx.isShowRightFilter ? (openBlock(), createElementBlock("div", { key: 1, class: normalizeClass([_ctx.className + "-right", !_ctx.isShowLeftFilter && _ctx.isShowRightFilter ? "isOnlyRight" : ""]), style: normalizeStyle(_ctx.newProps.filterRightStyle) }, [ !_ctx.isSearch && _ctx.searchOptions.show ? (openBlock(), createBlock(_component_InputGroup, { key: 0 }, { default: withCtx(() => { var _a2, _b, _c, _d, _e, _f, _g; return [ _ctx.searchOptions.showSelect ? (openBlock(), createBlock(_component_ScSelect, { key: 0, value: _ctx.selectValue, "onUpdate:value": _cache[1] || (_cache[1] = ($event) => _ctx.selectValue = $event), style: normalizeStyle({ width: _ctx.transformPxtoRem((_a2 = _ctx.searchOptions.selectOptions) == null ? void 0 : _a2.width) || _ctx.transformPxtoRem("120px"), minWidth: _ctx.transformPxtoRem((_b = _ctx.searchOptions.selectOptions) == null ? void 0 : _b.width) || _ctx.transformPxtoRem("120px") }), dropdownClassName: "scDropdown", placeholder: (_c = _ctx.searchOptions.selectOptions) == null ? void 0 : _c.placeholder, loading: _ctx.searchOptions.loading, getPopupContainer: (_d = _ctx.newProps.dropdownProps) == null ? void 0 : _d.getPopupContainer }, { default: withCtx(() => [ (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.searchOptions.typeList, (optionsItem) => { return openBlock(), createBlock(_component_SelectOption, { key: optionsItem.value, value: optionsItem.value, "disabled:": optionsItem.disabled || optionsItem.disabled }, { default: withCtx(() => [ createTextVNode(toDisplayString(optionsItem.label), 1) ]), _: 2 }, 1032, ["value", "disabled:"]); }), 128)) ]), _: 1 }, 8, ["value", "style", "placeholder", "loading", "getPopupContainer"])) : createCommentVNode("", true), createElementVNode("div", _hoisted_2$h, [ createVNode(_component_InputSearch, { value: _ctx.textValue, "onUpdate:value": _cache[3] || (_cache[3] = ($event) => _ctx.textValue = $event), maxlength: (_e = _ctx.searchOptions.inputOptions) == null ? void 0 : _e.maxlength, style: normalizeStyle({ width: _ctx.transformPxtoRem((_f = _ctx.searchOptions.inputOptions) == null ? void 0 : _f.width) || _ctx.transformPxtoRem("240px") }), placeholder: (_g = _ctx.searchOptionsRef.inputOptions) == null ? void 0 : _g.placeholder, class: normalizeClass(["scSearch", !_ctx.validatorResult.result ? "isError" : ""]), onChange: _ctx.updateTextValue, onSearch: _ctx.onSearch, allowClear: true }, { suffix: withCtx(() => [ createElementVNode("i", { class: "sc-ui sc-sousuo", onClick: _cache[2] || (_cache[2] = ($event) => _ctx.onSearch(_ctx.textValue)) }) ]), _: 1 }, 8, ["value", "maxlength", "style", "placeholder", "class", "onChange", "onSearch"]), !_ctx.validatorResult.result ? (openBlock(), createElementBlock("p", _hoisted_3$a, toDisplayString(_ctx.validatorResult.tip), 1)) : createCommentVNode("", true) ]) ]; }), _: 1 })) : renderSlot(_ctx.$slots, "search", { key: 1 }), _ctx.isActiveFilterRef || _ctx.isTableActiveRef ? (openBlock(), createElementBlock("div", { key: 2, class: normalizeClass([_ctx.className + "-active"]) }, [ renderSlot(_ctx.$slots, "tableActive") ], 2)) : createCommentVNode("", true) ], 6)) : createCommentVNode("", true) ], 2); } const TableFilter = /* @__PURE__ */ _export_sfc(_sfc_main$L, [["render", _sfc_render$H]]); const _sfc_main$K = /* @__PURE__ */ defineComponent({ props: { showBtn: { default: 2 }, actions: null, record: null, fetchParams: null, data: null, dropdownProps: null }, emits: ["onAction"], setup(__props, { emit: emits }) { const props2 = __props; const { cloneDeep: cloneDeep2 } = lodash; const filterShow = ref([]); const actionsOptions = computed(() => { var _a2; return ((_a2 = props2.record) == null ? void 0 : _a2.actionsOptions) || { showBtn: props2.showBtn, actions: props2.actions }; }); const dropdownProps = computed(() => { return { ...props2.dropdownProps }; }); const tooltipGetPopupContainer = (target) => { var _a2; return (_a2 = target == null ? void 0 : target.parentNode) == null ? void 0 : _a2.parentNode; }; const fetchParams = computed(() => { return props2.fetchParams; }); const menuRef = ref(); ref("bottomRight"); function flapSetItem(actions) { if (!isArray$4(actions)) { return actions; } const newActions = actions == null ? void 0 : actions.map((item) => { if (isFunction$6(item.isDisabled)) { item.isDisabled = item == null ? void 0 : item.isDisabled({ ...unref(fetchParams), record: props2.record }); } if (isFunction$6(item.loading)) { item.loading = item == null ? void 0 : item.loading({ ...unref(fetchParams), record: props2.record }); } if (isFunction$6(item.isShow)) { item.isShow = item == null ? void 0 : item.isShow({ ...unref(fetchParams), record: props2.record }); } if (isFunction$6(item.tooltipDes)) { item.tooltipDes = item == null ? void 0 : item.tooltipDes({ ...unref(fetchParams), record: props2.record }); } if (item.children) { flapSetItem(item.children); } return item; }); return newActions; } watch([() => props2.data, () => props2.actions], ([propsData, actions]) => { if (!actions || !propsData) { return false; } const record = cloneDeep2(props2.record); let actionsOptions2 = cloneDeep2(actions); let list2 = []; const isCustomActionsOptions = !!record.actionsOptions; if (isCustomActionsOptions) { list2 = flapSetItem(cloneDeep2(record.actionsOptions.actions)); } else { list2 = treeMap(flapSetItem(cloneDeep2(actionsOptions2)), { children: "children", conversion: (data17) => { var _a2, _b; if (Object.keys(unref(record)).includes(data17.key)) { data17.isDisabled = (_a2 = record[data17.key]) == null ? void 0 : _a2.disable; data17.loading = (_b = record[data17.key]) == null ? void 0 : _b.loading; } return data17; } }); } filterShow.value = list2 == null ? void 0 : list2.filter((item) => item.isShow); }, { deep: true, immediate: true }); const handle = (action) => { if (action.isDisabled || action.loading) { return false; } emits("onAction", action); }; return (_ctx, _cache) => { return openBlock(), createElementBlock("div", { class: normalizeClass([unref(basePrefixCls) + "Actions"]) }, [ (openBlock(true), createElementBlock(Fragment, null, renderList(filterShow.value.slice(0, unref(actionsOptions).showBtn), (item) => { return openBlock(), createElementBlock(Fragment, { key: item.label }, [ item.tooltipDes ? (openBlock(), createBlock(unref(Tooltip), { key: 0, overlayClassName: "scTooltip-white", disabled: item.isDisabled }, { title: withCtx(() => [ createTextVNode(toDisplayString(item.tooltipDes), 1) ]), default: withCtx(() => [ createVNode(unref(Button$1), { type: "link", class: "underlineLink-hover", disabled: !!item.isDisabled, loading: !!(!item.isDisabled && item.loading), onClick: ($event) => handle(item) }, { default: withCtx(() => [ createTextVNode(toDisplayString(item.label), 1) ]), _: 2 }, 1032, ["disabled", "loading", "onClick"]) ]), _: 2 }, 1032, ["disabled"])) : (openBlock(), createBlock(unref(Button$1), { key: 1, type: "link", class: "underlineLink-hover", disabled: !!item.isDisabled, loading: !!(!item.isDisabled && item.loading), onClick: ($event) => handle(item) }, { default: withCtx(() => [ createTextVNode(toDisplayString(item.label), 1) ]), _: 2 }, 1032, ["disabled", "loading", "onClick"])) ], 64); }), 128)), filterShow.value.length > unref(actionsOptions).showBtn ? (openBlock(), createBlock(unref(Dropdown), mergeProps({ key: 0, placement: "bottomRight" }, unref(dropdownProps), { trigger: ["click", "hover"], overlayClassName: unref(basePrefixCls) + "TableDropdown" }), { overlay: withCtx(() => [ createVNode(unref(Menu), null, { default: withCtx(() => [ (openBlock(true), createElementBlock(Fragment, null, renderList(filterShow.value.slice(unref(actionsOptions).showBtn), (item) => { var _a2; return openBlock(), createElementBlock(Fragment, { key: item.label }, [ (item == null ? void 0 : item.children) && ((_a2 = item == null ? void 0 : item.children) == null ? void 0 : _a2.length) ? (openBlock(), createBlock(unref(SubMenu), { key: item.label, title: item.label, disabled: !!item.isDisabled }, { default: withCtx(() => [ (openBlock(true), createElementBlock(Fragment, null, renderList(item.children, (subItem) => { return openBlock(), createBlock(unref(MenuItem), { disabled: !!subItem.isDisabled }, { default: withCtx(() => [ subItem.tooltipDes ? (openBlock(), createBlock(unref(Tooltip), { key: 0, overlayClassName: "scTooltip-white", placement: "left", getPopupContainer: tooltipGetPopupContainer }, { title: withCtx(() => [ createTextVNode(toDisplayString(subItem.tooltipDes), 1) ]), default: withCtx(() => [ createVNode(unref(Button$1), { type: "link", class: "actionBtn", loading: !!subItem.loading, disabled: !!subItem.isDisabled, onClick: ($event) => handle(subItem) }, { default: withCtx(() => [ createTextVNode(toDisplayString(subItem.label), 1) ]), _: 2 }, 1032, ["loading", "disabled", "onClick"]) ]), _: 2 }, 1024)) : (openBlock(), createBlock(unref(Button$1), { key: 1, type: "link", class: "actionBtn", loading: !!subItem.loading, disabled: !!subItem.isDisabled, onClick: ($event) => handle(subItem) }, { default: withCtx(() => [ createTextVNode(toDisplayString(subItem.label), 1) ]), _: 2 }, 1032, ["loading", "disabled", "onClick"])) ]), _: 2 }, 1032, ["disabled"]); }), 256)) ]), _: 2 }, 1032, ["title", "disabled"])) : (openBlock(), createBlock(unref(MenuItem), { key: 1, disabled: !!item.isDisabled }, { default: withCtx(() => [ item.tooltipDes ? (openBlock(), createBlock(unref(Tooltip), { key: 0, overlayClassName: "scTooltip-white", getPopupContainer: tooltipGetPopupContainer, placement: "left" }, { title: withCtx(() => [ createTextVNode(toDisplayString(item.tooltipDes), 1) ]), default: withCtx(() => [ createVNode(unref(Button$1), { type: "link", class: "actionBtn", loading: !!item.loading, disabled: !!item.isDisabled, onClick: ($event) => handle(item) }, { default: withCtx(() => [ createTextVNode(toDisplayString(item.label), 1) ]), _: 2 }, 1032, ["loading", "disabled", "onClick"]) ]), _: 2 }, 1024)) : (openBlock(), createBlock(unref(Button$1), { key: 1, type: "link", class: "actionBtn", loading: !!item.loading, disabled: !!item.isDisabled, onClick: ($event) => handle(item) }, { default: withCtx(() => [ createTextVNode(toDisplayString(item.label), 1) ]), _: 2 }, 1032, ["loading", "disabled", "onClick"])) ]), _: 2 }, 1032, ["disabled"])) ], 64); }), 128)) ]), _: 1 }) ]), default: withCtx(() => [ createVNode(unref(Button$1), { type: "link" }, { default: withCtx(() => [ createElementVNode("span", { ref_key: "menuRef", ref: menuRef }, [ createVNode(unref(EllipsisOutlined)) ], 512) ]), _: 1 }) ]), _: 1 }, 16, ["overlayClassName"])) : createCommentVNode("", true) ], 2); }; } }); function useLoading$1(opt) { let props2; let target = document.body; if (Reflect.has(opt, "target") || Reflect.has(opt, "props")) { const options2 = opt; props2 = options2.props || {}; target = options2.target || document.body; } else { props2 = opt; } const instance = createLoading(props2, void 0, true); const open2 = () => { const t2 = unref(target); if (!t2) return; instance.open(t2); }; const close2 = () => { instance.close(); }; const setTip = (tip) => { instance.setTip(tip); }; return [open2, close2, setTip]; } const ScLoading = withInstall$1(scLoading); const props$f = () => ({ describe: String, widthSize: { type: String, validator: (v2) => ["l", "xs", "x", "md", "xl"].includes(v2) }, value: [String, Number], modelValue: [String, Number], type: { type: String, validator: (v2) => ["error", "warning", "success", "info"].includes(v2) } }); const _sfc_main$J = defineComponent({ name: "ScInput", inheritAttrs: false, components: { Input: Input$3 }, props: props$f(), emits: ["update:value", "input"], setup(props2, { attrs, emit: emit2, slots }) { const baseClass = basePrefixCls + "Input"; const vBind = computed(() => { return { ...props2, ...attrs }; }); const input = ref(); const uuid2 = "sc" + buildUUID(); const value7 = computed({ get: () => { return props2.value || props2.modelValue; }, set: (val) => { emit2("update:value", val); emit2("input", val); } }); const classNames2 = computed(() => { const classList = []; if (props2.type) { classList.push("is" + props2.type.substring(0, 1).toUpperCase() + props2.type.slice(1)); } return classList; }); const isDescribe = computed(() => { return Object.keys(slots).includes("describe"); }); const clearCallback = (event) => { const isParent = findParentDom(event.target, 5, (dom) => { return String(dom.className).includes("ant-input-clear-icon") ? dom : false; }); if (isParent) { emit2("allowClear", void 0); } }; onMounted(() => { const dom = document.querySelector(`#${uuid2}`); dom && dom.addEventListener("mousedown", clearCallback); }); onUnmounted(() => { const dom = document.querySelector(`#${uuid2}`); dom && dom.removeEventListener("mousedown", clearCallback); }); return { classNames: classNames2, baseClass, vBind, value: value7, isDescribe, uuid: uuid2, input }; } }); const _hoisted_1$l = ["id"]; const _hoisted_2$g = { key: 1, class: "input-describe" }; function _sfc_render$G(_ctx, _cache, $props, $setup, $data, $options) { const _component_Input = resolveComponent("Input"); return openBlock(), createElementBlock("div", { class: normalizeClass([_ctx.baseClass, _ctx.vBind.widthSize ? _ctx.baseClass + "-" + _ctx.vBind.widthSize : ""]), id: _ctx.uuid }, [ createVNode(_component_Input, mergeProps({ ref: "input" }, _ctx.vBind, { value: _ctx.value, "onUpdate:value": _cache[0] || (_cache[0] = ($event) => _ctx.value = $event), class: _ctx.classNames }), createSlots({ _: 2 }, [ renderList(Object.keys(_ctx.$slots).filter((item) => !["describe"].includes(item)), (item) => { return { name: item, fn: withCtx((data17) => [ renderSlot(_ctx.$slots, item, normalizeProps(guardReactiveProps(data17))) ]) }; }) ]), 1040, ["value", "class"]), _ctx.isDescribe ? renderSlot(_ctx.$slots, "describe", { key: 0 }) : _ctx.vBind.describe ? (openBlock(), createElementBlock("p", _hoisted_2$g, toDisplayString(_ctx.vBind.describe), 1)) : createCommentVNode("", true) ], 10, _hoisted_1$l); } const scInput = /* @__PURE__ */ _export_sfc(_sfc_main$J, [["render", _sfc_render$G]]); const ScInput = withInstall$1(scInput); const ellipsisProps = () => ({ tooltip: { type: [Boolean, Object], default() { return true; } }, expandTrigger: { type: String }, lineClamp: { type: [Number, String] }, baseHeight: { type: Number, default() { return 22; } }, textFontStyle: { type: Object, default() { return { fontSize: "14px", whiteSpace: "pre" }; } }, isComputedEditPopoverPosition: { type: Boolean, default() { return true; } }, isCollapse: { type: Boolean, default() { return false; } }, isInheritParentWidth: { type: Boolean, default() { return false; } }, hoverSuffix: { type: Boolean, default() { return true; } }, edit: { type: Object, default() { return {}; } }, copyTxt: { type: String }, beforeCallback: Function, afterCallback: Function, isOnlyTips: { type: Boolean, default() { return true; } }, hrefLink: { type: Boolean } }); const _sfc_main$I = defineComponent({ name: "ScEllipsis", components: { Tooltip, Popover, ScInput, ScButton, Popconfirm, Form, FormItem }, props: ellipsisProps(), emits: ["editConfirm", "editInputChange"], setup(props2, { attrs, emit: emit2, expose }) { const baseClass = basePrefixCls + "Ellipsis"; const isCollapse = ref(props2.isCollapse); const isChecked = ref(false); const popoverVisible = ref(false); const uuid2 = basePrefixCls + buildUUID(); const editFormRef = ref(); const isHeightOver = ref(false); const maxWidthValue = ref(); const contentWidthValue = ref(); const textDefaultRef = ref(); const formState = reactive({ name: "" }); const isDefaultTooltip = ref(false); const styleProps = computed(() => { return { ...attrs.style }; }); const className = computed(() => { return [ uuid2, baseClass, props2.lineClamp ? baseClass + "-lineClamp" : "", props2.hoverSuffix ? baseClass + "-hoverSuffix" : "", props2.hrefLink ? baseClass + "-href--link" : "" ]; }); const popoverClassName = computed(() => { return [ props2.isOnlyTips ? baseClass + "-isOnlyTips" : "", baseClass + "-popover", uuid2 ].join(" "); }); const lineClampStyle = computed(() => { const cssOss = /* @__PURE__ */ Object.create({}); if (props2.lineClamp) { cssOss["-webkit-line-clamp"] = isChecked.value ? "999" : props2.lineClamp; cssOss["max-height"] = isChecked.value ? "999px" : parseInt(props2.lineClamp + "") * props2.baseHeight + "px"; } cssOss["--baseHeight"] = props2.baseHeight + "px"; return { ...cssOss }; }); const isTooltip = computed(() => { return isBoolean$1(props2.tooltip) ? props2.tooltip : Boolean(props2.tooltip); }); const tooltipProps = computed(() => { return isObject$4(props2.tooltip) ? props2.tooltip : {}; }); const newProps = computed(() => { return props2; }); const getPopupContainer2 = (target) => { var _a2, _b, _c, _d; const { edit } = props2; if ((edit == null ? void 0 : edit.getPopupContainer) && isFunction$6(edit == null ? void 0 : edit.getPopupContainer)) { return (_d = (_c = (_b = (_a2 = edit == null ? void 0 : edit.getPopupContainer(target)) == null ? void 0 : _a2.parentNode) == null ? void 0 : _b.parentNode) == null ? void 0 : _c.parentNode) == null ? void 0 : _d.parentNode; } return document.body; }; const getPaddingBorderWidth = (target) => { var _a2, _b, _c, _d, _e, _f, _g, _h; return { paddingLeft: ((_a2 = target == null ? void 0 : target.style) == null ? void 0 : _a2.paddingLeft) || ((_b = window == null ? void 0 : window.getComputedStyle(target)) == null ? void 0 : _b.paddingLeft) || "0", paddingRight: ((_c = target == null ? void 0 : target.style) == null ? void 0 : _c.paddingRight) || ((_d = window == null ? void 0 : window.getComputedStyle(target)) == null ? void 0 : _d.paddingRight) || "0", borderLeftWidth: ((_e = target == null ? void 0 : target.style) == null ? void 0 : _e.borderLeftWidth) || ((_f = window == null ? void 0 : window.getComputedStyle(target)) == null ? void 0 : _f.borderLeftWidth) || "0", borderRightWidth: ((_g = target == null ? void 0 : target.style) == null ? void 0 : _g.borderRightWidth) || ((_h = window == null ? void 0 : window.getComputedStyle(target)) == null ? void 0 : _h.borderRightWidth) || "0" }; }; const computedWidth = () => { var _a2, _b, _c, _d, _e, _f, _g; const { isInheritParentWidth, lineClamp, baseHeight, textFontStyle } = props2; const textDom = document.querySelector(`.${uuid2} .scEllipsis-text`); const newTextFontStyle = { lineHeight: baseHeight + "px", fontSize: "14px", fontFamily: "var(--vxe-font-family)", whiteSpace: "pre", ...textFontStyle }; const containerDom = document.querySelector(`.${uuid2}`); if (!containerDom) { return false; } const parentDom = containerDom.parentNode; const { paddingLeft, paddingRight, borderLeftWidth, borderRightWidth } = getPaddingBorderWidth(parentDom); const parentDomWidth = parseInt((parentDom == null ? void 0 : parentDom.clientWidth) + "" || "0") - parseInt(borderRightWidth || "0") - parseInt(borderLeftWidth || "0") - parseInt(paddingRight || "0") - parseInt(paddingLeft || "0"); const contentDom = document.createElement("p"); const suffixDom = document.querySelector( `.${uuid2} .scEllipsis-suffix-container` ); const suffixDomWidth = suffixDom ? isNaN(parseInt(((_a2 = window == null ? void 0 : window.getComputedStyle(suffixDom)) == null ? void 0 : _a2.width) || "0")) ? 0 : parseInt(((_b = window == null ? void 0 : window.getComputedStyle(suffixDom)) == null ? void 0 : _b.width) || "0") : 0; contentDom.style.display = "inline-block"; (_c = Object.keys(newTextFontStyle || {})) == null ? void 0 : _c.forEach((StyleKey) => { contentDom.style[StyleKey] = newTextFontStyle[StyleKey]; }); const containerDomWidth = ((_d = containerDom == null ? void 0 : containerDom.style) == null ? void 0 : _d.maxWidth) || ((_e = containerDom == null ? void 0 : containerDom.style) == null ? void 0 : _e.width) || (containerDom ? (_f = window == null ? void 0 : window.getComputedStyle(containerDom)) == null ? void 0 : _f.width : containerDom) || (textDom ? (_g = window == null ? void 0 : window.getComputedStyle(textDom)) == null ? void 0 : _g.width : textDom); const maxWidth = isInheritParentWidth ? parentDomWidth === 0 ? containerDomWidth + "" : parentDomWidth + "" : parseInt(containerDomWidth) > parentDomWidth && parentDomWidth !== 0 ? parentDomWidth + "" : containerDomWidth; contentDom.innerText = (textDom == null ? void 0 : textDom.innerText) || ""; document.body.append(contentDom); const contentWidth = parseInt(window.getComputedStyle(contentDom).width || "0") + suffixDomWidth; contentWidthValue.value = parseInt(window.getComputedStyle(contentDom).width || "0"); const contentHeight = parseInt(window.getComputedStyle(contentDom).height || "0"); const maxHeight = parseInt((lineClamp || "") + "" || "1") * baseHeight; isHeightOver.value = contentHeight > maxHeight; document.body.removeChild(contentDom); maxWidthValue.value = parseInt(maxWidth) - suffixDomWidth; isDefaultTooltip.value = parseInt(maxWidth) * parseInt((lineClamp || "") + "" || "1") > contentWidth + 2 * parseInt((lineClamp || "") + "" || "1"); }; const observer1 = new MutationObserver(() => { computedWidth(); }); watch(() => popoverVisible.value, (val) => { var _a2; if (!val) { (_a2 = editFormRef == null ? void 0 : editFormRef.value) == null ? void 0 : _a2.resetFields(); } }); const handleClose = async () => { const { edit } = props2; if ((edit == null ? void 0 : edit.cancel) && isFunction$6(edit == null ? void 0 : edit.cancel)) { const result = await (edit == null ? void 0 : edit.cancel(() => { popoverVisible.value = false; })); if (result) { popoverVisible.value = false; } } else { formState.name = ""; popoverVisible.value = false; } }; const handleEntry = async () => { emit2("editConfirm", formState.name, handleClose, editFormRef.value); const { afterCallback } = props2; if (isFunction$6(afterCallback)) { await (afterCallback == null ? void 0 : afterCallback()); } }; const handleClick2 = () => { if (props2.expandTrigger === "click") { isChecked.value = !unref(isChecked); } }; const { copy, copied } = useClipboard({ legacy: true }); const { curLocale, antLocale } = useLocale(); const handleCopy = async () => { var _a2, _b; const copyText = unref(newProps).copyTxt; const { beforeCallback, afterCallback } = props2; if (isFunction$6(beforeCallback)) { await (beforeCallback == null ? void 0 : beforeCallback()); } await copy(String(copyText)); if (copied && ((_a2 = curLocale == null ? void 0 : curLocale.copy) == null ? void 0 : _a2.successMessage)) { message.success({ content: (_b = curLocale == null ? void 0 : curLocale.copy) == null ? void 0 : _b.successMessage, duration: 1.5 }); } if (isFunction$6(afterCallback)) { await (afterCallback == null ? void 0 : afterCallback()); } }; const closeEditPopover = (event) => { var _a2; if (((_a2 = event == null ? void 0 : event.target) == null ? void 0 : _a2.className.indexOf("scEllipsis-popover")) > -1) { popoverVisible.value = false; } }; const handleEdit = async (event) => { event.stopPropagation(); const { edit, isComputedEditPopoverPosition, beforeCallback } = props2; formState.name = edit.text || ""; if (isFunction$6(beforeCallback)) { await (beforeCallback == null ? void 0 : beforeCallback()); } if (edit && edit.show) { popoverVisible.value = !popoverVisible.value; if (popoverVisible.value) { const timer = setTimeout(() => { const editInputDom = document.querySelector(`.${uuid2} .ant-popover-inner-content .ant-input-affix-wrapper > .ant-input`); editInputDom == null ? void 0 : editInputDom.focus(); editInputDom == null ? void 0 : editInputDom.setSelectionRange((formState.name + "").length, (formState.name + "").length); if (isComputedEditPopoverPosition) { const popoverDom = document.querySelector(`.${uuid2} .ant-popover-content`); const popoverContainerDom = document.querySelector(`.${uuid2}.scEllipsis-popover`); popoverContainerDom == null ? void 0 : popoverContainerDom.removeEventListener("click", closeEditPopover); popoverContainerDom == null ? void 0 : popoverContainerDom.addEventListener("click", closeEditPopover); if (contentWidthValue.value > maxWidthValue.value) { popoverDom.style.transform = `translateX(-${maxWidthValue.value}px)`; } if (contentWidthValue.value < maxWidthValue.value) { popoverDom.style.transform = `translateX(-${contentWidthValue.value}px)`; } } clearTimeout(timer); }, 0); } return false; } }; const handleEditChange = (val) => { emit2("editInputChange", val); }; onMounted(() => { nextTick(() => { computedWidth(); const containerDom = document.querySelector(`.${uuid2} .scEllipsis-text-default`); if (containerDom || textDefaultRef.value) { observer1.observe(containerDom || textDefaultRef.value, { attributes: true, childList: true, characterData: true, subtree: true }); } }); }); onUnmounted(() => { observer1.disconnect(); const popoverContainerDom = document.querySelector(`.${uuid2}.scEllipsis-popover`); popoverContainerDom == null ? void 0 : popoverContainerDom.removeEventListener("click", closeEditPopover); }); expose({ computedWidth, editFormRef }); return { className, styleProps, isTooltip, tooltipProps, baseClass, lineClampStyle, isCollapse, isChecked, newProps, popoverVisible, isDefaultTooltip, uuid: uuid2, formState, editFormRef, isHeightOver, textDefaultRef, popoverClassName, antLocale, getPopupContainer: getPopupContainer2, handleEntry, handleClose, handleCopy, handleEdit, handleClick: handleClick2, handleEditChange }; } }); const _hoisted_1$k = ["checked"]; const _hoisted_2$f = { key: 0, class: "input-describe" }; function _sfc_render$F(_ctx, _cache, $props, $setup, $data, $options) { const _component_ScInput = resolveComponent("ScInput"); const _component_FormItem = resolveComponent("FormItem"); const _component_Form = resolveComponent("Form"); const _component_ScButton = resolveComponent("ScButton"); const _component_Popover = resolveComponent("Popover"); const _component_Tooltip = resolveComponent("Tooltip"); return openBlock(), createBlock(_component_Tooltip, mergeProps(_ctx.tooltipProps, { destroyTooltipOnHide: "" }), createSlots({ default: withCtx(() => { var _a2, _b, _c, _d; return [ createElementVNode("div", { class: normalizeClass(_ctx.className), style: normalizeStyle(_ctx.styleProps), onClick: _cache[5] || (_cache[5] = (...args) => _ctx.handleClick && _ctx.handleClick(...args)) }, [ createElementVNode("input", { class: normalizeClass([_ctx.baseClass + "-exp"]), type: "checkbox", checked: _ctx.isChecked }, null, 10, _hoisted_1$k), createElementVNode("div", { class: normalizeClass([_ctx.baseClass + "-text", _ctx.isChecked ? "isCheck" : ""]), style: normalizeStyle(_ctx.lineClampStyle) }, [ createElementVNode("span", { class: normalizeClass([_ctx.baseClass + "-suffix-container", !_ctx.isDefaultTooltip || _ctx.isHeightOver ? _ctx.isChecked ? "" : "showEllipsisTxt" : ""]) }, [ _ctx.isCollapse && !_ctx.$slots.suffix ? (openBlock(), createElementBlock("label", { key: 0, class: normalizeClass([_ctx.baseClass + "-btn"]), for: "exp1", onClick: _cache[0] || (_cache[0] = () => { _ctx.isChecked = !_ctx.isChecked; }) }, null, 2)) : createCommentVNode("", true), _ctx.$slots.suffix || ((_a2 = _ctx.newProps) == null ? void 0 : _a2.copyTxt) || ((_c = (_b = _ctx.newProps) == null ? void 0 : _b.edit) == null ? void 0 : _c.show) ? (openBlock(), createElementBlock("span", { key: 1, class: normalizeClass([_ctx.baseClass + "-suffix"]) }, [ renderSlot(_ctx.$slots, "suffix"), ((_d = _ctx.newProps) == null ? void 0 : _d.copyTxt) ? (openBlock(), createElementBlock("i", { key: 0, class: "sc-ui sc-file-copy", onClick: _cache[1] || (_cache[1] = (...args) => _ctx.handleCopy && _ctx.handleCopy(...args)) })) : createCommentVNode("", true), createVNode(_component_Popover, { visible: _ctx.popoverVisible, "onUpdate:visible": _cache[4] || (_cache[4] = ($event) => _ctx.popoverVisible = $event), title: null, trigger: "click", overlayClassName: _ctx.popoverClassName, placement: "bottomLeft", destroyTooltipOnHide: "", getPopupContainer: _ctx.getPopupContainer }, { content: withCtx(() => { var _a3, _b2, _c2, _d2, _e, _f; return [ createVNode(_component_Form, { ref: "editFormRef", model: _ctx.formState, rules: _ctx.newProps.edit.rules }, { default: withCtx(() => [ createVNode(_component_FormItem, { label: "", name: "name" }, { default: withCtx(() => [ createVNode(_component_ScInput, mergeProps({ value: _ctx.formState.name, "onUpdate:value": _cache[2] || (_cache[2] = ($event) => _ctx.formState.name = $event) }, _ctx.newProps.edit, { describe: "", onChange: _ctx.handleEditChange }), createSlots({ _: 2 }, [ _ctx.newProps.edit.showMaxLength ? { name: "suffix", fn: withCtx(() => [ createTextVNode(toDisplayString((_ctx.formState.name + "").length) + "/" + toDisplayString(_ctx.newProps.edit.maxLength), 1) ]) } : void 0 ]), 1040, ["value", "onChange"]) ]), _: 1 }), _ctx.newProps.edit.describe ? (openBlock(), createElementBlock("p", _hoisted_2$f, toDisplayString(_ctx.newProps.edit.describe), 1)) : createCommentVNode("", true) ]), _: 1 }, 8, ["model", "rules"]), createElementVNode("div", { class: normalizeClass([_ctx.baseClass + "-actives"]), style: normalizeStyle({ textAlign: ((_b2 = (_a3 = _ctx.newProps) == null ? void 0 : _a3.edit) == null ? void 0 : _b2.align) || "right" }) }, [ createVNode(_component_ScButton, { status: "info", size: "small", onClick: _ctx.handleClose }, { default: withCtx(() => { var _a4, _b3; return [ createTextVNode(toDisplayString(((_b3 = (_a4 = _ctx.antLocale) == null ? void 0 : _a4.Modal) == null ? void 0 : _b3.cancelText) || "\u53D6\u6D88"), 1) ]; }), _: 1 }, 8, ["onClick"]), createVNode(_component_ScButton, { type: "primary", size: "small", loading: (_d2 = (_c2 = _ctx.newProps) == null ? void 0 : _c2.edit) == null ? void 0 : _d2.confirmLoading, disabled: (_f = (_e = _ctx.newProps) == null ? void 0 : _e.edit) == null ? void 0 : _f.confirmDisabled, onClick: _ctx.handleEntry }, { default: withCtx(() => { var _a4, _b3; return [ createTextVNode(toDisplayString(((_b3 = (_a4 = _ctx.antLocale) == null ? void 0 : _a4.Modal) == null ? void 0 : _b3.okText) || "\u53D6\u6D88"), 1) ]; }), _: 1 }, 8, ["loading", "disabled", "onClick"]) ], 6) ]; }), default: withCtx(() => { var _a3, _b2; return [ ((_b2 = (_a3 = _ctx.newProps) == null ? void 0 : _a3.edit) == null ? void 0 : _b2.show) ? (openBlock(), createElementBlock("i", { key: 0, class: "sc-ui sc-Frame2", onClick: _cache[3] || (_cache[3] = (...args) => _ctx.handleEdit && _ctx.handleEdit(...args)) })) : createCommentVNode("", true) ]; }), _: 1 }, 8, ["visible", "overlayClassName", "getPopupContainer"]) ], 2)) : createCommentVNode("", true) ], 2), createElementVNode("span", { ref: "textDefaultRef", class: normalizeClass([_ctx.baseClass + "-text-default"]) }, [ renderSlot(_ctx.$slots, "default") ], 2) ], 6) ], 6) ]; }), _: 2 }, [ _ctx.isTooltip && !_ctx.tooltipProps.title ? { name: "title", fn: withCtx(() => [ _ctx.$slots.tooltip ? renderSlot(_ctx.$slots, "tooltip", { key: 0 }) : createCommentVNode("", true), !_ctx.$slots.tooltip && (!_ctx.isDefaultTooltip || _ctx.isHeightOver) ? renderSlot(_ctx.$slots, "default", { key: 1 }) : createCommentVNode("", true) ]) } : void 0 ]), 1040); } const scEllipsis = /* @__PURE__ */ _export_sfc(_sfc_main$I, [["render", _sfc_render$F]]); const ScEllipsis = withInstall$1(scEllipsis); const { cloneDeep: cloneDeep$a } = lodash; const _sfc_main$H = defineComponent({ name: "ScTableFilterDropDown", inheritAttrs: false, components: { Dropdown, Menu, MenuItem, SubMenu, Tooltip, ScLoading, Spin, ScEllipsis }, props: scFilterProps(), setup(props2, { emit: emit2 }) { const visible2 = ref(true); const selectedItems = ref([]); const menuKeys = ref(); const selectedKeys2 = computed(() => { var _a2; return (_a2 = unref(selectedItems)) == null ? void 0 : _a2.map((item) => item.key); }); const overlayClassName = computed(() => { return props2.overlayClassName; }); const dropdownProps = computed(() => { return props2.dropdownProps; }); const filterList = computed(() => { var _a2; return (_a2 = props2.filterList) == null ? void 0 : _a2.map((item) => { if (item.text) { item.label = item.text; } if (item.value) { item.key = item.value; } return item; }); }); const filterLoading = ref(false); watchEffect(() => { var _a2; filterLoading.value = !!((_a2 = props2.column) == null ? void 0 : _a2.filterLoading); }); const indicator = h$2("span", { class: "loading-transition" }); const columnOptions = computed(() => { return cloneDeep$a(props2.column); }); const handle = ({ key: key2 }) => { var _a2; const item = findNode(unref(filterList), (node) => node.key === key2, { key: "key" }); if ((_a2 = unref(columnOptions)) == null ? void 0 : _a2.filterMultiple) { selectedItems.value = [...unref(selectedItems), item]; } else { selectedItems.value = [item]; } emit2("filter", unref(selectedItems), unref(selectedKeys2)); }; const handleDeselect = ({ key: key2 }) => { selectedItems.value = unref(selectedItems).filter((item) => item.key !== key2); emit2("filter", unref(selectedItems), unref(selectedKeys2)); }; watch(() => props2.filterSelected, (val) => { menuKeys.value = (val == null ? void 0 : val.map((item) => item.key)) || []; if ((val == null ? void 0 : val.length) === 0) { selectedItems.value = []; } }); return { basePrefixCls, filterList, visible: visible2, overlayClassName, columnOptions, selectedKeys: selectedKeys2, menuKeys, filterLoading, indicator, dropdownProps, handle, handleDeselect }; } }); function _sfc_render$E(_ctx, _cache, $props, $setup, $data, $options) { var _a2; const _component_Spin = resolveComponent("Spin"); const _component_ScEllipsis = resolveComponent("ScEllipsis"); const _component_MenuItem = resolveComponent("MenuItem"); const _component_SubMenu = resolveComponent("SubMenu"); const _component_Tooltip = resolveComponent("Tooltip"); const _component_Menu = resolveComponent("Menu"); const _component_Dropdown = resolveComponent("Dropdown"); return openBlock(), createElementBlock("div", { class: normalizeClass([_ctx.basePrefixCls + "filterDropDown", _ctx.filterLoading ? "isLoading" : "", _ctx.overlayClassName]) }, [ createVNode(_component_Dropdown, { class: normalizeClass(_ctx.basePrefixCls + "TableDropdown"), visible: _ctx.visible, overlayClassName: _ctx.overlayClassName, "get-popup-container": (_a2 = _ctx.dropdownProps) == null ? void 0 : _a2.getPopupContainer }, { default: withCtx(() => { var _a3; return [ _ctx.filterLoading ? (openBlock(), createBlock(_component_Spin, { key: 0, indicator: _ctx.indicator }, null, 8, ["indicator"])) : createCommentVNode("", true), createVNode(_component_Menu, { multiple: (_a3 = _ctx.columnOptions) == null ? void 0 : _a3.filterMultiple, "selected-keys": _ctx.menuKeys, "onUpdate:selected-keys": _cache[0] || (_cache[0] = ($event) => _ctx.menuKeys = $event), onDeselect: _ctx.handleDeselect, onClick: _ctx.handle }, { default: withCtx(() => [ (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.filterList, (item) => { var _a4; return openBlock(), createElementBlock(Fragment, { key: item.label }, [ (item == null ? void 0 : item.children) && ((_a4 = item == null ? void 0 : item.children) == null ? void 0 : _a4.length) ? (openBlock(), createBlock(_component_SubMenu, { key: 0, disabled: !!item.isDisabled, popupClassName: "filterDropdown-subMenu" }, { title: withCtx(() => [ createVNode(_component_ScEllipsis, { "is-inherit-parent-width": "", style: { "max-width": "162px" }, tooltip: { placement: "rightTop" } }, { default: withCtx(() => [ createTextVNode(toDisplayString(item.label), 1) ]), _: 2 }, 1024) ]), default: withCtx(() => [ (openBlock(true), createElementBlock(Fragment, null, renderList(item.children, (subItem) => { return openBlock(), createBlock(_component_MenuItem, { disabled: !!subItem.isDisabled, "aria-label": subItem.label, key: subItem.key }, { default: withCtx(() => [ createVNode(_component_ScEllipsis, { "is-inherit-parent-width": "", style: { "max-width": "182px" }, tooltip: { placement: "rightTop" } }, { default: withCtx(() => [ createTextVNode(toDisplayString(subItem.label), 1) ]), _: 2 }, 1024) ]), _: 2 }, 1032, ["disabled", "aria-label"]); }), 128)) ]), _: 2 }, 1032, ["disabled"])) : (openBlock(), createBlock(_component_MenuItem, { disabled: !!item.isDisabled, key: item.key }, { default: withCtx(() => [ item.isDisabled && item.tooltipDes ? (openBlock(), createBlock(_component_Tooltip, { key: 0, overlayClassName: "scTooltip-white", destroyTooltipOnHide: "" }, { title: withCtx(() => [ createTextVNode(toDisplayString(item.tooltipDes), 1) ]), default: withCtx(() => [ createTextVNode(" " + toDisplayString(item.label), 1) ]), _: 2 }, 1024)) : (openBlock(), createBlock(_component_ScEllipsis, { key: 1, "is-inherit-parent-width": "", style: { "max-width": "182px" }, tooltip: { placement: "rightTop" } }, { default: withCtx(() => [ createTextVNode(toDisplayString(item.label), 1) ]), _: 2 }, 1024)) ]), _: 2 }, 1032, ["disabled"])) ], 64); }), 128)) ]), _: 1 }, 8, ["multiple", "selected-keys", "onDeselect", "onClick"]) ]; }), _: 1 }, 8, ["class", "visible", "overlayClassName", "get-popup-container"]) ], 2); } const filterDropDown = /* @__PURE__ */ _export_sfc(_sfc_main$H, [["render", _sfc_render$E]]); const _sfc_main$G = defineComponent({ props: { text: { type: String }, img: { type: String, default() { return "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMQAAACACAMAAABjsTYjAAACoFBMVEUAAADx9fmmu9Ho7vXm7PT9/v7+///8/v/9/v/7+/7t9ff8/f/8/f7u+P+lutHs8vjr8fenvNHO2ujx9vnx9vnb5PazzMz3+f3v9Pny9vnE0+Pq8ffu8/imvdKxx9bX4e3Az+GswNXw9Pn2+fva4e/Z4/Do7ve5ytuwwtfy9vru8/n8/P6nvNDp7/aowdOqv9Hk7PPe6PLW4ezD0uLc5vC1x9r6/P2mu9H1+Pvv9Pjl7fbU3+2lutCmu9H1+fvs8vfa5O+zxdj7/f7M2uf5+/3l7fX9//+mvNL1+Prl7PT8/P+kuc7f5vHk7PXZ5O/R3ere5/D+///Q3evf6PLM2ealvNDG1eTM2+emvNXX5evo8Pe8zN7u9PnP3OnG1eXj6/Tv9Pnl7fbX4u39/v/8/f76+/34+fzE1OPJ2Of9/v/h5/Pa5fCkvdD7/P78/f/5+/34+vzy9vr1+PvX4u76/P73+fzv8/j09/rs8vf9/v/T3+zR3evv9PjS3uvM2und5vHw9PnP3OrV4O3m7PXU4O3Y4+/k6/Th6fMAjNP2+fvf5/La5PDz9/rq8Pbc5fDO2+rn7vbN2+ri6vTl7PTq8Pfc5fHM2eny9frj6/Po7/XL2ejf6PLs8ffs8fbr8fjk6/Xm7fbw9fnu8/fb5PDo7/fY4u/Q3OurwNXn7vTq7/bX4e3Z4/Df6PPm7vTl6/PW4O3r8fft8/nl7fbj6/Ls8vm+zt/g6PLh6fHa5O3c5u/L2efe5vLj6vTU3+vH1uXh6vTJ1+bA0eHu9Pjf6PHS3urj6/Xi6fLE0+P7/P+DwOPC0uKxxNgqmdQ6otkWlNW+2eygzei6y95Rrd5bqNSv0edtuOG1x9tJpdegvdWVudU0nNWMxed8vOF7stWQxORfst/M8IyMAAAAbXRSTlMA/qb+/t8gv59AIGCAEJxA35HSv2AQCt/Q39S/oDwU3sqrjzAg+fTBsZ9/b2hQKR/y7u3Cv7eQh39wb2BeU+/u4bGwop+ff3JvYFBJMPj05uPfv5+FfXVNSED59O/f38+vkJDv7+/v7+nPf3Vo0Nxt9wAAFlhJREFUeNrUWmdvE0EQtfIRiV5E7130IkQTIIQQoore2xcQ8M1fThiIbGMbEYEhIRIQjAkOGIzBAUJCLwKE6L23v8KbeddMAAkLx+Hd7szsm13vvNz5zjZ4GgRDlw5a1LJZUVFRszGLJnTp6vnP0LT52M5rJ/UFhs/rNnJ0kaLloCGe/wZNx7Zeeb7mvHEejejbbaSpo4vnv0DzTkaNYdTUGOdrKKQGvgY6pvw3MiABOGrUwByVjvAoZIi1ZDTyi6pJJxSN2mtQPEqHq4YQhQFieasixYR2nsaLsZOqj1azZnhpxAF0Yph5MhrtnaptT6n3AMuGRySWnHpgeUeqGOpplGjSXio+QGhAEYST4CXVrFGqaNKiquqAC1W0puOQbGNU0W5ol6UTJy5pceDAoarT6FVS8iGUT2CAEcpHhClwlopG8r5oO2vG5qkj+/UoKuoxbN++qqp9h6pgqyTQEcrXAE5CBCSpomUjuEc1X9dCC8QxrNvkfQKM0cUx4hDGDaH4/J7uKTBmdDq27y9AKejEbN5pC/fw5nNZSjm27xhMEA4tCAuHrgcyGgb3BYOYgqwQTMDM49uikBfUuCCKVhxjs0YaoCuFgyJAa2cCJAwfFxM9BcO04AUcrAn2gpSLMZrWeEFi0KyaXoYYISMG02f3KNypoIZg/Bg1SLlxeGvkdAcXVC8jV7ZVQU/FunC8DIWXxeNBNI0pRcZwSF0AC164Mp0rmTJklI+HkSkr6KkYFw/HFeFwPCwVqZIyOIuXDiYIK3PUlaFwDEwiGI4HwzwVMz0FQO9hWogWQxe+r4os1gWSMuN+mAcCGyNUxCJPATDt+vXSUq31Og4C1XGs7vreq3eAB1HSpZzCFB0Sgn6qogDXU+9waWkpZBAMw9oJ1HbvcZJ4XAEJ9rz6aFWoB960SGnEKYMhHW0k8uLpE+C1qLhJXho7hxZ4PU3wNDTaRoDSyK1bkVvwiG+V3hIrDPF5F/EeIu4gAaBusTBYKQ60Qu9PYzwNjRks4A94usvEh2TyQaT2t/Nq8Tqj9SbraWgsqK2NpCNo6ezyQElH0i3iNhNoYtIsPo2uo9ra7kWCpQ3948eaSEUkXVGRxoGCBRFEGKLBp2vT7y0RuJz8qFjn6gR0+FqZjhcRM7dfkaJZQ/4y2HZwBQUIdqOr313BAsm9MjU8g4jtGKOldyOnAaaiw4JAQ5/bvWF/GWy7afhuKRkHKpFDnBBAWj3MW1PEE4gI2TkknMZFSsLN6UgZ0xvi2+q44cW6cbEccBU6MDlQIGTwxSWiAgSbC1xEy9wcno1mef8E0ntUMXBNd6YMGZtFsaBrxVKZdYt9iocdhiCFRkQHRhwbQ/RV/Rvih8FZk4sJSoEY9xiNDuaFKQJPu5comyyrRydIuJk5VDEmnypmDS/fW178C7jIvTiA5y4RzrTycnNOPVwrB1te3Gd0vlX0Hr63HIcaUYMQGysBh+pRJLpmLRFfk8lHSiItE7kQ0IUiDJGoQpflpootnjyh9+TyRAIbsRZ08QS1AWI4cETcJCVWhdrLLcH8e5iZPv3z+v1iQSIhWyVECYJEOWKx9mhvAnFCxoieUcTHZHKHpHGIS8hyHcBiPQMx+mLSRuTzd8HxJYkSAEbt3hJUw9hu6GrhVQQf2D6Zq2nOELUlUjAoHJKghxbxfGAM8uQDk0tKzmAnxyboqMMFck9tEd4z5LDijLVWA7oQDmclqD49VEU+TsX4UOgMDmklCM5IR4B9pZAQHFKEBq/sTx2SllKlZsnofK6RqeDI8qXROubtC8ao0AnskVUoY92ZlDv73XpgvytxJxgRLJ1ZN3Aq8vPZvHco5A2d8J7wwp5ACCvAKAQLShw6xmgI+eHpUzJ5CSs5g2sw4gAW4CpY5dCQ5uePf/+RdolIALCHCEGkAxpzpCyM4qH5xe7xdmdGCAdHfDV2N0jMzdMPauudsultUJmLYvRGRXy5uZNc9nzX9OyAtk+efvEf5QVS3r+AXE+v/pB3yq//wvrAa/nPRXTLpFIZbpbJcN+UOljGHCnBsp6/eJNirn6dKWcd5wDKc2K//LyzvYFMJhPwegOBQMabUZfySsP+EIVcyhvAAR4GEAIT4AOYJMMUWiYgMzNwwmElgEjrVz4gQYDv7LyIuBGwgH1soGTVhE4Ho3bru8fAuzsZ0g52OmvthP59UhbbMT8iUNNWbK+Hejg0eFqTtnhgx5uPHz8kATKcwW4uB0zeGliZjtmXU9N/9Z7YGti5detW2QseG8HJIRxYVUFn4vkz8+tEEiR5QtfAIACLIMCBZuAk3z3r57Q2rf+RiFaytVU0rYqS9ks8tB52Sdcaay4LJuvK2ES/rFtsh8rm/0bEVFd92+ncqC/lof07AVN/xPafotHurxSDK493yr3wwa54/HYB9oBhwB2tgA3QJJwt4jEIsM5EdFpOJa0hCE35sz52tK6MnV2Wq4Ym7rPYlnu4wfHvSPNyennpKsjfLlMt9bDR/axrXnn80MVRuYoYUOl+Q833bd/uk0MhW9HYsXg6Jfhzxyss0FX2DE6jAUjZ4Abd3d+KOlcap+qutM31RGyLuU7FeJ/P7yPMmqgH1gwYMQC+PQQ4gfqp0YZrucMy7s8vRWYZx/dcvHt5YY4nAiLcb6hVPsjwnzzpyztWu0/EQFxNdVdSI3I8EVhdtsx1Kvx6JsScFDGITirolIZDp0UalGom4+MBSA6vwVfgHL8uB8D253+ss+6ve87dvXwjmtNbuzNOxKmsN9R87IvmhhCyLWmOSdoU6nJy9cHVJ93MzRX9nH/Ca84Tce/q1FxPxNm6K7Nspvkan+4R9UfFR1kUI/YompJRhbA0UZCMOctZhZECMyzsuHTp0oqpTTxEz8pYWd3lG/7bG3IQMbayMnbqYN2V9ZaozkYsrNWxRCdEiXbkZEhomXT1QN41g37/HYjYsafFQMpojftr8eV7V28+Gvr3IjrgpnC27u7lEW31KTFwkmFUx2r3798fRYdVT0sSBtYNP2jCmeqmstdayx+Jhtie6liLgR5grdxfU/6rD+78/U22jVxN5+quXL6xWB7dLY4YhhEzquv8OwjstmM/AzHiGTKyaRIWScv5jJhkINnDD6Dhxp5YNf5k1S1m4HKS+2s0evNRx78TwEf98dgpLE/dm4//bmwYR6pjRixmGId8O+qBxeYM9/LDuJYe1MUA40jsyJFYi15NhuFE3L56887iXB50P1g3lx8WoiiMm7QriRAkSKywIbGywYKtpYSwEf+BR0XHhMEIkYgWMUIrupjatKTVRjwT4pUSO/+R3zmfcfXhGd/ce+6ZW4/fd+7ptASer89eYOLcvt0JJpiEi5PJg9v8Zrdv39bk4t4jQ3vlBtKtbyjVXthX8Mj65smTt4/a96BP7t1LvG7rd+59/urNm8/7l/xDN6V2EDzaLrx8nsiAK59Mnp6+je7evmsEhnD3LpGpXSK7d+8ybM8mgWlbbkbm2WFPd6S8+ObJl8/Xb3YSZGFEHN1LVuw8uP/wgU1L/qmbmjqI62/OJWMZ8P8/0Hr8uPX06lkDQFOLMtFPvUTwS2NK2nK/b15+eD8ctlrtUDMOhLB+6bZ//Nqkg3h14eXrj01ZiOUFF5PW48m1hw8eXHp16TTjkuuVVm5/q1cKpjPXsXD9wqX7rVY+zPP8MqMiB0ErVv7THyR4W/N8tYPgAf0iGXfjOB4zk6SbDB+3EF6YLcLl1rS0owBaTmqLNoet4eWckFedeTh08mpetTGoVqsXq/mgl8zowoZ/MLG6fL5+4CDePo+73bgrCxxH/zH8s9RMRk7MwbzMMoTe/qXZEHy/HUIOMdlFS6qDfHARbkKlVxmQVLh6vYs9bjn8GPguS2wmxiuW/rWJ5fxZyp+vF968/vxkEusc3mElJW1TSEcXJRNUrzmkRNLLYFatysOqaYCsxGTUenAR3GqFLXArPaD9Ire7dsXUt99w7F2cxN0LyXjF1r81seyQH8SZcy/ffHz7pBNL3TjV2oacsktGCnAOtk0KXh0aaw9w6MGl2BdZBwYnUAcnEIPabZvtfr/S77Mk/EYcR5cQX6APki1//RXWP+jOvaSbnlyAO02ZcfrO0yyu5PnFahVYBzdU7sQt9S5WrdySIaNAW7mh5Ts01Mxmv9ls2opuNTuJ180C4nce/62LpT0O4tG5l3TTx34WZ6CntuAlMzMVuoWGptQAOuWgR3eEaqtRlJj6DGeutPtcTau1s4t4VqMOSuJ3uMjiuB/Lz/plf9VOa7s5b2s8fHzZTlFmV5aZE8/fAWfokrAlqnyjDy0ZwKzgSrAB78hEsXqEd8Q3vnt8tRmNRvZZzSQkcJvSpEm0Aq5d9jceiqxI8vNnPpwfQlykZoBZmIuCHeQVVo0FasQK1hguY5YAZyJoQQW7eY94D3LTCGwfEvQ2/dmUGnyzmxKZuPhjD1kWGfj997DbhSdb3UOm5B6tIDk1skC9vUOErBVgSg0v1BTYoIUcFAvdWoaJPJWylNHHgDfEH7vYHBVpVERpdP8ptY8ALyJLfBv+osiijDP2ghODbnUs3BohUDtcAAubZYq7m+jTR7waahopbGQoafMW8U7+QxcbwEfEa8+Kgl7iNrOJnQhz7qSIoqTsajrj1siYJc/U2aHU/qEFtaAle+QEBX4repkxrWzNSbszfkf2hy62u4MM3tqLZ8SggimlPsYjNTXEndkGgXisajq4hZQxzZspTwVrAplNUO1Cjh0VndZgyElwR/U2/97DnkiqMa89UyLVEEtQ1v2hQ8aJaiy0staWC9/YphRzGZYhSwJX4hmH78qGrUoPE9ixlt7+Ow8bozt3ag5OuDaxhKkFE8os+I+a6wVDJRqjwEXuBVUgKmEqsojfkAUu3fEJ0J1Wa9BuJu9oZP8hO37zIbfO2O6Aa5DXJndIuDW5OV5jEs0N0ftXcHGGygewUD0rL0Eb5TfcUOtpbKkmCKl3uYeJOK0Vqu7yX/8dh+PWJEx48ctf0G3YNJGYpbisJUkotq+IKHJnLdeAjEpkBnNepxqNU6fSYaXfwURkAmDd0l89mO7UGjWTIPNBSiI15K2h14m6j+AMFffyFqHAgCtIYoYiVGWhTknSiROMEV/Ox3ER1Qp1xqpf/DHC8BywDElUWijX8KLWSI2KrDsCe80vKzBB0pEKvBGq44URcCCfUT1tJvZcx77emnt+/oZoNOQhECcNE7mWU76NtDf9wALXyNUdko60VMA30ABOredVrzOu1EvVYuh1iP6L/OxtsbnWOMUo8Rz1XcrGKffGwob5OMUqK5aGhrZksfjJdgVsC9PMNud0vNSxY/Va40S9EZWFWLdscTPBigsuyPg9mIQEZlhlhQ1CmYbjmBN2f9chgl7IHciDTp48aa+peg3GhoXNtOaUBKTXSqKh2JAxWbNX5IVtW9Ugyn9LXl+AvhBb4OjIySPS0SPHjh2v+/kzahsXNVM4ak2ire/SWppyiqQwyePPNYes7v4j7MDt2OIuk6OWH/3Ejz/hfb3wCbUcYK7A7zysDT7wzURjxqMkX/+j3kHAas7dKZ5QIRc8odbMcoBmJmrNdq+bFtZMdosUNBml4V+Ue76/pZkyl7yOqlDuBB+WcBhW8F3LZt/VRnaFGSTaTqXZ7mDCWr4+Z5QpLQCfLvcPBf8UKmz082cwu/GJoBu3iwv1w/bZg6jjICDhR2rkfFa2rZ04whkLV350vbhRJIELCJASM6zBFCKWVsWsqegD8TvOHcXqaSIA6Y4rRL61NHlPZLUGhq6wz1yo+lyDgyGQWXhPoNWNRsg1w50MMJSWt8dPoO3TB3EF6iuIQ6A1bAj3a69mj+NEEEThIfACghCJAxBuvgdAiICMM/AjEYxmsMYsZKSWNkeEZCQgzsDJeFWfyo9yiw15nu6unx7Pe13dHkB8/vn9axzsL6rezU3UiIaWUFWSV4ibhBkBaLvpsjgu2OKRARiY9V3LeSkeifxRL/lkfkghSUxuitArP47SzUERXTGPuRq5S/biVWYUHLAqfJwzhT2B7em20XeoUrgQh/16WENJ2Ckp8fXH118l4v0+wswQbRSlgrxnySdQbnNp7PBRV/lx8ESXzHeUokUiKAWFOBSO6/qXrc/hWpWIM/E+Tvl6PK5oSKGaHTIUFWRt/qk0GZ9N5xz2j86oxIXg98xLsi1BI/ax3xV3RV2frESawiqeOe51sH/f+XITImBfs6MS8rI4qC6ihg+kyQGTJErGvs8wqK/YtHJslhhOr+2LNRgpB7swQ42Q1vFj/MXwen/USSImICaKgGaFovepBF5+BxzikxcNB8jFc2DbeAp7ge7+BJ6tBXPEAMdvH/TG3mtr7TOIZMnItiIXY/GKm4NZQcz5PnK4rYXXHPq0g/IBamIeUtQFrupYw2xZ/4mbzyFi5ZUGZVCedfeDwAdmpmvPybM6OcsREOKQ1nZnJ4SMt2i4nwKqLTGMkAjV77rUWgS+raW4w9X8/KawJmDKGJ4U/EXo4LVixxPBuc9uCurwX6orRvVZVAWJv1FIttUyt4nZYDEC2jbGnyccYxm2OAMeWK7YTdBeEgxwJUgA6tfZI85ifUOG6o8V5xLc2OY4ltYmbt4RGCNIHh7nv/kti+5QB2PTboDp3hoDiCn7ZHpveDRzDjDw0QFMCTpVay5ca3JU4QuJuGxEEbSWvUarjMyyUW3uNR+YVD/VajYCllu66uFnRNnwJD2DjXApEU95PJ2IqtNAxNwGv4GbnIGRN7tdH4PqXC2R4hvMVc0oMY6l9Uwi3izzJsxwFxHL2fgQbukmqYlkQr3CWiGGF7HBAtAZ62Awp0d0KC5muEF8lgcUmJM7auSVAetSNCPOEYSbJFKM4Y+AfG+hmd2D+YiL6cWW1Pm6aoE52c4xRkeAXHYoZhnnFI12WMFw+PMcg3PsXVaGxhrRqeFgAwzS4MX0EPp0wIGtx3AIlkk0xaJGduoKjH9cZSAGb5eaGnKxB/D6FidLjNDl9GweYBnjW2vQ2fTbsgRfaACIp/QUmYHKUmtkwlgDeRbW20G4N90d/5Ll0b8nQ2IEcVeIWyFOQajACCgDjxvnHadyYMl8XU+nd34HCRrwcZCBQU5gZAY2QTvti07Tu+CqY45nuaajop5vkN5Nu5lHfEpSNIBhdbgnOWjzXK6mnxA2kiy2nXubeHQtQxuRIj5BX/38ST0O3AD6lGBkCAvJ6c6+CNIVAYDBgM5SRLBKx4BHQwW9N4KXcYKUeUML1iZco3XRzS2cqzCzLIjDsIC+MDaNVlGrLOL5sUA0T/4iBi7DrnNp47mQdPhda8YwaPSkwWyzf8HsqEHQU6ZhBvsES1B34mFPzYvtuyCHC+pGEpbpWY5izBTUSbfMYrUp066q75w6+CLHfABzOqzF4zi3Z8Ywj4stCUPfTqrBC6tfp3FdWiQd+oBTLrdDgMmsaGPJz0f5J+NWjWN5i8WJzN3pKZY7YAUt4B8k/Cq9A5Zya3lo46NazMvtkDf7ScrVdOVAFhGn7VUHK19bsypkylZl+D7aLcm+JDgUfLxht3v5chd4MV06aQx1QbLxtzhSVt3Jvt4Zd094es94+PC5PoHnlw9OeHH/hCcXxj/+W00+6tWu8JJHgXvG1UOgx/EocMuj/h/+AETAHseXUcYxAAAAAElFTkSuQmCC"; } } }, setup(props2, { slots }) { const { curLocale } = useLocale(); const getProps2 = computed(() => { return { ...props2, text: curLocale == null ? void 0 : curLocale.noData }; }); const isImgSlot = computed(() => { return Object.keys(slots).includes("img"); }); const isTextSlot = computed(() => { return Object.keys(slots).includes("text"); }); return { getProps: getProps2, isImgSlot, isTextSlot }; } }); const _hoisted_1$j = { class: "tableEmpty-img" }; const _hoisted_2$e = ["src"]; const _hoisted_3$9 = { class: "tableEmpty-text" }; const _hoisted_4$6 = { key: 1 }; function _sfc_render$D(_ctx, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("div", mergeProps({ class: "tableEmpty" }, _ctx.$attrs), [ createElementVNode("div", _hoisted_1$j, [ _ctx.isImgSlot ? renderSlot(_ctx.$slots, "img", { key: 0 }) : (openBlock(), createElementBlock("img", { key: 1, src: _ctx.getProps.img, alt: "" }, null, 8, _hoisted_2$e)) ]), createElementVNode("div", _hoisted_3$9, [ _ctx.isTextSlot ? renderSlot(_ctx.$slots, "text", { key: 0 }) : (openBlock(), createElementBlock("p", _hoisted_4$6, toDisplayString(_ctx.getProps.text), 1)) ]) ], 16); } const empty$2 = /* @__PURE__ */ _export_sfc(_sfc_main$G, [["render", _sfc_render$D]]); const FilterTagsProps = () => ({ columns: { required: true, type: Array } }); const _sfc_main$F = defineComponent({ name: "FilterTags", inheritAttrs: false, props: FilterTagsProps(), components: { Tag }, setup(props2, { emit: emit2 }) { const filterList = computed(() => { return props2.columns; }); const onTagClose = (...args) => { emit2("closeTag", ...args); }; const closeAll = (...args) => { emit2("closeAll", ...args); }; const isFilter = computed(() => { var _a2; const flag = Boolean((_a2 = props2.columns) == null ? void 0 : _a2.find((item) => { var _a3; return (_a3 = item.filterSelected) == null ? void 0 : _a3.length; })); return flag; }); const { curLocale } = useLocale(); return { filterList, isFilter, curLocale, onTagClose, closeAll }; } }); const _hoisted_1$i = { key: 0, class: "disFlex" }; function _sfc_render$C(_ctx, _cache, $props, $setup, $data, $options) { var _a2; const _component_Tag = resolveComponent("Tag"); return _ctx.isFilter ? (openBlock(), createElementBlock("div", _hoisted_1$i, [ (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.filterList, (columnItem) => { var _a3; return openBlock(), createElementBlock(Fragment, { key: columnItem.dataIndex }, [ ((_a3 = columnItem.filterSelected) == null ? void 0 : _a3.length) ? (openBlock(), createBlock(_component_Tag, { key: 0, closable: "", class: "tag-filter", onClose: ($event) => _ctx.onTagClose(columnItem) }, { default: withCtx(() => { var _a4, _b; return [ createTextVNode(toDisplayString(columnItem.title || ((_b = (_a4 = columnItem == null ? void 0 : columnItem.titleType) == null ? void 0 : _a4.props) == null ? void 0 : _b.text)) + " ", 1), (openBlock(true), createElementBlock(Fragment, null, renderList(columnItem.filterSelected || [], (filterItem, index2) => { return openBlock(), createElementBlock("span", { key: filterItem.key }, toDisplayString(index2 !== 0 ? ";" : "") + " " + toDisplayString(filterItem.label), 1); }), 128)) ]; }), _: 2 }, 1032, ["onClose"])) : createCommentVNode("", true) ], 64); }), 128)), _ctx.isFilter ? (openBlock(), createElementBlock("span", { key: 0, class: "clearAll", onClick: _cache[0] || (_cache[0] = (...args) => _ctx.closeAll && _ctx.closeAll(...args)) }, toDisplayString((_a2 = _ctx.curLocale) == null ? void 0 : _a2.cleanUp), 1)) : createCommentVNode("", true) ])) : createCommentVNode("", true); } const filterTags = /* @__PURE__ */ _export_sfc(_sfc_main$F, [["render", _sfc_render$C]]); const props$e = () => ({ column: { type: Object, default: () => ({}) }, handle: { type: Function }, successTxt: { type: String }, copyTxt: { type: [String, Function] }, record: { type: Object, default: () => ({}) }, index: { type: Number, default: 0 }, text: { type: [String, Number], default: "", require: true }, notText: { type: Boolean, default: true } }); const _sfc_main$E = defineComponent({ name: "TdCopy", inheritAttrs: false, props: props$e(), components: { CopyOutlined }, emits: ["click"], setup(props2, { slots }) { const newProps = computed(() => { return props2; }); const isCopyPrefix = computed(() => { return Object.keys(slots).includes("text"); }); const isCopyIcon = computed(() => { return Object.keys(slots).includes("icon"); }); const { copy, copied } = useClipboard({ legacy: true }); const copyText = async () => { var _a2, _b, _c, _d, _e, _f, _g, _h, _i, _j; const copyText2 = unref(newProps).copyTxt || unref(newProps).text; await copy(String(copyText2)); if (((_a2 = unref(newProps)) == null ? void 0 : _a2.successTxt) === null) { return false; } const { curLocale } = useLocale(); if (copied && (((_d = (_c = (_b = unref(newProps).column) == null ? void 0 : _b.type) == null ? void 0 : _c.props) == null ? void 0 : _d.successTxt) || ((_e = unref(newProps)) == null ? void 0 : _e.successTxt)) || ((_f = curLocale == null ? void 0 : curLocale.copy) == null ? void 0 : _f.successMessage)) { message.success({ content: ((_i = (_h = (_g = unref(newProps).column) == null ? void 0 : _g.type) == null ? void 0 : _h.props) == null ? void 0 : _i.successTxt) || unref(newProps).successTxt || ((_j = curLocale == null ? void 0 : curLocale.copy) == null ? void 0 : _j.successMessage), duration: 1.5 }); } }; const handle = async () => { var _a2, _b, _c, _d, _e, _f, _g, _h, _i, _j; if (((_b = (_a2 = unref(newProps)) == null ? void 0 : _a2.column) == null ? void 0 : _b.handle) || ((_c = unref(newProps)) == null ? void 0 : _c.handle)) { if (isFunction$6((_d = unref(newProps)) == null ? void 0 : _d.handle)) { await ((_f = (_e = unref(newProps)) == null ? void 0 : _e.handle) == null ? void 0 : _f.call(_e)); } if (isFunction$6((_h = (_g = unref(newProps)) == null ? void 0 : _g.column) == null ? void 0 : _h.handle)) { await ((_j = (_i = unref(newProps)) == null ? void 0 : _i.column) == null ? void 0 : _j.handle()); } } }; return { isCopyPrefix, newProps, copyText, isEmptyText, isCopyIcon, handle }; } }); const _hoisted_1$h = ["id"]; const _hoisted_2$d = { key: 1 }; const _hoisted_3$8 = { key: 1 }; function _sfc_render$B(_ctx, _cache, $props, $setup, $data, $options) { const _component_CopyOutlined = resolveComponent("CopyOutlined"); return !_ctx.newProps.notText || _ctx.isEmptyText(_ctx.newProps.text) ? (openBlock(), createElementBlock("div", mergeProps({ key: 0, id: `tb_btn_${_ctx.index}_copy`, class: "tdCopy" }, _ctx.$attrs), [ createElementVNode("span", { class: "tdCopy-prefix", onClick: _cache[0] || (_cache[0] = (...args) => _ctx.handle && _ctx.handle(...args)) }, [ _ctx.isCopyPrefix ? renderSlot(_ctx.$slots, "text", { key: 0 }) : (openBlock(), createElementBlock("span", _hoisted_2$d, toDisplayString(_ctx.newProps.text), 1)) ]), createElementVNode("span", { class: "tdCopy-icon", onClick: _cache[1] || (_cache[1] = (...args) => _ctx.copyText && _ctx.copyText(...args)) }, [ _ctx.isCopyIcon ? renderSlot(_ctx.$slots, "icon", { key: 0 }) : (openBlock(), createBlock(_component_CopyOutlined, { key: 1 })) ]) ], 16, _hoisted_1$h)) : (openBlock(), createElementBlock("div", _hoisted_3$8, "--")); } const TdCopy = /* @__PURE__ */ _export_sfc(_sfc_main$E, [["render", _sfc_render$B]]); const __vite_glob_0_0$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ __proto__: null, default: TdCopy }, Symbol.toStringTag, { value: "Module" })); const props$d = () => ({ column: { type: Object, default: () => ({}) }, record: { type: Object, default: () => ({}) }, text: { type: [String, Number], default: "" }, index: { type: [String, Number], default: 0 }, key: { type: [String, Number], default: 0 }, copy: { type: Boolean, default: false } }); const _sfc_main$D = defineComponent({ name: "TdEllipsis", inheritAttrs: false, props: props$d(), components: { Tooltip, TdCopy }, setup(props2) { const handle = async () => { var _a2, _b; if ((_a2 = props2 == null ? void 0 : props2.column) == null ? void 0 : _a2.handle) { await ((_b = props2 == null ? void 0 : props2.column) == null ? void 0 : _b.handle()); } }; const className = computed(() => { const names = ["tdEllipsis"]; const { column } = props2; if (column.type.componentName === "tdEllipsis") { names.push("ellipsisText"); } return names; }); const newProps = computed(() => { return { ...props2, copyText: String(props2.text) || props2.text, text: !isEmptyText(props2.text) ? "-" : props2.text }; }); return { newProps, className, handle, isVNode }; } }); const TdEllipsis_vue_vue_type_style_index_0_lang = ""; function _sfc_render$A(_ctx, _cache, $props, $setup, $data, $options) { var _a2; const _component_TdCopy = resolveComponent("TdCopy"); const _component_Tooltip = resolveComponent("Tooltip"); return openBlock(), createBlock(_component_Tooltip, { overlayClassName: _ctx.newProps.column.type.props.className, id: `tb_${String(_ctx.index)}_${_ctx.key}_ellipsis`, destroyTooltipOnHide: "" }, createSlots({ default: withCtx(() => [ createElementVNode("div", { class: "tdEllipsisCon", onClick: _cache[0] || (_cache[0] = (...args) => _ctx.handle && _ctx.handle(...args)) }, [ createElementVNode("p", { class: normalizeClass(_ctx.className), style: normalizeStyle({ width: _ctx.newProps.column.width - 32 + "px", "-webkit-line-clamp": _ctx.newProps.column.type.props.lineheigth }) }, [ createTextVNode(toDisplayString(_ctx.isVNode(_ctx.newProps.text) ? "" : _ctx.newProps.text) + " ", 1), _ctx.isVNode(_ctx.newProps.text) ? (openBlock(), createBlock(resolveDynamicComponent(_ctx.newProps.text), { key: 0 })) : createCommentVNode("", true) ], 6), _ctx.newProps.column.type.props.copy || _ctx.newProps.copy ? (openBlock(), createBlock(_component_TdCopy, { key: 0, copyTxt: _ctx.newProps.copyText, notText: false }, null, 8, ["copyTxt"])) : createCommentVNode("", true) ]) ]), _: 2 }, [ ((_a2 = _ctx.newProps.column.type.props.isShow) != null ? _a2 : true) ? { name: "title", fn: withCtx(() => [ createTextVNode(toDisplayString(_ctx.isVNode(_ctx.newProps.text) ? "" : _ctx.newProps.text) + " ", 1), _ctx.isVNode(_ctx.newProps.text) ? (openBlock(), createBlock(resolveDynamicComponent(_ctx.newProps.text), { key: 0 })) : createCommentVNode("", true) ]) } : void 0 ]), 1032, ["overlayClassName", "id"]); } const TdEllipsis = /* @__PURE__ */ _export_sfc(_sfc_main$D, [["render", _sfc_render$A]]); const __vite_glob_0_1$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ __proto__: null, default: TdEllipsis }, Symbol.toStringTag, { value: "Module" })); const props$c = () => ({ column: { type: Object, default: () => ({}) }, index: { type: Number, default: 0 }, record: { type: Object, default: () => ({}) }, text: { type: [String, Number], default: "" } }); const _sfc_main$C = defineComponent({ name: "TdHandle", inheritAttrs: false, props: props$c(), setup(props2, { emit: emit2 }) { const isHandle = ref(false); const newProps = computed(() => { return props2; }); const id2 = computed(() => { var _a2, _b; return `tb_btn_${unref(newProps).index}_${(_b = (_a2 = unref(newProps).column) == null ? void 0 : _a2.type) == null ? void 0 : _b.componentName}_${unref(newProps).record.key}`; }); const linkClass = computed(() => { let className = ""; if (unref(newProps).column.handle) { className = "linkBtn"; } return className; }); const handle = async () => { var _a2, _b, _c, _d, _e; if ((_b = (_a2 = unref(newProps)) == null ? void 0 : _a2.column) == null ? void 0 : _b.handle) { await ((_d = props2 == null ? void 0 : props2.column) == null ? void 0 : _d.handle({ column: unref(newProps).column, record: (_c = unref(newProps)) == null ? void 0 : _c.record })); isHandle.value = true; } emit2("handle", { column: unref(newProps).column, record: (_e = unref(newProps)) == null ? void 0 : _e.record }); }; return { id: id2, linkClass, newProps, isEmptyText, handle }; } }); const _hoisted_1$g = ["id"]; const _hoisted_2$c = { key: 1, type: "text" }; function _sfc_render$z(_ctx, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("span", null, [ _ctx.isEmptyText(_ctx.newProps.text) ? (openBlock(), createElementBlock("a", { key: 0, id: _ctx.id, class: normalizeClass(["td_href", _ctx.linkClass]), onClick: _cache[0] || (_cache[0] = (...args) => _ctx.handle && _ctx.handle(...args)) }, [ createTextVNode(toDisplayString(_ctx.newProps.text) + " ", 1), _ctx.newProps.column.icon ? (openBlock(), createElementBlock("i", { key: 0, class: normalizeClass(["sc-ui", _ctx.newProps.column.icon]) }, null, 2)) : createCommentVNode("", true) ], 10, _hoisted_1$g)) : (openBlock(), createElementBlock("span", _hoisted_2$c, "-")) ]); } const TdHandle = /* @__PURE__ */ _export_sfc(_sfc_main$C, [["render", _sfc_render$z]]); const __vite_glob_0_2 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ __proto__: null, default: TdHandle }, Symbol.toStringTag, { value: "Module" })); const props$b = () => ({ column: { type: Object, default: () => ({}) }, record: { type: Object, default: () => ({}) }, text: { type: [String, Number], default: "" } }); const _sfc_main$B = defineComponent({ name: "TdStatus", inheritAttrs: false, props: props$b(), setup(props2) { const newProps = computed(() => { return props2; }); const handle = async () => { var _a2, _b; if ((_a2 = props2 == null ? void 0 : props2.column) == null ? void 0 : _a2.handle) { await ((_b = props2 == null ? void 0 : props2.column) == null ? void 0 : _b.handle(newProps == null ? void 0 : newProps.column, newProps == null ? void 0 : newProps.record)); } }; return { newProps, isEmptyText, handle }; } }); function _sfc_render$y(_ctx, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("span", { onClick: _cache[0] || (_cache[0] = (...args) => _ctx.handle && _ctx.handle(...args)) }, toDisplayString(_ctx.isEmptyText(_ctx.newProps.text) ? "-" : _ctx.newProps.column.statusChange(_ctx.newProps.text)), 1); } const TdStatus = /* @__PURE__ */ _export_sfc(_sfc_main$B, [["render", _sfc_render$y]]); const __vite_glob_0_3 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ __proto__: null, default: TdStatus }, Symbol.toStringTag, { value: "Module" })); const props$a = () => ({ column: { type: Object, default: () => ({}) }, tooltipDesKey: String, record: { type: Object, default: () => ({}) }, text: { type: [String, Number], default: "" }, index: { type: [String, Number], default: 0 }, key: { type: [String, Number], default: 0 } }); const _sfc_main$A = defineComponent({ name: "TdEllipsis", inheritAttrs: false, props: props$a(), components: { Tooltip, TdCopy }, setup(props2) { const handle = async () => { var _a2, _b; if ((_a2 = props2 == null ? void 0 : props2.column) == null ? void 0 : _a2.handle) { await ((_b = props2 == null ? void 0 : props2.column) == null ? void 0 : _b.handle()); } }; const tooltipDes = ref(); watch(() => props2.record, (val) => { if (props2.column.type.props.tooltipDesKey) { tooltipDes.value = val[props2.column.type.props.tooltipDesKey]; } }, { immediate: true, deep: true }); const className = computed(() => { const names = ["tdTooltip"]; return names; }); const newProps = computed(() => { return { ...props2, copyText: String(props2.text) || props2.text, text: !isEmptyText(props2.text) ? "-" : props2.text }; }); return { newProps, className, tooltipDes, handle, isVNode }; } }); const TdTooltip_vue_vue_type_style_index_0_lang = ""; function _sfc_render$x(_ctx, _cache, $props, $setup, $data, $options) { const _component_Tooltip = resolveComponent("Tooltip"); return openBlock(), createBlock(_component_Tooltip, { id: `tb_${String(_ctx.index)}_${_ctx.key}_tooltip`, placement: "top", destroyTooltipOnHide: "" }, createSlots({ default: withCtx(() => [ createElementVNode("span", { class: normalizeClass(_ctx.className), onClick: _cache[0] || (_cache[0] = (...args) => _ctx.handle && _ctx.handle(...args)) }, [ createTextVNode(toDisplayString(_ctx.isVNode(_ctx.newProps.text) ? "" : _ctx.newProps.text) + " ", 1), _ctx.isVNode(_ctx.newProps.text) ? (openBlock(), createBlock(resolveDynamicComponent(_ctx.newProps.text), { key: 0 })) : createCommentVNode("", true) ], 2) ]), _: 2 }, [ _ctx.tooltipDes ? { name: "title", fn: withCtx(() => [ createTextVNode(toDisplayString(_ctx.isVNode(_ctx.tooltipDes) ? "" : _ctx.tooltipDes) + " ", 1), _ctx.isVNode(_ctx.tooltipDes) ? (openBlock(), createBlock(resolveDynamicComponent(_ctx.tooltipDes), { key: 0 })) : createCommentVNode("", true) ]) } : void 0 ]), 1032, ["id"]); } const TdTooltip = /* @__PURE__ */ _export_sfc(_sfc_main$A, [["render", _sfc_render$x]]); const __vite_glob_0_4 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ __proto__: null, default: TdTooltip }, Symbol.toStringTag, { value: "Module" })); const TdComponents = {}; const components$2 = /* @__PURE__ */ Object.assign({ "./TdCopy.vue": __vite_glob_0_0$1, "./TdEllipsis.vue": __vite_glob_0_1$1, "./TdHandle.vue": __vite_glob_0_2, "./TdStatus.vue": __vite_glob_0_3, "./TdTooltip.vue": __vite_glob_0_4 }); for (const [key2, value7] of Object.entries(components$2)) { const name = key2.slice(key2.lastIndexOf("/") + 1, key2.lastIndexOf(".")); TdComponents[name] = defineComponent(value7).default; } const preFixClass$1 = "describeTh"; const props$9 = () => ({ column: { type: Object, default: () => ({}) }, describe: { type: [String, Number, Object], default: "" }, text: { type: [String, Number], default: "" }, overlayClassName: String, overlayStyle: Object }); const _sfc_main$z = defineComponent({ name: "Describe", inheritAttrs: false, components: { Tooltip }, props: props$9(), setup(props2) { const propsRef = computed(() => { return props2; }); return { propsRef, preFixClass: preFixClass$1, isVNode }; } }); function _sfc_render$w(_ctx, _cache, $props, $setup, $data, $options) { const _component_Tooltip = resolveComponent("Tooltip"); return openBlock(), createElementBlock("span", { class: normalizeClass([_ctx.preFixClass]) }, [ createVNode(_component_Tooltip, { overlayClassName: _ctx.propsRef.overlayClassName, overlayStyle: _ctx.propsRef.overlayStyle }, { title: withCtx(() => [ createTextVNode(toDisplayString(_ctx.isVNode(_ctx.propsRef.describe) ? "" : _ctx.propsRef.describe) + " ", 1), _ctx.isVNode(_ctx.propsRef.describe) ? (openBlock(), createBlock(resolveDynamicComponent(_ctx.propsRef.describe), { key: 0 })) : createCommentVNode("", true) ]), default: withCtx(() => [ createElementVNode("span", { class: normalizeClass([_ctx.preFixClass + "-text"]) }, toDisplayString(_ctx.propsRef.text), 3) ]), _: 1 }, 8, ["overlayClassName", "overlayStyle"]) ], 2); } const ThDescribe = /* @__PURE__ */ _export_sfc(_sfc_main$z, [["render", _sfc_render$w]]); const __vite_glob_0_0 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ __proto__: null, default: ThDescribe }, Symbol.toStringTag, { value: "Module" })); const preFixClass = "unitTh"; const props$8 = () => ({ column: { type: Object, default: () => ({}) }, unit: { type: [String, Number], default: "" }, text: { type: [String, Number], default: "" } }); const _sfc_main$y = defineComponent({ name: "Unit", inheritAttrs: false, components: { Tooltip }, props: props$8(), setup(props2) { const propsRef = computed(() => { return props2; }); return { propsRef, preFixClass }; } }); function _sfc_render$v(_ctx, _cache, $props, $setup, $data, $options) { return openBlock(), createElementBlock("span", { class: normalizeClass([_ctx.preFixClass]) }, [ createElementVNode("span", { class: normalizeClass([_ctx.preFixClass + "-text"]) }, toDisplayString(_ctx.propsRef.text), 3), createElementVNode("span", { class: normalizeClass([_ctx.preFixClass + "-unit"]) }, toDisplayString(_ctx.propsRef.unit), 3) ], 2); } const ThUnit = /* @__PURE__ */ _export_sfc(_sfc_main$y, [["render", _sfc_render$v]]); const __vite_glob_0_1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ __proto__: null, default: ThUnit }, Symbol.toStringTag, { value: "Module" })); const THComponents = {}; const components$1 = /* @__PURE__ */ Object.assign({ "./ThDescribe.vue": __vite_glob_0_0, "./ThUnit.vue": __vite_glob_0_1 }); for (const [key2, value7] of Object.entries(components$1)) { const name = key2.slice(key2.lastIndexOf("/") + 1, key2.lastIndexOf(".")); THComponents[name] = defineComponent(value7).default; for (let i2 = 1; i2 < 15; i2++) { THComponents[name + i2] = defineComponent(value7).default; } } const createButton = () => ({ show: { type: Boolean, default: true }, text: { type: String, default: "\u521B\u5EFA" }, isDisabled: { type: Boolean, default: false }, loading: { type: Boolean, default: false }, icon: { type: String, default: "" }, type: { type: String, default: "info" }, action: Function }); const multipleActionOptions = () => ({ show: { type: Boolean, default: true }, triggerMultiple: { type: Boolean, default: false }, isNotCheck: { type: Boolean, default: false }, styleMode: String, options: { type: Array } }); const searchOptions = () => ({ show: { type: Boolean, default: true }, showSelect: { type: Boolean, default: true }, typeList: [Promise, Array], loading: { type: Boolean, default: false }, action: Function, selectOptions: Object, inputOptions: Object }); const tableProps = () => ({ maxHeight: Number, resizeHeightOffset: { type: Number, default: 114 }, isCanResizeParent: { type: Boolean, default: false }, canResize: { type: Boolean, default: false }, filterLeftStyle: Object, filterRightStyle: Object, createButtonOptions: { type: Object, default() { return { show: true, text: "\u521B\u5EFA" }; } }, upTitle: { type: String, default() { return "\u70B9\u51FB\u5347\u5E8F"; } }, downTitle: { type: String, default() { return "\u70B9\u51FB\u964D\u5E8F"; } }, cancelUpTitle: { type: String, default() { return "\u70B9\u51FB\u53D6\u6D88\u5347\u5E8F"; } }, cancelDownTitle: { type: String, default() { return "\u70B9\u51FB\u53D6\u6D88\u964D\u5E8F"; } }, multipleOptions: { type: Object }, searchOptions: { type: Object }, actionsOptions: Object, customFilter: { type: Boolean, default() { return true; } }, filterTag: { type: Boolean, default() { return true; } }, activeOptions: { type: Object }, columnFilterList: { type: Object, default() { return []; } }, bordered: { type: Boolean, default() { return false; } }, sortFn: Function, filterFn: Function, pagination: { type: [Object, Boolean], default() { return true; } }, scroll: { type: Object, default() { return { x: "true" }; } }, dataSource: Array, isTreeTable: Boolean, autoCreateKey: Boolean, rowKey: [String, Function], defaultExpandAllRows: Boolean, defaultExpandedRowKeys: Object, expandedRowKeys: Object, expandIcon: Object, expandRowByClick: Boolean, expandIconColumnIndex: Number, size: { type: String, default() { return "middle"; } }, childrenColumnName: String, api: Function, beforeFetch: Function, afterFetch: Function, handleSearchInfoFn: Function, fetchSetting: Object, immediate: { type: Boolean, default() { return true; } }, emptyDataIsShowTable: Boolean, searchInfo: Object, defSort: Object, loading: Boolean, rowClassName: Function, tableLayout: String, showHeader: { type: Boolean, default() { return true; } }, customHeaderRow: Function, customRow: Function, footer: [Function, Object], rowSelection: Object, columns: Object, cancelModal: Function, okModal: Function, langLocale: { type: Object }, locale: { type: Object }, indentSize: { type: Number, default() { return 30; } } }); const isBoolean = (source) => { return Object.prototype.toString.call(source) === "[object Boolean]"; }; function usePagination(refProps, props2) { const configRef = ref({}); const show = ref(true); watch( () => props2.pagination, (pagination) => { if (!isBoolean(pagination) && pagination) { configRef.value = { ...unref(configRef), ...pagination != null ? pagination : {} }; } }, { deep: true } ); const { curLocale } = useLocale(); const getPaginationInfo = computed(() => { const { pagination } = props2; if (!unref(show) || isBoolean(pagination) && !pagination) { return false; } return { current: 1, pageSize: PAGE_SIZE, size: "default", defaultPageSize: PAGE_SIZE, showTotal: (total) => `${(curLocale == null ? void 0 : curLocale.total) || "\u5171"} ${total} ${(curLocale == null ? void 0 : curLocale.item) || "\u6761"}`, itemRender: ({ type: type2, originalElement }) => { if (type2 === "prev") { return h$2("i", { class: "sc-ui sc-you" }); } else if (type2 === "next") { return h$2("i", { class: "sc-ui sc-you" }); } else { return originalElement; } }, showSizeChanger: true, showQuickJumper: true, ...isBoolean(pagination) ? {} : pagination, ...unref(configRef) }; }); function setPagination(info2) { const paginationInfo = unref(getPaginationInfo); configRef.value = { ...!isBoolean(paginationInfo) ? paginationInfo : {}, ...info2 }; } function getPagination() { return unref(getPaginationInfo); } function getShowPagination() { return unref(show); } async function setShowPagination(flag) { show.value = flag; } return { getPagination, getPaginationInfo, setShowPagination, getShowPagination, setPagination }; } const ROW_KEY$1 = "key"; const useTableExpand = (propsRef, tableData, emit2) => { const expandedRowKeys = ref([]); const getAutoCreateKey = computed(() => { return unref(propsRef).autoCreateKey && !unref(propsRef).rowKey; }); const getRowKey = computed(() => { const { rowKey } = unref(propsRef); return unref(getAutoCreateKey) ? ROW_KEY$1 : rowKey; }); const getExpandOption = computed(() => { const { isTreeTable } = unref(propsRef); if (!isTreeTable) return {}; return { expandedRowKeys: unref(expandedRowKeys), onExpandedRowsChange: (keys2) => { expandedRowKeys.value = keys2; emit2("expanded-rows-change", keys2); } }; }); function expandAll() { const keys2 = getAllKeys2(); expandedRowKeys.value = keys2; } function expandRows(keys2) { const { isTreeTable } = unref(propsRef); if (!isTreeTable) return; expandedRowKeys.value = [...expandedRowKeys.value, ...keys2]; } function getAllKeys2(data17) { const keys2 = []; const { childrenColumnName } = unref(propsRef); toRaw(data17 || unref(tableData)).forEach((item) => { keys2.push(item[unref(getRowKey)]); const children = item[childrenColumnName || "children"]; if (children == null ? void 0 : children.length) { keys2.push(...getAllKeys2(children)); } }); return keys2; } function collapseAll() { expandedRowKeys.value = []; } const expandIconFnc = (props2) => { var _a2; const { record, expanded, onExpand: onExpand2 } = props2; const { isTreeTable } = unref(propsRef); if (isTreeTable) { if (((_a2 = record == null ? void 0 : record.children) == null ? void 0 : _a2.length) > 0 || (record == null ? void 0 : record.isShowExPandIcon)) { return h$2(DoubleRightOutlined, { class: `${expanded ? "icon-upArrow" : ""}`, onClick: (event) => { onExpand2(record, event); } }); } else { return h$2("span", { class: `ant-table-row-indent` }); } } }; return { expandIconFnc, getExpandOption, expandAll, expandRows, collapseAll }; }; const { cloneDeep: cloneDeep$9 } = lodash; function useFilter(propsRef, selectedRowKeysRef, fetchParams, tableFilter, getDataSourceRef, props2) { const createButtonOptions = ref({}); const multipleOptions = ref({}); const searchOptions2 = ref({}); function setMultipleAction(multipleAction) { if (!multipleAction) { return multipleAction; } const { show, options: options2, triggerMultiple, styleMode, isNotChecked } = cloneDeep$9(multipleAction); if (!show) { multipleOptions.value = multipleAction; return false; } const newmMutilpList = options2 == null ? void 0 : options2.map((item) => { if (isFunction$5(item.disabled)) { item.disabled = item == null ? void 0 : item.disabled({ selectedRowKeysRef: unref(selectedRowKeysRef), ...unref(fetchParams) }); } return item; }); multipleOptions.value = { show, options: newmMutilpList, triggerMultiple, styleMode, isNotChecked }; } function clearAll() { if (isRef(tableFilter)) { unref(tableFilter).clearAll(); } } function getMultipleAction() { return unref(multipleOptions); } async function setSearchOptions(search) { if (!search) { return search; } const { show, showSelect, typeList } = search; if (!show) { searchOptions2.value = search; return false; } let newTypeList = []; if (showSelect) { newTypeList = typeList; if (isFunction$5(typeList)) { newTypeList = typeList(); } searchOptions2.value = { ...search, typeList: [], loading: true }; if (Object.prototype.toString.call(typeList) === "[object Promise]") { newTypeList = await typeList; } } searchOptions2.value = { ...search, typeList: newTypeList, loading: false }; } function getSearchOptions() { return unref(searchOptions2); } const isShowFilter = computed(() => { var _a2, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o; const isShow = ((_c = (_b = (_a2 = unref(propsRef)) == null ? void 0 : _a2.activeOptions) == null ? void 0 : _b.reload) == null ? void 0 : _c.show) || ((_f = (_e = (_d = unref(propsRef)) == null ? void 0 : _d.activeOptions) == null ? void 0 : _e.columnDialog) == null ? void 0 : _f.show) || ((_h = (_g = unref(propsRef)) == null ? void 0 : _g.createButton) == null ? void 0 : _h.show) || ((_k = (_j = (_i = unref(propsRef)) == null ? void 0 : _i.activeOptions) == null ? void 0 : _j.download) == null ? void 0 : _k.show) || ((_m = (_l = unref(propsRef)) == null ? void 0 : _l.multipleOptions) == null ? void 0 : _m.show) || ((_o = (_n = unref(propsRef)) == null ? void 0 : _n.searchOptions) == null ? void 0 : _o.show); return isShow; }); const isActiveFilter = computed(() => { var _a2, _b, _c, _d, _e, _f, _g, _h, _i; const isShow = ((_c = (_b = (_a2 = unref(propsRef)) == null ? void 0 : _a2.activeOptions) == null ? void 0 : _b.reload) == null ? void 0 : _c.show) || ((_f = (_e = (_d = unref(propsRef)) == null ? void 0 : _d.activeOptions) == null ? void 0 : _e.columnDialog) == null ? void 0 : _f.show) || ((_i = (_h = (_g = unref(propsRef)) == null ? void 0 : _g.activeOptions) == null ? void 0 : _h.download) == null ? void 0 : _i.show); return isShow != null ? isShow : false; }); watch( [() => selectedRowKeysRef == null ? void 0 : selectedRowKeysRef.value], () => { nextTick(() => { setMultipleAction(props2 == null ? void 0 : props2.multipleOptions); }); }, { deep: true } ); watch(() => { var _a2; return (_a2 = props2 == null ? void 0 : props2.multipleOptions) == null ? void 0 : _a2.show; }, () => { setMultipleAction(props2 == null ? void 0 : props2.multipleOptions); }); onMounted(() => { setMultipleAction(props2 == null ? void 0 : props2.multipleOptions); }); watchEffect(() => { createButtonOptions.value = props2 == null ? void 0 : props2.createButtonOptions; }); watchEffect(() => { setSearchOptions(props2 == null ? void 0 : props2.searchOptions); }); return { createButtonOptions, multipleOptions, searchOptions: searchOptions2, isShowFilter, isActiveFilter, setSearchOptions, getSearchOptions, setMultipleAction, getMultipleAction, clearAll }; } const { omit: omit$6 } = lodash; function useRowSelection(propsRef, tableData, emit2, props2) { const selectedRowKeysRef = ref([]); const selectedRowRef = ref([]); const getRowSelectionRef = computed(() => { const { rowSelection } = props2; if (!rowSelection) { return null; } return { selectedRowKeys: unref(selectedRowKeysRef), onChange: (selectedRowKeys) => { setSelectedRowKeys(selectedRowKeys); }, ...omit$6(rowSelection, ["onChange"]) }; }); watch( () => selectedRowKeysRef.value, () => { nextTick(() => { const { rowSelection } = props2; if (rowSelection) { const { onChange } = rowSelection; if (onChange && isFunction$6(onChange)) onChange(getSelectRowKeys(), getSelectRows()); } emit2("selection-change", { keys: getSelectRowKeys(), rows: getSelectRows() }); }); }, { deep: true } ); const getAutoCreateKey = computed(() => { return props2.autoCreateKey && !props2.rowKey; }); const getRowKey = computed(() => { const { rowKey } = props2; return unref(getAutoCreateKey) ? ROW_KEY$2 : isFunction$6(rowKey) ? SELECTION_ROW_KEY : rowKey; }); function setSelectedRowKeys(rowKeys) { var _a2; selectedRowKeysRef.value = rowKeys; const allSelectedRows = findNodeAll( toRaw(unref(tableData)).concat(toRaw(unref(selectedRowRef))), (item) => rowKeys.includes(item[unref(getRowKey)]), { children: (_a2 = props2.childrenColumnName) != null ? _a2 : "children" } ); const trueSelectedRows = []; rowKeys.forEach((key2) => { const found = allSelectedRows.find((item) => item[unref(getRowKey)] === key2); found && trueSelectedRows.push(found); }); selectedRowRef.value = trueSelectedRows; } function setSelectedRows(rows) { selectedRowRef.value = rows; } function clearSelectedRowKeys() { selectedRowRef.value = []; selectedRowKeysRef.value = []; } function deleteSelectRowByKey(key2) { const selectedRowKeys = unref(selectedRowKeysRef); const index2 = selectedRowKeys.findIndex((item) => item === key2); if (index2 !== -1) { unref(selectedRowKeysRef).splice(index2, 1); } } function getSelectRowKeys() { return unref(selectedRowKeysRef); } function getSelectRows() { const { rowKey } = props2; return unref(selectedRowRef).map((item) => { if (isFunction$6(rowKey)) { Reflect.deleteProperty(item, SELECTION_ROW_KEY); } return item; }); } function getRowSelection() { return unref(getRowSelectionRef); } return { selectedRowKeysRef, selectedRowRef, getRowSelection, getRowSelectionRef, getSelectRows, getSelectRowKeys, setSelectedRowKeys, clearSelectedRowKeys, deleteSelectRowByKey, setSelectedRows }; } function useLoading(props2) { const loadingRef = ref(unref(props2).loading); watch( () => unref(props2).loading, (loading) => { loadingRef.value = loading; } ); const getLoading = computed(() => unref(loadingRef)); function setLoading(loading) { loadingRef.value = loading; } return { getLoading, setLoading }; } function useTimeoutFn(handle, wait, native = false) { if (!isFunction$6(handle)) { throw new Error("handle is not Function!"); } const { readyRef, stop, start } = useTimeoutRef(wait); if (native) { handle(); } else { watch( readyRef, (maturity) => { maturity && handle(); }, { immediate: false } ); } return { readyRef, stop, start }; } function useTimeoutRef(wait) { const readyRef = ref(false); let timer; function stop() { readyRef.value = false; timer && window.clearTimeout(timer); } function start() { stop(); timer = setTimeout(() => { readyRef.value = true; }, wait); } start(); tryOnUnmounted(stop); return { readyRef, stop, start }; } const { cloneDeep: cloneDeep$8, get: get$6, merge } = lodash; const ROW_KEY = "key"; const useDataSource = (propsRef, { getPaginationInfo, setPagination, setLoading, clearSelectedRowKeys, tableData }, emit2, fetchParams) => { const searchState = reactive({ sortInfo: {}, filterInfo: {} }); const dataSourceRef = ref([]); const rawDataSourceRef = ref({}); const pagination = ref({}); const sorter = ref({}); const handle = (data17) => { emit2("handleTd", data17); }; const handleEventComp = ["handle", "address", "operation"]; const getEvent = (type2) => { if (handleEventComp.includes(type2)) { return { handle }; } else { return {}; } }; function handleTableChange(pagination2, filters, sorter2) { const { clearSelectOnPageChange, sortFn, filterFn } = unref(propsRef); if (clearSelectOnPageChange) { clearSelectedRowKeys(); } setPagination(pagination2); const params = {}; if (sorter2 && isFunction$6(sortFn)) { const sortInfo = sortFn(sorter2); searchState.sortInfo = sortInfo; params.sortInfo = sortInfo; } if (filters && isFunction$6(filterFn)) { const filterInfo = filterFn(filters); searchState.filterInfo = filterInfo; params.filterInfo = filterInfo; } fetch(params); } function setTableKey(items) { if (!items || !Array.isArray(items)) return; items.forEach((item) => { if (!item[ROW_KEY]) { item[ROW_KEY] = buildUUID(); } if (item.children && item.children.length) { setTableKey(item.children); } }); } const getAutoCreateKey = computed(() => { return unref(propsRef).autoCreateKey && !unref(propsRef).rowKey; }); const getRowKey = computed(() => { const { rowKey } = unref(propsRef); return unref(getAutoCreateKey) ? ROW_KEY : rowKey; }); const getDataSourceRef = computed(() => { const dataSource = unref(dataSourceRef); if (!dataSource || dataSource.length === 0) { return unref(dataSourceRef); } if (unref(getAutoCreateKey)) { const firstItem = dataSource[0]; const lastItem = dataSource[dataSource.length - 1]; if (firstItem && lastItem) { if (!firstItem[ROW_KEY] || !lastItem[ROW_KEY]) { const data17 = cloneDeep$8(unref(dataSourceRef)); data17.forEach((item) => { if (!item[ROW_KEY]) { item[ROW_KEY] = buildUUID(); } if (item.children && item.children.length) { setTableKey(item.children); } }); dataSourceRef.value = data17; } } } return unref(dataSourceRef); }); function updateTableDataRecord(rowKey, record) { const row = findTableDataRecord(rowKey); if (row) { for (const field in row) { if (Reflect.has(record, field)) row[field] = record[field]; } for (const field in record) { if (!Reflect.has(record, field)) { row[field] = record[field]; } } return row; } } async function updateTableData(index2, key2, value7) { const record = dataSourceRef.value[index2]; if (record) { dataSourceRef.value[index2][key2] = value7; } return dataSourceRef.value[index2]; } function deleteTableDataRecord(rowKey) { var _a2, _b, _c; if (!dataSourceRef.value || dataSourceRef.value.length == 0) return; const rowKeyName = unref(getRowKey); if (!rowKeyName) return; const rowKeys = !Array.isArray(rowKey) ? [rowKey] : rowKey; for (const key2 of rowKeys) { let index2 = dataSourceRef.value.findIndex((row) => { let targetKeyName; if (typeof rowKeyName === "function") { targetKeyName = rowKeyName(row); } else { targetKeyName = rowKeyName; } return row[targetKeyName] === key2; }); if (index2 >= 0) { dataSourceRef.value.splice(index2, 1); } index2 = (_a2 = unref(propsRef).dataSource) == null ? void 0 : _a2.findIndex((row) => { let targetKeyName; if (typeof rowKeyName === "function") { targetKeyName = rowKeyName(row); } else { targetKeyName = rowKeyName; } return row[targetKeyName] === key2; }); if (typeof index2 !== "undefined" && index2 !== -1) (_b = unref(propsRef).dataSource) == null ? void 0 : _b.splice(index2, 1); } setPagination({ total: (_c = unref(propsRef).dataSource) == null ? void 0 : _c.length }); } function insertTableDataRecord(record, index2) { var _a2; index2 = index2 != null ? index2 : (_a2 = dataSourceRef.value) == null ? void 0 : _a2.length; unref(dataSourceRef).splice(index2, 0, record); return unref(dataSourceRef); } function findTableDataRecord(rowKey) { if (!dataSourceRef.value || dataSourceRef.value.length == 0) return; const rowKeyName = unref(getRowKey); if (!rowKeyName) return; const { childrenColumnName = "children" } = unref(propsRef); const findRow = (array) => { let ret; array.some(function iter(r2) { if (typeof rowKeyName === "function") { if (rowKeyName(r2) === rowKey) { ret = r2; return true; } } else { if (Reflect.has(r2, rowKeyName) && r2[rowKeyName] === rowKey) { ret = r2; return true; } } return r2[childrenColumnName] && r2[childrenColumnName].some(iter); }); return ret; }; return findRow(dataSourceRef.value); } function setTableData(values2) { dataSourceRef.value = values2; } function getDataSource() { return getDataSourceRef.value; } function getRawDataSource() { return rawDataSourceRef.value; } async function fetch(opt) { var _a2, _b, _c; const { api, searchInfo, defSort, fetchSetting, beforeFetch, afterFetch, pagination: pagination2, rowKey } = unref(propsRef); if (!api || !isFunction$6(api)) return; try { setLoading(true); const { pageField, sizeField, listField, totalField } = Object.assign( {}, FETCH_SETTING, fetchSetting ); let pageParams = {}; const { current = 1, pageSize = PAGE_SIZE } = unref(getPaginationInfo); if (isBoolean$1(pagination2) && !pagination2 || isBoolean$1(getPaginationInfo)) { pageParams = {}; } else { pageParams[pageField] = opt && opt.page || current; pageParams[sizeField] = pageSize; } const { sortInfo = {}, filterInfo } = searchState; let params = merge( pageParams, searchInfo, (_a2 = opt == null ? void 0 : opt.searchInfo) != null ? _a2 : {}, defSort, sortInfo, filterInfo, (_b = opt == null ? void 0 : opt.sortInfo) != null ? _b : {}, (_c = opt == null ? void 0 : opt.filterInfo) != null ? _c : {} ); if (beforeFetch && isFunction$6(beforeFetch)) { params = await beforeFetch(params, unref(fetchParams)) || params; } const res = await api(params); rawDataSourceRef.value = res; const isArrayResult = Array.isArray(res); let resultItems = isArrayResult ? res : get$6(res, listField); const resultTotal = isArrayResult ? res.length : get$6(res, totalField); if (resultTotal) { const currentTotalPage = Math.ceil(resultTotal / pageSize); if (current > currentTotalPage) { setPagination({ current: currentTotalPage }); return await fetch(opt); } } if (afterFetch && isFunction$6(afterFetch)) { resultItems = await afterFetch(resultItems) || resultItems; } dataSourceRef.value = resultItems.map((item) => { if (isFunction$6(rowKey)) { item[SELECTION_ROW_KEY] = rowKey(item); } return item; }); setPagination({ total: resultTotal || 0 }); if (opt && opt.page) { setPagination({ current: opt.page || 1 }); } emit2("fetch-success", { items: unref(resultItems), total: resultTotal }); return resultItems; } catch (error2) { emit2("fetch-error", error2); dataSourceRef.value = []; setPagination({ total: 0 }); } finally { setLoading(false); } } async function reload(opt) { return await fetch(opt); } onMounted(() => { useTimeoutFn(() => { unref(propsRef).immediate && fetch(); }, 16); }); watchEffect(() => { tableData.value = unref(dataSourceRef); }); watch( () => unref(propsRef).dataSource, () => { const { dataSource, api, rowKey } = unref(propsRef); !api && dataSource && (dataSourceRef.value = dataSource.map((item) => { if (isFunction$6(rowKey)) { item[SELECTION_ROW_KEY] = rowKey(item); } return item; })); }, { immediate: true, deep: true } ); return { getDataSourceRef, getRowKey, getAutoCreateKey, pagination, sorter, getEvent, getDataSource, handleTableChange, getRawDataSource, setTableData, fetch, reload, updateTableData, updateTableDataRecord, deleteTableDataRecord, insertTableDataRecord, findTableDataRecord }; }; const { cloneDeep: cloneDeep$7 } = lodash; function useActions(propsRef, selectedRowKeysRef) { const actionsOptions = ref({}); function setActionOptions(Options) { if (!Options) { return false; } const { actions } = cloneDeep$7(Options); actionsOptions.value = { ...Options, actions }; } watch( [() => selectedRowKeysRef], () => { nextTick(() => { setActionOptions(unref(propsRef).actionsOptions); }); }, { deep: true } ); onMounted(() => { setActionOptions(unref(propsRef).actionsOptions); }); return { actionsOptions }; } const { cloneDeep: cloneDeep$6 } = lodash; function useColumn(propsRef, fetchParams, props2) { const customComponentKey = ref(["tdCopy", "tdHandle", "tdEllipsis", "tdStatus"]); const customComponentHeaderKey = ref(["thDescribe", "thUnit"]); const columnsRef = ref(unref(propsRef).columns); const getColumnRef = ref(); const { antLocale } = useLocale(); const adapterColumnFunc = (columns) => { const newColumns = columns == null ? void 0 : columns.map((item) => { var _a2, _b, _c, _d, _e, _f, _g; if ((_a2 = item == null ? void 0 : item.type) == null ? void 0 : _a2.componentName) { item.slots = { ...item.slots, customRender: item.type.componentName }; } if ((_b = item == null ? void 0 : item.titleType) == null ? void 0 : _b.componentName) { item.slots = { ...item.slots, title: item.titleType.componentName }; } if (item.filterList) { if (isFunction$6(item.filterList)) { item.filterList = item.filterList({ propsRef: unref(propsRef), fetchParams: unref(fetchParams) }); } item.slots = { ...item.slots, filterDropdown: "filterDropdown", filterIcon: "filterIcon" }; item.filtered = (_c = item.filtered) != null ? _c : true; } if (!item.filterList && item.filters && ((_d = item.filters) == null ? void 0 : _d.length)) { item.filterList = (_e = item.filters || []) == null ? void 0 : _e.map((item2) => { return { label: item2.text, key: item2.value }; }); item.slots = { ...item.slots, filterDropdown: "filterDropdown", filterIcon: "filterIcon" }; item.filtered = (_f = item.filtered) != null ? _f : true; } if (item.filteredValue && isArray$4(item == null ? void 0 : item.filterList)) { item.filterSelected = (_g = item == null ? void 0 : item.filteredValue) == null ? void 0 : _g.map((_item) => { const newItem = findNode((item == null ? void 0 : item.filterList) || [], (node) => node.key === _item, { key: "key" }); return newItem ? newItem : {}; }); } if ((antLocale == null ? void 0 : antLocale.locale) === "en") { item.width = item.enWidth || item.width; } return item; }); getColumnRef.value = newColumns; return newColumns; }; const filterColumn = ref(unref(propsRef).columnFilterList.length ? unref(propsRef).columnFilterList : unref(getColumnRef)); adapterColumnFunc(unref(columnsRef)); const getFilterDropdownRef = computed(() => { return filterColumn.value; }); watchEffect(() => { var _a2, _b; columnsRef.value = (_a2 = (props2 == null ? void 0 : props2.columns) || []) == null ? void 0 : _a2.map((item) => item); filterColumn.value = (_b = (props2 == null ? void 0 : props2.columns) || []) == null ? void 0 : _b.map((item) => item); adapterColumnFunc(unref(columnsRef)); }); function setFilterDropdownRef(column, filterItem) { var _a2; const columns = (_a2 = unref(filterColumn)) == null ? void 0 : _a2.map((item) => { if (item.dataIndex === column.dataIndex) { item.filterSelected = filterItem; } return item; }); filterColumn.value = columns; } function clearFilterDropdownRef(column) { const columns = unref(filterColumn); columns.forEach((item) => { if (item.dataIndex === column.dataIndex) { item.filterSelected = []; } }); filterColumn.value = columns; } function clearFilterAllDropdownRef() { const columns = unref(filterColumn); columns.forEach((item) => { item.filterSelected = []; }); filterColumn.value = columns; } const getFetchFilter = computed(() => { const filter2 = {}; const columns = unref(filterColumn); columns.forEach((item) => { var _a2, _b; if ((_a2 = item.filterSelected) == null ? void 0 : _a2.length) { filter2[item.dataIndex] = (_b = item.filterSelected) == null ? void 0 : _b.map((item2) => item2.key); } }); return filter2; }); function setColumns(columns, isSetFilter) { columnsRef.value = columns; if (isSetFilter) { filterColumn.value = columns; } } function getRowClassName(record, index2) { var _a2; const { rowClassName } = unref(propsRef); const classNames2 = []; if (record.disabled) { classNames2.push("table-disabled"); } if ((_a2 = record == null ? void 0 : record.children) == null ? void 0 : _a2.length) { classNames2.push("table-expandedRow"); } if (rowClassName && isFunction$6(rowClassName)) { classNames2.push(rowClassName(record, index2)); } return classNames2.filter((cls) => !!cls).join(" "); } const thColumn = computed(() => { var _a2; const newColumn = cloneDeep$6((_a2 = unref(getFilterColumnRef)) == null ? void 0 : _a2.filter((item) => !!item.titleType)); return newColumn; }); const getColumnsRef = computed(() => { var _a2; const columns = (_a2 = cloneDeep$6(unref(getFilterColumnRef))) == null ? void 0 : _a2.filter((item) => item.checked); return columns; }); const getFilterColumnRef = computed(() => { var _a2; const columns = (_a2 = cloneDeep$6(unref(filterColumn))) == null ? void 0 : _a2.map((item) => { if (!item.default) { item.label = item.title || item.label; if (item.titleType) { item.label = item.titleType.props.text; item.describe = item.titleType.componentName.indexOf("thUnit") > -1 ? item.titleType.props.unit : ""; } item.value = item.key; if (!item.key) { item.key = item.dataIndex; item.value = item.dataIndex; } item.disabled = item.disabled || false; if (item.checked === false) { item.checked = false; } else { item.checked = true; } item.default = true; } return item; }); return columns || []; }); const getTypeComponent = (type2) => { if (unref(customComponentKey).includes(type2)) { return type2.charAt(0).toLocaleUpperCase() + type2.slice(1); } else { return type2; } }; const getTitleComponent = (type2) => { if (unref(customComponentHeaderKey).includes(type2)) { return type2.charAt(0).toLocaleUpperCase() + type2.slice(1); } else { return type2; } }; function getColumns(opt) { const { ignoreIndex, ignoreAction } = opt || {}; let columns = toRaw(unref(getColumnRef)); if (ignoreIndex) { columns = columns.filter((item) => item.flag !== "INDEX"); } if (ignoreAction) { columns = columns.filter((item) => item.flag !== "ACTION"); } return columns; } function setFilterColumnDisabled(columnIds) { if (!isArray$4(columnIds)) { return false; } const columns = unref(filterColumn).map((item) => { item.disabled = columnIds.includes(item.key); return item; }); filterColumn.value = columns; } function setFilterColumnChecked(columnIds) { if (!isArray$4(columnIds)) { return false; } const columns = unref(getFilterColumnRef).map((item) => { item.checked = columnIds.includes(item.key); return item; }); filterColumn.value = columns; } function setFilterColumnRef(columns) { filterColumn.value = columns || []; } return { getColumnRef, getFilterColumnRef, getColumnsRef, thColumn, getFilterDropdownRef, getFetchFilter, customComponentKey, customComponentHeaderKey, getRowClassName, getTypeComponent, getTitleComponent, getColumns, setFilterDropdownRef, clearFilterDropdownRef, clearFilterAllDropdownRef, setColumns, setFilterColumnRef, setFilterColumnChecked, setFilterColumnDisabled }; } function useWindowSizeFn(fn, wait = 150, options2) { let handler2 = () => { fn(); }; const handleSize = useDebounceFn(handler2, wait); handler2 = handleSize; const start = () => { if (options2 && options2.immediate) { handler2(); } window.addEventListener("resize", handler2); }; const stop = () => { window.removeEventListener("resize", handler2); }; tryOnMounted(() => { start(); }); tryOnUnmounted(() => { stop(); }); return [start, stop]; } function onMountedOrActivated(hook) { let mounted13; onMounted(() => { hook(); nextTick(() => { mounted13 = true; }); }); onActivated(() => { if (mounted13) { hook(); } }); } function useTableScroll(propsRef, tableElRef, columnsRef, rowSelectionRef, getDataSourceRef, wrapRef, formRef) { const tableHeightRef = ref(167); const debounceRedoHeight = useDebounceFn(redoHeight, 100); const getCanResize = computed(() => { const { canResize, scroll } = unref(propsRef); return canResize && !(scroll || {}).y; }); watch( () => { var _a2; return [unref(getCanResize), (_a2 = unref(getDataSourceRef)) == null ? void 0 : _a2.length]; }, () => { debounceRedoHeight(); }, { flush: "post" } ); function redoHeight() { nextTick(() => { calcTableHeight(); }); } function setHeight(height) { tableHeightRef.value = height; } let paginationEl; let footerEl; let bodyEl; async function calcTableHeight() { var _a2, _b, _c, _d, _e, _f, _g; const { resizeHeightOffset, pagination, maxHeight, isCanResizeParent } = unref(propsRef); const tableData = unref(getDataSourceRef); const table = unref(tableElRef); if (!table) return; const tableEl = table.$el; if (!tableEl) return; if (!bodyEl) { bodyEl = tableEl.querySelector(".ant-table-body"); if (!bodyEl) return; } const hasScrollBarY = bodyEl.scrollHeight > bodyEl.clientHeight; const hasScrollBarX = bodyEl.scrollWidth > bodyEl.clientWidth; if (hasScrollBarY) { tableEl.classList.contains("hide-scrollbar-y") && tableEl.classList.remove("hide-scrollbar-y"); } else { !tableEl.classList.contains("hide-scrollbar-y") && tableEl.classList.add("hide-scrollbar-y"); } if (hasScrollBarX) { tableEl.classList.contains("hide-scrollbar-x") && tableEl.classList.remove("hide-scrollbar-x"); } else { !tableEl.classList.contains("hide-scrollbar-x") && tableEl.classList.add("hide-scrollbar-x"); } bodyEl.style.height = "unset"; if (!unref(getCanResize) || !unref(tableData) || tableData.length === 0) return; await nextTick(); const headEl = tableEl.querySelector(".ant-table-thead "); if (!headEl) return; let paddingHeight = 32; let paginationHeight = 2; if (!isBoolean$1(pagination)) { paginationEl = tableEl.querySelector(".ant-pagination"); if (paginationEl) { const offsetHeight = paginationEl.offsetHeight; paginationHeight += offsetHeight || 0; } else { paginationHeight += 24; } } else { paginationHeight = -8; } let footerHeight = 0; if (!isBoolean$1(pagination)) { if (!footerEl) { footerEl = tableEl.querySelector(".ant-table-footer"); } else { const offsetHeight = footerEl.offsetHeight; footerHeight += offsetHeight || 0; } } let headerHeight = 0; if (headEl) { headerHeight = headEl.offsetHeight; } let bottomIncludeBody = 0; if (unref(wrapRef) && isCanResizeParent) { const tablePadding = 12; const formMargin = 16; let paginationMargin = 10; const wrapHeight = (_b = (_a2 = unref(wrapRef)) == null ? void 0 : _a2.offsetHeight) != null ? _b : 0; let formHeight = (_d = (_c = unref(formRef)) == null ? void 0 : _c.$el.offsetHeight) != null ? _d : 0; if (formHeight) { formHeight += formMargin; } if (isBoolean$1(pagination) && !pagination) { paginationMargin = 0; } const headerCellHeight = (_f = (_e = tableEl.querySelector(".ant-table-title")) == null ? void 0 : _e.offsetHeight) != null ? _f : 0; bottomIncludeBody = wrapHeight - formHeight - headerCellHeight - tablePadding - paginationMargin; } else { bottomIncludeBody = getViewportOffset(headEl).bottomIncludeBody; } let height = bottomIncludeBody - (resizeHeightOffset || 0) - paddingHeight - paginationHeight - footerHeight - headerHeight; height = (_g = height > maxHeight ? maxHeight : height) != null ? _g : height; setHeight(height); bodyEl.style.height = `${height}px`; } useWindowSizeFn(calcTableHeight, 280); onMountedOrActivated(() => { calcTableHeight(); nextTick(() => { debounceRedoHeight(); }); }); const getScrollX = computed(() => { var _a2, _b; let width = 0; if (unref(rowSelectionRef)) { width += 60; } const NORMAL_WIDTH = 150; const columns = unref(columnsRef).filter((item) => !item.defaultHidden); columns.forEach((item) => { width += Number.parseFloat(item.width) || 0; }); const unsetWidthColumns = columns.filter((item) => !Reflect.has(item, "width")); const len = unsetWidthColumns.length; if (len !== 0) { width += len * NORMAL_WIDTH; } const table = unref(tableElRef); const tableWidth = (_b = (_a2 = table == null ? void 0 : table.$el) == null ? void 0 : _a2.offsetWidth) != null ? _b : 0; return tableWidth > width ? "100%" : width; }); const getScrollRef = computed(() => { const tableHeight = unref(tableHeightRef); const { canResize, scroll } = unref(propsRef); return { x: (scroll == null ? void 0 : scroll.x) ? unref(getScrollX) : null, y: canResize ? tableHeight : null, scrollToFirstRowOnChange: false, ...scroll }; }); return { getScrollRef, redoHeight }; } const key$1 = Symbol("basic-table"); function createTableContext(instance) { provide(key$1, instance); } const tablePrefixCls = basePrefixCls + "Table"; const { isFunction: isFunction$4 } = lodash; const _sfc_main$x = defineComponent({ name: "ScTable", inheritAttrs: false, props: tableProps(), components: { Table, Tooltip, Button: Button$1, FilterFilled, TableFilter, ScTableAction: _sfc_main$K, FilterDropDownVue: filterDropDown, ColumnDialogVue: columnDialog, Spin, ConfigProvider: ConfigProvider$1, EmptyVue: empty$2, FilterTagsVue: filterTags, ...TdComponents, ...THComponents }, emits: ["change", "register", "onAction", "searchClick", "onAction", "expanded-rows-change", "fetch-success", "createClick", "selectChange", "selection-change", "multipleChange", "refresh", "filter"], setup(props2, { attrs, slots, emit: emit2, expose }) { const tableRef = ref(); const wrapRef = ref(); const tableFilter = ref(); const tableData = ref([]); const textValue = ref(); const selectValue = ref(); const zhCN = ref({}); const enUS2 = ref({}); const tableScrollHeaderClass = ref(); const { antLocale } = useLocale(); const uuid2 = "sc" + buildUUID(); const innerPropsRef = ref(); const fetchParams = ref({ tableRef, multipleValue: void 0, searchSelect: void 0, searchText: void 0, filters: {}, selectedRowKeysRef: [], selectedRowRef: [], columns: [], pagination: {}, sorter: {} }); const newProps = computed(() => { return { ...props2, ...unref(innerPropsRef) }; }); const visible2 = ref(false); const { getLoading, setLoading } = useLoading(newProps); const { getPaginationInfo, setPagination, getPagination, setShowPagination, getShowPagination } = usePagination(newProps, props2); const { expandIconFnc, getExpandOption, expandAll, expandRows, collapseAll } = useTableExpand(newProps, tableData, emit2); const { selectedRowKeysRef, selectedRowRef, getRowSelection, getRowSelectionRef, getSelectRows, setSelectedRows, clearSelectedRowKeys, getSelectRowKeys, deleteSelectRowByKey, setSelectedRowKeys } = useRowSelection(newProps, tableData, emit2, props2); const { actionsOptions } = useActions(newProps, selectedRowKeysRef); const { getDataSourceRef, getRowKey, getAutoCreateKey, handleTableChange: onTableChange, getEvent, getDataSource, getRawDataSource, setTableData, updateTableDataRecord, deleteTableDataRecord, insertTableDataRecord, findTableDataRecord, fetch, reload, updateTableData } = useDataSource( newProps, { tableData, getPaginationInfo, setLoading, setPagination, clearSelectedRowKeys }, emit2, fetchParams ); const { isShowFilter, isActiveFilter, createButtonOptions, multipleOptions, searchOptions: searchOptions2, setSearchOptions, setMultipleAction } = useFilter(newProps, selectedRowKeysRef, fetchParams, tableFilter, getDataSourceRef, props2); const { customComponentKey, customComponentHeaderKey, getFilterColumnRef, getColumnsRef, getFilterDropdownRef, getFetchFilter, thColumn, setColumns, getRowClassName, getColumns, getTypeComponent, getTitleComponent, setFilterDropdownRef, clearFilterDropdownRef, clearFilterAllDropdownRef, setFilterColumnRef, setFilterColumnChecked, setFilterColumnDisabled } = useColumn(newProps, fetchParams, props2); const { getScrollRef, redoHeight } = useTableScroll( newProps, tableRef, getColumnsRef, getRowSelectionRef, getDataSourceRef, wrapRef ); const tableBindValue = computed(() => { var _a2; const dataSource = unref(getDataSourceRef); fetchParams.value = { ...unref(fetchParams), selectedRowKeysRef, selectedRowRef, setLoading, pagination: getPaginationInfo }; return { ...attrs, ...unref(newProps), scroll: unref(getScrollRef), columns: toRaw(unref(getColumnsRef)), rowSelection: unref(getRowSelectionRef), rowKey: unref(getRowKey), ...unref(getExpandOption), dataSource, loading: unref(getLoading), pagination: toRaw(unref(getPaginationInfo)), indentSize: ((_a2 = newProps.value) == null ? void 0 : _a2.indentSize) || 30, change: void 0, style: void 0, class: void 0, expandIcon: isExpandIcon.value ? null : expandIconFnc || (newProps == null ? void 0 : newProps.expandIcon) }; }); const className = computed(() => { const { pagination } = newProps.value; const classNames2 = [ tablePrefixCls, uuid2, tableScrollHeaderClass.value, (antLocale || {}).locale === "zh-cn" ? `${tablePrefixCls}-zh` : "", (slots == null ? void 0 : slots.footerInfo) && pagination !== false ? "isFooterInfo" : "" ]; return classNames2; }); const dropdownProps = { getPopupContainer: () => { return document.querySelector(`.${uuid2} .ant-table`); } }; const activeOptions = computed(() => { return props2.activeOptions; }); const isAction = computed(() => { return Object.keys(slots).includes("action"); }); const isRenderEmpty = computed(() => { return Object.keys(slots).includes("renderEmpty"); }); const isTableActive = computed(() => { return Object.keys(slots).includes("tableActive"); }); const isCustomFilter = computed(() => { return props2.customFilter; }); const isExpandIcon = computed(() => { return Object.keys(slots).includes("expandIcon"); }); function setProps(props22) { innerPropsRef.value = { ...unref(innerPropsRef), ...props22 }; if (props22.multipleOptions) { setMultipleAction(props22.multipleOptions); } if (props22.columns) { setColumns(props22.columns, true); } } const handle = (action, record) => { if (isFunction$4(action.action)) { action.action({ ...unref(fetchParams), action, record }); return false; } emit2("onAction", { ...unref(fetchParams), action, record }); }; const handleSelectChange = (item) => { const selectItem = unref(searchOptions2).typeList.find((_item) => item === _item.value); if (item) { fetchParams.value = { ...unref(fetchParams), selectValue: item }; } if (isFunction$4(selectItem.action)) { selectItem.action({ ...unref(fetchParams) }); } else { emit2("selectChange", { ...unref(fetchParams) }); } }; const createHandle = () => { const options2 = unref(createButtonOptions); if (isFunction$4(options2.action)) { options2.action({ ...unref(fetchParams) }); } else { emit2("createClick", { ...unref(fetchParams) }); } }; const handleTableChange = (pagination, filters, sorter) => { fetchParams.value = { ...unref(fetchParams), pagination, sorter }; onTableChange.call(null, pagination, unref(getFetchFilter), sorter); emit2("change", pagination, unref(getFetchFilter), sorter); }; const multipleChangeHandle = (value7) => { fetchParams.value = { ...unref(fetchParams), multipleValue: value7 }; if (isFunction$4(value7.action)) { value7.action(unref(fetchParams)); } else { emit2("multipleChange", { ...unref(fetchParams) }); } }; const filterDropDownClick = (items, keys2, confirm2, column) => { confirm2(); setPagination({ current: 1 }); setFilterDropdownRef(column, items); fetchParams.value = { ...unref(fetchParams), filters: { ...unref(fetchParams).filters, [column.dataIndex]: keys2.length ? keys2 : void 0 } }; handleTableChange(unref(fetchParams).pagination, unref(getFetchFilter), unref(fetchParams).sorter); if (column.filterMultiple) { emit2("filter", { imtes: items, column, fetchParams: unref(fetchParams), setLoading }); } else { const item = items[0]; if (isFunction$4(item == null ? void 0 : item.action)) { item.action({ filterItem: item, column, fetchParams: unref(fetchParams), setLoading }); } else { emit2("filter", { filterItem: item, column, fetchParams: unref(fetchParams), setLoading }); } } }; const handleCloseTag = (column) => { clearFilterDropdownRef(column); handleTableChange(unref(fetchParams).pagination, unref(getFetchFilter), unref(fetchParams).sorter); }; const handleCloseAll = () => { clearFilterAllDropdownRef(); handleTableChange(unref(fetchParams).pagination, unref(getFetchFilter), unref(fetchParams).sorter); }; const handleModal = () => { visible2.value = !visible2.value; }; const handleDownload = () => { var _a2, _b, _c, _d; const actives = unref(activeOptions); if ((_a2 = actives == null ? void 0 : actives.download) == null ? void 0 : _a2.href) { window.location.href = (_b = actives == null ? void 0 : actives.download) == null ? void 0 : _b.href; return false; } if (isFunction$4((_c = actives == null ? void 0 : actives.download) == null ? void 0 : _c.action)) { (_d = actives == null ? void 0 : actives.download) == null ? void 0 : _d.action({ ...unref(fetchParams) }); } }; const cancelModal = ({ keys: keys2, checkedList }) => { var _a2, _b; const cancelModal2 = ((_b = (_a2 = unref(activeOptions)) == null ? void 0 : _a2.columnDialog) == null ? void 0 : _b.cancelModal) || unref(newProps).cancelModal; if (isFunction$4(cancelModal2)) { cancelModal2({ keys: keys2, checkedList }); } }; const okModal = ({ keys: keys2, checkedList, delItemKeys }) => { var _a2, _b; visible2.value = false; setFilterColumnChecked(keys2); const okModal2 = ((_b = (_a2 = unref(activeOptions)) == null ? void 0 : _a2.columnDialog) == null ? void 0 : _b.okModal) || unref(newProps).okModal; if (isFunction$4(okModal2)) { okModal2({ keys: keys2, checkedList, delItemKeys }); } }; const searchClickHandle = ({ value: value7, type: type2 }) => { setPagination({ current: 1 }); const search = unref(searchOptions2); fetchParams.value = { ...unref(fetchParams), searchSelect: type2, searchText: value7 }; if (isFunction$4(search == null ? void 0 : search.action)) { search == null ? void 0 : search.action({ ...unref(fetchParams) }); } else { emit2("searchClick", { ...unref(fetchParams) }); } if (unref(newProps).api) { handleTableChange(unref(fetchParams).pagination, unref(getFetchFilter), unref(fetchParams).sorter); } }; const refresh = () => { var _a2, _b; const refresh2 = unref(activeOptions); if (unref(newProps).api) { reload(); return false; } if (isFunction$4((_a2 = refresh2 == null ? void 0 : refresh2.reload) == null ? void 0 : _a2.action)) { (_b = refresh2 == null ? void 0 : refresh2.reload) == null ? void 0 : _b.action({ ...unref(fetchParams) }); } else { emit2("refresh", { ...unref(fetchParams) }); } }; onMounted(() => { nextTick(() => { fetchParams.value.tableRef = tableRef; }); }); watch([() => props2.scroll.y, () => props2.dataSource], () => { nextTick(() => { const domTableBody = document.querySelector(`.${uuid2}.not-table-scroll-empty .ant-table-fixed .ant-table-tbody`); const tableBodyScroll = (domTableBody == null ? void 0 : domTableBody.scrollHeight) || (domTableBody == null ? void 0 : domTableBody.clientHeight) || 0; if (tableBodyScroll > props2.scroll.y) { tableScrollHeaderClass.value = "headerScroll"; } }); }, { immediate: true }); const tableAction = { reload, getSelectRows, setSelectedRows, clearSelectedRowKeys, getSelectRowKeys, deleteSelectRowByKey, setPagination, setTableData, updateTableDataRecord, deleteTableDataRecord, insertTableDataRecord, findTableDataRecord, setSelectedRowKeys, setLoading, getDataSource, getRawDataSource, setProps, getRowSelection, getPaginationRef: getPagination, getColumns, setColumns, emit: emit2, updateTableData, setShowPagination, getShowPagination, expandAll, expandRows, collapseAll, clearFilter: clearFilterAllDropdownRef, clearFilterDropdownRef, setSearchOptions, setMultipleAction, setFilterColumnRef, setFilterColumnChecked, setFilterColumnDisabled }; createTableContext({ ...tableAction, wrapRef, getBindValues: tableBindValue }); const resetFilterInputValue = () => { tableFilter == null ? void 0 : tableFilter.value.resetInput(); }; expose({ ...tableAction, fetch, redoHeight, getAutoCreateKey, resetFilterInputValue }); emit2("register", tableAction); return { enUS: enUS2, zhCN, newProps, uuid: uuid2, getDataSourceRef, className, getLoading, visible: visible2, isTableActive, isActiveFilter, isCustomFilter, activeOptions, isAction, isRenderEmpty, dropdownProps, getPaginationInfo, tableRef, tableFilter, tableBindValue, fetchParams, selectValue, textValue, multipleOptions, createButtonOptions, searchOptions: searchOptions2, actionsOptions, customComponentKey, customComponentHeaderKey, getFilterColumnRef, thColumn, isShowFilter, getFilterDropdownRef, isExpandIcon, getRowClassName, setMultipleAction, isEmptyText, handleCloseAll, handle, createHandle, handleModal, filterDropDownClick, multipleChangeHandle, handleTableChange, expandIconFnc, searchClickHandle, getTypeComponent, getTitleComponent, refresh, handleDownload, setFilterColumnRef, cancelModal, okModal, handleSelectChange, handleCloseTag, getEvent }; } }); const _hoisted_1$f = { class: "active-btn reload-btn" }; const _hoisted_2$b = /* @__PURE__ */ createElementVNode("i", { class: "sc-ui sc-sync" }, null, -1); const _hoisted_3$7 = { class: "active-btn setting-btn" }; const _hoisted_4$5 = /* @__PURE__ */ createElementVNode("i", { class: "sc-ui sc-setting" }, null, -1); const _hoisted_5$3 = { class: "active-btn download-btn" }; const _hoisted_6$2 = /* @__PURE__ */ createElementVNode("i", { class: "sc-ui sc-download" }, null, -1); const _hoisted_7$1 = { key: 2, class: "scTable-footer--info" }; function _sfc_render$u(_ctx, _cache, $props, $setup, $data, $options) { const _component_Button = resolveComponent("Button"); const _component_Tooltip = resolveComponent("Tooltip"); const _component_TableFilter = resolveComponent("TableFilter"); const _component_FilterTagsVue = resolveComponent("FilterTagsVue"); const _component_ScTableAction = resolveComponent("ScTableAction"); const _component_FilterDropDownVue = resolveComponent("FilterDropDownVue"); const _component_FilterFilled = resolveComponent("FilterFilled"); const _component_Table = resolveComponent("Table"); const _component_ColumnDialogVue = resolveComponent("ColumnDialogVue"); const _component_EmptyVue = resolveComponent("EmptyVue"); const _component_ConfigProvider = resolveComponent("ConfigProvider"); return openBlock(), createElementBlock("div", { ref: "wrapRef", class: normalizeClass([..._ctx.className, _ctx.$attrs.class]), style: normalizeStyle(_ctx.$attrs.style) }, [ createVNode(_component_ConfigProvider, { transformCellText: ({ text }) => _ctx.isEmptyText(text) ? text : "-", "get-popup-container": _ctx.dropdownProps.getPopupContainer }, { renderEmpty: withCtx(() => [ !_ctx.isRenderEmpty ? (openBlock(), createBlock(_component_EmptyVue, { key: 0 })) : renderSlot(_ctx.$slots, "renderEmpty", { key: 1 }) ]), default: withCtx(() => [ _ctx.isShowFilter || Object.keys(_ctx.$slots).filter((item) => ["createButton", "search", "multipleBtns", "tableActive"].includes(item)).length ? (openBlock(), createBlock(_component_TableFilter, { key: 0, selectValue: _ctx.selectValue, "onUpdate:selectValue": _cache[0] || (_cache[0] = ($event) => _ctx.selectValue = $event), textValue: _ctx.textValue, "onUpdate:textValue": _cache[1] || (_cache[1] = ($event) => _ctx.textValue = $event), createButtonOptions: _ctx.createButtonOptions, isActiveFilter: _ctx.isActiveFilter, isTableActive: _ctx.isTableActive, filterLeftStyle: _ctx.newProps.filterLeftStyle, filterRightStyle: _ctx.newProps.filterRightStyle, multipleActionOptions: _ctx.multipleOptions, searchOptions: _ctx.searchOptions, dropdownProps: _ctx.dropdownProps, onCreateClick: _ctx.createHandle, onMultipleChange: _ctx.multipleChangeHandle, onSearchClick: _ctx.searchClickHandle, onSelectChange: _ctx.handleSelectChange, ref: "tableFilter" }, createSlots({ _: 2 }, [ renderList(Object.keys(_ctx.$slots).filter( (item) => ["createButton", "search", "multipleBtns"].includes(item) ), (item) => { return { name: item, fn: withCtx((data17) => [ renderSlot(_ctx.$slots, item, normalizeProps(guardReactiveProps(data17 || {}))) ]) }; }), !_ctx.isTableActive ? { name: "tableActive", fn: withCtx(() => { var _a2, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l; return [ ((_b = (_a2 = _ctx.activeOptions) == null ? void 0 : _a2.reload) == null ? void 0 : _b.show) ? (openBlock(), createBlock(_component_Tooltip, { key: 0, overlayClassName: "scTooltip-white", destroyTooltipOnHide: "", trigger: "hover" }, createSlots({ default: withCtx(() => { var _a3, _b2, _c2, _d2; return [ createElementVNode("span", _hoisted_1$f, [ createVNode(_component_Button, { disabled: (_b2 = (_a3 = _ctx.activeOptions) == null ? void 0 : _a3.reload) == null ? void 0 : _b2.isDisabled, loading: (_d2 = (_c2 = _ctx.activeOptions) == null ? void 0 : _c2.reload) == null ? void 0 : _d2.loading, onClick: _ctx.refresh }, { default: withCtx(() => [ _hoisted_2$b ]), _: 1 }, 8, ["disabled", "loading", "onClick"]) ]) ]; }), _: 2 }, [ ((_d = (_c = _ctx.activeOptions) == null ? void 0 : _c.reload) == null ? void 0 : _d.text) ? { name: "title", fn: withCtx(() => { var _a3; return [ createTextVNode(toDisplayString((_a3 = _ctx.activeOptions) == null ? void 0 : _a3.reload.text), 1) ]; }) } : void 0 ]), 1024)) : createCommentVNode("", true), ((_f = (_e = _ctx.activeOptions) == null ? void 0 : _e.columnDialog) == null ? void 0 : _f.show) ? (openBlock(), createBlock(_component_Tooltip, { key: 1, overlayClassName: "scTooltip-white", destroyTooltipOnHide: "", trigger: "hover" }, createSlots({ default: withCtx(() => { var _a3, _b2, _c2, _d2; return [ createElementVNode("span", _hoisted_3$7, [ createVNode(_component_Button, { disabled: (_b2 = (_a3 = _ctx.activeOptions) == null ? void 0 : _a3.columnDialog) == null ? void 0 : _b2.isDisabled, loading: (_d2 = (_c2 = _ctx.activeOptions) == null ? void 0 : _c2.columnDialog) == null ? void 0 : _d2.loading, onClick: _ctx.handleModal }, { default: withCtx(() => [ _hoisted_4$5 ]), _: 1 }, 8, ["disabled", "loading", "onClick"]) ]) ]; }), _: 2 }, [ ((_h = (_g = _ctx.activeOptions) == null ? void 0 : _g.columnDialog) == null ? void 0 : _h.text) ? { name: "title", fn: withCtx(() => { var _a3; return [ createTextVNode(toDisplayString((_a3 = _ctx.activeOptions) == null ? void 0 : _a3.columnDialog.text), 1) ]; }) } : void 0 ]), 1024)) : createCommentVNode("", true), ((_j = (_i = _ctx.activeOptions) == null ? void 0 : _i.download) == null ? void 0 : _j.show) ? (openBlock(), createBlock(_component_Tooltip, { key: 2, overlayClassName: "scTooltip-white", destroyTooltipOnHide: "", trigger: "hover" }, createSlots({ default: withCtx(() => { var _a3, _b2, _c2, _d2; return [ createElementVNode("span", _hoisted_5$3, [ createVNode(_component_Button, { disabled: (_b2 = (_a3 = _ctx.activeOptions) == null ? void 0 : _a3.download) == null ? void 0 : _b2.isDisabled, loading: (_d2 = (_c2 = _ctx.activeOptions) == null ? void 0 : _c2.columnDialog) == null ? void 0 : _d2.loading, onClick: _ctx.handleDownload }, { default: withCtx(() => [ _hoisted_6$2 ]), _: 1 }, 8, ["disabled", "loading", "onClick"]) ]) ]; }), _: 2 }, [ ((_l = (_k = _ctx.activeOptions) == null ? void 0 : _k.download) == null ? void 0 : _l.text) ? { name: "title", fn: withCtx(() => { var _a3; return [ createTextVNode(toDisplayString((_a3 = _ctx.activeOptions) == null ? void 0 : _a3.download.text), 1) ]; }) } : void 0 ]), 1024)) : createCommentVNode("", true) ]; }) } : { name: "tableActive", fn: withCtx(() => [ renderSlot(_ctx.$slots, "tableActive") ]) } ]), 1032, ["selectValue", "textValue", "createButtonOptions", "isActiveFilter", "isTableActive", "filterLeftStyle", "filterRightStyle", "multipleActionOptions", "searchOptions", "dropdownProps", "onCreateClick", "onMultipleChange", "onSearchClick", "onSelectChange"])) : createCommentVNode("", true), _ctx.newProps.customFilter && _ctx.newProps.filterTag ? (openBlock(), createBlock(_component_FilterTagsVue, { key: 1, columns: _ctx.getFilterDropdownRef, onCloseTag: _ctx.handleCloseTag, onCloseAll: _ctx.handleCloseAll }, null, 8, ["columns", "onCloseTag", "onCloseAll"])) : createCommentVNode("", true), createVNode(_component_Table, mergeProps({ id: _ctx.uuid, size: "small", ref: "tableRef" }, _ctx.tableBindValue, { rowClassName: _ctx.getRowClassName, onChange: _ctx.handleTableChange }), createSlots({ action: withCtx(({ record, dataIndex }) => [ _ctx.isAction ? renderSlot(_ctx.$slots, "default", { key: 0, slot: "action" }) : (openBlock(), createBlock(_component_ScTableAction, mergeProps({ key: 1, name: "action", record, data: _ctx.getDataSourceRef, fetchParams: _ctx.fetchParams }, _ctx.actionsOptions, { dataIndex, dropdownProps: _ctx.dropdownProps, onOnAction: (action) => { _ctx.handle(action, record); } }), null, 16, ["record", "data", "fetchParams", "dataIndex", "dropdownProps", "onOnAction"])) ]), _: 2 }, [ renderList(Object.keys(_ctx.$slots).filter( (item) => ![..._ctx.customComponentKey, ..._ctx.customComponentHeaderKey, "renderEmpty"].includes(item) ), (item) => { return { name: item, fn: withCtx((data17) => [ renderSlot(_ctx.$slots, item, normalizeProps(guardReactiveProps(data17 || {}))) ]) }; }), renderList(_ctx.tableBindValue.columns.filter((item) => !!item.type), (slotItem) => { return { name: slotItem.type.componentName, fn: withCtx((slotProps) => [ (openBlock(), createBlock(resolveDynamicComponent(_ctx.getTypeComponent(slotItem.type.componentName)), mergeProps({ ...slotProps, tableName: slotItem.type.componentName }, { key: slotItem.dataIndex }, toHandlers({ ..._ctx.getEvent(slotItem.type.componentName) })), null, 16)) ]) }; }), renderList(_ctx.thColumn, (slotItem) => { return { name: slotItem.titleType.componentName, fn: withCtx(() => [ (openBlock(), createBlock(resolveDynamicComponent(_ctx.getTitleComponent(slotItem.titleType.componentName)), mergeProps({ ...slotItem.titleType.props }, { key: slotItem.key }), null, 16)) ]) }; }), _ctx.isCustomFilter ? { name: "filterDropdown", fn: withCtx(({ confirm: confirm2, column }) => [ createVNode(_component_FilterDropDownVue, { filterList: column.filterList || [], overlayClassName: column.dataIndex + column.key, column, filterLoading: column.filterLoading, filterSelected: column.filterSelected, dropdownProps: _ctx.dropdownProps, onFilter: (item, keys2) => { _ctx.filterDropDownClick(item, keys2, confirm2, column); } }, null, 8, ["filterList", "overlayClassName", "column", "filterLoading", "filterSelected", "dropdownProps", "onFilter"]) ]) } : void 0, _ctx.isCustomFilter ? { name: "filterIcon", fn: withCtx(({ column }) => { var _a2, _b; return [ createVNode(_component_FilterFilled, { style: normalizeStyle({ color: column.filtered && ((_a2 = column == null ? void 0 : column.filterSelected) == null ? void 0 : _a2.length) ? "#008CD3" : "rgba(0, 0, 0, 0.26)" }), class: normalizeClass([column.filtered && ((_b = column == null ? void 0 : column.filterSelected) == null ? void 0 : _b.length) ? "filtered" : "notFilter"]) }, null, 8, ["style", "class"]) ]; }) } : void 0 ]), 1040, ["id", "rowClassName", "onChange"]), createVNode(_component_ColumnDialogVue, { visible: _ctx.visible, "onUpdate:visible": _cache[2] || (_cache[2] = ($event) => _ctx.visible = $event), columnList: _ctx.getFilterColumnRef, onCancelModal: _ctx.cancelModal, onOkModal: _ctx.okModal }, null, 8, ["visible", "columnList", "onCancelModal", "onOkModal"]), _ctx.$slots.footerInfo ? (openBlock(), createElementBlock("div", _hoisted_7$1, [ renderSlot(_ctx.$slots, "footerInfo") ])) : createCommentVNode("", true) ]), _: 3 }, 8, ["transformCellText", "get-popup-container"]) ], 6); } const scTable = /* @__PURE__ */ _export_sfc(_sfc_main$x, [["render", _sfc_render$u]]); function useTable(tableProps2) { const tableRef = ref(null); const loadedRef = ref(false); let stopWatch; function register(instance) { onUnmounted(() => { tableRef.value = null; loadedRef.value = null; }); if (unref(loadedRef) && instance === unref(tableRef)) return; tableRef.value = instance; tableProps2 && instance.setProps(getDynamicProps(tableProps2)); loadedRef.value = true; stopWatch == null ? void 0 : stopWatch(); stopWatch = watch( () => tableProps2, () => { var _a2; const newTableProps = { ...tableProps2 }; if (tableProps2 == null ? void 0 : tableProps2.columns) { newTableProps.columns = (_a2 = tableProps2 == null ? void 0 : tableProps2.columns) == null ? void 0 : _a2.map((item) => { var _a3, _b, _c, _d, _e, _f, _g; if ((_a3 = item == null ? void 0 : item.type) == null ? void 0 : _a3.componentName) { item.slots = { ...item.slots, customRender: item.type.componentName }; } if ((_b = item == null ? void 0 : item.titleType) == null ? void 0 : _b.componentName) { item.slots = { ...item.slots, title: item.titleType.componentName }; } if (item.filterList) { if (isFunction$6(item.filterList)) { item.filterList = item.filterList({ propsRef: {}, fetchParams: {} }); } item.slots = { ...item.slots, filterDropdown: "filterDropdown", filterIcon: "filterIcon" }; item.filtered = (_c = item.filtered) != null ? _c : true; } if (!item.filterList && item.filters && ((_d = item.filters) == null ? void 0 : _d.length)) { item.filterList = (_e = item.filters || []) == null ? void 0 : _e.map((item2) => { return { label: item2.text, key: item2.value }; }); item.slots = { ...item.slots, filterDropdown: "filterDropdown", filterIcon: "filterIcon" }; item.filtered = (_f = item.filtered) != null ? _f : true; } if (item.filteredValue && isArray$4(item == null ? void 0 : item.filterList)) { item.filterSelected = (_g = item == null ? void 0 : item.filteredValue) == null ? void 0 : _g.map((_item) => { const newItem = findNode((item == null ? void 0 : item.filterList) || [], (node) => node.key === _item, { key: "key" }); return newItem ? newItem : {}; }); } return item; }); } tableProps2 && instance.setProps(getDynamicProps(newTableProps)); }, { immediate: true, deep: true } ); } function getTableInstance() { const table = unref(tableRef); if (!table) { console.error( "The table instance has not been obtained yet, please make sure the table is presented when performing the table operation!" ); } return table; } const methods = { reload: async (opt) => { return await getTableInstance().reload(opt); }, setProps: (props2) => { getTableInstance().setProps(props2); }, setSelectedRows: (rows) => { return toRaw(getTableInstance().setSelectedRows(rows)); }, setLoading: (loading) => { getTableInstance().setLoading(loading); }, getDataSource: () => { return getTableInstance().getDataSource(); }, getRawDataSource: () => { return getTableInstance().getRawDataSource(); }, getColumns: ({ ignoreIndex = false } = {}) => { const columns = getTableInstance().getColumns({ ignoreIndex }) || []; return toRaw(columns); }, setColumns: (columns) => { getTableInstance().setColumns(columns); }, setTableData: (values2) => { return getTableInstance().setTableData(values2); }, setPagination: (info2) => { return getTableInstance().setPagination(info2); }, deleteSelectRowByKey: (key2) => { getTableInstance().deleteSelectRowByKey(key2); }, getSelectRowKeys: () => { return toRaw(getTableInstance().getSelectRowKeys()); }, getSelectRows: () => { return toRaw(getTableInstance().getSelectRows()); }, clearSelectedRowKeys: () => { getTableInstance().clearSelectedRowKeys(); }, setSelectedRowKeys: (keys2) => { getTableInstance().setSelectedRowKeys(keys2); }, getPaginationRef: () => { return getTableInstance().getPaginationRef(); }, updateTableData: (index2, key2, value7) => { return getTableInstance().updateTableData(index2, key2, value7); }, deleteTableDataRecord: (rowKey) => { return getTableInstance().deleteTableDataRecord(rowKey); }, insertTableDataRecord: (record, index2) => { return getTableInstance().insertTableDataRecord(record, index2); }, updateTableDataRecord: (rowKey, record) => { return getTableInstance().updateTableDataRecord(rowKey, record); }, findTableDataRecord: (rowKey) => { return getTableInstance().findTableDataRecord(rowKey); }, getRowSelection: () => { return toRaw(getTableInstance().getRowSelection()); }, clearFilterDropdownRef: (column) => { return toRaw(getTableInstance().clearFilterDropdownRef(column)); }, setSearchOptions: (searchOptions2) => { return toRaw(getTableInstance().setSearchOptions(searchOptions2)); }, setMultipleAction: (multipleActionOptions2) => { return toRaw(getTableInstance().setMultipleAction(multipleActionOptions2)); }, setFilterColumnRef: (columns) => { return toRaw(getTableInstance().setFilterColumnRef(columns)); }, setFilterColumnChecked: (colKeys) => { return toRaw(getTableInstance().setFilterColumnChecked(colKeys)); }, setFilterColumnDisabled: (colKeys) => { return toRaw(getTableInstance().setFilterColumnDisabled(colKeys)); }, setShowPagination: async (show) => { getTableInstance().setShowPagination(show); }, getShowPagination: () => { return toRaw(getTableInstance().getShowPagination()); }, expandAll: () => { getTableInstance().expandAll(); }, expandRows: (keys2) => { getTableInstance().expandRows(keys2); }, collapseAll: () => { getTableInstance().collapseAll(); } }; return [register, methods]; } const ScTable = withInstall$1(scTable); const TableAction = withInstall$1(_sfc_main$K); const Copy = withInstall$1(TdCopy); const ColumnDialog = withInstall$1(columnDialog); const Empty$3 = withInstall$1(empty$2); const FilterTags = withInstall$1(filterTags); const FilterDropDown = withInstall$1(filterDropDown); const props$7 = () => ({ value: { type: Number, default: 0 }, min: { type: [Number, String], default: 0 }, max: { type: [Number, String], default: 100 }, mode: { type: String, default() { return "bothSides"; } }, needDefault: { type: Boolean, default() { return true; } }, emitEmpty: { type: Boolean, default() { return false; } }, autoFocus: Boolean, showControl: { type: Boolean, default: true }, size: String, stepStrictly: Boolean, step: { type: [Number, String], default: 1 }, disabled: { type: Boolean, default() { return false; } } }); const _sfc_main$w = defineComponent({ name: "ScInputNumber", inheritAttrs: false, props: props$7(), components: { InputNumber, Button: Button$1 }, emits: ["change", "update:value", "blur", "focus"], setup(props2, { emit: emit2, attrs, expose }) { const baseClass = basePrefixCls + "InputNumber"; const text = ref(); const inputNumberRef = ref(); const prevVal = ref(); const isBlur = ref(false); const isProps = ref(false); const newProps = computed(() => { return { ...props2, min: Number.isNaN(parseFloat(props2.min + "")) ? 0 : parseFloat(props2.min + ""), max: Number.isNaN(parseFloat(props2.max + "")) ? 100 : parseFloat(props2.max + ""), step: Number.isNaN(parseFloat(props2.step + "")) ? 10 : parseFloat(props2.step + "") }; }); const vBind = computed(() => { return { ...attrs }; }); const maxDisabled = computed(() => { return text.value >= unref(newProps).max; }); const minDisabled = computed(() => { return text.value <= unref(newProps).min; }); const classNames2 = computed(() => { return [ baseClass, newProps.value.mode, newProps.value.disabled ? "isDisabled" : "", newProps.value.size, !newProps.value.showControl ? "notControl" : "" ]; }); watch( () => props2.value, (val) => { const { needDefault } = props2; const { max, min } = unref(newProps); if (needDefault) { if (val < min) { text.value = min; return; } if (val > max) { text.value = max; return; } if (val !== text.value) { isProps.value = true; } text.value = isEmptyText(val) ? isString$2(val) ? parseFloat(val) : val : val; } }, { deep: true, immediate: true } ); const debounceStepStrictly = (isClick) => { const val = text.value; const { step, min } = unref(newProps); const curStep = Math.round(val / step) * step; text.value = curStep; if (!isClick) { emit2("update:value", Math.max(text.value, min)); emit2("change", curStep || min); } }; watch( () => text.value, (val, oldVal) => { const { stepStrictly, needDefault } = unref(newProps); if (isNaN(oldVal)) { prevVal.value = oldVal; } if (val !== "" && val !== null) { const { max, disabled } = newProps.value; if (!isNumber$1(val) || val > max) { return false; } if (disabled) { return false; } if (stepStrictly) ; else { if (isProps.value) { isProps.value = false; return false; } emit2("update:value", val); emit2("change", val); } } if (!needDefault && (val === "" || val === null)) { emit2("update:value", val); emit2("change", val); } }, { deep: true } ); const handleChange7 = () => { isProps.value = false; }; const changeVal = (type2) => { const { stepStrictly, min, max, step } = unref(newProps); if (stepStrictly) { debounceStepStrictly(true); } if (type2 === "add") { text.value += step || 1; if (text.value > max) { text.value = max; } } else { text.value -= step || 1; if (text.value < min) { text.value = min; } } isProps.value = false; if (stepStrictly) { emit2("update:value", Math.max(text.value, min)); emit2("change", Math.max(text.value, min)); inputNumberRef.value.blur(); } }; const handleFocus = () => { isBlur.value = false; emit2("focus"); }; const handleBlur = (event) => { const { stepStrictly, min, needDefault, emitEmpty } = unref(newProps); if (stepStrictly) { if (!isBlur.value) { debounceStepStrictly(false); text.value = Math.max(text.value, min); } else { isBlur.value = false; } } else { if ((text.value === "" || text.value === null) && needDefault) { text.value = isNaN(prevVal.value) ? "" : prevVal.value; } if (emitEmpty && (text.value === "" || text.value === null)) { emit2("update:value", null); emit2("change", null); } if (!needDefault && (text.value === "" || text.value === null)) { text.value = void 0; } } emit2("blur", event); }; onMounted(() => { nextTick(() => { const { autoFocus } = newProps.value; if (autoFocus) { const timer = setTimeout(() => { var _a2; (_a2 = inputNumberRef == null ? void 0 : inputNumberRef.value) == null ? void 0 : _a2.focus(); clearTimeout(timer); }, 200); } }); }); expose({ focus: () => { var _a2; (_a2 = inputNumberRef.value) == null ? void 0 : _a2.focus(); }, blur: () => { var _a2; (_a2 = inputNumberRef.value) == null ? void 0 : _a2.blur(); } }); return { baseClass, text, newProps, maxDisabled, minDisabled, classNames: classNames2, vBind, inputNumberRef, changeVal, handleBlur, handleFocus, handleChange: handleChange7 }; } }); const _hoisted_1$e = /* @__PURE__ */ createElementVNode("i", { class: "sc-ui sc-remove1" }, null, -1); const _hoisted_2$a = /* @__PURE__ */ createElementVNode("i", { class: "sc-ui sc-add2" }, null, -1); function _sfc_render$t(_ctx, _cache, $props, $setup, $data, $options) { const _component_Button = resolveComponent("Button"); const _component_InputNumber = resolveComponent("InputNumber"); return openBlock(), createElementBlock("div", { class: normalizeClass(_ctx.classNames) }, [ _ctx.newProps.showControl ? (openBlock(), createBlock(_component_Button, { key: 0, class: normalizeClass([_ctx.baseClass + "-btn"]), onMousedown: _cache[0] || (_cache[0] = ($event) => _ctx.changeVal("reduce")), disabled: _ctx.newProps.disabled || _ctx.minDisabled, size: _ctx.newProps.size }, { default: withCtx(() => [ _hoisted_1$e ]), _: 1 }, 8, ["class", "disabled", "size"])) : createCommentVNode("", true), createVNode(_component_InputNumber, mergeProps({ ref: "inputNumberRef", value: _ctx.text, "onUpdate:value": _cache[1] || (_cache[1] = ($event) => _ctx.text = $event), disabled: _ctx.newProps.disabled }, _ctx.vBind, { min: _ctx.newProps.min, max: _ctx.newProps.max, step: _ctx.newProps.step, onBlur: _ctx.handleBlur, onFocus: _ctx.handleFocus, onChange: _ctx.handleChange }), null, 16, ["value", "disabled", "min", "max", "step", "onBlur", "onFocus", "onChange"]), _ctx.newProps.showControl ? (openBlock(), createBlock(_component_Button, { key: 1, class: normalizeClass([_ctx.baseClass + "-btn"]), onMousedown: _cache[2] || (_cache[2] = ($event) => _ctx.changeVal("add")), disabled: _ctx.newProps.disabled || _ctx.maxDisabled }, { default: withCtx(() => [ _hoisted_2$a ]), _: 1 }, 8, ["class", "disabled"])) : createCommentVNode("", true) ], 2); } const scInputNumber = /* @__PURE__ */ _export_sfc(_sfc_main$w, [["render", _sfc_render$t]]); const ScInputNumber = withInstall$1(scInputNumber); const switchProps = { prefixCls: PropTypes$1.string, size: { type: String, validator: (v2) => ["small", "default", "large"].includes(v2) }, disabled: Boolean, checkedChildren: PropTypes$1.VNodeChild, unCheckedChildren: PropTypes$1.VNodeChild, tabindex: PropTypes$1.oneOfType([PropTypes$1.string, PropTypes$1.number]), autofocus: Boolean, loading: Boolean, checked: PropTypes$1.oneOfType([PropTypes$1.string, PropTypes$1.number, Boolean]), checkedValue: PropTypes$1.oneOfType([PropTypes$1.string, PropTypes$1.number, Boolean]).def( true ), unCheckedValue: PropTypes$1.oneOfType([ PropTypes$1.string, PropTypes$1.number, Boolean ]).def(false), onChange: { type: Function }, onClick: { type: Function }, onKeydown: { type: Function }, onMouseup: { type: Function }, "onUpdate:checked": { type: Function } }; const _sfc_main$v = defineComponent({ name: "ScSwitch", inheritAttrs: false, components: { Switch }, props: switchProps, setup(props2, { attrs, emit: emit2 }) { let baseClass = computed(() => { return basePrefixCls + "Switch " + (props2.size === "large" ? "ant-switch-large" : ""); }); const bindValue = computed(() => { return { ...attrs, ...props2, size: props2.size === "large" ? "default" : props2.size }; }); return { baseClass, bindValue }; } }); function _sfc_render$s(_ctx, _cache, $props, $setup, $data, $options) { const _component_Switch = resolveComponent("Switch"); return openBlock(), createBlock(_component_Switch, mergeProps({ class: [_ctx.baseClass] }, _ctx.bindValue), createSlots({ _: 2 }, [ renderList(Object.keys(_ctx.$slots), (item) => { return { name: item, fn: withCtx((data17) => [ renderSlot(_ctx.$slots, item, normalizeProps(guardReactiveProps(data17 || {}))) ]) }; }) ]), 1040, ["class"]); } const scSwitch = /* @__PURE__ */ _export_sfc(_sfc_main$v, [["render", _sfc_render$s]]); const ScSwitch = withInstall$1(scSwitch); function _isSlot$4(s2) { return typeof s2 === "function" || Object.prototype.toString.call(s2) === "[object Object]" && !isVNode(s2); } const prefixCls = "sc-context-menu"; const props$6 = { width: { type: Number, default: 156 }, customEvent: { type: Object, default: null }, styles: { type: Object }, showIcon: { type: Boolean, default: true }, axis: { type: Object, default() { return { x: 0, y: 0 }; } }, items: { type: Array, default() { return []; } } }; const ItemContent = (props2) => { const { item } = props2; return createVNode("span", { "style": "display: inline-block; width: 100%; ", "class": "px-4", "onClick": props2.handler.bind(null, item) }, [props2.showIcon && item.icon, createVNode("span", null, [item.label])]); }; const _sfc_main$u = defineComponent({ name: "ScContextMenu", props: props$6, setup(props2) { const wrapRef = ref(null); const showRef = ref(false); const getStyle = computed(() => { const { axis, items, styles, width } = props2; const { x: x2, y: y2 } = axis || { x: 0, y: 0 }; const menuHeight = (items || []).length * 40; const menuWidth = width; const body = document.body; const left = body.clientWidth < x2 + menuWidth ? x2 - menuWidth : x2; const top = body.clientHeight < y2 + menuHeight ? y2 - menuHeight : y2; return { ...styles, position: "absolute", width: `${width}px`, left: `${left + 1}px`, top: `${top + 1}px`, zIndex: 9999 }; }); onMounted(() => { nextTick(() => showRef.value = true); }); onUnmounted(() => { const el = unref(wrapRef); el && document.body.removeChild(el); }); function handleAction(item, e2) { const { handler: handler2, disabled } = item; if (disabled) { return; } showRef.value = false; e2 == null ? void 0 : e2.stopPropagation(); e2 == null ? void 0 : e2.preventDefault(); handler2 == null ? void 0 : handler2(); } function renderMenuItem(items) { const visibleItems = items.filter((item) => !item.hidden); return visibleItems.map((item) => { const { disabled, label, children, divider = false } = item; const contentProps = { item, handler: handleAction, showIcon: props2.showIcon }; if (!children || children.length === 0) { return createVNode(Fragment, null, [createVNode(Menu.Item, { "disabled": disabled, "class": `${prefixCls}__item`, "key": label }, { default: () => [createVNode(ItemContent, contentProps, null)] }), divider ? createVNode(Divider, { "key": `d-${label}` }, null) : null]); } if (!unref(showRef)) return null; return createVNode(Menu.SubMenu, { "key": label, "disabled": disabled, "popupClassName": `${prefixCls}__popup` }, { title: () => createVNode(ItemContent, contentProps, null), default: () => renderMenuItem(children) }); }); } return () => { let _slot; if (!unref(showRef)) { return null; } const { items } = props2; return createVNode("div", { "class": prefixCls }, [createVNode(Menu, { "inlineIndent": 12, "mode": "vertical", "ref": wrapRef, "style": unref(getStyle) }, _isSlot$4(_slot = renderMenuItem(items)) ? _slot : { default: () => [_slot] })]); }; } }); const menuManager = { domList: [], resolve: () => { } }; const createContextMenu = function(options2) { const { event } = options2 || {}; event && (event == null ? void 0 : event.preventDefault()); if (!isClient$2) { return; } return new Promise((resolve) => { const body = document.body; const container = document.createElement("div"); const propsData = {}; if (options2.styles) { propsData.styles = options2.styles; } if (options2.items) { propsData.items = options2.items; } if (options2.event) { propsData.customEvent = event; propsData.axis = { x: event.clientX, y: event.clientY }; } const vm = createVNode(_sfc_main$u, propsData); render(vm, container); const handleClick2 = function() { menuManager.resolve(""); }; menuManager.domList.push(container); const remove = function() { menuManager.domList.forEach((dom) => { try { dom && body.removeChild(dom); } catch (error2) { } }); body.removeEventListener("click", handleClick2); body.removeEventListener("scroll", handleClick2); }; menuManager.resolve = function(arg) { remove(); resolve(arg); }; remove(); body.appendChild(container); body.addEventListener("click", handleClick2); body.addEventListener("scroll", handleClick2); }); }; const destroyContextMenu = function() { if (menuManager) { menuManager.resolve(""); menuManager.domList = []; } }; function useContextMenu(authRemove = true) { if (getCurrentInstance() && authRemove) { onUnmounted(() => { destroyContextMenu(); }); } return [createContextMenu, destroyContextMenu]; } const _sfc_main$t = defineComponent({ components: { Dropdown }, setup(props2, { slots, attrs }) { const baseClass = basePrefixCls + "Dropdown"; const uuid2 = "sc" + buildUUID(); const bindValue = computed(() => { return { ...props2, ...attrs }; }); const isPrefixIcon = computed(() => { return Object.keys(slots).includes("prefixIcon"); }); return { uuid: uuid2, baseClass, bindValue, isPrefixIcon }; } }); function _sfc_render$r(_ctx, _cache, $props, $setup, $data, $options) { const _component_Dropdown = resolveComponent("Dropdown"); return openBlock(), createElementBlock("div", { class: normalizeClass([_ctx.baseClass, _ctx.uuid, _ctx.isPrefixIcon ? "is-prefix" : ""]) }, [ createVNode(_component_Dropdown, normalizeProps(guardReactiveProps(_ctx.bindValue)), createSlots({ _: 2 }, [ renderList(Object.keys(_ctx.$slots), (item) => { return { name: item, fn: withCtx((data17) => [ renderSlot(_ctx.$slots, item, normalizeProps(guardReactiveProps(data17 || {}))) ]) }; }) ]), 1040) ], 2); } const scDropDown = /* @__PURE__ */ _export_sfc(_sfc_main$t, [["render", _sfc_render$r]]); const ScDropDown = withInstall$1(scDropDown); const PopconfirmProps = () => ({ visible: { type: Boolean, default: false }, okBeforeFun: Function, cancelBeforeFun: Function, type: { type: String, validator: (v2) => ["primary", "success", "warning", "error", "default"].includes(v2), default() { return "default"; } }, describe: String, icon: PropTypes$1.any, okText: PropTypes$1.any, cancelText: PropTypes$1.any, title: PropTypes$1.any, isShowIcon: { type: Boolean, default() { return true; } } }); const _sfc_main$s = defineComponent({ name: "ScPopconfirm", inheritAttrs: false, props: PopconfirmProps(), components: { Popconfirm, ScButton }, emits: ["visibleChange", "update:visible", "cancel"], setup(props2, { attrs, slots, emit: emit2 }) { const visibleRef = ref(false); const getProps2 = computed(() => { const filterKey = ["icon"]; const newProps = Object.entries(props2).reduce((pre, next) => { if (filterKey.includes(next[0]) && !props2.isShowIcon) { return { ...pre }; } else { return { ...pre, [next[0]]: next[1] }; } }, {}); return newProps; }); const handleVisibleChange = (bool) => { visibleRef.value = bool; emit2("visibleChange", bool); }; const baseClass = basePrefixCls + "Popconfirm"; const isIcon = computed(() => { return Object.keys(slots).includes("icon"); }); const isTitle = computed(() => { return Object.keys(slots).includes("title"); }); const isOkText = computed(() => { return Object.keys(slots).includes("okText"); }); const isCancelText = computed(() => { return Object.keys(slots).includes("cancelText"); }); const handleOkText = async (e2) => { var _a2, _b; const { onConfirm } = attrs; e2.stopPropagation(); if (isFunction$6((_a2 = getProps2.value) == null ? void 0 : _a2.okBeforeFun)) { const isClose = await ((_b = getProps2.value) == null ? void 0 : _b.okBeforeFun()); visibleRef.value = isClose; if (isFunction$6(onConfirm)) { await onConfirm(e2); } return; } else { if (isFunction$6(onConfirm)) { await onConfirm(e2); } } emit2("visibleChange", false); visibleRef.value = false; }; const handleCancelText = async (e2) => { var _a2, _b; e2.stopPropagation(); if (isFunction$6((_a2 = getProps2.value) == null ? void 0 : _a2.cancelBeforeFun)) { const isClose = await ((_b = getProps2.value) == null ? void 0 : _b.cancelBeforeFun()); visibleRef.value = isClose; return; } emit2("visibleChange", false); emit2("cancel", e2); visibleRef.value = false; }; watch(() => visibleRef, (val) => { emit2("update:visible", val); }); const bindValue = computed(() => { return { ...unref(getProps2), ...attrs, visible: unref(visibleRef), title: void 0, okText: void 0, cancelText: void 0, onVisibleChange: void 0 }; }); return { baseClass, getProps: getProps2, bindValue, isIcon, isTitle, isOkText, isCancelText, visibleRef, handleVisibleChange, handleOkText, handleCancelText }; } }); const _hoisted_1$d = { key: 1, class: "empty-icon" }; const _hoisted_2$9 = { key: 0, class: "sc-ui sc-warning-circle-fill" }; const _hoisted_3$6 = { key: 1, class: "sc-ui sc-success" }; const _hoisted_4$4 = { key: 1 }; const _hoisted_5$2 = { key: 1 }; function _sfc_render$q(_ctx, _cache, $props, $setup, $data, $options) { const _component_Popconfirm = resolveComponent("Popconfirm"); return openBlock(), createBlock(_component_Popconfirm, mergeProps(_ctx.bindValue, { onVisibleChange: _ctx.handleVisibleChange }), createSlots({ icon: withCtx(() => [ _ctx.isIcon ? (openBlock(), createElementBlock("span", { key: 0, class: normalizeClass([_ctx.baseClass + "-icon"]) }, [ renderSlot(_ctx.$slots, "icon") ], 2)) : !_ctx.isIcon && !_ctx.isShowIcon ? (openBlock(), createElementBlock("span", _hoisted_1$d)) : (openBlock(), createElementBlock("span", { key: 2, class: normalizeClass([ _ctx.baseClass + "-icon", _ctx.getProps.type ? _ctx.baseClass + "-type" : "", _ctx.getProps.type ? _ctx.baseClass + "-" + _ctx.getProps.type : "" ]) }, [ _ctx.getProps.type !== "success" ? (openBlock(), createElementBlock("i", _hoisted_2$9)) : (openBlock(), createElementBlock("i", _hoisted_3$6)) ], 2)) ]), title: withCtx(() => [ _ctx.isTitle ? renderSlot(_ctx.$slots, "title", { key: 0 }) : (openBlock(), createElementBlock("div", { key: 1, class: normalizeClass([_ctx.baseClass + "-title"]) }, [ createTextVNode(toDisplayString(_ctx.getProps.title) + " ", 1), _ctx.getProps.describe ? (openBlock(), createElementBlock("p", { key: 0, class: normalizeClass([_ctx.baseClass + "-describe"]) }, toDisplayString(_ctx.getProps.describe), 3)) : createCommentVNode("", true) ], 2)) ]), okText: withCtx(() => [ createElementVNode("span", { onClick: _cache[0] || (_cache[0] = (...args) => _ctx.handleOkText && _ctx.handleOkText(...args)) }, [ _ctx.isOkText ? renderSlot(_ctx.$slots, "title", { key: 0 }) : (openBlock(), createElementBlock("span", _hoisted_4$4, toDisplayString(_ctx.getProps.okText), 1)) ]) ]), cancelText: withCtx(() => [ createElementVNode("span", { onClick: _cache[1] || (_cache[1] = (...args) => _ctx.handleCancelText && _ctx.handleCancelText(...args)) }, [ _ctx.isCancelText ? renderSlot(_ctx.$slots, "title", { key: 0 }) : (openBlock(), createElementBlock("span", _hoisted_5$2, toDisplayString(_ctx.getProps.cancelText), 1)) ]) ]), _: 2 }, [ renderList(Object.keys(_ctx.$slots).filter((_item) => !["icon", "title", "okText"].includes(_item)), (item) => { return { name: item, fn: withCtx((data17) => [ renderSlot(_ctx.$slots, item, normalizeProps(guardReactiveProps(data17 || {}))) ]) }; }) ]), 1040, ["onVisibleChange"]); } const scPopconfirm = /* @__PURE__ */ _export_sfc(_sfc_main$s, [["render", _sfc_render$q]]); const ScPopconfirm = withInstall$1(scPopconfirm); const props$5 = () => ({ value: Array, disabled: { type: Boolean, default() { return false; } }, widthSize: { type: String, validator: (v2) => ["l", "xs", "x", "md", "xl"].includes(v2) }, prefixIcon: Object }); const _sfc_main$r = defineComponent({ name: "ScCascader", props: props$5(), components: { Cascader: Cascader$2, CheckboxGroup, Checkbox, CloseCircleFilled }, setup(props2, { emit: emit2, slots, attrs }) { const baseClass = basePrefixCls + "Cascader"; const value7 = computed({ get: () => { return props2.value; }, set: (val) => { emit2("update:value", val); } }); const newProps = computed(() => { return props2; }); const vBind = computed(() => { return { ...unref(newProps), ...attrs, class: void 0, style: void 0 }; }); const uuid2 = "sc" + buildUUID(); const dropdownClassName = computed(() => { const dropdownClass = []; if (attrs.size) { dropdownClass.push("dropdown-" + attrs.size); } if (attrs.dropdownClassName) { dropdownClass.push(attrs.dropdownClassName); } return dropdownClass.join(" "); }); const isSuffixIcon = computed(() => { return Object.keys(slots).includes("suffixIcon"); }); const isPrefixIcon = computed(() => { return Object.keys(slots).includes("prefixIcon"); }); const isClearIcon = computed(() => { return Object.keys(slots).includes("clearIcon"); }); return { uuid: uuid2, baseClass, newProps, value: value7, vBind, isSuffixIcon, isPrefixIcon, isClearIcon, dropdownClassName }; } }); const _hoisted_1$c = { key: 0 }; const _hoisted_2$8 = /* @__PURE__ */ createElementVNode("i", { class: "sc-ui sc-xiangxia" }, null, -1); const _hoisted_3$5 = [ _hoisted_2$8 ]; const _hoisted_4$3 = { key: 1, class: "clearSelect" }; function _sfc_render$p(_ctx, _cache, $props, $setup, $data, $options) { const _component_CloseCircleFilled = resolveComponent("CloseCircleFilled"); const _component_Cascader = resolveComponent("Cascader"); return openBlock(), createElementBlock("div", { class: normalizeClass([_ctx.baseClass, _ctx.uuid, _ctx.newProps.widthSize ? _ctx.baseClass + "-" + _ctx.newProps.widthSize : "", _ctx.isPrefixIcon ? "is-prefix" : "", _ctx.newProps.disabled ? "is-disabled" : ""]) }, [ createElementVNode("span", null, [ _ctx.isPrefixIcon ? (openBlock(), createElementBlock("span", { key: 0, class: normalizeClass([_ctx.baseClass + "-prefix"]) }, [ renderSlot(_ctx.$slots, "prefixIcon") ], 2)) : createCommentVNode("", true), createVNode(_component_Cascader, mergeProps({ class: [_ctx.isPrefixIcon ? "is-prefix" : ""] }, _ctx.vBind, { modelValue: _ctx.value, "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => _ctx.value = $event), disabled: _ctx.newProps.disabled, dropdownClassName: _ctx.dropdownClassName }), createSlots({ suffixIcon: withCtx(() => [ !_ctx.isSuffixIcon ? (openBlock(), createElementBlock("span", _hoisted_1$c, _hoisted_3$5)) : renderSlot(_ctx.$slots, "default", { key: 1, slot: "suffixIcon" }) ]), clearIcon: withCtx(() => [ !_ctx.isClearIcon ? (openBlock(), createBlock(_component_CloseCircleFilled, { key: 0, class: "clearSelect" })) : (openBlock(), createElementBlock("span", _hoisted_4$3, [ renderSlot(_ctx.$slots, "default", { slot: "clearIcon" }) ])) ]), _: 2 }, [ renderList(Object.keys(_ctx.$slots).filter((item) => !["clearIcon", "suffixIcon"].includes(item)), (item) => { return { name: item, fn: withCtx((data17) => [ renderSlot(_ctx.$slots, item, normalizeProps(guardReactiveProps(data17 || {}))) ]) }; }) ]), 1040, ["class", "modelValue", "disabled", "dropdownClassName"]) ]) ], 2); } const scCascader = /* @__PURE__ */ _export_sfc(_sfc_main$r, [["render", _sfc_render$p]]); const ScCascader = withInstall$1(scCascader); process.env.NODE_ENV !== "production" ? Object.freeze({}) : {}; process.env.NODE_ENV !== "production" ? Object.freeze([]) : []; const NOOP = () => { }; const isArray$3 = Array.isArray; const isFunction$3 = (val) => typeof val === "function"; const isObject$2 = (val) => val !== null && typeof val === "object"; const isPromise = (val) => { return isObject$2(val) && isFunction$3(val.then) && isFunction$3(val.catch); }; const cacheStringFunction$2 = (fn) => { const cache = /* @__PURE__ */ Object.create(null); return (str) => { const hit = cache[str]; return hit || (cache[str] = fn(str)); }; }; const capitalize$1 = cacheStringFunction$2((str) => str.charAt(0).toUpperCase() + str.slice(1)); 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 CHANGE_EVENT = "change"; const UPDATE_MODEL_EVENT = "update:modelValue"; const capitalize = (str) => capitalize$1(str); const isUndefined = (val) => val === void 0; const unique = (arr) => [...new Set(arr)]; const castArray = (arr) => { if (!arr && arr !== 0) return []; return Array.isArray(arr) ? arr : [arr]; }; const isLeaf$1 = (el) => { return !el.getAttribute("aria-owns"); }; const focusNode$1 = (el) => { if (!el) { return; } el.focus(); !isLeaf$1(el) && el.click(); }; const getSibling$1 = (el, distance, elClass) => { const { parentNode } = el; if (!parentNode) return null; const siblings = parentNode.querySelectorAll(elClass); const index2 = Array.prototype.indexOf.call(siblings, el); return siblings[index2 + distance] || null; }; const isEmpty = (val) => { return !val && val !== 0 || isArray$3(val) && val.length === 0 || isObject$2(val) && !Object.keys(val).length; }; function scrollIntoView$1(container, selected) { if (!isClient$1) 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 top = selected.offsetTop + offsetParents.reduce((prev, curr) => prev + curr.offsetTop, 0); const bottom = top + selected.offsetHeight; const viewRectTop = container.scrollTop; const viewRectBottom = viewRectTop + container.clientHeight; if (top < viewRectTop) { container.scrollTop = top; } else if (bottom > viewRectBottom) { container.scrollTop = bottom - container.clientHeight; } } const generateId = () => Math.floor(Math.random() * 1e4); const NodeContent = defineComponent({ name: "NodeContent", setup() { const ns = "scCascader-node"; return { ns }; }, render() { const { ns } = this; const { node, panel } = this.$parent; const { data: data17, label } = node; const { renderLabelFn, config } = panel; const { nodeEllipsis } = config; return (nodeEllipsis == null ? void 0 : nodeEllipsis.open) ? h$2( ScEllipsis, { style: { maxWidth: (nodeEllipsis == null ? void 0 : nodeEllipsis.maxWidth) || "240px", width: (nodeEllipsis == null ? void 0 : nodeEllipsis.width) || "240px" } }, { default: () => h$2( "span", { class: ns + "-label" }, renderLabelFn ? renderLabelFn({ node, data: data17 }) : label ) } ) : h$2( "span", { class: ns + "-label" }, renderLabelFn ? renderLabelFn({ node, data: data17 }) : label ); } }); const CASCADER_PANEL_INJECTION_KEY = Symbol(); const _sfc_main$q = defineComponent({ name: "ScCascaderNode", components: { Checkbox, Radio, NodeContent }, props: { node: { type: Object, required: true }, menuId: String }, emits: ["expand"], setup(props2, { emit: emit2 }) { const panel = inject(CASCADER_PANEL_INJECTION_KEY); const ns = "scCascader-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 isDisabled2 = computed(() => props2.node.isDisabled); const isLeaf3 = computed(() => props2.node.isLeaf); const expandable = computed( () => checkStrictly.value && !isLeaf3.value || !isDisabled2.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 } = props2.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(props2.node); }; const doCheck = (checked) => { const { node } = props2; if (checked === node.checked) return; panel.handleCheckChange(node, checked); }; const doLoad = () => { panel.lazyLoad(props2.node, () => { if (!isLeaf3.value) doExpand(); }); }; const handleHoverExpand = (e2) => { if (!isHoverMenu.value) return; handleExpand3(); !isLeaf3.value && emit2("expand", e2); }; const handleExpand3 = () => { const { node } = props2; if (!expandable.value || node.loading) return; node.loaded ? doExpand() : doLoad(); }; const handleClick2 = () => { if (isHoverMenu.value && !isLeaf3.value) return; if (isLeaf3.value && !isDisabled2.value && !checkStrictly.value && !multiple.value) { handleCheck3(true); } else { handleExpand3(); } }; const handleSelectCheck = (checked) => { if (checkStrictly.value) { doCheck(checked); if (props2.node.loaded) { doExpand(); } } else { handleCheck3(checked); } }; const handleCheck3 = (checked) => { if (!props2.node.loaded) { doLoad(); } else { doCheck(checked); !checkStrictly.value && doExpand(); } }; return { panel, isHoverMenu, multiple, checkStrictly, checkedNodeId, isDisabled: isDisabled2, isLeaf: isLeaf3, expandable, inExpandingPath, inCheckedPath, ns, handleHoverExpand, handleExpand: handleExpand3, handleClick: handleClick2, handleCheck: handleCheck3, handleSelectCheck }; } }); const _hoisted_1$b = ["id", "aria-haspopup", "aria-owns", "aria-expanded", "tabindex"]; const _hoisted_2$7 = /* @__PURE__ */ createElementVNode("span", null, null, -1); const _hoisted_3$4 = /* @__PURE__ */ createElementVNode("span", { class: "loading-transition" }, null, -1); const _hoisted_4$2 = [ _hoisted_3$4 ]; const _hoisted_5$1 = /* @__PURE__ */ createElementVNode("i", { class: "sc-ui sc-you" }, null, -1); const _hoisted_6$1 = [ _hoisted_5$1 ]; function _sfc_render$o(_ctx, _cache, $props, $setup, $data, $options) { const _component_Checkbox = resolveComponent("Checkbox"); const _component_Radio = resolveComponent("Radio"); const _component_node_content = resolveComponent("node-content"); 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, _ctx.checkStrictly ? "isSelectable" : "", _ctx.node.checked ? "isChecked" : "", !_ctx.expandable ? "isDisabled" : "", _ctx.inExpandingPath && "in-active-path", _ctx.inCheckedPath && "in-checked-path", _ctx.isLeaf && _ctx.node.checked && "isSelected" ]), 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)) }, [ _ctx.multiple ? (openBlock(), createBlock(_component_Checkbox, { key: 0, checked: _ctx.node.checked, indeterminate: _ctx.node.indeterminate, disabled: _ctx.isDisabled, onClick: _cache[0] || (_cache[0] = withModifiers(() => { }, ["stop"])), "onUpdate:checked": _ctx.handleSelectCheck }, null, 8, ["checked", "indeterminate", "disabled", "onUpdate:checked"])) : _ctx.checkStrictly ? (openBlock(), createBlock(_component_Radio, { key: 1, checked: _ctx.node.checked, label: _ctx.node.uid, disabled: _ctx.isDisabled, "onUpdate:checked": _ctx.handleSelectCheck, onClick: _cache[1] || (_cache[1] = withModifiers(() => { }, ["stop"])) }, { default: withCtx(() => [ _hoisted_2$7 ]), _: 1 }, 8, ["checked", "label", "disabled", "onUpdate:checked"])) : createCommentVNode("", true), createVNode(_component_node_content), !_ctx.isLeaf ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [ _ctx.node.loading ? (openBlock(), createElementBlock("span", { key: 0, class: normalizeClass(["isLoading", _ctx.ns + "-postfix"]) }, _hoisted_4$2, 2)) : (openBlock(), createElementBlock("span", { key: 1, class: normalizeClass(["arrow-right", _ctx.ns + "-postfix"]) }, _hoisted_6$1, 2)) ], 64)) : createCommentVNode("", true) ], 42, _hoisted_1$b); } const ScCascaderNode = /* @__PURE__ */ _export_sfc(_sfc_main$q, [["render", _sfc_render$o]]); const _sfc_main$p = defineComponent({ name: "ScCascaderMenu", components: { ScScrollbar, ScCascaderNode, Empty: Empty$3 }, props: { nodes: { type: Array, required: true }, index: { type: Number, required: true } }, setup(props2) { const instance = getCurrentInstance(); const ns = basePrefixCls + "Cascader-menu"; const id2 = generateId(); let activeNode = null; let hoverTimer = null; const panel = inject(CASCADER_PANEL_INJECTION_KEY); const hoverZone = ref(null); const isEmpty2 = computed(() => !props2.nodes.length); const isLoading = computed(() => !panel.initialLoaded); const menuId = computed(() => `cascader-menu-${id2}-${props2.index}`); const handleExpand3 = (e2) => { activeNode = e2.target; }; const handleMouseMove = (e2) => { if (!panel.isHoverMenu || !activeNode || !hoverZone.value) return; if (activeNode.contains(e2.target)) { clearHoverTimer(); const el = instance.vnode.el; const { left } = el.getBoundingClientRect(); const { offsetWidth, offsetHeight } = el; const startX = e2.clientX - left; const top = activeNode.offsetTop; const bottom = top + 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: isEmpty2, isLoading, menuId, handleExpand: handleExpand3, handleMouseMove, clearHoverZone }; } }); const _hoisted_1$a = /* @__PURE__ */ createElementVNode("span", { class: "loading-transition" }, null, -1); const _hoisted_2$6 = [ _hoisted_1$a ]; function _sfc_render$n(_ctx, _cache, $props, $setup, $data, $options) { const _component_ScCascaderNode = resolveComponent("ScCascaderNode"); const _component_Empty = resolveComponent("Empty"); const _component_sc_scrollbar = resolveComponent("sc-scrollbar"); return openBlock(), createBlock(_component_sc_scrollbar, { key: _ctx.menuId, tag: "ul", role: "menu", class: normalizeClass(_ctx.ns), "wrap-class": _ctx.ns + "-wrap", "view-class": [_ctx.ns + "-list", _ctx.isEmpty ? "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_ScCascaderNode, { 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 + "-empty-text") }, _hoisted_2$6, 2)) : _ctx.isEmpty ? (openBlock(), createElementBlock("div", { key: 1, class: normalizeClass(_ctx.ns + "-empty-text") }, [ !_ctx.$slots.empty ? (openBlock(), createBlock(_component_Empty, { key: 0 })) : renderSlot(_ctx.$slots, "empty", { key: 1 }) ], 2)) : ((_a2 = _ctx.panel) == null ? void 0 : _a2.isHoverMenu) ? (openBlock(), createElementBlock("svg", { key: 2, ref: "hoverZone", class: normalizeClass(_ctx.ns + "-hover-zone") }, null, 2)) : createCommentVNode("", true) ]; }), _: 3 }, 8, ["class", "wrap-class", "view-class", "onMousemove", "onMouseleave"]); } const ScCascaderMenu = /* @__PURE__ */ _export_sfc(_sfc_main$p, [["render", _sfc_render$n]]); let uid = 0; const calculatePathNodes = (node) => { const nodes = [node]; let { parent: parent2 } = node; while (parent2) { nodes.unshift(parent2); parent2 = parent2.parent; } return nodes; }; class Node { constructor(data17, config, parent2, root2 = false) { __publicField(this, "uid", uid++); __publicField(this, "level"); __publicField(this, "value"); __publicField(this, "label"); __publicField(this, "pathNodes"); __publicField(this, "pathValues"); __publicField(this, "pathLabels"); __publicField(this, "childrenData"); __publicField(this, "children"); __publicField(this, "text"); __publicField(this, "loaded"); __publicField(this, "checked", false); __publicField(this, "indeterminate", false); __publicField(this, "loading", false); this.data = data17; this.config = config; this.parent = parent2; this.root = root2; const { value: valueKey, label: labelKey, children: childrenKey } = config; const childrenData = data17[childrenKey]; const pathNodes = calculatePathNodes(this); this.level = root2 ? 0 : parent2 ? parent2.level + 1 : 1; this.value = data17[valueKey]; this.label = data17[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: data17, parent: parent2, config } = this; const { disabled, checkStrictly } = config; const isDisabled2 = isFunction$3(disabled) ? disabled(data17, this) : !!data17[disabled]; return isDisabled2 || !checkStrictly && (parent2 == null ? void 0 : parent2.isDisabled); } get isLeaf() { const { data: data17, config, childrenData, loaded } = this; const { lazy, leaf } = config; const isLeaf3 = isFunction$3(leaf) ? leaf(data17, this) : data17[leaf]; return isUndefined(isLeaf3) ? lazy && !loaded ? false : !(Array.isArray(childrenData) && childrenData.length) : !!isLeaf3; } 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: parent2 } = this; const handlerName = `onChild${capitalize(event)}`; if (parent2) { parent2[handlerName] && parent2[handlerName](...args); parent2.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.filter((child) => !child.isDisabled).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 { isEqual: isEqual$7 } = lodash; 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(data17, config) { __publicField(this, "nodes"); __publicField(this, "allNodes"); __publicField(this, "leafNodes"); this.config = config; const nodes = (data17 || []).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(value7, leafOnly = false) { if (!value7 && value7 !== 0) return null; const node = this.getFlattedNodes(leafOnly).find( (node2) => isEqual$7(node2.value, value7) || isEqual$7(node2.pathValues, value7) ); return node || null; } getSameNode(node) { if (!node) return null; const node_ = this.getFlattedNodes(false).find( ({ value: value7, level }) => isEqual$7(node.value, value7) && node.level === level ); return node_ || null; } } const CommonProps = { modelValue: [Number, String, Array], options: { type: Array, default: () => [] }, props: { type: Object, default: () => ({}) } }; const DefaultProps = { expandTrigger: "click", multiple: false, checkStrictly: false, emitPath: true, lazy: false, lazyLoad: NOOP, value: "value", label: "label", children: "children", leaf: "leaf", disabled: "disabled", hoverThreshold: 500, nodeEllipsis: { open: false, maxWidth: "240px", width: "240px" } }; const useCascaderConfig = (props2) => { return computed(() => ({ ...DefaultProps, ...props2.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$1(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 index2 = newIds.indexOf(item.uid); if (index2 > -1) { acc.push(item); newNodesCopy.splice(index2, 1); newIds.splice(index2, 1); } return acc; }, []); res.push(...newNodesCopy); return res; }; const { cloneDeep: cloneDeep$5, flattenDeep, isEqual: isEqual$6 } = lodash; const _sfc_main$o = defineComponent({ name: "ScCascaderPanel", components: { ScCascaderMenu }, props: { ...CommonProps, border: { type: Boolean, default: true }, renderLabel: Function }, emits: [UPDATE_MODEL_EVENT, CHANGE_EVENT, "close", "expand-change"], setup(props2, { emit: emit2, slots }) { let manualChecked = false; const ns = basePrefixCls + "Cascader"; const config = useCascaderConfig(props2); 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 === "hover"); const renderLabelFn = computed(() => props2.renderLabel || slots.default); const initStore = () => { const { options: options2 } = props2; const cfg = config.value; manualChecked = false; store = new Store(options2, cfg); menus.value = [store.getNodes()]; if (cfg.lazy && isEmpty(props2.options)) { initialLoaded.value = false; lazyLoad(void 0, (list2) => { if (list2) { store = new Store(list2, 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 parent2 = _node.root ? null : _node; dataList && (store == null ? void 0 : store.appendNodes(dataList, parent2)); _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 && emit2("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 && emit2("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 getCheckedNodeKeys = (leafOnly) => { var _a2; const nodes = (_a2 = getFlattedNodes(leafOnly)) == null ? void 0 : _a2.filter((node) => node.checked !== false); return nodes == null ? void 0 : nodes.map((item) => item.pathValues); }; 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 values2 = nodes.map((node) => node.valueByOption); checkedNodes.value = nodes; checkedValue.value = multiple ? values2 : (_a2 = values2[0]) != null ? _a2 : null; }; const syncCheckedValue = (loaded = false, forced = false) => { const { modelValue } = props2; const { lazy, multiple, checkStrictly } = config.value; const leafOnly = !checkStrictly; if (!initialLoaded.value || manualChecked || !forced && isEqual$6(modelValue, checkedValue.value)) return; if (lazy && !loaded) { const values2 = unique( flattenDeep(castArray(modelValue)) ); const nodes = values2.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 values2 = multiple ? castArray(modelValue) : [modelValue]; const nodes = unique( values2.map((val) => store == null ? void 0 : store.getNodeByValue(val, leafOnly)) ); syncMenuState(nodes, forced); checkedValue.value = cloneDeep$5(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$1) return; menuList.value.forEach((menu) => { const menuElement = menu == null ? void 0 : menu.$el; if (menuElement) { const container = menuElement.querySelector( `.${ns}-menu-wrap` ); const activeNode = menuElement.querySelector(`.${ns + "-node"}.isActive`) || menuElement.querySelector(`.${ns + "-node"}.in-active-path`) || menuElement.querySelector(`.${ns + "-node"}.isSelected`); scrollIntoView$1(container, activeNode); } }); }; const handleKeyDown5 = (e2) => { const target = e2.target; const { code } = e2; switch (code) { case EVENT_CODE.up: case EVENT_CODE.down: { e2.preventDefault(); const distance = code === EVENT_CODE.up ? -1 : 1; focusNode$1( getSibling$1(target, distance, `.${ns + "-node"}[tabindex="-1"]`) ); break; } case EVENT_CODE.left: { e2.preventDefault(); const preMenu = menuList.value[getMenuIndex(target) - 1]; const expandedNode = preMenu == null ? void 0 : preMenu.$el.querySelector( `.${ns + "-node"}[aria-expanded="true"]` ); focusNode$1(expandedNode); break; } case EVENT_CODE.right: { e2.preventDefault(); const nextMenu = menuList.value[getMenuIndex(target) + 1]; const firstNode = nextMenu == null ? void 0 : nextMenu.$el.querySelector( `.${ns + "-node"}[tabindex="-1"]` ); focusNode$1(firstNode); break; } case EVENT_CODE.enter: checkNode(target); break; } }; provide( CASCADER_PANEL_INJECTION_KEY, reactive({ config, expandingNode, checkedNodes, isHoverMenu, initialLoaded, renderLabelFn, lazyLoad, expandNode, handleCheckChange }) ); watch([config, () => props2.options], initStore, { deep: true, immediate: true }); watch( () => props2.modelValue, () => { manualChecked = false; syncCheckedValue(); }, { deep: true } ); watch( () => checkedValue.value, (val) => { if (!isEqual$6(val, props2.modelValue)) { emit2(UPDATE_MODEL_EVENT, val); emit2(CHANGE_EVENT, val); } } ); onBeforeUpdate(() => menuList.value = []); onMounted(() => !isEmpty(props2.modelValue) && syncCheckedValue()); return { ns, menuList, menus, checkedNodes, handleKeyDown: handleKeyDown5, handleCheckChange, getFlattedNodes, getCheckedNodes, getCheckedNodeKeys, clearCheckedNodes, calculateCheckedValue, scrollToExpandingNode }; } }); function _sfc_render$m(_ctx, _cache, $props, $setup, $data, $options) { const _component_ScCascaderMenu = resolveComponent("ScCascaderMenu"); return openBlock(), createElementBlock("div", { class: normalizeClass([_ctx.ns + "-panel", _ctx.border ? "isBordered" : ""]), onKeydown: _cache[0] || (_cache[0] = (...args) => _ctx.handleKeyDown && _ctx.handleKeyDown(...args)) }, [ (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.menus, (menu, index2) => { return openBlock(), createBlock(_component_ScCascaderMenu, { key: index2, ref_for: true, ref: (item) => _ctx.menuList[index2] = item, index: index2, nodes: [...menu] }, createSlots({ _: 2 }, [ _ctx.$slots.empty ? { name: "empty", fn: withCtx(() => [ renderSlot(_ctx.$slots, "empty") ]) } : void 0 ]), 1032, ["index", "nodes"]); }), 128)) ], 34); } const scCascaderPanel = /* @__PURE__ */ _export_sfc(_sfc_main$o, [["render", _sfc_render$m]]); const ScCascaderPanel = withInstall$1(scCascaderPanel); const tagProps$1 = () => ({ color: String, size: { type: String, validator: (v2) => ["small", "default", "large", "medium"].includes(v2) }, tooltipDes: String, type: { type: String, values: ["dark", "light", "outline", "lightOutline"], default: "lightOutline" }, status: { type: String, values: ["success", "warning", "error", "primary", "default", "process", "freeze"], default: "default" }, border: { type: Boolean, default: true }, checked: Boolean, selected: Boolean, disabled: Boolean, loading: Boolean }); const _sfc_main$n = defineComponent({ name: "ScTag", inheritAttrs: false, components: { Tag, Tooltip }, props: tagProps$1(), emits: ["change", "update:checked"], setup(props2, { attrs, emit: emit2 }) { const baseClass = basePrefixCls + "Tag"; const checked = ref(); const compProps = computed(() => { return props2; }); watch(() => props2.checked, (val) => { checked.value = val; }, { immediate: true }); const classNames2 = computed(() => { const { type: type2, size, status, selected, disabled, color, border, loading } = unref(compProps); return [ attrs.class, baseClass, size ? baseClass + "--" + size : "", status ? "is-" + status : "", type2 ? baseClass + "-" + type2 : "", selected ? unref(checked) ? "is-selected onSelect" : "onSelect" : "", disabled ? "is-disabled" : "", color ? "is-custom-color" : "", border ? "" : "notBorder", loading ? "is-loading" : "" ]; }); const varStyle = computed(() => { const { color } = props2; const rgbaColor = color ? parseColorString(color) : ""; const shadowOutColor = rgbaColor ? toRgbaString(Object.assign(rgbaColor, { a: 0.1 })) : ""; const borderOutColor = rgbaColor ? toRgbaString(Object.assign(rgbaColor, { a: 0 })) : ""; if (!color) { return {}; } return { "--customColor": color, "--customBgColor": shadowOutColor, "--customBorderColor": borderOutColor }; }); const handleChange7 = () => { const { disabled } = unref(compProps); if (disabled) { return false; } emit2("update:checked", !checked.value); emit2("change", !checked.value); }; return { baseClass, classNames: classNames2, compProps, handleChange: handleChange7, varStyle }; } }); function _sfc_render$l(_ctx, _cache, $props, $setup, $data, $options) { const _component_Tooltip = resolveComponent("Tooltip"); const _component_Tag = resolveComponent("Tag"); return openBlock(), createBlock(_component_Tag, mergeProps(_ctx.$attrs, { color: _ctx.compProps.color, disable: _ctx.compProps.disabled, class: _ctx.classNames, onClick: _ctx.handleChange, style: _ctx.varStyle }), createSlots({ _: 2 }, [ renderList(Object.keys(_ctx.$slots), (item) => { return { name: item, fn: withCtx((data17) => [ _ctx.compProps.loading ? (openBlock(), createElementBlock("span", { key: 0, class: normalizeClass(["loading-transition", _ctx.baseClass + "-loading"]) }, null, 2)) : createCommentVNode("", true), createVNode(_component_Tooltip, { placement: "top" }, createSlots({ default: withCtx(() => [ createElementVNode("span", { class: normalizeClass([_ctx.compProps.tooltipDes ? "underline-dashed " : ""]) }, [ renderSlot(_ctx.$slots, item, normalizeProps(guardReactiveProps(data17 || {}))) ], 2) ]), _: 2 }, [ _ctx.compProps.tooltipDes ? { name: "title", fn: withCtx(() => [ createTextVNode(toDisplayString(_ctx.tooltipDes), 1) ]) } : void 0 ]), 1024) ]) }; }) ]), 1040, ["color", "disable", "class", "onClick", "style"]); } const scTag = /* @__PURE__ */ _export_sfc(_sfc_main$n, [["render", _sfc_render$l]]); const ScTag = withInstall$1(scTag); const nodeList$1 = /* @__PURE__ */ new Map(); let startClick; if (isClient$1) { document.addEventListener("mousedown", (e2) => startClick = e2); document.addEventListener("mouseup", (e2) => { for (const handlers of nodeList$1.values()) { for (const { documentHandler } of handlers) { documentHandler(e2, startClick); } } }); } function createDocumentHandler(el, binding) { let excludes = []; if (Array.isArray(binding.arg)) { excludes = binding.arg; } else if (isElement(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$1.has(el)) { nodeList$1.set(el, []); } nodeList$1.get(el).push({ documentHandler: createDocumentHandler(el, binding), bindingFn: binding.value }); }, updated(el, binding) { if (!nodeList$1.has(el)) { nodeList$1.set(el, []); } const handlers = nodeList$1.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$1.delete(el); } }; 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 index2 = Array.prototype.indexOf.call(siblings, el); return siblings[index2 + distance] || null; }; const focusNode = (el) => { if (!el) return; el.focus(); !isLeaf(el) && el.click(); }; const isKorean = (text) => /([(\uAC00-\uD7AF)|(\u3130-\u318F)])+/gi.test(text); const componentSizes = ["", "default", "small", "large"]; const tagProps = () => ({ 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 { cloneDeep: cloneDeep$4, debounce: debounce$3, isEqual: isEqual$5 } = lodash; 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 = "ScCascaderNew"; const _sfc_main$m = defineComponent({ name: COMPONENT_NAME, components: { ScCascaderPanel, ScInput, Tooltip, ScScrollbar, ScTag, Checkbox }, directives: { Clickoutside: ClickOutside }, props: { ...CommonProps, size: { type: String, validator: (type2) => { return ["", "default", "small", "large"].includes(type2); } }, placeholder: { type: String }, disabled: Boolean, allowClear: Boolean, popupClassName: String, popupStyle: Object, filterable: Boolean, popupPlacement: String, getPopupContainer: Function, 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: "" }, teleported: Object, tagType: { ...tagProps.type, default: "dark" }, validateEvent: { type: Boolean, default: true }, infoTooltip: String }, emits: [ UPDATE_MODEL_EVENT, CHANGE_EVENT, "focus", "blur", "visible-change", "expand-change", "remove-tag" ], setup(props2, { emit: emit2, slots }) { let inputInitialHeight = 0; let pressDeleteCount = 0; const nsCascader = "scCascaderNew"; const nsInput = "ScInputCascaderNew"; const uuid2 = "scCascader" + buildUUID(); const tooltipRef = ref(null); const input = ref(null); const cascaderRef = ref(null); const tagWrapper = ref(null); const panel = ref(null); const panel1 = 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 isDefaultValue = ref(false); const searchHeight = pxToRem(260); const isPrefixIcon = computed(() => { return Object.keys(slots).includes("prefixIcon"); }); const isDisabled2 = computed(() => props2.disabled); const inputPlaceholder = computed( () => props2.placeholder || "\u8BF7\u9009\u62E9" ); const currentPlaceholder = computed( () => searchInputValue.value || presentTags.value.length > 0 ? "" : inputPlaceholder.value ); const realSize = computed(() => { return "default"; }); const tagSize = computed( () => ["small"].includes(realSize.value) ? "small" : "default" ); const multiple = computed(() => !!props2.props.multiple); const collapseTags = computed(() => !!props2.collapseTags); const readonly2 = computed(() => !props2.filterable || multiple.value); const searchKeyword = computed( () => multiple.value ? searchInputValue.value : inputValue.value ); const isInfoTooltip = computed(() => !!props2.infoTooltip); const infoTooltip = computed(() => props2.infoTooltip); const checkedNodes = computed( () => { var _a2, _b; return ((_a2 = panel.value) == null ? void 0 : _a2.checkedNodes) || ((_b = panel1.value) == null ? void 0 : _b.checkedNodes) || []; } ); const clearBtnVisible = computed(() => { if (!props2.allowClear || isDisabled2.value || filtering.value || !inputHover.value) return false; return !!checkedNodes.value.length; }); const presentText = computed(() => { const { showAllLevels, separator } = props2; const nodes = checkedNodes.value; return nodes.length ? multiple.value ? "" : nodes[0].calcText(showAllLevels, separator) : ""; }); const checkedValue = computed({ get() { return cloneDeep$4(props2.modelValue); }, set(val) { var _a2; emit2(UPDATE_MODEL_EVENT, val); const newCheckedNodes = (_a2 = checkedNodes.value) == null ? void 0 : _a2.map((item) => { return { ...item, ...item.data }; }); emit2(CHANGE_EVENT, val, newCheckedNodes); if (props2.validateEvent) ; } }); watch(() => popperVisible.value, (val) => { var _a2; if (val && !isDefaultValue.value) { const timer = setTimeout(() => { isDefaultValue.value = true; clearTimeout(timer); }); } if (val) { const inputDom = (_a2 = cascaderRef == null ? void 0 : cascaderRef.value) == null ? void 0 : _a2.querySelector(".scInput input"); inputDom.addEventListener("mousedown", (e2) => { e2.preventDefault(); }); } }); const popperPaneRef = ref(); const multipleOptionRef = ref(); const togglePopperVisible = (visible2) => { var _a2, _b, _c, _d; if (isDisabled2.value) return; visible2 = visible2 != null ? visible2 : !popperVisible.value; if (visible2 !== popperVisible.value) { popperVisible.value = visible2; (_c = (_b = (_a2 = input.value) == null ? void 0 : _a2.input) == null ? void 0 : _b.input) == null ? void 0 : _c.setAttribute("aria-expanded", `${visible2}`); if (visible2) { updatePopperPosition(); nextTick((_d = panel.value) == null ? void 0 : _d.scrollToExpandingNode); } else if (props2.filterable) { syncPresentTextValue(); } emit2("visible-change", visible2); } nextTick(() => { window.requestAnimationFrame(() => { var _a3; const cascaderPanelPop = document && document.querySelector("." + uuid2); popperPaneRef.value = cascaderPanelPop; multipleOptionRef.value = (_a3 = suggestionPanel.value) == null ? void 0 : _a3.wrapRef; }); }); }; const updatePopperPosition = () => { nextTick(() => { var _a2, _b; (_b = (_a2 = tooltipRef.value) == null ? void 0 : _a2.updatePopper) == null ? void 0 : _b.call(_a2); }); }; const hideSuggestionPanel = () => { filtering.value = false; }; const genTag2 = (node) => { const { showAllLevels, separator } = props2; return { node, key: node.uid, text: node.calcText(showAllLevels, separator), hitState: false, closable: !isDisabled2.value && !node.isDisabled, isCollapseTag: false }; }; const deleteTag = (tag) => { var _a2; const node = tag.node; if (panel.value && panel.value.calculateCheckedValue) { node.doCheck(false); (_a2 = panel.value) == null ? void 0 : _a2.calculateCheckedValue(); emit2("remove-tag", node.valueByOption); } else { const { emitPath } = props2.props; const currentValue = emitPath === false ? node.value : node.pathValues; const newData = (props2.modelValue || []).filter((val) => { if (!emitPath) { if (isArray$4(val) || isArray$4(currentValue)) { return !isEqual$5(val, currentValue); } return currentValue !== val; } return !isEqual$5(val, currentValue); }); emit2(UPDATE_MODEL_EVENT, newData); emit2(CHANGE_EVENT, newData); } }; 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 (props2.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, _b; const { filterMethod, showAllLevels, separator } = props2; const res = (_b = (_a2 = panel.value) == null ? void 0 : _a2.getFlattedNodes(!props2.props.checkStrictly)) == null ? void 0 : _b.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 + "-suggestion-item"}` ); } else { firstNode = (_a2 = panel.value) == null ? void 0 : _a2.$el.querySelector( `.${nsCascader + "node"}[tabindex="-1"]` ); } if (firstNode) { firstNode.focus(); !filtering.value && firstNode.click(); } }; const updateStyle = () => { var _a2, _b, _c; const inputInner = (_b = (_a2 = input.value) == null ? void 0 : _a2.input) == null ? void 0 : _b.input; const tagWrapperEl = tagWrapper.value; const suggestionPanelEl = (_c = suggestionPanel.value) == null ? void 0 : _c.$el; if (!isClient$1 || !inputInner) return; if (suggestionPanelEl) { const suggestionList = suggestionPanelEl.querySelector( `.${nsCascader + "suggestion-list"}` ); if (suggestionList) { 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 == null ? void 0 : panel.value) == null ? void 0 : _a2.getCheckedNodes(leafOnly); }; const getCheckedNodeKeys = (leafOnly) => { var _a2; return (_a2 = panel == null ? void 0 : panel.value) == null ? void 0 : _a2.getCheckedNodeKeys(leafOnly); }; const handleExpandChange = (value7) => { updatePopperPosition(); emit2("expand-change", value7); }; 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 handleKeyDown5 = (e2) => { if (isOnComposition.value) return; switch (e2.code) { case EVENT_CODE.enter: togglePopperVisible(); break; case EVENT_CODE.down: togglePopperVisible(true); nextTick(focusFirstNode); e2.preventDefault(); break; case EVENT_CODE.esc: if (popperVisible.value === true) { e2.preventDefault(); e2.stopPropagation(); togglePopperVisible(false); } break; case EVENT_CODE.tab: togglePopperVisible(false); break; } }; const handleClear = () => { var _a2; if (panel.value && panel.value.clearCheckedNodes) { (_a2 = panel.value) == null ? void 0 : _a2.clearCheckedNodes(); } else { window == null ? void 0 : window.requestAnimationFrame(() => { togglePopperVisible(true); window == null ? void 0 : window.requestAnimationFrame(() => { var _a3; (_a3 = panel.value) == null ? void 0 : _a3.clearCheckedNodes(); togglePopperVisible(false); }); }); } if (!popperVisible.value && props2.filterable) { syncPresentTextValue(); } togglePopperVisible(false); }; const syncPresentTextValue = () => { const { value: value7 } = presentText; inputValue.value = value7; searchInputValue.value = value7; }; const handleSuggestionClick = (node) => { var _a2, _b; const { checked } = node; if (multiple.value) { (_a2 = panel.value) == null ? void 0 : _a2.handleCheckChange(node, !checked, false); } else { !checked && ((_b = panel.value) == null ? void 0 : _b.handleCheckChange(node, true, false)); togglePopperVisible(false); } }; const handleSuggestionKeyDown = (e2) => { const target = e2.target; const { code } = e2; switch (code) { case EVENT_CODE.up: case EVENT_CODE.down: { const distance = code === EVENT_CODE.up ? -1 : 1; focusNode( getSibling( target, distance, `.${nsCascader + "suggestion-item"}[tabindex="-1"]` ) ); break; } case EVENT_CODE.enter: target.click(); break; } }; const handleDelete = () => { const tags = presentTags.value; const lastTag = tags[tags.length - 1]; pressDeleteCount = searchInputValue.value ? 0 : pressDeleteCount + 1; if (!lastTag || !pressDeleteCount || props2.collapseTags && tags.length > 1) return; if (lastTag.hitState) { deleteTag(lastTag); } else { lastTag.hitState = true; } }; const handleFilter = debounce$3(() => { const { value: value7 } = searchKeyword; if (!value7) return; const passed = props2.beforeFilter(value7); if (isPromise(passed)) { passed.then(calculateSuggestions).catch(() => { }); } else if (passed !== false) { calculateSuggestions(); } else { hideSuggestionPanel(); } }, props2.debounce); const handleInput = (val, e2) => { !popperVisible.value && togglePopperVisible(true); if (e2 == null ? void 0 : e2.isComposing) return; val ? handleFilter() : hideSuggestionPanel(); }; watch(filtering, updatePopperPosition); watch([checkedNodes, isDisabled2], calculatePresentTags); watch(presentTags, () => { nextTick(() => updateStyle()); }); watch(presentText, syncPresentTextValue, { immediate: true }); onMounted(() => { var _a2, _b; const inputInner = (_b = (_a2 = input.value) == null ? void 0 : _a2.input) == null ? void 0 : _b.input; const inputInnerHeight = Number.parseFloat( useCssVar(`${"--" + nsInput + "-input-height"}`, inputInner).value ) - 2; inputInitialHeight = inputInner.offsetHeight || inputInnerHeight; useResizeObserver(inputInner, updateStyle); }); return { isInfoTooltip, infoTooltip, popperOptions, tooltipRef, popperPaneRef, input, tagWrapper, panel, panel1, suggestionPanel, popperVisible, inputHover, inputPlaceholder, currentPlaceholder, filtering, presentText, checkedValue, inputValue, searchInputValue, presentTags, allPresentTags, suggestions, isDisabled: isDisabled2, isOnComposition, realSize, tagSize, multiple, readonly: readonly2, clearBtnVisible, nsCascader, nsInput, uuid: uuid2, isDefaultValue, multipleOptionRef, isPrefixIcon, searchHeight, collapseTags, cascaderPanelRef: panel, cascaderRef, togglePopperVisible, hideSuggestionPanel, deleteTag, focusFirstNode, getCheckedNodes, getCheckedNodeKeys, handleExpandChange, handleKeyDown: handleKeyDown5, handleComposition, handleClear, handleSuggestionClick, handleSuggestionKeyDown, handleDelete, handleInput }; } }); const _hoisted_1$9 = /* @__PURE__ */ createElementVNode("i", { class: "sc-ui sc-question-circle" }, null, -1); const _hoisted_2$5 = { key: 0, class: "isMultiple-prefixIcon" }; const _hoisted_3$3 = { key: 1, class: "isMultiple-prefixIcon-tags__container" }; const _hoisted_4$1 = { key: 0 }; const _hoisted_5 = { key: 0 }; const _hoisted_6 = ["placeholder"]; const _hoisted_7 = { key: 0 }; const _hoisted_8 = { key: 0 }; const _hoisted_9 = ["placeholder"]; const _hoisted_10 = { key: 1, style: { "height": "0", "opacity": "0", "width": "0", "overflow": "hidden", "position": "relative" } }; const _hoisted_11 = ["onClick"]; function _sfc_render$k(_ctx, _cache, $props, $setup, $data, $options) { const _component_Tooltip = resolveComponent("Tooltip"); const _component_ScInput = resolveComponent("ScInput"); const _component_ScTag = resolveComponent("ScTag"); const _component_ScScrollbar = resolveComponent("ScScrollbar"); const _component_ScCascaderPanel = resolveComponent("ScCascaderPanel"); const _component_Checkbox = resolveComponent("Checkbox"); const _directive_clickoutside = resolveDirective("clickoutside"); return openBlock(), createBlock(_component_Tooltip, { ref: "tooltipRef", visible: _ctx.popperVisible, teleported: _ctx.teleported, overlayClassName: `${[_ctx.nsCascader + "-dropdown", _ctx.popperClass, _ctx.popupClassName, _ctx.uuid].join(" ")}`, overlayStyle: _ctx.popupStyle, "popper-options": _ctx.popperOptions, "fallback-placements": [ "bottomLeft", "bottom", "topLeft", "top", "right", "left" ], "stop-popper-mouse-event": false, "gpu-acceleration": false, placement: _ctx.popupPlacement || "bottomLeft", transition: `${_ctx.nsCascader}-zoom-in-top`, effect: "light", pure: "", persistent: "", onVisibleChange: _ctx.hideSuggestionPanel, trigger: "click", "get-popup-container": _ctx.getPopupContainer }, { default: withCtx(() => [ withDirectives((openBlock(), createElementBlock("div", { class: normalizeClass([ _ctx.nsCascader, _ctx.nsCascader + "-" + _ctx.realSize, _ctx.isDisabled ? "isDisabled" : "", _ctx.multiple ? "isMultiple" : "" ]), ref: "cascaderRef", style: normalizeStyle(_ctx.$attrs.style), onClick: _cache[27] || (_cache[27] = () => _ctx.togglePopperVisible(_ctx.readonly ? void 0 : true)), onKeydown: _cache[28] || (_cache[28] = (...args) => _ctx.handleKeyDown && _ctx.handleKeyDown(...args)), onMouseenter: _cache[29] || (_cache[29] = ($event) => _ctx.inputHover = true), onMouseleave: _cache[30] || (_cache[30] = ($event) => _ctx.inputHover = false) }, [ createVNode(_component_ScInput, { ref: "input", value: _ctx.inputValue, "onUpdate:value": _cache[2] || (_cache[2] = ($event) => _ctx.inputValue = $event), placeholder: _ctx.multiple ? _ctx.currentPlaceholder : _ctx.inputPlaceholder, readonly: _ctx.readonly, disabled: _ctx.isDisabled, "validate-event": false, size: _ctx.realSize, class: normalizeClass(_ctx.popperVisible ? "isFocus" : ""), onCompositionstart: _ctx.handleComposition, onCompositionupdate: _ctx.handleComposition, onCompositionend: _ctx.handleComposition, onFocus: _cache[3] || (_cache[3] = (e2) => _ctx.$emit("focus", e2)), onBlur: _cache[4] || (_cache[4] = (e2) => _ctx.$emit("blur", e2)), onInput: _ctx.handleInput }, createSlots({ suffix: withCtx(() => [ _ctx.clearBtnVisible ? (openBlock(), createElementBlock("i", { key: "clear", class: "sc-ui sc-error-fill", onClick: _cache[0] || (_cache[0] = withModifiers((...args) => _ctx.handleClear && _ctx.handleClear(...args), ["stop"])) })) : (openBlock(), createElementBlock("i", { class: normalizeClass([ "sc-ui", "sc-xiangxia", _ctx.popperVisible ? "isReverse" : "" ]), key: "arrow-down", onClick: _cache[1] || (_cache[1] = withModifiers(($event) => _ctx.togglePopperVisible(), ["stop"])) }, null, 2)), _ctx.isInfoTooltip ? (openBlock(), createBlock(_component_Tooltip, { key: 2 }, { title: withCtx(() => [ createTextVNode(toDisplayString(_ctx.infoTooltip), 1) ]), default: withCtx(() => [ _hoisted_1$9 ]), _: 1 })) : createCommentVNode("", true) ]), _: 2 }, [ _ctx.isPrefixIcon ? { name: "prefix", fn: withCtx(() => [ renderSlot(_ctx.$slots, "prefixIcon") ]) } : void 0 ]), 1032, ["value", "placeholder", "readonly", "disabled", "size", "class", "onCompositionstart", "onCompositionupdate", "onCompositionend", "onInput"]), _ctx.multiple ? (openBlock(), createElementBlock("div", { key: 0, ref: "tagWrapper", class: normalizeClass([_ctx.nsCascader + "-tags", _ctx.collapseTags ? "isCollapseTags" : "", _ctx.multiple && _ctx.isPrefixIcon ? "isMultiple-prefixIcon-tags" : ""]) }, [ _ctx.multiple && _ctx.isPrefixIcon ? (openBlock(), createElementBlock("div", _hoisted_2$5, [ renderSlot(_ctx.$slots, "prefixIcon") ])) : createCommentVNode("", true), _ctx.isPrefixIcon ? (openBlock(), createElementBlock("div", _hoisted_3$3, [ (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.presentTags, (tag) => { return openBlock(), createBlock(_component_ScTag, { key: tag.key, type: _ctx.tagType, size: _ctx.tagSize, hit: tag.hitState, closable: tag.closable, class: normalizeClass([tag.isCollapseTag ? "isTooltipTag" : ""]), "disable-transitions": "", onClose: (event) => { event.stopPropagation(); _ctx.deleteTag(tag); } }, { default: withCtx(() => [ tag.isCollapseTag === false ? (openBlock(), createElementBlock("span", _hoisted_4$1, toDisplayString(tag.text), 1)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [ _ctx.collapseTagsTooltip === false ? (openBlock(), createElementBlock("span", _hoisted_5, toDisplayString(tag.text), 1)) : (openBlock(), createBlock(_component_Tooltip, { key: 1, disabled: _ctx.popperVisible || !_ctx.collapseTagsTooltip, "fallback-placements": ["bottom", "top", "right", "left"], placement: "bottom", "overlay-class-name": "isTooltipTag-pd0", effect: "light" }, { default: withCtx(() => [ createElementVNode("span", null, toDisplayString(tag.text), 1) ]), title: withCtx(() => [ createVNode(_component_ScScrollbar, { "max-height": _ctx.searchHeight, "view-class": _ctx.nsCascader + "-collapse-tags" }, { default: withCtx(() => [ (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.allPresentTags.slice(1), (tag2, idx) => { return openBlock(), createElementBlock("div", { key: idx, class: normalizeClass(_ctx.nsCascader + "-collapse-tag") }, [ (openBlock(), createBlock(_component_ScTag, { key: tag2.key, class: normalizeClass(["in-tooltip"]), type: _ctx.tagType, size: _ctx.tagSize, hit: tag2.hitState, closable: tag2.closable, "disable-transitions": "", onClose: (event) => { event.stopPropagation(); _ctx.deleteTag(tag2); }, onClick: _cache[5] || (_cache[5] = withModifiers(($event) => _ctx.togglePopperVisible(), ["stop"])) }, { default: withCtx(() => [ createElementVNode("span", null, toDisplayString(tag2.text), 1) ]), _: 2 }, 1032, ["type", "size", "hit", "closable", "onClose"])) ], 2); }), 128)) ]), _: 1 }, 8, ["max-height", "view-class"]) ]), _: 2 }, 1032, ["disabled"])) ], 64)) ]), _: 2 }, 1032, ["type", "size", "hit", "closable", "class", "onClose"]); }), 128)), _ctx.filterable && !_ctx.isDisabled ? withDirectives((openBlock(), createElementBlock("input", { key: 0, "onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => _ctx.searchInputValue = $event), type: "text", class: normalizeClass(_ctx.nsCascader + "-search-input"), placeholder: _ctx.presentText || _ctx.presentTags.length ? "" : _ctx.inputPlaceholder, onInput: _cache[7] || (_cache[7] = (e2) => _ctx.handleInput(_ctx.searchInputValue, e2)), onClick: _cache[8] || (_cache[8] = withModifiers(($event) => _ctx.togglePopperVisible(true), ["stop"])), onKeydown: _cache[9] || (_cache[9] = withKeys((...args) => _ctx.handleDelete && _ctx.handleDelete(...args), ["delete"])), onFocus: _cache[10] || (_cache[10] = (e2) => _ctx.$emit("focus", e2)), onBlur: _cache[11] || (_cache[11] = (e2) => _ctx.$emit("blur", e2)), 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)) }, null, 42, _hoisted_6)), [ [vModelText, _ctx.searchInputValue] ]) : createCommentVNode("", true) ])) : (openBlock(), createElementBlock(Fragment, { key: 2 }, [ (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.presentTags, (tag) => { return openBlock(), createBlock(_component_ScTag, { key: tag.key, type: _ctx.tagType, size: _ctx.tagSize, hit: tag.hitState, closable: tag.closable, class: normalizeClass([tag.isCollapseTag ? "isTooltipTag" : ""]), "disable-transitions": "", onClose: (event) => { event.stopPropagation(); _ctx.deleteTag(tag); } }, { default: withCtx(() => [ tag.isCollapseTag === false ? (openBlock(), createElementBlock("span", _hoisted_7, toDisplayString(tag.text), 1)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [ _ctx.collapseTagsTooltip === false ? (openBlock(), createElementBlock("span", _hoisted_8, toDisplayString(tag.text), 1)) : (openBlock(), createBlock(_component_Tooltip, { key: 1, disabled: _ctx.popperVisible || !_ctx.collapseTagsTooltip, "fallback-placements": ["bottom", "top", "right", "left"], placement: "bottom", "overlay-class-name": "isTooltipTag-pd0", effect: "light" }, { default: withCtx(() => [ createElementVNode("span", null, toDisplayString(tag.text), 1) ]), title: withCtx(() => [ createVNode(_component_ScScrollbar, { "max-height": _ctx.searchHeight, "view-class": _ctx.nsCascader + "-collapse-tags" }, { default: withCtx(() => [ (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.allPresentTags.slice(1), (tag2, idx) => { return openBlock(), createElementBlock("div", { key: idx, class: normalizeClass(_ctx.nsCascader + "-collapse-tag") }, [ (openBlock(), createBlock(_component_ScTag, { key: tag2.key, class: normalizeClass(["in-tooltip"]), type: _ctx.tagType, size: _ctx.tagSize, hit: tag2.hitState, closable: tag2.closable, "disable-transitions": "", onClose: (event) => { event.stopPropagation(); _ctx.deleteTag(tag2); }, onClick: _cache[15] || (_cache[15] = withModifiers(($event) => _ctx.togglePopperVisible(), ["stop"])) }, { default: withCtx(() => [ createElementVNode("span", null, toDisplayString(tag2.text), 1) ]), _: 2 }, 1032, ["type", "size", "hit", "closable", "onClose"])) ], 2); }), 128)) ]), _: 1 }, 8, ["max-height", "view-class"]) ]), _: 2 }, 1032, ["disabled"])) ], 64)) ]), _: 2 }, 1032, ["type", "size", "hit", "closable", "class", "onClose"]); }), 128)), _ctx.filterable && !_ctx.isDisabled ? withDirectives((openBlock(), createElementBlock("input", { key: 0, "onUpdate:modelValue": _cache[16] || (_cache[16] = ($event) => _ctx.searchInputValue = $event), type: "text", class: normalizeClass(_ctx.nsCascader + "-search-input"), placeholder: _ctx.presentText || _ctx.presentTags.length ? "" : _ctx.inputPlaceholder, onInput: _cache[17] || (_cache[17] = (e2) => _ctx.handleInput(_ctx.searchInputValue, e2)), onClick: _cache[18] || (_cache[18] = withModifiers(($event) => _ctx.togglePopperVisible(true), ["stop"])), onKeydown: _cache[19] || (_cache[19] = withKeys((...args) => _ctx.handleDelete && _ctx.handleDelete(...args), ["delete"])), onFocus: _cache[20] || (_cache[20] = (e2) => _ctx.$emit("focus", e2)), onBlur: _cache[21] || (_cache[21] = (e2) => _ctx.$emit("blur", e2)), onCompositionstart: _cache[22] || (_cache[22] = (...args) => _ctx.handleComposition && _ctx.handleComposition(...args)), onCompositionupdate: _cache[23] || (_cache[23] = (...args) => _ctx.handleComposition && _ctx.handleComposition(...args)), onCompositionend: _cache[24] || (_cache[24] = (...args) => _ctx.handleComposition && _ctx.handleComposition(...args)) }, null, 42, _hoisted_9)), [ [vModelText, _ctx.searchInputValue] ]) : createCommentVNode("", true) ], 64)) ], 2)) : createCommentVNode("", true), !_ctx.isDefaultValue ? (openBlock(), createElementBlock("div", _hoisted_10, [ createVNode(_component_ScCascaderPanel, { ref: "panel1", modelValue: _ctx.checkedValue, "onUpdate:modelValue": _cache[25] || (_cache[25] = ($event) => _ctx.checkedValue = $event), options: _ctx.options, props: _ctx.props, border: false, "render-label": _ctx.$slots.default, onExpandChange: _ctx.handleExpandChange, onClose: _cache[26] || (_cache[26] = ($event) => _ctx.$nextTick(() => _ctx.togglePopperVisible(false))) }, null, 8, ["modelValue", "options", "props", "render-label", "onExpandChange"]) ])) : createCommentVNode("", true) ], 38)), [ [_directive_clickoutside, () => _ctx.togglePopperVisible(false), _ctx.popperPaneRef] ]) ]), title: withCtx(() => [ withDirectives(createVNode(_component_ScCascaderPanel, { ref: "panel", modelValue: _ctx.checkedValue, "onUpdate:modelValue": _cache[31] || (_cache[31] = ($event) => _ctx.checkedValue = $event), options: _ctx.options, props: _ctx.props, border: false, onExpandChange: _ctx.handleExpandChange, onClose: _cache[32] || (_cache[32] = ($event) => _ctx.$nextTick(() => _ctx.togglePopperVisible(false))) }, createSlots({ _: 2 }, [ _ctx.$slots.empty ? { name: "empty", fn: withCtx(() => [ renderSlot(_ctx.$slots, "empty") ]) } : void 0, _ctx.$slots.default ? { name: "default", fn: withCtx(({ node, data: data17 }) => [ renderSlot(_ctx.$slots, "default", normalizeProps(guardReactiveProps({ node, data: data17 }))) ]) } : void 0 ]), 1032, ["modelValue", "options", "props", "onExpandChange"]), [ [vShow, !_ctx.filtering] ]), _ctx.filterable ? withDirectives((openBlock(), createBlock(_component_ScScrollbar, { key: 0, ref: "suggestionPanel", tag: "ul", "max-height": _ctx.searchHeight, class: normalizeClass(_ctx.nsCascader + "-suggestion-panel"), "view-class": _ctx.nsCascader + "-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 + "-suggestion-item", item.checked ? "isChecked" : "" ]), tabindex: -1, onClick: ($event) => _ctx.handleSuggestionClick(item) }, [ createVNode(_component_Checkbox, { checked: item.checked, "onUpdate:checked": ($event) => item.checked = $event }, { default: withCtx(() => [ createElementVNode("span", null, toDisplayString(item.text), 1) ]), _: 2 }, 1032, ["checked", "onUpdate:checked"]) ], 10, _hoisted_11); }), 128)) : renderSlot(_ctx.$slots, "empty", { key: 1 }, () => [ !_ctx.$slots.empty ? (openBlock(), createElementBlock("li", { key: 0, class: normalizeClass(_ctx.nsCascader + "-empty-text") }, " \u6682\u65E0\u6570\u636E ", 2)) : createCommentVNode("", true), renderSlot(_ctx.$slots, "empty") ]) ]), _: 3 }, 8, ["max-height", "class", "view-class", "onKeydown"])), [ [vShow, _ctx.filtering] ]) : createCommentVNode("", true) ]), _: 3 }, 8, ["visible", "teleported", "overlayClassName", "overlayStyle", "popper-options", "placement", "transition", "onVisibleChange", "get-popup-container"]); } const scCascaderNew = /* @__PURE__ */ _export_sfc(_sfc_main$m, [["render", _sfc_render$k]]); const ScCascaderNew = withInstall$1(scCascaderNew); const Props$1 = () => ({}); const _sfc_main$l = defineComponent({ name: "ScBreadcrumb", inheritAttrs: false, props: Props$1(), components: { Breadcrumb }, setup(props2, { attrs }) { const newProps = computed(() => { return props2; }); const vBindValue = computed(() => { return { ...unref(newProps), ...attrs }; }); return { newProps, vBindValue }; } }); function _sfc_render$j(_ctx, _cache, $props, $setup, $data, $options) { const _component_Breadcrumb = resolveComponent("Breadcrumb"); return openBlock(), createBlock(_component_Breadcrumb, normalizeProps(guardReactiveProps(_ctx.vBindValue)), createSlots({ _: 2 }, [ renderList(Object.keys(_ctx.$slots), (item) => { return { name: item, fn: withCtx((data17) => [ renderSlot(_ctx.$slots, item, normalizeProps(guardReactiveProps(data17 || {}))) ]) }; }) ]), 1040); } const scBreadcrumb = /* @__PURE__ */ _export_sfc(_sfc_main$l, [["render", _sfc_render$j]]); const _sfc_main$k = defineComponent({ name: "ScBreadcrumbItem", inheritAttrs: false, props: Props$1(), components: { BreadcrumbItem }, setup(props2, { attrs }) { const newProps = computed(() => { return props2; }); const vBindValue = computed(() => { return { ...unref(newProps), ...attrs }; }); return { newProps, vBindValue }; } }); function _sfc_render$i(_ctx, _cache, $props, $setup, $data, $options) { const _component_BreadcrumbItem = resolveComponent("BreadcrumbItem"); return openBlock(), createBlock(_component_BreadcrumbItem, normalizeProps(guardReactiveProps(_ctx.vBindValue)), createSlots({ _: 2 }, [ renderList(Object.keys(_ctx.$slots), (item) => { return { name: item, fn: withCtx((data17) => [ renderSlot(_ctx.$slots, item, normalizeProps(guardReactiveProps(data17 || {}))) ]) }; }) ]), 1040); } const scBreadcrumbItem = /* @__PURE__ */ _export_sfc(_sfc_main$k, [["render", _sfc_render$i]]); const ScBreadcrumb = withInstall$1(scBreadcrumb); const ScBreadcrumbItem = withInstall$1(scBreadcrumbItem); const createCloseMessage = ({ type: type2 = "info", content, duration = 3e3, onClose, icon }) => { const uuid2 = buildUUID(); switch (type2) { default: message.open({ type: type2, content: h$2( "span", { class: `${basePrefixCls}Message-allowClose` }, [ content, h$2("i", { class: "sc-ui sc-guanbi", onClick: () => { message.destroy({ key: uuid2 }); } }) ] ), duration, onClose, icon: type2 === "loading" ? h$2("span", { class: "loading-transition" }) : icon, key: uuid2 }); } }; const useMessage = () => { return { createCloseMessage }; }; var screenEnum = /* @__PURE__ */ ((screenEnum2) => { screenEnum2[screenEnum2["XS"] = 480] = "XS"; screenEnum2[screenEnum2["SM"] = 576] = "SM"; screenEnum2[screenEnum2["MD"] = 768] = "MD"; screenEnum2[screenEnum2["LG"] = 992] = "LG"; screenEnum2[screenEnum2["XL"] = 1200] = "XL"; screenEnum2[screenEnum2["XXL"] = 1600] = "XXL"; return screenEnum2; })(screenEnum || {}); const screenMap = /* @__PURE__ */ new Map(); screenMap.set("XS", 480); screenMap.set("SM", 576); screenMap.set("MD", 768); screenMap.set("LG", 992); screenMap.set("XL", 1200); screenMap.set("XXL", 1600); let globalScreenRef; let globalWidthRef; let globalRealWidthRef; function useBreakpoint() { return { screenRef: computed(() => unref(globalScreenRef)), widthRef: globalWidthRef, screenEnum, realWidthRef: globalRealWidthRef }; } const isBrowser = () => typeof window !== "undefined"; function useIcon(extraCommonProps) { let scriptUrl = "//at.alicdn.com/t/c/font_3690753_eb2vxb8uhuc.js"; if (isBrowser()) { if (window == null ? void 0 : window.iconfontUrl) { scriptUrl = window.iconfontUrl; } } const ScIconComponent2 = createFromIconfontCN({ scriptUrl, extraCommonProps }); return ScIconComponent2; } let warned$1 = {}; function warning$5(valid, message3) { if (process.env.NODE_ENV !== "production" && !valid && console !== void 0) { console.error(`Warning: ${message3}`); } } function note$1(valid, message3) { if (process.env.NODE_ENV !== "production" && !valid && console !== void 0) { console.warn(`Note: ${message3}`); } } function call$1(method, valid, message3) { if (!valid && !warned$1[message3]) { method(false, message3); warned$1[message3] = true; } } function warningOnce$1(valid, message3) { call$1(warning$5, valid, message3); } function noteOnce$1(valid, message3) { call$1(note$1, valid, message3); } const devWarning$1 = (valid, component, message3) => { warningOnce$1(valid, `[ant-design-vue: ${component}] ${message3}`); }; const ContextKey = Symbol("ContextProps"); const InternalContextKey = Symbol("InternalContextProps"); const defaultContext = { id: computed(() => void 0), onFieldBlur: () => { }, onFieldChange: () => { }, clearValidate: () => { } }; const defaultInternalContext = { addFormItemField: () => { }, removeFormItemField: () => { } }; const useInjectFormItemContext = () => { const internalContext = inject(InternalContextKey, defaultInternalContext); const formItemFieldKey = Symbol("FormItemFieldKey"); const instance = getCurrentInstance(); internalContext.addFormItemField(formItemFieldKey, instance.type); onBeforeUnmount(() => { internalContext.removeFormItemField(formItemFieldKey); }); provide(InternalContextKey, defaultInternalContext); provide(ContextKey, defaultContext); return inject(ContextKey, defaultContext); }; defineComponent({ name: "AFormItemRest", setup(_2, { slots }) { provide(InternalContextKey, defaultInternalContext); provide(ContextKey, defaultContext); return () => { var _a2; return (_a2 = slots.default) == null ? void 0 : _a2.call(slots); }; } }); var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {}; function getAugmentedNamespace(n2) { var f2 = n2.default; if (typeof f2 == "function") { var a2 = function() { return f2.apply(this, arguments); }; a2.prototype = f2.prototype; } else a2 = {}; Object.defineProperty(a2, "__esModule", { value: true }); Object.keys(n2).forEach(function(k2) { var d2 = Object.getOwnPropertyDescriptor(n2, k2); Object.defineProperty(a2, k2, d2.get ? d2 : { enumerable: true, get: function() { return n2[k2]; } }); }); return a2; } var vueSliderComponent_umd_min = { exports: {} }; const require$$2 = /* @__PURE__ */ getAugmentedNamespace(vue); (function(module2, exports2) { (function(t2, e2) { module2.exports = e2(require$$2); })("undefined" !== typeof self ? self : commonjsGlobal, function(t2) { return function() { var e2 = { 388: function(t3, e3) { var n3, r3, i3; (function(o2, a2) { r3 = [], n3 = a2, i3 = "function" === typeof n3 ? n3.apply(e3, r3) : n3, void 0 === i3 || (t3.exports = i3); })("undefined" !== typeof self && self, function() { function t4() { var e4 = Object.getOwnPropertyDescriptor(document, "currentScript"); if (!e4 && "currentScript" in document && document.currentScript) return document.currentScript; if (e4 && e4.get !== t4 && document.currentScript) return document.currentScript; try { throw new Error(); } catch (f2) { var n4, r4, i4, o2 = /.*at [^(]*\((.*):(.+):(.+)\)$/gi, a2 = /@([^@]*):(\d+):(\d+)\s*$/gi, s2 = o2.exec(f2.stack) || a2.exec(f2.stack), l2 = s2 && s2[1] || false, u2 = s2 && s2[2] || false, c2 = document.location.href.replace(document.location.hash, ""), d2 = document.getElementsByTagName("script"); l2 === c2 && (n4 = document.documentElement.outerHTML, r4 = new RegExp("(?:[^\\n]+?\\n){0," + (u2 - 2) + "}[^<]*