UNPKG

y-design-ssr

Version:

SSR component library of YUI with Vue3

1,734 lines (1,733 loc) 124 kB
import { ref as L, reactive as F, getCurrentInstance as le, provide as _t, isVNode as Se, inject as zt, onUnmounted as we, computed as B, defineComponent as z, createVNode as f, watch as j, onMounted as K, nextTick as ie, onBeforeUnmount as xe, onBeforeUpdate as st, onUpdated as yn, createTextVNode as bn, Fragment as He, createApp as Ce, h as Ve, Transition as We, withDirectives as te, vShow as ye, Teleport as ct, vModelText as Ot, mergeProps as Ie, vModelDynamic as Sn, resolveDirective as gt, watchEffect as wn, unref as pt } from "vue"; const xn = { "pull-refresh": { pulling: "下拉刷新...", loosing: "释放刷新...", loading: "数据加载中...", success: "数据已更新", failed: "数据跟新失败,请稍后再试" }, "form-item": { validateMessage: "请输入正确内容" } }, ht = L("zh-CN"), yt = F({ "zh-CN": xn }), Mt = { text() { return yt[ht.value]; }, use(e, t) { ht.value = e, this.add({ [e]: t }); }, add(e = {}) { Object.assign(yt, e); } }, Pe = (e) => (t) => Object.prototype.toString.call(t) === `[object ${e}]`, Dt = Pe("Function"), Cn = Pe("String"), $n = Pe("Number"), kn = Pe("Object"), Tn = Pe("Promise"), Fe = (e, t) => t ? typeof t == "string" ? ` ${e}--${t}` : Array.isArray(t) ? t.reduce((o, n) => o + Fe(e, n), "") : Object.keys(t).reduce( (o, n) => o + (t[n] ? Fe(e, n) : ""), "" ) : "", En = (e) => (t, o) => { let n = t, a = o; return n && typeof n != "string" && (a = n, n = ""), n = n ? `${e}__${n}` : e, `${n}${Fe(n, a)}`; }, Nn = () => (e, t) => t ? `${Fe(`y-${e}`, t)}` : `y-${e}`, O = (e) => { const t = `y-${e}`; return [t, En(t), Nn()]; }, At = (e) => Mt.text()[e]; var Rt = /* @__PURE__ */ ((e) => (e.Mini = "mini", e.Small = "small", e.Middle = "middle", e.Large = "large", e))(Rt || {}), dt = /* @__PURE__ */ ((e) => (e.Top = "top", e.Middle = "middle", e.Bottom = "bottom", e))(dt || {}), Qe = /* @__PURE__ */ ((e) => (e.Top = "top", e.Right = "right", e.Bottom = "bottom", e.Left = "left", e.Center = "center", e))(Qe || {}), Wt = /* @__PURE__ */ ((e) => (e.simple = "simple", e.multi = "multi", e))(Wt || {}), Ft = /* @__PURE__ */ ((e) => (e.Top = "top", e.TopStart = "top-start", e.TopEnd = "top-end", e.Right = "right", e.RightStart = "right-start", e.RightEnd = "right-end", e.Left = "left", e.LeftStart = "left-start", e.LeftEnd = "left-end", e.Bottom = "bottom", e.BottomStart = "bottom-start", e.BottomEnd = "bottom-end", e))(Ft || {}), Je = /* @__PURE__ */ ((e) => (e.left = "left", e.top = "top", e.bottom = "bottom", e.right = "right", e))(Je || {}), Re = /* @__PURE__ */ ((e) => (e.start = "start", e.center = "center", e.end = "end", e))(Re || {}), Ht = /* @__PURE__ */ ((e) => (e.Start = "start", e.Center = "center", e.End = "end", e.SpaceBetween = "space-between", e.SpaceAround = "space-around", e))(Ht || {}), Y = /* @__PURE__ */ ((e) => (e.DEFUALT = "normal", e.PULLING = "pulling", e.LOOSING = "loosing", e.LOADING = "loading", e.SUCCESS = "success", e.FAILED = "failed", e))(Y || {}), be = /* @__PURE__ */ ((e) => (e.UP = "up", e.DOWN = "down", e))(be || {}); const R = (e) => isNaN(Number(e)) && typeof e == "string" ? e : `${e}px`, bt = (e, t) => typeof e == "string" && e.includes("%") && e.includes("%") ? t * Number(e.replace(/%/g, "")) / 100 : Number(e), Bn = (e) => { switch (e) { case "top": return "column-reverse"; case "bottom": return "column"; case "left": return "row-reverse"; case "right": return "row"; default: return "column"; } }, Ln = (e) => { const t = [], o = (n) => { Array.isArray(n) && n.forEach((a) => { var r; Se(a) && (t.push(a), (r = a.component) != null && r.subTree && o(a.component.subTree.children), a.children && o(a.children)); }); }; return o(e), t; }, Vn = (e, t) => { const o = Ln(t.subTree.children); e.sort((n, a) => o.indexOf(n.vnode) - o.indexOf(a.vnode)); }, fe = (e) => { const t = le(), o = F([]); return { children: o, initProvide: (a) => { _t(e, { addChild: (i) => { i.proxy && (o.push(i), t && Vn(o, t)); }, removeChild: (i) => { const m = o.indexOf(i); o.splice(m, 1); }, children: o, ...a }); } }; }, ce = (e) => { const t = zt(e, null), o = le(); if (t && o) { const { children: n, addChild: a, removeChild: r } = t; return a(o), we(() => r(o)), { index: B(() => n.indexOf(o)), parent: t }; } return { parent: null, index: L(-1) }; }, [In, Pn] = O("swipe-item"), Le = /* @__PURE__ */ z({ name: In, props: { clonenNode: { type: Object, default: null }, index: { type: Number, default: -1 } }, setup(e, { slots: t }) { const o = le(), { parent: n } = ce(Xt); !e.clonenNode && o && (n == null || n.children.push(o)); const a = B(() => e.clonenNode ? e.index : n == null ? void 0 : n.children.findIndex((l) => l.proxy === (o == null ? void 0 : o.proxy))), r = B(() => { const l = `${(n == null ? void 0 : n.itemDetail.size) || 0}px`; let i = "auto"; const m = `${(n == null ? void 0 : n.itemDetail.space) || 0}px`; return n != null && n.props.autoHeight && (n == null ? void 0 : n.activeIndex) !== a.value && (i = "0"), n != null && n.props.vertical ? { height: l, width: i, marginBottom: m } : { width: l, height: i, marginRight: m }; }); return () => { var i, m; const l = ((i = n == null ? void 0 : n.itemShowedList) == null ? void 0 : i.list[a.value || 0]) || !1; return f("div", { class: Pn(), style: r.value }, [l ? e.clonenNode || ((m = t.default) == null ? void 0 : m.call(t)) : null]); }; } }), _n = { autoplayTime: { type: Number, default: 0 }, duration: { type: Number, default: 300 }, initIndex: { type: Number, default: 0 }, loop: { type: Boolean, default: !0 }, dots: { type: Boolean, default: !0 }, dotsPosition: { type: String, default: null }, dotsColor: { type: String, default: "" }, lazy: { type: Boolean, default: !1 }, vertical: { type: Boolean, default: !1 }, autoHeight: { type: Boolean, default: !1 }, itemSize: { type: [Number, String], default: "" }, itemSpace: { type: [Number, String], default: 0 }, minSwipeDistance: { type: [Number, String], default: "50%" }, touchable: { type: Boolean, default: !0 }, isFollowHand: { type: Boolean, default: !0 }, align: { type: String, default: "center" } }, [Yt, Ye] = O("swipe"), Xt = Yt, jt = /* @__PURE__ */ z({ name: Yt, components: { YSwipeItem: Le }, props: _n, setup(e, { slots: t, emit: o, expose: n }) { const { initProvide: a } = fe(Xt), r = F([]), l = L(Number(e.initIndex)), i = F({ // 元素尺寸 size: 0, // 间距 space: 0, // 元素宽度比swipe小,占满整个视窗 isFillViewport: !1 }), m = F({ // 偏移量 offset: 0, // 视窗大小 viewportSize: 0, // 重复节点个数 cloneNodeCount: 0 }), g = L(), x = L(), c = () => { const $ = r.length, _ = []; for (let W = 0; W < $; W++) _.push(!e.lazy); return _; }, h = () => { if (!e.lazy) return; const $ = i.size + i.space, _ = r.length * $; let W = -(m.offset + I.offset) - m.cloneNodeCount * $; W < 0 && (W += _); const q = W + m.viewportSize; for (let X = 0; X < r.length; X++) if (!s.list[X]) { const J = $ * X, re = J + i.size; (J >= W && J < q || re > W && re < q || J < W && re > q) && (s.list[X] = !0); } }, s = F({ list: c() }), w = () => { s.list = c(), h(); }; j(() => [...r], w); const d = ($, _) => { $ ? i.size = bt($, _) : i.size = _, i.space = Number(e.itemSpace) || 0, i.isFillViewport = i.size >= _, m.viewportSize = _, m.cloneNodeCount = p(); }, p = () => { if (v.value) { const $ = i.size + i.space; if ($ === 0) return 0; const _ = m.viewportSize * 2 - $, W = Math.ceil(_ / $); return Math.min(W, r.length - 1); } return 0; }, S = () => { if (!g.value) return; const { width: $, height: _ } = g.value.getBoundingClientRect(); e.vertical ? d(e.itemSize, _) : d(e.itemSize, $), l.value = l.value >= r.length ? r.length - 1 : l.value, l.value < 0 && (l.value = 0), u(l.value), w(), D(); }; K(() => { if (ie(S).catch(() => { }), e.touchable && g.value) { const $ = g.value; $.addEventListener("touchstart", U, !1), $.addEventListener("mousedown", U, !1), $.addEventListener("touchmove", Z, !1), $.addEventListener("mousemove", Z, !1), $.addEventListener("touchend", P, !1), $.addEventListener("mouseup", P, !1), $.addEventListener("mouseleave", P, !1), $.addEventListener("touchcancel", P, !1); } window.addEventListener("resize", S, !1), window.addEventListener("orientationchange", S, !1); }), xe(() => { if (V(), e.touchable && g.value) { const $ = g.value; $.removeEventListener("touchstart", U, !1), $.removeEventListener("mousedown", U, !1), $.removeEventListener("mousemove", Z, !1), $.removeEventListener("touchmove", Z, !1), $.removeEventListener("mouseup", P, !1), $.removeEventListener("touchend", P, !1), $.removeEventListener("mouseleave", P, !1), $.removeEventListener("touchcancel", P, !1); } window.removeEventListener("resize", S, !1), window.removeEventListener("orientationchange", S, !1); }); const k = B(() => { let $ = 0; switch (e.align) { case Re.start: $ = 0; break; case Re.center: $ = (m.viewportSize - i.size) / 2; break; case Re.end: $ = m.viewportSize - i.size; break; default: $ = 0; } return $; }), v = B(() => e.loop && r.length > 1), u = ($) => { const _ = i.size + i.space; v.value ? m.offset = -_ * ($ + m.cloneNodeCount) + k.value : (m.offset = -_ * $ + k.value, e.align !== "center" && ($ === 0 && (m.offset = 0), $ === r.length - 1 && (m.offset = -_ * $ + m.viewportSize - i.size))); }, y = () => { u(l.value), o("afterChange", l.value); }, C = ($) => (r.length + $) % r.length, b = ($, _ = !0) => { l.value = C($), u($), h(), o("change", l.value), _ ? (I.transitionEnabled = !0, x.value && x.value.addEventListener("transitionend", () => { I.transitionEnabled = !1, y(); }, { once: !0 })) : y(); }, T = ($ = !0) => { b(l.value - 1, $); }, N = ($ = !0) => { b(l.value + 1, $); }; let E = null; const V = () => { e.autoplayTime && E && clearInterval(E); }, D = () => { e.autoplayTime && r.length > 1 && (E && clearInterval(E), E = setInterval(() => { N(); }, Number(e.autoplayTime))); }, I = F({ // 拖拽中 isDragging: !1, // 是否首次拖动 isFirstTouch: !0, // 拖拽起始位置X startX: 0, // 拖拽起始位置Y startY: 0, // 拖拽距离 offset: 0, // 开始拖动时间 startTime: /* @__PURE__ */ new Date(), // 是否在执行动画 transitionEnabled: !1, // 当前次拖拽不满足翻页条件 isDissatisfy: !1 }), U = ($) => { if (I.transitionEnabled) return; let _ = 0, W = 0; "touches" in $ ? (_ = $.touches[0].clientX, W = $.touches[0].clientY) : (_ = $.clientX, W = $.clientY), I.startX = _, I.startY = W, I.isDragging = !0, I.isFirstTouch = !0, I.startTime = /* @__PURE__ */ new Date(), V(); }, Z = ($) => { if (!I.isDragging) return; let _ = 0, W = 0; "touches" in $ ? (_ = $.touches[0].clientX, W = $.touches[0].clientY) : (_ = $.clientX, W = $.clientY); const q = _ - I.startX, X = W - I.startY; if (I.isFirstTouch && (I.isFirstTouch = !1, Math.abs(q) < Math.abs(X) !== e.vertical)) { I.isDragging = !1; return; } $.preventDefault(), I.offset = e.vertical ? X : q, h(), o("dragging", { percent: I.offset / (i.size + i.space), offset: I.offset }), I.isDissatisfy = !1; }, P = () => { if (!I.isDragging) return; I.isDragging = !1; const _ = (/* @__PURE__ */ new Date()).getTime() - I.startTime.getTime(); H() && (Math.abs(I.offset) > A.value || Math.abs(I.offset) / _ > 0.5) ? (I.offset > 0 ? T() : N(), I.offset = 0, I.isDissatisfy = !1) : (I.offset = 0, I.isDissatisfy = !0), D(); }, A = B(() => bt(e.minSwipeDistance, i.size + i.space)), H = () => { if (v.value) return !0; const $ = I.offset > 0 ? l.value - 1 : l.value + 1; return $ >= 0 && $ < r.length; }, ue = B(() => { const $ = I.isDragging && !e.isFollowHand ? m.offset : m.offset + I.offset, _ = {}; return e.vertical ? (_.transform = `translate3d(0, ${$}px, 0)`, _.transitionDuration = I.transitionEnabled || I.isDissatisfy ? `${e.duration}ms` : "0ms") : (_.transform = `translate3d(${$}px, 0, 0)`, _.transitionDuration = I.transitionEnabled || I.isDissatisfy ? `${e.duration}ms` : "0ms"), I.isDragging && (_.transition = "none"), e.vertical && (_.flexDirection = "column"), e.autoHeight && (_.display = "block", _.whiteSpace = "nowrap"), _; }), Q = B(() => ["y-swipe__dots", `y-swipe__dots--${e.dotsPosition || (e.vertical ? Je.left : Je.bottom)}`]); n({ moveTo: b, next: N, prev: T, resize: S }); const ae = F({ children: r, activeIndex: l, props: e, itemDetail: i, itemShowedList: s }); a(ae); const oe = () => e.dots ? f("div", { class: Q.value }, [r.map(($, _) => { const W = Ye("dot", { active: _ === l.value }); return f("div", { class: W, style: { backgroundColor: e.dotsColor }, key: _ }, null); })]) : null; return () => { var $; return f("div", { class: Ye(), ref: g }, [f("div", { class: Ye("track"), style: ue.value, ref: x }, [Array(m.cloneNodeCount).fill("").map((_, W) => { var J, re, $e; const q = C(W - m.cloneNodeCount), X = ($e = (J = r[q]) == null ? void 0 : (re = J.slots).default) == null ? void 0 : $e.call(re); return X ? f(Le, { clonenNode: X, index: q }, null) : null; }), ($ = t.default) == null ? void 0 : $.call(t), Array(m.cloneNodeCount).fill("").map((_, W) => { var J, re, $e; const q = C(W), X = ($e = (J = r[q]) == null ? void 0 : (re = J.slots).default) == null ? void 0 : $e.call(re); return X ? f(Le, { clonenNode: X, index: q }, null) : null; })]), t.dots ? t.dots() : oe()]); }; } }), [zn, St] = O("tabs-title"), wt = /* @__PURE__ */ z({ name: zn, props: { active: { type: Boolean, default: !1 }, scrollable: { type: Boolean, default: !1 }, title: { type: String, default: null }, titleSlot: { type: Function, default: null }, disabled: { type: Boolean, default: !1 } }, setup(e) { const { parent: t } = ce(ft), o = B(() => [{ "y-el--clickable": !e.disabled }, St({ scrollable: e.scrollable, disabled: e.disabled }), St(`${(t == null ? void 0 : t.props.size) || "middle"}`, { active: e.active }), t == null ? void 0 : t.props.titleClass, e.active ? t == null ? void 0 : t.props.titleActiveClass : ""]), n = B(() => ({ ...t == null ? void 0 : t.props.titleStyle, ...e.active ? { ...t == null ? void 0 : t.props.titleActiveStyle } : {} })); return () => { const { title: a, titleSlot: r } = e; return f("div", { class: o.value, title: a, style: n.value, role: "presentation" }, [r ? r() : a]); }; } }), Xe = null, On = { initIndex: { type: Number, default: 0 }, initName: { type: [Number, String], default: null }, duration: { type: Number, default: 300 }, lazy: { type: Boolean, default: !1 }, lineColor: { type: String, default: "" }, lineWidth: { type: [Number, String], default: "12px" }, lineHeight: { type: [Number, String], default: "3px" }, titleWrapperClass: Xe, titleScrollThreshold: { type: Number, default: 5 }, titleStyle: { type: [Object], default: null }, titleClass: { type: Xe, default: null }, titleActiveStyle: { type: [Object], default: null }, titleActiveClass: { type: Xe, default: null }, touchable: { type: Boolean, default: !0 }, changeWithAnimation: { type: Boolean, default: !1 }, size: { type: String, default: "large" }, align: { type: String, default: "center" } }; var et = {}, Mn = { get exports() { return et; }, set exports(e) { et = e; } }; (function(e, t) { (function() { function o() { var n = window, a = document; if ("scrollBehavior" in a.documentElement.style && n.__forceSmoothScrollPolyfill__ !== !0) return; var r = n.HTMLElement || n.Element, l = 468, i = { scroll: n.scroll || n.scrollTo, scrollBy: n.scrollBy, elementScroll: r.prototype.scroll || c, scrollIntoView: r.prototype.scrollIntoView }, m = n.performance && n.performance.now ? n.performance.now.bind(n.performance) : Date.now; function g(u) { var y = ["MSIE ", "Trident/", "Edge/"]; return new RegExp(y.join("|")).test(u); } var x = g(n.navigator.userAgent) ? 1 : 0; function c(u, y) { this.scrollLeft = u, this.scrollTop = y; } function h(u) { return 0.5 * (1 - Math.cos(Math.PI * u)); } function s(u) { if (u === null || typeof u != "object" || u.behavior === void 0 || u.behavior === "auto" || u.behavior === "instant") return !0; if (typeof u == "object" && u.behavior === "smooth") return !1; throw new TypeError( "behavior member of ScrollOptions " + u.behavior + " is not a valid value for enumeration ScrollBehavior." ); } function w(u, y) { if (y === "Y") return u.clientHeight + x < u.scrollHeight; if (y === "X") return u.clientWidth + x < u.scrollWidth; } function d(u, y) { var C = n.getComputedStyle(u, null)["overflow" + y]; return C === "auto" || C === "scroll"; } function p(u) { var y = w(u, "Y") && d(u, "Y"), C = w(u, "X") && d(u, "X"); return y || C; } function S(u) { for (; u !== a.body && p(u) === !1; ) u = u.parentNode || u.host; return u; } function k(u) { var y = m(), C, b, T, N = (y - u.startTime) / l; N = N > 1 ? 1 : N, C = h(N), b = u.startX + (u.x - u.startX) * C, T = u.startY + (u.y - u.startY) * C, u.method.call(u.scrollable, b, T), (b !== u.x || T !== u.y) && n.requestAnimationFrame(k.bind(n, u)); } function v(u, y, C) { var b, T, N, E, V = m(); u === a.body ? (b = n, T = n.scrollX || n.pageXOffset, N = n.scrollY || n.pageYOffset, E = i.scroll) : (b = u, T = u.scrollLeft, N = u.scrollTop, E = c), k({ scrollable: b, method: E, startTime: V, startX: T, startY: N, x: y, y: C }); } n.scroll = n.scrollTo = function() { if (arguments[0] !== void 0) { if (s(arguments[0]) === !0) { i.scroll.call( n, arguments[0].left !== void 0 ? arguments[0].left : typeof arguments[0] != "object" ? arguments[0] : n.scrollX || n.pageXOffset, // use top prop, second argument if present or fallback to scrollY arguments[0].top !== void 0 ? arguments[0].top : arguments[1] !== void 0 ? arguments[1] : n.scrollY || n.pageYOffset ); return; } v.call( n, a.body, arguments[0].left !== void 0 ? ~~arguments[0].left : n.scrollX || n.pageXOffset, arguments[0].top !== void 0 ? ~~arguments[0].top : n.scrollY || n.pageYOffset ); } }, n.scrollBy = function() { if (arguments[0] !== void 0) { if (s(arguments[0])) { i.scrollBy.call( n, arguments[0].left !== void 0 ? arguments[0].left : typeof arguments[0] != "object" ? arguments[0] : 0, arguments[0].top !== void 0 ? arguments[0].top : arguments[1] !== void 0 ? arguments[1] : 0 ); return; } v.call( n, a.body, ~~arguments[0].left + (n.scrollX || n.pageXOffset), ~~arguments[0].top + (n.scrollY || n.pageYOffset) ); } }, r.prototype.scroll = r.prototype.scrollTo = function() { if (arguments[0] !== void 0) { if (s(arguments[0]) === !0) { if (typeof arguments[0] == "number" && arguments[1] === void 0) throw new SyntaxError("Value could not be converted"); i.elementScroll.call( this, // use left prop, first number argument or fallback to scrollLeft arguments[0].left !== void 0 ? ~~arguments[0].left : typeof arguments[0] != "object" ? ~~arguments[0] : this.scrollLeft, // use top prop, second argument or fallback to scrollTop arguments[0].top !== void 0 ? ~~arguments[0].top : arguments[1] !== void 0 ? ~~arguments[1] : this.scrollTop ); return; } var u = arguments[0].left, y = arguments[0].top; v.call( this, this, typeof u > "u" ? this.scrollLeft : ~~u, typeof y > "u" ? this.scrollTop : ~~y ); } }, r.prototype.scrollBy = function() { if (arguments[0] !== void 0) { if (s(arguments[0]) === !0) { i.elementScroll.call( this, arguments[0].left !== void 0 ? ~~arguments[0].left + this.scrollLeft : ~~arguments[0] + this.scrollLeft, arguments[0].top !== void 0 ? ~~arguments[0].top + this.scrollTop : ~~arguments[1] + this.scrollTop ); return; } this.scroll({ left: ~~arguments[0].left + this.scrollLeft, top: ~~arguments[0].top + this.scrollTop, behavior: arguments[0].behavior }); } }, r.prototype.scrollIntoView = function() { if (s(arguments[0]) === !0) { i.scrollIntoView.call( this, arguments[0] === void 0 ? !0 : arguments[0] ); return; } var u = S(this), y = u.getBoundingClientRect(), C = this.getBoundingClientRect(); u !== a.body ? (v.call( this, u, u.scrollLeft + C.left - y.left, u.scrollTop + C.top - y.top ), n.getComputedStyle(u).position !== "fixed" && n.scrollBy({ left: y.left, top: y.top, behavior: "smooth" })) : n.scrollBy({ left: C.left, top: C.top, behavior: "smooth" }); }; } e.exports = { polyfill: o }; })(); })(Mn); function Dn(e) { return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !Se(e); } const [tt, je] = O("tabs"), ft = tt, An = /* @__PURE__ */ z({ name: tt, components: { YTabTitle: wt }, props: On, setup(e, { slots: t, emit: o, expose: n }) { const { initProvide: a } = fe(ft), r = L(!1), l = F([]), i = L(), m = B(() => l.length > e.titleScrollThreshold), g = (E) => l.findIndex((V) => (V.$props ? V.$props.name : "") === E), x = L(e.initName ? g(e.initName) : e.initIndex), c = (E) => { x.value = E; const V = i.value; V && (V == null || V.moveTo(E, e.changeWithAnimation)); }; n({ scrollToByIndex: (E) => { c(E); }, scrollToByName: (E) => { const V = g(E); c(V); } }); const w = L([]), d = L(), p = (E) => (V) => { w.value[E] = V; }, S = (E) => { const { title: V, name: D, disabled: I } = l[E].$props || {}; x.value !== E && (o(I ? "disabledClick" : "click", E, V, D), !I && c(E)); }, k = async () => { await ie(() => { if (!m.value || !d.value) return; const E = d.value; if (!E || !w.value[x.value]) return; const V = w.value[x.value].$el, D = V.offsetLeft - (E.offsetWidth - V.offsetWidth) / 2; E.scrollTo({ left: D, behavior: "smooth" }); }); }; st(() => { w.value = []; }); const v = F({ transform: "translateX(50%)", transition: "all 0ms ease-out" }), u = async () => { await ie(() => { if (!w.value || w.value.length === 0) return; const E = x.value >= w.value.length ? 0 : x.value, V = w.value[E].$el, D = V.offsetLeft + V.offsetWidth / 2; v.transform = `translateX(${D}px) translateX(-50%)`, r.value && (v.transition = `all ${e.duration}ms ease-out`), r.value = !0; }); }, y = (E) => { const { title: V, name: D } = l[E].$props || {}; o("change", E, V, D), x.value = E; }, C = (E) => { const { title: V, name: D } = l[E].$props || {}; o("afterChange", E, V, D), x.value = E; }, b = F({ children: l, activeIndex: x, props: e }); a(b); const T = (E) => N(E) && /^\d+(\.\d+)?$/.test(E) ? `${E}px` : E, N = (E) => Object.prototype.toString.call(E) === "[object String]"; return K(async () => { et.polyfill(), await u(); }), j(() => x.value, async () => { await u(), await k(); }), j(() => { var E; return (E = t.default) == null ? void 0 : E.length; }, async () => { await u(); }), () => { let E; return f("div", { class: tt }, [f("div", { class: je("list") }, [f("div", { ref: d, class: je("list-child-wrapper", { scrollable: m.value, [e.size]: e.size, [e.align]: e.align }) }, [l.length > 0 && l.map((V, D) => f(wt, { title: V.title, disabled: V.disabled, "title-slot": V.$slots.title, key: D, ref: p(D), active: x.value === D, scrollable: m.value, onClick: () => S(D) }, null)), f("div", { class: je("line"), style: { ...v, width: T(e.lineWidth), height: T(e.lineHeight), backgroundColor: e.lineColor } }, null)])]), t.default ? f(jt, { ref: i, dots: !1, loop: !1, initIndex: x.value, lazy: e.lazy, touchable: e.touchable, duration: e.duration, "is-follow-hand": e.changeWithAnimation, onChange: y, onAfterChange: C }, Dn(E = t.default()) ? E : { default: () => [E] }) : null]); }; } }); function M(e) { const t = e; return t.install = (o) => { const { name: n } = e; n && o.component(n, e); }, t; } const Rn = M(An); function Wn(e) { return typeof e == "function" || Object.prototype.toString.call(e) === "[object Object]" && !Se(e); } const [Fn] = O("tab"), Hn = /* @__PURE__ */ z({ name: Fn, props: { title: { type: String, default: "" }, name: { type: [String, Number], default: "" }, disabled: { type: Boolean, default: !1 } }, setup(e, { slots: t }) { const { parent: o } = ce(ft), n = le(); return n.proxy && (o == null || o.children.push(n.proxy)), xe(() => { o && (o.children = o.children.filter((a) => a !== n.proxy)); }), () => { let a; return t.default ? f(Le, null, Wn(a = t.default()) ? a : { default: () => [a] }) : null; }; } }), Yn = M(Hn), xt = 10, Xn = (e, t) => e > t && e > xt ? "horizontal" : t > e && t > xt ? "vertical" : "", jn = (e, t) => Math.abs(e) > Math.abs(t) ? e > 0 ? "right" : "left" : t > 0 ? "bottom" : "top", Un = () => { const e = L(0), t = L(0), o = L(0), n = L(0), a = L(0), r = L(0), l = L(""), i = L(""), m = () => l.value === "vertical", g = () => l.value === "horizontal", x = () => { o.value = 0, n.value = 0, a.value = 0, r.value = 0, l.value = "", i.value = ""; }; return { move: (s) => { const w = s.touches[0]; o.value = w.clientX < 0 ? 0 : w.clientX - e.value, n.value = w.clientY - t.value, a.value = Math.abs(o.value), r.value = Math.abs(n.value), l.value || (l.value = Xn(a.value, r.value)), i.value = jn(o.value, n.value); }, start: (s) => { x(), e.value = s.touches[0].clientX, t.value = s.touches[0].clientY; }, reset: x, startX: e, startY: t, deltaX: o, deltaY: n, offsetX: a, offsetY: r, direction: l, touchDirection: i, isVertical: m, isHorizontal: g }; }, [qn, G] = O("slider"), Gn = /* @__PURE__ */ z({ name: qn, props: { modelValue: { type: [Number, Array], default: 0 }, activeColor: { type: String, default: "" }, inactiveColor: { type: String, default: "" }, max: { type: Number, default: 100 }, min: { type: Number, default: 0 }, buttonBgColor: { type: [String, Array], default: "" }, barHeight: { type: [String, Number], default: "2px" }, disabled: { type: Boolean, default: !1 }, showTooltip: { type: Boolean, default: !1 }, step: { type: Number, default: 1 }, gapColor: { type: String, default: "" }, gapWidth: { type: [String, Number], default: "2px" }, transitionTime: { type: Number, default: 200 } }, emits: ["change", "drag-start", "drag-end", "update:modelValue"], setup(e, { emit: t, slots: o }) { const n = L(), a = L(0), r = L(0), l = L(""), i = Un(), m = B(() => Array.isArray(e.modelValue)), g = (b) => { const { min: T, max: N, step: E } = e, V = Math.max(T, Math.min(b, N)); return Math.round(V / E) * E; }, x = (b) => { if (b.stopPropagation(), e.disabled) return; const { min: T, modelValue: N } = e, { left: E, width: V } = n.value.getBoundingClientRect(), D = b.clientX - E, I = Math.floor(T + D / V * S.value); if (m.value) { const U = N[0], Z = N[1], P = (U + Z) / 2; I <= P ? s([I, Z]) : s([U, I]); } else s(I); }, c = (b) => b[0] > b[1] ? [b[1], b[0]] : b, h = (b, T) => JSON.stringify(b) === JSON.stringify(T), s = (b, T) => { let N = 0; m.value ? N = c(b).map(g) : N = g(b), t("update:modelValue", N), typeof T > "u" && !h(a.value, r.value) && t("change", N); }, w = B(() => { const { modelValue: b, min: T } = e; let N = null; return m.value ? N = Math.floor((g(b[1]) - g(b[0])) * 100 / S.value) : N = Math.floor((g(b) - T) * 100 / S.value), `${N}%`; }), d = B(() => { const { modelValue: b, min: T } = e; return m.value ? `${Math.floor((g(b[0]) - T) * 100 / S.value)}%` : "0%"; }), p = B(() => ({ left: w.value, transition: l.value === "moving" ? "none" : `${e.transitionTime}ms ease-in-out` })), S = B(() => e.max - e.min), k = (b) => { e.disabled || (i.start(b), l.value = "startMove", r.value = e.modelValue, m.value ? a.value = [...r.value] : a.value = r.value); }, v = (b, T) => { if (e.disabled) return; i.move(b), l.value === "startMove" && t("drag-start"), l.value = "moving"; const { width: N } = n.value.getBoundingClientRect(), E = i.deltaX.value, V = Math.floor(E / N * S.value); Array.isArray(a.value) && Array.isArray(r.value) ? T === "left" ? r.value[0] = a.value[0] + V : r.value[1] = a.value[1] + V : r.value = a.value + V, s(r.value, !0); }, u = () => { e.disabled || (l.value === "moving" && (s(r.value), t("drag-end")), l.value = "endMove"); }, y = (b) => { let T = "", N = {}, E = 0, V = G("button-wrapper"); return b === 0 ? (T = "left", N = { left: d.value, backgroundColor: Array.isArray(e.buttonBgColor) ? e.buttonBgColor[0] : e.buttonBgColor }, E = e.modelValue[b], V = G("button-wrapper", "left")) : b === 1 ? (T = "right", E = e.modelValue[b], N = { left: `${parseInt(w.value) + parseInt(d.value)}%`, backgroundColor: Array.isArray(e.buttonBgColor) ? e.buttonBgColor[1] : e.buttonBgColor }, V = G("button-wrapper", "right")) : (E = e.modelValue, N = { left: w.value, backgroundColor: e.buttonBgColor }), f("div", { role: "slider", "aria-valuemin": e.min, "aria-valuemax": e.max, "aria-valuenow": E, class: V, onTouchstart: k, onTouchmove: (D) => v(D, T), onTouchend: u, style: { ...N, transition: l.value === "moving" ? "none" : `${e.transitionTime}ms ease-in-out` } }, [o.button ? o.button() : f("div", { class: G("inner-button"), style: N }, null)]); }, C = B(() => Array((e.max - e.min) / e.step).fill({}).map((T, N) => ({ position: `${N * e.step}%` }))); return () => { var b; return f("div", { class: G() }, [o.iconLeft && f("div", { class: G("icon", { left: !0 }) }, [o.iconLeft()]), f("div", { role: "presentation", ref: n, class: G("wrapper-main", { disabled: e.disabled }), style: { background: e.inactiveColor, height: R(e.barHeight) }, onClick: x }, [e.step !== 1 && f("div", { class: G("dots") }, [C.value.map((T) => f("div", { class: G("dot"), style: { left: T.position, background: e.gapColor, width: R(e.gapWidth) } }, null))]), e.showTooltip && f("div", { class: G("tooltip", { wrapper: o.toolTip }), style: p.value }, [((b = o.toolTip) == null ? void 0 : b.call(o)) || e.modelValue]), f("div", { style: { left: d.value, width: w.value, background: e.activeColor, transition: l.value === "moving" ? "none" : `${e.transitionTime}ms ease-in-out` }, class: G("inner") }, null), m.value ? [y(0), y(1)] : y()]), o.iconRight && f("div", { class: G("icon", { right: !0 }) }, [o.iconRight()])]); }; } }); const Kn = M(Gn), [Zn, ge] = O("loading"), Qn = { // Loading icon 的颜色 color: { type: String, default: "" }, // 背景色 bgColor: { type: String, default: "" }, bgBorderRadius: { type: [Number, String], default: "16px" }, // 粗细 thick: { type: [Number, String], default: 8 }, // 方向 direction: { type: String, default: "forward" }, // 大小 size: { type: [Number, String], default: "24px" }, padding: { type: [Number, String], default: "" }, // 文案 text: { type: String, default: "" }, // 文案位置 textLocation: { type: String, default: "bottom" }, // 文案大小 textSize: { type: [Number, String], default: "" }, // 文案颜色 textColor: { type: String, default: "" }, // 布局位置 position: { type: String, default: "relative" } }, mt = /* @__PURE__ */ z({ name: Zn, props: Qn, setup(e, { slots: t }) { return () => { var d, p; const { position: o, textLocation: n, bgColor: a, bgBorderRadius: r, size: l, padding: i, color: m, thick: g, direction: x, text: c, textColor: h, textSize: s } = e, w = ((d = t.default) == null ? void 0 : d.call(t)) || c; return f("div", { class: ge({ [o]: o !== "relative" }) }, [f("div", { class: ge("bg", { [o]: o !== "relative" }), style: { flexDirection: Bn(n), backgroundColor: a, borderRadius: R(r), padding: R(i) } }, [f("span", { class: ge("icon-wrapper"), style: { width: R(l), height: R(l) } }, [((p = t.icon) == null ? void 0 : p.call(t)) || f("svg", { class: ge("icon", { [x]: x }), viewBox: "25 25 50 50" }, [f("circle", { class: ge("icon-circle"), style: { stroke: m, strokeWidth: R(g) }, cx: "50", cy: "50", r: "20", fill: "none" }, null)])]), w && f("span", { class: ge("text", { [n]: n }), style: { color: h, fontSize: R(s) } }, [w])])]); }; } }), [Jn, se] = O("list"), el = /* @__PURE__ */ z({ name: Jn, props: { // 加载中 文案 loadingText: { type: String, default: "加载中..." }, // 加载完成 文案 finishedText: { type: String, default: "没有更多了~" }, // 加载失败 文案 errorText: { type: String, default: "请求失败,点击重新加载" }, // 容器高度 height: { type: [Number, String], default: "auto" }, // 唯一键名称 keyName: { type: String, default: "_index" }, // 列表数组 dataSource: { type: Array, default: () => [] }, // 是否在初始化时立即执行滚动位置检查 immediateCheck: { type: Boolean, default: !0 }, // 滚动条与底部距离小于多少时触发加载 loadOffset: { type: Number, default: 300 }, // 是否使用虚拟列表 virtual: { type: Boolean, default: !1 }, // 缓冲区比例 bufferScale: { type: Number, default: 1 }, // 列表子项预估高度 itemHeight: { type: [String, Number], default: "80" }, // 是否是不定高度子项 dynamicItemHeight: { type: Boolean, default: !1 } }, emits: ["load"], setup(e, { slots: t, emit: o, expose: n }) { const a = L(0), r = L(!1), l = L("normal"), i = L(), m = L(), g = L(), x = L([]), c = L(0), h = L(0), s = L([]), w = B(() => $n(e.height) ? `${e.height}px` : e.height), d = B(() => s.value.length ? s.value[s.value.length - 1].bottom : 0), p = B(() => { if (e.virtual) { const P = c.value - S.value, A = h.value + k.value; return u.value.slice(P, A); } return u.value; }), S = B(() => Math.min(c.value, e.bufferScale * v.value)), k = B(() => Math.min(e.dataSource.length - h.value, e.bufferScale * v.value)), v = B(() => Math.ceil(a.value / parseInt(String(e.itemHeight)))), u = B(() => e.dataSource.map((P, A) => (P[e.keyName] = A, P))), y = () => r.value ? document.documentElement.scrollTop || document.body.scrollTop : i.value.scrollTop, C = () => r.value ? document.documentElement.scrollHeight : i.value.scrollHeight, b = () => { l.value !== "loading" && (l.value = "loading", o("load", (P) => { if (l.value === "loading") switch (P) { case "error": l.value = "error"; break; case "finished": l.value = "finished", e.virtual && N(), e.virtual && e.dynamicItemHeight && E(); break; default: l.value = "normal", e.virtual && (E(), e.dataSource.length < v.value + k.value && b()); } })); }, T = () => { l.value === "normal" && C() - y() - a.value <= e.loadOffset && b(); }, N = () => { s.value = u.value.map((P, A) => { const H = parseInt(String(e.itemHeight)); return { index: A, height: H, top: A * H, bottom: (A + 1) * H }; }); }, E = () => { N(); for (let P = 1; P < s.value.length; P++) s.value[P].top = s.value[P - 1].bottom, s.value[P].bottom = s.value[P].top + s.value[P].height; }, V = (P, A) => { let H = 0, ue = P.length - 1, Q = -1; for (; H <= ue; ) { const ae = Math.floor((H + ue) / 2), oe = P[ae].bottom; if (oe === A) return ae + 1; oe < A ? H = ae + 1 : oe > A && ((Q === -1 || Q > ae) && (Q = ae), ue = ae - 1); } return Q; }, D = (P) => V(s.value, P), I = () => { if (T(), e.virtual) { const P = y(); U(P); } }, U = (P) => { if (!m.value) return; const A = P || 0; if (e.dynamicItemHeight) { c.value = D(A), h.value = c.value + v.value; const H = s.value[c.value - S.value].top ? s.value[c.value - S.value].top : 0; m.value.style.transform = `translate3d(0, ${H}px, 0)`; } else { c.value = Math.floor(A / parseInt(String(e.itemHeight))), h.value = c.value + v.value; const H = c.value * parseInt(String(e.itemHeight)) - S.value * parseInt(String(e.itemHeight)); m.value.style.transform = `translate3d(0, ${H}px, 0)`; } }, Z = () => { if (!m.value || !g.value) return; const P = m.value.children; P && P.length > 0 && [...P].forEach((A) => { if (A instanceof HTMLDivElement) { const H = A.getBoundingClientRect(), { height: ue } = H, Q = Number(A.dataset.index), oe = s.value[Q].height - ue; if (oe) { s.value[Q].bottom -= oe, s.value[Q].height = ue; for (let $ = Q + 1; $ < s.value.length; $++) s.value[$].top = s.value[$ - 1].bottom, s.value[$].bottom -= oe; } } }); }; return n({ ...e, checkIsScrollToBottom: T, loadData: b }), K(() => { e.height !== "auto" ? (r.value = !1, a.value = i.value.clientHeight) : e.height === "auto" && (r.value = !0, a.value = document.documentElement.clientHeight, document.addEventListener("scroll", I)), e.virtual && (N(), U()), e.immediateCheck && T(); }), yn(async () => { var P, A; if (e.virtual && e.dynamicItemHeight) { if (await ie(), !((A = (P = m.value) == null ? void 0 : P.children) != null && A.length)) return; Z(); } }), we(() => { r.value && document.removeEventListener("scroll", I); }), () => f("div", { ref: i, class: `${se()} ${e.virtual ? se({ virtual: !0 }) : ""}`, style: { height: w.value }, onScroll: I }, [e.virtual && f("div", { ref: g, class: se("phantom"), style: { height: `${d.value}px` } }, null), f("div", { ref: m, class: se("content") }, [p.value.map((P) => { var A; return f("div", { ref: x, class: se("item"), "data-index": P._index }, [(A = t.default) == null ? void 0 : A.call(t, { item: P })]); })]), l.value === "loading" && f("div", { class: se({ loading: !0 }) }, [t.loading ? t.loading() : f(mt, { "text-location": "right" }, { default: () => [bn("加载中...")] })]), l.value === "finished" && f("div", { class: se({ finished: !0 }) }, [e.finishedText]), l.value === "error" && f("div", { class: se("error"), role: "presentation", onClick: b }, [e.errorText])]); } }); const tl = M(el); const nl = M(jt); const ll = M(Le), Ut = "y-form-item", al = () => { const e = le(), t = L(); return { filed: t, initProvide: (n) => { _t(Ut, { setField: (r) => { r != null && r.proxy && (t.value = r); }, instance: e, ...n }); } }; }, me = () => { const e = zt(Ut, null), t = le(); if (e && (t != null && t.proxy)) { const { setField: o } = e, { resetValidation: n, change: a, validateWithTrigger: r } = e; return j( () => t.proxy.modelValue, () => { e.instance && e.instance.exposed && (n(), a(), r("onChange")); } ), o(t), we(() => o(null)), { parent: e }; } return { parent: null }; }, [ol, _e] = O("icon"), rl = (e) => new RegExp(/\.(https|png|jpg|gif|jpeg|webp|apng)$/).test(e.toLowerCase()), il = /* @__PURE__ */ z({ name: ol, props: { dot: { type: Boolean, default: !1 }, name: { type: String, default: "" }, size: { type: [Number, String], default: "" }, info: { type: [Number, String], default: "" }, badge: { type: [Number, String], default: "" }, color: { type: String, default: "" }, subColor: { type: String, default: "" }, subBg: { type: String, default: "" }, classPrefix: { type: String, default: "y-icon" }, /** * @ignore */ tag: { type: String, default: "i" } }, emits: ["click"], setup(e, { slots: t, emit: o }) { const n = rl(e.name), a = () => ({ fontSize: R(e.size), color: e.color }), r = (l) => { o("click", l); }; return () => { const { name: l, classPrefix: i, badge: m, dot: g, subColor: x, subBg: c, tag: h } = e; return f(h, { class: `${i}${n ? "" : ` y-icon--${l}`}`, style: a(), onClick: r }, { default: () => { var s; return [n ? f("em", { class: _e("node") }, [f("img", { class: _e("image"), src: l, alt: "icon" }, null)]) : null, g ? f("em", { class: _e("dot"), style: { backgroundColor: c } }, null) : null, m ? f("em", { class: _e("badge"), style: { color: x, backgroundColor: c } }, [m]) : null, ((s = t.default) == null ? void 0 : s.call(t)) || null]; } }); }; } }); const ve = M(il), ul = { /** * @ignore */ modelValue: { type: Array, default: () => [] }, /** * 最多选中数目 */ max: { type: Number, default: null }, /** * 最少选中数目 */ min: { type: Number, default: null }, /** * 禁用 */ disabled: { type: Boolean, default: null }, /** * 是否为方形 */ square: { type: Boolean, default: null }, /** * 选中颜色 */ checkedColor: { type: String, default: null }, /** * 水平排列 */ horizontal: { type: Boolean, default: !1 } }, [qt, sl] = O("checkbox-group"), Gt = qt, cl = /* @__PURE__ */ z({ name: qt, props: ul, setup(e, { slots: t, emit: o, expose: n }) { const { initProvide: a } = fe(Gt), r = F([]); me(); const l = (g) => { o("update:modelValue", g), o("change", g); }, i = (g) => { const x = [...e.modelValue], c = x.indexOf(g); if (c >= 0) { if (e.min !== null && x.length <= e.min) return; x.splice(c, 1), l(x); } else { if (e.max !== null && x.length >= e.max) return; l([...x, g]); } }; return n({ toggleAll: (g = null) => { l(g === null ? e.modelValue.length === 0 ? r : [] : g ? r : []); } }), a({ props: e, onItemChange: i, allItemNames: r }), () => { var g; return f("div", { class: sl({ horizontal: e.horizontal }) }, [(g = t.default) == null ? void 0 : g.call(t)]); }; } }), [dl, Ue] = O("checkbox"), fl = /* @__PURE__ */ z({ name: dl, props: { modelValue: { type: Boolean, default: !1 }, name: { type: String, default: null }, disabled: { type: Boolean, default: !1 }, size: { type: [String, Number], default: "middle" }, square: { type: Boolean, default: !0 }, checkedColor: { type: String, default: "" } }, setup(e, { slots: t, emit: o, expose: n }) { const { parent: a } = ce(Gt), r = a === null ? me().parent : null; a && a.allItemNames.push(e.name); const l = (d, p = null) => B(() => a && a.props[d] !== null ? a.props[d] : Object.keys(e).includes(d) ? e[d] : p), i = l("disabled"), m = l("square"), g = l("checkedColor"), x = l("horizontal", !1), c = B(() => a ? a.props.modelValue.includes(e.name) : e.modelValue), h = (d) => { var p; i.value || typeof d < "u" && c.value === d || ((p = a == null ? void 0 : a.onItemChange) == null || p.call(a, e.name), o("update:modelValue", !e.modelValue), o("change", !e.modelValue)); }; n({ toggle: h }); const s = B(() => ["mini", "small", "middle", "large"].includes(e.size.toString() || (r == null ? void 0 : r.getProp("size"))) ? null : R(e.size)), w = B(() => { const d = {}; return s.value && (d.width = s.value, d.height = s.value), c.value && g.value && (d.backgroundColor = g.value), d; }); return xe(() => { if (!a)