UNPKG

uv-ui

Version:

基于vue3的移动端组件库

65 lines (64 loc) 2.03 kB
import { computed as f, watch as w, openBlock as v, createElementBlock as B, renderSlot as x, unref as m, createTextVNode as C, toDisplayString as N } from "vue"; import { useCountDown as b } from "../../hooks/useCountDown.js"; import "./count-down.vue_vue_type_style_index_0_lang.js"; const k = { class: "uv-count-down" }, F = { name: "UvCountDown" }, E = /* @__PURE__ */ Object.assign(F, { props: { autoStart: { type: Boolean, default: !0 }, time: { type: [Number, String], default: 0 }, format: { type: String, default: "HH:mm:ss" }, millisecond: { type: Boolean, default: !1 } }, emits: ["change", "finish"], setup(h, { expose: _, emit: d }) { const t = h; function n(e, i = 2) { let s = e + ""; for (; s.length < i; ) s = "0" + s; return s; } function g(e, i) { const { days: s } = i; let { hours: l, minutes: c, seconds: u, milliseconds: S } = i; if (e.includes("DD") ? e = e.replace("DD", n(s)) : l += s * 24, e.includes("HH") ? e = e.replace("HH", n(l)) : c += l * 60, e.includes("mm") ? e = e.replace("mm", n(c)) : u += c * 60, e.includes("ss") ? e = e.replace("ss", n(u)) : S += u * 1e3, e.includes("S")) { const o = n(S, 3); e.includes("SSS") ? e = e.replace("SSS", o) : e.includes("SS") ? e = e.replace("SS", o.slice(0, 2)) : e = e.replace("S", o.charAt(0)); } return e; } const { start: p, pause: D, reset: y, current: r } = b({ time: +t.time, millisecond: t.millisecond, onChange: (e) => d("change", e), onFinish: () => d("finish") }), H = f(() => g(t.format, r.value)), a = () => { y(+t.time), t.autoStart && p(); }; return w(() => t.time, a, { immediate: !0 }), _({ start: p, pause: D, reset: a }), (e, i) => (v(), B("div", k, [ x(e.$slots, "default", { timeData: m(r) }, () => [ C(N(m(H)), 1) ]) ])); } }); export { E as default };