UNPKG

y-design-ssr

Version:

SSR component library of YUI with Vue3

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