UNPKG

tdesign-vue-next

Version:
1,229 lines (1,202 loc) 57.8 kB
/** * tdesign v1.15.2 * (c) 2025 tdesign * @license MIT */ import { getCurrentInstance, h, createVNode, Comment, Fragment, isVNode, Teleport, computed, ref, provide, onUpdated, inject, onUnmounted, onMounted, watch, onBeforeUnmount, nextTick, readonly, reactive, toRefs } from 'vue'; import { isFunction, isArray, isObject, camelCase, kebabCase, isBoolean, sum, max, min, throttle, debounce, isEqual, isString } from 'lodash-es'; import { _ as _toConsumableArray } from './dep-d0add92f.mjs'; import { _ as _typeof } from './dep-15464fee.mjs'; import { h as getChildren, m as isCommentVNode, n as getParams, p as getDefaultNode, q as getSlotFirst, i as isServer, g as getAttach } from './dep-d58b61b6.mjs'; import { useConfig } from '../config-provider/hooks/useConfig.mjs'; import { o as observe } from './dep-d913bc66.mjs'; import { _ as _slicedToArray } from './dep-614f307d.mjs'; import { g as getFileUrlByFileRaw } from './dep-1690abc9.mjs'; import { EAnimationType } from '../config-provider/utils/context.mjs'; import { a as _createClass, _ as _classCallCheck } from './dep-27c2b283.mjs'; import { _ as _defineProperty } from './dep-0bd8597f.mjs'; import { T as THEME_MODE } from './dep-67238d91.mjs'; function useIcon() { var instance = getCurrentInstance(); return function renderIconTNode(iconType, defaultIcons) { var iconContent; if (isFunction(instance.props[iconType])) { iconContent = instance.props[iconType](h); } else if (instance.slots[iconType]) { iconContent = instance.slots[iconType] && instance.slots[iconType](null)[0]; } else if (defaultIcons) { var Component = defaultIcons[instance.props.theme]; iconContent = createVNode(Component, null, null); } return iconContent; }; } function useChildComponentSlots() { var instance = getCurrentInstance(); return function (childComponentName, slots) { var _slots, _slots$default; if (!slots) { slots = instance.slots; } var content = ((_slots = slots) === null || _slots === void 0 || (_slots$default = _slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(_slots)) || []; return getChildren(content).filter(function (item) { var _item$type$name; return (_item$type$name = item.type.name) === null || _item$type$name === void 0 ? void 0 : _item$type$name.endsWith(childComponentName); }); }; } function useChildSlots() { var instance = getCurrentInstance(); return function () { var _slots$default2; var slots = instance.slots; var content = (slots === null || slots === void 0 || (_slots$default2 = slots["default"]) === null || _slots$default2 === void 0 ? void 0 : _slots$default2.call(slots)) || []; return content.filter(function (item) { if (_typeof(item.type) === "symbol" && !item.children) { return false; } return item.type !== Comment; }).map(function (item) { if (item.children && isArray(item.children) && item.type === Fragment) return item.children; return item; }).flat(); }; } function useFlatChildrenSlots() { function getFlatChildren(children) { var result = []; children.forEach(function (child) { if (isVNode(child) && child.type === Fragment && Array.isArray(child.children)) { result.push.apply(result, _toConsumableArray(getFlatChildren(child.children))); } else if (isVNode(child) && [Teleport, Comment].some(function (vNode) { return vNode === child.type; })) {} else { result.push(child); } }); return result; } return getFlatChildren; } var hasOwnProperty = Object.prototype.hasOwnProperty; var hasOwn = function hasOwn(val, key) { return hasOwnProperty.call(val, key); }; var getPropertyValFromObj = function getPropertyValFromObj(val, key) { return hasOwn(val, key) ? val[key] : void 0; }; var objectToString = Object.prototype.toString; var toTypeString = function toTypeString(value) { return objectToString.call(value); }; var isPlainObject = function isPlainObject(val) { return toTypeString(val) === "[object Object]"; }; var isPromise = function isPromise(val) { return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val["catch"]); }; function handleSlots(instance, name, params) { var _instance$slots$camel, _instance$slots, _instance$slots$kebab, _instance$slots2; var node = (_instance$slots$camel = (_instance$slots = instance.slots)[camelCase(name)]) === null || _instance$slots$camel === void 0 ? void 0 : _instance$slots$camel.call(_instance$slots, params); if (node && node.filter(function (t) { return !isCommentVNode(t); }).length) return node; node = (_instance$slots$kebab = (_instance$slots2 = instance.slots)[kebabCase(name)]) === null || _instance$slots$kebab === void 0 ? void 0 : _instance$slots$kebab.call(_instance$slots2, params); if (node && node.filter(function (t) { return !isCommentVNode(t); }).length) return node; return null; } function isEmptyNode(node) { if ([void 0, null, ""].includes(node)) return true; var innerNodes = node instanceof Array ? node : [node]; var r = innerNodes.filter(function (node2) { var _node2$type; return (node2 === null || node2 === void 0 || (_node2$type = node2.type) === null || _node2$type === void 0 ? void 0 : _node2$type.toString()) !== "Symbol(Comment)"; }); return !r.length; } function isPropExplicitlySet(instance, propName) { var vProps = (instance === null || instance === void 0 ? void 0 : instance.vnode.props) || {}; return hasOwn(vProps, camelCase(propName)) || hasOwn(vProps, kebabCase(propName)); } var useTNodeJSX = function useTNodeJSX() { var instance = getCurrentInstance(); return function (name, options) { var renderParams = getParams(options); var defaultNode = getDefaultNode(options); var isSlotFirst = getSlotFirst(options); var renderSlot = instance.slots[camelCase(name)] || instance.slots[kebabCase(name)]; if (isSlotFirst && renderSlot) { return handleSlots(instance, name, renderParams); } else { if (isPropExplicitlySet(instance, name)) { var _instance$type$props$; var propsNode2 = instance.props[camelCase(name)] || instance.props[kebabCase(name)]; var types = (_instance$type$props$ = instance.type.props[name]) === null || _instance$type$props$ === void 0 ? void 0 : _instance$type$props$.type; if ((types === null || types === void 0 ? void 0 : types.length) > 1) { if (types.includes(Boolean) && types.includes(Function)) { if (propsNode2 === "" && !renderSlot) return defaultNode; } } if (propsNode2 === false || propsNode2 === null) return; if (propsNode2 === true) { return handleSlots(instance, name, renderParams) || defaultNode; } if (isFunction(propsNode2)) return propsNode2(h, renderParams); var isPropsEmpty = [void 0, ""].includes(propsNode2); if (isPropsEmpty && renderSlot) { return handleSlots(instance, name, renderParams); } return propsNode2; } if (renderSlot) { return handleSlots(instance, name, renderParams); } var propsNode = instance.props[camelCase(name)] || instance.props[kebabCase(name)]; if (propsNode === false || propsNode === null) return; if (propsNode === true) { return defaultNode; } if (isFunction(propsNode)) return propsNode(h, renderParams); return propsNode; } }; }; var useTNodeDefault = function useTNodeDefault() { var renderTNodeJSX = useTNodeJSX(); return function (name, options) { var defaultNode = getDefaultNode(options); return renderTNodeJSX(name, options) || defaultNode; }; }; var useContent = function useContent() { var renderTNodeJSX = useTNodeJSX(); return function (name1, name2, options) { var params = getParams(options); var defaultNode = getDefaultNode(options); var toParams = params ? { params: params } : void 0; var node1 = renderTNodeJSX(name1, toParams); var node2 = renderTNodeJSX(name2, toParams); var res = isEmptyNode(node1) ? node2 : node1; return isEmptyNode(res) ? defaultNode : res; }; }; var filterCommentNode = function filterCommentNode(nodes) { return nodes.filter(function (node) { return !isCommentVNode(node); }); }; function useCollapseAnimation() { var beforeEnter = function beforeEnter(el) { el.dataset.oldPaddingTop = el.style.paddingTop; el.dataset.oldPaddingBottom = el.style.paddingBottom; el.style.height = "0"; el.style.paddingTop = "0"; el.style.paddingBottom = "0"; }; var enter = function enter(el) { el.dataset.oldOverflow = el.style.overflow; el.style.height = "".concat(el.scrollHeight, "px"); el.style.paddingTop = el.dataset.oldPaddingTop; el.style.paddingBottom = el.dataset.oldPaddingBottom; el.style.overflow = "hidden"; }; var afterEnter = function afterEnter(el) { el.style.height = ""; el.style.overflow = el.dataset.oldOverflow; }; var beforeLeave = function beforeLeave(el) { el.dataset.oldPaddingTop = el.style.paddingTop; el.dataset.oldPaddingBottom = el.style.paddingBottom; el.dataset.oldOverflow = el.style.overflow; el.style.height = "".concat(el.scrollHeight, "px"); el.style.overflow = "hidden"; }; var leave = function leave(el) { if (el.scrollHeight !== 0) { el.style.height = "0"; el.style.paddingTop = "0"; el.style.paddingBottom = "0"; } }; var afterLeave = function afterLeave(el) { el.style.height = ""; el.style.overflow = el.dataset.oldOverflow; el.style.paddingTop = el.dataset.oldPaddingTop; el.style.paddingBottom = el.dataset.oldPaddingBottom; }; return { beforeEnter: beforeEnter, enter: enter, afterEnter: afterEnter, beforeLeave: beforeLeave, leave: leave, afterLeave: afterLeave }; } function usePrefixClass(componentName) { var _useConfig = useConfig("classPrefix"), classPrefix = _useConfig.classPrefix; return computed(function () { return componentName ? "".concat(classPrefix.value, "-").concat(componentName) : classPrefix.value; }); } function useCommonClassName() { var _useConfig = useConfig("classPrefix"), classPrefix = _useConfig.classPrefix; return { classPrefix: classPrefix, SIZE: computed(function () { return { small: "".concat(classPrefix.value, "-size-s"), medium: "".concat(classPrefix.value, "-size-m"), large: "".concat(classPrefix.value, "-size-l"), "default": "", xs: "".concat(classPrefix.value, "-size-xs"), xl: "".concat(classPrefix.value, "-size-xl"), block: "".concat(classPrefix.value, "-size-full-width") }; }), STATUS: computed(function () { return { loading: "".concat(classPrefix.value, "-is-loading"), loadMore: "".concat(classPrefix.value, "-is-load-more"), disabled: "".concat(classPrefix.value, "-is-disabled"), focused: "".concat(classPrefix.value, "-is-focused"), success: "".concat(classPrefix.value, "-is-success"), error: "".concat(classPrefix.value, "-is-error"), warning: "".concat(classPrefix.value, "-is-warning"), selected: "".concat(classPrefix.value, "-is-selected"), active: "".concat(classPrefix.value, "-is-active"), checked: "".concat(classPrefix.value, "-is-checked"), current: "".concat(classPrefix.value, "-is-current"), hidden: "".concat(classPrefix.value, "-is-hidden"), visible: "".concat(classPrefix.value, "-is-visible"), expanded: "".concat(classPrefix.value, "-is-expanded"), indeterminate: "".concat(classPrefix.value, "-is-indeterminate") }; }) }; } function useDefaultValue(value, defaultValue, onChange, propsName) { var _getCurrentInstance = getCurrentInstance(), emit = _getCurrentInstance.emit, vnode = _getCurrentInstance.vnode; var internalValue = ref(); var vProps = vnode.props || {}; var isVMP = Object.prototype.hasOwnProperty.call(vProps, propsName) || Object.prototype.hasOwnProperty.call(vProps, kebabCase(propsName)); if (isVMP) { return [value, function (newValue) { emit("update:".concat(propsName), newValue); for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } onChange === null || onChange === void 0 || onChange.apply(void 0, [newValue].concat(args)); }]; } internalValue.value = defaultValue; return [internalValue, function (newValue) { internalValue.value = newValue; for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { args[_key2 - 1] = arguments[_key2]; } onChange === null || onChange === void 0 || onChange.apply(void 0, [newValue].concat(args)); }]; } var TDisplayNoneElementRefresh = "t-display-none-element-refresh"; function useDestroyOnClose() { var refresh = ref(0); provide(TDisplayNoneElementRefresh, refresh); onUpdated(function () { refresh.value += 1; }); } function useDisabled(context) { var currentInstance = getCurrentInstance(); var componentDisabled = computed(function () { return currentInstance.props.disabled; }); var formDisabled = inject("formDisabled", /* @__PURE__ */Object.create(null)); return computed(function () { var _context$beforeDisabl, _context$afterDisable, _formDisabled$disable; if (isBoolean(context === null || context === void 0 || (_context$beforeDisabl = context.beforeDisabled) === null || _context$beforeDisabl === void 0 ? void 0 : _context$beforeDisabl.value)) return context.beforeDisabled.value; if (isBoolean(componentDisabled.value)) return componentDisabled.value; if (isBoolean(context === null || context === void 0 || (_context$afterDisable = context.afterDisabled) === null || _context$afterDisable === void 0 ? void 0 : _context$afterDisable.value)) return context.afterDisabled.value; if (isBoolean((_formDisabled$disable = formDisabled.disabled) === null || _formDisabled$disable === void 0 ? void 0 : _formDisabled$disable.value)) return formDisabled.disabled.value; return false; }); } function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; } function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } var traversalTabNavs = function traversalTabNavs(tabNavs, fn) { var _iterator = _createForOfIteratorHelper(tabNavs), _step; try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var itemNode = _step.value; if (itemNode.getAttribute("draggable")) { fn(itemNode); } } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } }; var handleTarget = function handleTarget(target, tabNavs) { var resultTarget; traversalTabNavs(tabNavs, function (itemNode) { if (itemNode.contains(target)) { resultTarget = itemNode; } }); return resultTarget; }; function useDragSort(props) { var navsWrap = null; var dragged; var enterTargets = []; var dragstart = function dragstart(event) { var target = event.target; dragged = target; target.style.opacity = "0.5"; }; var dragend = function dragend(event) { event.target.style.opacity = ""; }; var dragover = function dragover(event) { event.preventDefault(); }; var dragenter = function dragenter(event) { var target = handleTarget(event.target, navsWrap.children); if (target && target !== dragged && target.draggable) { target.firstChild.style.outline = "1px dashed #0052d9"; if (!enterTargets.includes(target)) { enterTargets.push(target); } } }; var dragleave = function dragleave(event) { var target = event.target; for (var _i = 0, _enterTargets = enterTargets; _i < _enterTargets.length; _i++) { var enterTarget = _enterTargets[_i]; if (!enterTarget.contains(target)) { enterTarget.firstChild.style.outline = "none"; } } }; var drop = function drop(event) { event.preventDefault(); traversalTabNavs(navsWrap.children, function (tabNav) { tabNav.firstChild.style.outline = "none"; }); var target = handleTarget(event.target, navsWrap.children); if (target && target.parentNode !== dragged && target.draggable) { var _props$onDragSort; var dragIndex = [].indexOf.call(navsWrap.children, dragged); var targetIndex = [].indexOf.call(navsWrap.children, target); if (targetIndex > dragIndex) { target = navsWrap.children[targetIndex + 1]; } var currentIndex = props.theme === "card" ? dragIndex : dragIndex - 1; var endIndex = props.theme === "card" ? targetIndex : targetIndex - 1; (_props$onDragSort = props.onDragSort) === null || _props$onDragSort === void 0 || _props$onDragSort.call(props, { currentIndex: currentIndex, current: props.panels[currentIndex].value, targetIndex: endIndex, target: props.panels[endIndex].value }); } }; function setNavsWrap(val) { navsWrap = val; navsWrap.addEventListener("dragstart", dragstart, false); navsWrap.addEventListener("dragend", dragend, false); navsWrap.addEventListener("dragover", dragover, false); navsWrap.addEventListener("dragenter", dragenter, false); document.addEventListener("dragleave", dragleave, false); document.addEventListener("mousemove", dragleave, false); navsWrap.addEventListener("drop", drop, false); } onUnmounted(function () { if (navsWrap) { navsWrap.removeEventListener("dragstart", dragstart); navsWrap.removeEventListener("dragend", dragend); navsWrap.removeEventListener("dragover", dragover); navsWrap.removeEventListener("dragenter", dragenter); document.removeEventListener("dragleave", dragleave); document.removeEventListener("mousemove", dragleave); navsWrap.removeEventListener("drop", drop); } }); return { setNavsWrap: setNavsWrap }; } function useElementLazyRender(labelRef, lazyLoad) { var ioObserver = ref(); var showElement = ref(true); var handleLazyLoad = function handleLazyLoad() { if (!lazyLoad.value || !labelRef.value || ioObserver.value) return; showElement.value = false; var io = observe(labelRef.value, null, function () { showElement.value = true; }, 10); ioObserver.value = io; }; onMounted(handleLazyLoad); lazyLoad.value && watch([lazyLoad, labelRef], handleLazyLoad); onBeforeUnmount(function () { var _ioObserver$value, _ioObserver$value$uno; if (!lazyLoad.value) return; (_ioObserver$value = ioObserver.value) === null || _ioObserver$value === void 0 || (_ioObserver$value$uno = _ioObserver$value.unobserve) === null || _ioObserver$value$uno === void 0 || _ioObserver$value$uno.call(_ioObserver$value, labelRef.value); }); return { showElement: showElement }; } function useGlobalIcon(tdIcon) { var _useConfig = useConfig("icon"), globalConfig = _useConfig.globalConfig; var resultIcon = {}; Object.keys(tdIcon).forEach(function (key) { var _globalConfig$value; resultIcon[key] = ((_globalConfig$value = globalConfig.value) === null || _globalConfig$value === void 0 ? void 0 : _globalConfig$value[key]) || tdIcon[key]; }); return resultIcon; } function useImagePreviewUrl(imgUrl) { var previewUrl = ref(""); watch([imgUrl], function (_ref, _ref2) { var _ref3 = _slicedToArray(_ref, 1), imgUrl2 = _ref3[0]; var _ref4 = _slicedToArray(_ref2, 1), preImgUrl = _ref4[0]; if (preImgUrl === imgUrl2) return; if (typeof imgUrl2 === "string") { previewUrl.value = imgUrl2; return; } getFileUrlByFileRaw(imgUrl2).then(function (url) { previewUrl.value = url; }); }, { immediate: true }); return { previewUrl: previewUrl }; } var expand = EAnimationType.expand, ripple = EAnimationType.ripple, fade = EAnimationType.fade; function useKeepAnimation() { var _useConfig = useConfig("animation"), globalConfig = _useConfig.globalConfig; var keepAnimation = function keepAnimation(type) { var _animationConfig$excl, _animationConfig$incl; var animationConfig = globalConfig.value; return animationConfig && !((_animationConfig$excl = animationConfig.exclude) !== null && _animationConfig$excl !== void 0 && _animationConfig$excl.includes(type)) && ((_animationConfig$incl = animationConfig.include) === null || _animationConfig$incl === void 0 ? void 0 : _animationConfig$incl.includes(type)); }; return { keepExpand: keepAnimation(expand), keepRipple: keepAnimation(ripple), keepFade: keepAnimation(fade) }; } function useLazyLoad(containerRef, childRef, params) { var tRowHeight = computed(function () { return Math.max(params.rowHeight || 48, 48); }); var isInit = ref(false); var hasLazyLoadHolder = computed(function () { return (params === null || params === void 0 ? void 0 : params.type) === "lazy" && !isInit.value; }); var requestAnimationFrame = !isServer && window.requestAnimationFrame || function (cb) { return setTimeout(cb, 16.6); }; var init = function init() { if (!isInit.value) { requestAnimationFrame(function () { isInit.value = true; }); } }; onMounted(function () { if ((params === null || params === void 0 ? void 0 : params.type) !== "lazy") return; nextTick(function () { var bufferSize = Math.max(10, params.bufferSize || 10); var height = tRowHeight.value * bufferSize; observe(childRef.value, containerRef.value, init, height); }); }); return { hasLazyLoadHolder: hasLazyLoadHolder, tRowHeight: tRowHeight }; } function useListener(type, listener) { onMounted(function () { window.addEventListener(type, listener); }); onBeforeUnmount(function () { window.removeEventListener(type, listener); }); } function useResize(listener, observer) { useListener("resize", listener); var resizeObserver = null; onMounted(function () { if (!window.ResizeObserver || !observer) return; resizeObserver = new window.ResizeObserver(listener); resizeObserver.observe(observer); }); onBeforeUnmount(function () { var _resizeObserver; (_resizeObserver = resizeObserver) === null || _resizeObserver === void 0 || _resizeObserver.disconnect(); }); } var popupStackType = ["dialog", "drawer"]; var POPUP_BASE_Z_INDEX = 1e3; var MESSAGE_BASE_Z_INDEX = 5e3; var Z_INDEX_STEP = 1; var PopupManager = /*#__PURE__*/_createClass(function PopupManager() { var _this = this; _classCallCheck(this, PopupManager); _defineProperty(this, "popupStack", { popup: /* @__PURE__ */new Set(), dialog: /* @__PURE__ */new Set(), message: /* @__PURE__ */new Set(), drawer: /* @__PURE__ */new Set() }); _defineProperty(this, "zIndexStack", []); _defineProperty(this, "getNextZIndex", function (type) { var current = type === "message" ? Array.from(_this.popupStack.message).pop() || MESSAGE_BASE_Z_INDEX : Array.from(_this.popupStack.popup).pop() || POPUP_BASE_Z_INDEX; return current + Z_INDEX_STEP; }); _defineProperty(this, "add", function (type) { var zIndex = _this.getNextZIndex(type); _this.popupStack[type].add(zIndex); if (popupStackType.includes(type)) { _this.popupStack.popup.add(zIndex); } _this.zIndexStack.push(zIndex); return zIndex; }); _defineProperty(this, "delete", function (zIndex, type) { _this.popupStack[type]["delete"](zIndex); if (popupStackType.includes(type)) { _this.popupStack.popup["delete"](zIndex); } var index = _this.zIndexStack.indexOf(zIndex); if (index !== -1) { _this.zIndexStack.splice(index, 1); } }); _defineProperty(this, "isTopInteractivePopup", function (popupType, zIndex) { var _this$popupStack$popu; if (popupStackType.includes(popupType)) { var lastZIndex = _this.zIndexStack[_this.zIndexStack.length - 1]; return zIndex === lastZIndex; } if (((_this$popupStack$popu = _this.popupStack[popupType]) === null || _this$popupStack$popu === void 0 ? void 0 : _this$popupStack$popu.size) > 1) { return zIndex === Array.from(_this.popupStack[popupType]).pop(); } return true; }); _defineProperty(this, "getLastZIndex", function () { return _this.zIndexStack[_this.zIndexStack.length - 1]; }); }); var popupManager = new PopupManager(); function usePopupManager(type) { var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, visible = _ref.visible, runOnMounted = _ref.runOnMounted; var zIndex = ref(0); var open = function open() { zIndex.value = popupManager.add(type); }; var close = function close() { popupManager["delete"](zIndex.value, type); }; var isTopInteractivePopup = function isTopInteractivePopup() { if (popupStackType.includes(type)) { return popupManager.isTopInteractivePopup(type, zIndex.value); } return false; }; watch(function () { return visible === null || visible === void 0 ? void 0 : visible.value; }, function (visible2) { if (visible2) { open(); } else { close(); } }, { immediate: true }); if (runOnMounted) { onMounted(function () { open(); }); onBeforeUnmount(function () { close(); }); } return { zIndex: readonly(zIndex), open: open, close: close, isTopInteractivePopup: isTopInteractivePopup }; } function useReadonly(context) { var currentInstance = getCurrentInstance(); var componentReadonly = computed(function () { return currentInstance.props.readonly; }); var formReadonly = inject("formReadonly", /* @__PURE__ */Object.create(null)); return computed(function () { var _context$beforeReadon, _context$afterReadonl, _formReadonly$readonl; if (isBoolean(context === null || context === void 0 || (_context$beforeReadon = context.beforeReadonly) === null || _context$beforeReadon === void 0 ? void 0 : _context$beforeReadon.value)) return context.beforeReadonly.value; if (isBoolean(componentReadonly === null || componentReadonly === void 0 ? void 0 : componentReadonly.value)) return componentReadonly.value; if (isBoolean(context === null || context === void 0 || (_context$afterReadonl = context.afterReadonly) === null || _context$afterReadonl === void 0 ? void 0 : _context$afterReadonl.value)) return context.afterReadonly.value; if (isBoolean((_formReadonly$readonl = formReadonly.readonly) === null || _formReadonly$readonl === void 0 ? void 0 : _formReadonly$readonl.value)) return formReadonly.readonly.value; return false; }); } function useResizeObserver(container, callback) { if (typeof window === "undefined") return; var isSupport = window && window.ResizeObserver; if (!isSupport) return; var containerObserver = null; var cleanupObserver = function cleanupObserver() { if (!containerObserver || !container.value) return; containerObserver.unobserve(container.value); containerObserver.disconnect(); containerObserver = null; }; var addObserver = function addObserver(el) { containerObserver = new ResizeObserver(callback); containerObserver.observe(el); }; container && watch(container, function (el) { cleanupObserver(); el && addObserver(el); }, { immediate: true, flush: "post" }); onBeforeUnmount(function () { cleanupObserver(); }); } function setStyle(el, styles) { var keys = Object.keys(styles); keys.forEach(function (key) { el.style[key] = styles[key]; }); } var period = 200; var noneRippleBg = "rgba(0, 0, 0, 0)"; var defaultRippleColor = "rgba(0, 0, 0, 0.35)"; var getRippleColor = function getRippleColor(el, fixedRippleColor) { var _el$dataset; if (fixedRippleColor) { return fixedRippleColor; } if (el !== null && el !== void 0 && (_el$dataset = el.dataset) !== null && _el$dataset !== void 0 && _el$dataset.ripple) { var rippleColor = el.dataset.ripple; return rippleColor; } var cssVariable = getComputedStyle(el).getPropertyValue("--ripple-color"); if (cssVariable) { return cssVariable; } return defaultRippleColor; }; function useRipple(el, fixedRippleColor) { var rippleContainer = ref(null); var classPrefix = usePrefixClass(); var _useKeepAnimation = useKeepAnimation(), keepRipple = _useKeepAnimation.keepRipple; var handleAddRipple = function handleAddRipple(e) { var dom = el.value; var rippleColor = getRippleColor(dom, fixedRippleColor === null || fixedRippleColor === void 0 ? void 0 : fixedRippleColor.value); if (e.button !== 0 || !el || !keepRipple) return; if (dom.classList.contains("".concat(classPrefix.value, "-is-active")) || dom.classList.contains("".concat(classPrefix.value, "-is-disabled")) || dom.classList.contains("".concat(classPrefix.value, "-is-checked")) || dom.classList.contains("".concat(classPrefix.value, "-is-loading"))) return; var elStyle = getComputedStyle(dom); var elBorder = parseInt(elStyle.borderWidth, 10); var border = elBorder > 0 ? elBorder : 0; var width = dom.offsetWidth; var height = dom.offsetHeight; if (rippleContainer.value.parentNode === null) { setStyle(rippleContainer.value, { position: "absolute", left: "".concat(0 - border, "px"), top: "".concat(0 - border, "px"), width: "".concat(width, "px"), height: "".concat(height, "px"), borderRadius: elStyle.borderRadius, pointerEvents: "none", overflow: "hidden" }); dom.appendChild(rippleContainer.value); } var ripple = document.createElement("div"); setStyle(ripple, { marginTop: "0", marginLeft: "0", right: "".concat(width, "px"), width: "".concat(width + 20, "px"), height: "100%", transition: "transform ".concat(period, "ms cubic-bezier(.38, 0, .24, 1), background ").concat(period * 2, "ms linear"), transform: "skewX(-8deg)", pointerEvents: "none", position: "absolute", zIndex: 0, backgroundColor: rippleColor, opacity: "0.9" }); var elMap = /* @__PURE__ */new WeakMap(); for (var n = dom.children.length, i = 0; i < n; ++i) { var child = dom.children[i]; if (child.style.zIndex === "" && child !== rippleContainer.value) { child.style.zIndex = "1"; elMap.set(child, true); } } var initPosition = dom.style.position ? dom.style.position : getComputedStyle(dom).position; if (initPosition === "" || initPosition === "static") { dom.style.position = "relative"; } rippleContainer.value.insertBefore(ripple, rippleContainer.value.firstChild); setTimeout(function () { ripple.style.transform = "translateX(".concat(width, "px)"); }, 0); var _handleClearRipple = function handleClearRipple() { ripple.style.backgroundColor = noneRippleBg; if (!el.value) return; el.value.removeEventListener("pointerup", _handleClearRipple, false); el.value.removeEventListener("pointerleave", _handleClearRipple, false); setTimeout(function () { ripple.remove(); if (rippleContainer.value.children.length === 0) rippleContainer.value.remove(); }, period * 2 + 100); }; el.value.addEventListener("pointerup", _handleClearRipple, false); el.value.addEventListener("pointerleave", _handleClearRipple, false); }; onMounted(function () { var dom = el === null || el === void 0 ? void 0 : el.value; if (!dom) return; rippleContainer.value = document.createElement("div"); dom.addEventListener("pointerdown", handleAddRipple, false); }); onUnmounted(function () { var _el$value; el === null || el === void 0 || (_el$value = el.value) === null || _el$value === void 0 || _el$value.removeEventListener("pointerdown", handleAddRipple, false); }); } function useTeleport(attach, triggerNode) { var to = isFunction(attach) ? computed(attach) : ref(attach); var innerTriggerNode = isFunction(triggerNode) ? computed(triggerNode) : ref(triggerNode); var element = ref(); var getElement = function getElement() { element.value = getAttach(to.value, innerTriggerNode.value); }; onMounted(function () { return getElement(); }); watch([to, innerTriggerNode], function () { return getElement(); }); return element; } function useVModel(value, modelValue, defaultValue, onChange) { var propName = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : "value"; var _getCurrentInstance = getCurrentInstance(), emit = _getCurrentInstance.emit, vnode = _getCurrentInstance.vnode; var internalValue = ref(); var vProps = vnode.props || {}; var isVM = Object.prototype.hasOwnProperty.call(vProps, "modelValue") || Object.prototype.hasOwnProperty.call(vProps, "model-value"); var isVMP = Object.prototype.hasOwnProperty.call(vProps, propName) || Object.prototype.hasOwnProperty.call(vProps, kebabCase(propName)); if (isVM) { return [modelValue, function (newValue) { emit("update:modelValue", newValue); for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } onChange === null || onChange === void 0 || onChange.apply(void 0, [newValue].concat(args)); }]; } if (isVMP) { return [value, function (newValue) { emit("update:".concat(propName), newValue); for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { args[_key2 - 1] = arguments[_key2]; } onChange === null || onChange === void 0 || onChange.apply(void 0, [newValue].concat(args)); }]; } internalValue.value = defaultValue; return [internalValue, function (newValue) { internalValue.value = newValue; for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { args[_key3 - 1] = arguments[_key3]; } onChange === null || onChange === void 0 || onChange.apply(void 0, [newValue].concat(args)); }]; } function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function useVirtualScroll(_ref) { var data = _ref.data, container = _ref.container, _ref$fixedHeight = _ref.fixedHeight, fixedHeight = _ref$fixedHeight === void 0 ? false : _ref$fixedHeight, _ref$lineHeight = _ref.lineHeight, lineHeight = _ref$lineHeight === void 0 ? 30 : _ref$lineHeight, _ref$bufferSize = _ref.bufferSize, bufferSize = _ref$bufferSize === void 0 ? 20 : _ref$bufferSize, _ref$threshold = _ref.threshold, threshold = _ref$threshold === void 0 ? 100 : _ref$threshold; var state = reactive({ visibleData: [], cachedHeight: [], cachedScrollY: [] }); var isVirtual = computed(function () { return data.value.length > threshold; }); var updateId = ref(0); var trs = /* @__PURE__ */new Map(); var visibleCount = 0; var beforeScrollTop = 0; var index = 0; var offset = 0; var start = 0; var last = 0; var reset = function reset() { data.value.forEach(function (item, i) { item.$index = i; if (fixedHeight) { state.cachedScrollY[i] = i * lineHeight; } }); if (!fixedHeight) { state.cachedScrollY[data.value.length - 1] = void 0; } }; reset(); var scrollHeight = computed(function () { var cachedHeight = state.cachedHeight; var length = cachedHeight.length; if (length) { var maxScrollY = cachedHeight.reduce(function (sum, v) { return sum + v || lineHeight; }, 0); if (cachedHeight.length === data.value.length) { return maxScrollY; } var average = maxScrollY / cachedHeight.length; return maxScrollY + (data.value.length - cachedHeight.length) * average; } return isVirtual.value ? data.value.length * lineHeight : 0; }); var translateY = computed(function () { var visibleData = state.visibleData; var firstRow = visibleData[0]; if (firstRow) { return visibleData.length === 1 ? 0 : state.cachedScrollY[firstRow.$index]; } return 0; }); var updateVisibleData = function updateVisibleData() { last = Math.min(start + visibleCount + bufferSize * 2, data.value.length); state.visibleData = data.value.slice(start, last); }; var calculateScrollY = function calculateScrollY() { var _anchorDom$getBoundin; var anchorDom = trs.get(index); if (!anchorDom) { return; } var anchorDomHeight = anchorDom === null || anchorDom === void 0 || (_anchorDom$getBoundin = anchorDom.getBoundingClientRect()) === null || _anchorDom$getBoundin === void 0 ? void 0 : _anchorDom$getBoundin.height; state.cachedScrollY[index] = container.value.scrollTop - offset; state.cachedHeight[index] = anchorDomHeight; for (var i = index + 1; i <= ((_state$visibleData = state.visibleData[state.visibleData.length - 1]) === null || _state$visibleData === void 0 ? void 0 : _state$visibleData.$index); i++) { var _state$visibleData; var tr = trs.get(i); var _ref2 = (tr === null || tr === void 0 ? void 0 : tr.getBoundingClientRect()) || {}, height = _ref2.height; state.cachedHeight[i] = height; var scrollY = state.cachedScrollY[i - 1] + state.cachedHeight[i - 1]; state.cachedScrollY.splice(i, 1, scrollY); } for (var _i = index - 1; _i >= ((_state$visibleData$ = state.visibleData[0]) === null || _state$visibleData$ === void 0 ? void 0 : _state$visibleData$.$index); _i--) { var _state$visibleData$; var _tr = trs.get(_i); var _ref3 = (_tr === null || _tr === void 0 ? void 0 : _tr.getBoundingClientRect()) || {}, _height = _ref3.height; state.cachedHeight[_i] = _height; var _scrollY = state.cachedScrollY[_i + 1] - state.cachedHeight[_i]; state.cachedScrollY.splice(_i, 1, _scrollY); } if (state.cachedScrollY[0] > 0) { var distance = state.cachedScrollY[0]; var length = Math.min(last, data.value.length); for (var _i2 = 0; _i2 < length; _i2++) { state.cachedScrollY.splice(_i2, 1, state.cachedScrollY[_i2] - distance); } var scrollTop = state.cachedScrollY[index - 1] ? state.cachedScrollY[index - 1] + offset : offset; container.value.scrollTop = scrollTop; beforeScrollTop = scrollTop; } if (state.cachedScrollY[start] < 0) { var s = state.cachedHeight.slice(0, Math.max(0, index)).reduce(function (sum, v) { return sum + v; }, 0) + offset; container.value.scrollTop = s; beforeScrollTop = s; if (s === 0) { index = 0; offset = 0; } } nextTick(function () { var _container$value = container.value, scrollTop = _container$value.scrollTop, scrollHeight2 = _container$value.scrollHeight, clientHeight = _container$value.clientHeight; if (scrollTop + clientHeight === scrollHeight2) { for (var _i3 = last - 1; _i3 >= start; _i3--) { if (_i3 === last - 1) { state.cachedScrollY.splice(_i3, 1, scrollHeight2.value - state.cachedHeight[_i3]); } else { state.cachedScrollY.splice(_i3, 1, state.cachedScrollY[_i3 + 1] - state.cachedHeight[_i3]); } } } }); }; var handleScroll = function handleScroll() { if (!isVirtual.value) return; var scrollTop = container.value.scrollTop; var distance = scrollTop - beforeScrollTop; beforeScrollTop = scrollTop; distance += offset; var lastIndex = index; if (!distance) return; if (distance >= 0) { while (lastIndex < data.value.length && distance > (state.cachedHeight[lastIndex] || lineHeight)) { if (!state.cachedHeight[lastIndex]) { state.cachedHeight[lastIndex] = lineHeight; } distance -= state.cachedHeight[lastIndex]; lastIndex++; } if (lastIndex >= data.value.length) { index = data.value.length - 1; offset = 0; } else { index = lastIndex; offset = distance; } var _container$value2 = container.value, clientHeight = _container$value2.clientHeight, scrollHeight2 = _container$value2.scrollHeight; if (scrollTop + clientHeight === scrollHeight2) { index = data.value.length - visibleCount + 1; } if (start <= index - bufferSize) { start = Math.min(data.value.length - visibleCount, index - bufferSize); if (start < 0) { start = 0; } } } else { while (distance < 0) { lastIndex--; if (!state.cachedHeight[lastIndex]) { state.cachedHeight[lastIndex] = lineHeight; } distance += state.cachedHeight[lastIndex]; } if (lastIndex < 0) { index = 0; offset = 0; } else { index = lastIndex; offset = distance; } calculateScrollY(); if (start > index - bufferSize) { start = Math.max(0, index - bufferSize); } } updateVisibleData(); }; !fixedHeight && watch(updateId, calculateScrollY, { flush: "post" }); var handleRowMounted = function handleRowMounted() { if (!isVirtual.value) return; updateId.value++; }; watch(data, function () { reset(); state.visibleData = []; state.cachedScrollY = []; state.cachedHeight = []; beforeScrollTop = 0; index = 0; offset = 0; start = 0; trs.clear(); if (data.value.length <= threshold) { state.visibleData = data.value; } else { updateVisibleData(); } container.value && (container.value.scrollTop = 0); }); var mounted = false; var refreshContainer = function refreshContainer() { if (mounted) { visibleCount = Math.ceil(container.value.offsetHeight / lineHeight); updateVisibleData(); } }; onMounted(function () { if (!window || !window.IntersectionObserver) { return; } var ob = new window.IntersectionObserver(function (entries) { var entry = entries[0]; if (entry.isIntersecting || entry.intersectionRatio) { mounted = true; isVirtual.value && refreshContainer(); ob.unobserve(container.value); } }); container.value && ob.observe(container.value); }); return _objectSpread$1(_objectSpread$1({ trs: trs, scrollHeight: scrollHeight }, toRefs(state)), {}, { translateY: translateY, handleScroll: handleScroll, handleRowMounted: handleRowMounted, refreshContainer: refreshContainer, fixedHeight: fixedHeight, calculateScrollY: calculateScrollY }); } function useVirtualScrollNew(container, params) { var _params$value$data, _params$value$scroll; var visibleData = ref([]); var translateY = ref((((_params$value$data = params.value.data) === null || _params$value$data === void 0 ? void 0 : _params$value$data.length) || 0) * (((_params$value$scroll = params.value.scroll) === null || _params$value$scroll === void 0 ? void 0 : _params$value$scroll.rowHeight) || 50)); var scrollHeight = ref(0); var trHeightList = []; var containerHeight = ref(0); var containerWidth = ref(0); var startAndEndIndex = ref([0, 15]); var tScroll = computed(function () { var _scroll$isFixedRowHei, _scroll$fixedRows; var scroll = params.value.scroll; if (!scroll) return {}; return { bufferSize: scroll.bufferSize || 10, isFixedRowHeight: (_scroll$isFixedRowHei = scroll.isFixedRowHeight) !== null && _scroll$isFixedRowHei !== void 0 ? _scroll$isFixedRowHei : false, rowHeight: scroll.rowHeight || 47, threshold: scroll.threshold || 100, type: scroll.type, fixedRows: (_scroll$fixedRows = scroll.fixedRows) !== null && _scroll$fixedRows !== void 0 ? _scroll$fixedRows : [0, 0] }; }); var isVirtualScroll = computed(function () { var data = params.value.data; return tScroll.value.type === "virtual" && tScroll.value.threshold < data.length; }); function getVisibleRangeConfig() { var _container$value$scro, _container$value; var scrollTop = (_container$value$scro = (_container$value = container.value) === null || _container$value === void 0 ? void 0 : _container$value.scrollTop) !== null && _container$value$scro !== void 0 ? _container$value$scro : 0; var fixedStart = tScroll.value.fixedRows[0]; var prevBufferHeightList = []; var hiddenHeight = 0; var visibleStart = -1; var visibleEnd = -1; var totalHeight = 0; for (var i = 0, len = params.value.data.length; i < len; i++) { var _trHeightList$i; var rowHeight = (_trHeightList$i = trHeightList[i]) !== null && _trHeightList$i !== void 0 ? _trHeightList$i : tScroll.value.rowHeight; totalHeight = totalHeight + rowHeight; if (totalHeight > scrollTop && visibleStart === -1) { visibleStart = i; if (visibleStart - tScroll.value.bufferSize > 0) { hiddenHeight = totalHeight - rowHeight - sum(prevBufferHeightList); } } if (visibleStart === -1) { prevBufferHeightList.push(rowHeight); if (prevBufferHeightList.length > tScroll.value.bufferSize) { prevBufferHeightList.shift(); } } if (visibleEnd === -1 && (totalHeight > containerHeight.value + scrollTop || i === params.value.data.length - 1)) { visibleEnd = i; } if (visibleStart !== -1 && visibleEnd !== -1) { break; } } var startIndex = max([visibleStart - tScroll.value.bufferSize, 0]); var endIndex = min([visibleEnd + tScroll.value.bufferSize, params.value.data.length]); var stickyHeight = sum(trHeightList.slice(0, Math.min(startIndex, fixedStart))); return { startIndex: startIndex, endIndex: endIndex, translateY: hiddenHeight - stickyHeight }; } var updateVisibleData = throttle(function () { var _getVisibleRangeConfi = getVisibleRangeConfig(), startIndex = _getVisibleRangeConfi.startIndex, endIndex = _getVisibleRangeConfi.endIndex, translateYValue = _getVisibleRangeConfi.translateY; var fixedRows = tScroll.value.fixedRows; var _fixedRows = _slicedToArray(fixedRows, 2), fixedStart = _fixedRows[0], fixedEnd = _fixedRows[1]; var fixedStartData = fixedStart ? params.value.data.slice(0, fixedStart) : []; if (fixedStart && startIndex < fixedStart) { fixedStartData = fixedStartData.slice(0, startIndex); } var fixedEndData = fixedEnd ? params.value.data.slice(params.value.data.length - fixedEnd) : []; var bottomStartIndex = endIndex - params.value.data.length + 1 + (fixedEnd !== null && fixedEnd !== void 0 ? fixedEnd : 0); if (fixedEnd && bottomStartIndex > 0) { fixedEndData = fixedEndData.slice(bottomStartIndex); } if (startAndEndIndex.value.join() !== [startIndex, endIndex].join() && startIndex >= 0) { translateY.value = translateYValue; visibleData.value = fixedStartData.concat(params.value.data.slice(startIndex, endIndex), fixedEndData); startAndEndIndex.value = [startIndex, endIndex]; } }, 100); var handleRowMounted = function handleRowMounted(rowData) { var _rowData$ref$value; if (!isVirtualScroll.value || !rowData || tScroll.value.isFixedRowHeight || !container.value) return; var trHeight = ((_rowData$ref$value = rowData.ref.value) === null || _rowData$ref$value === void 0 ? void 0 : _rowData$ref$value.getBoundingClientRect().height) || tScroll.value.rowHeight; var rowIndex = rowData.data.VIRTUAL_SCROLL_INDEX; if (trHeightList[rowIndex] !== trHeight) { var diff = trHeight - trHeightLi