UNPKG

vue-amazing-ui

Version:

An Amazing Vue3 UI Components Library, Using TypeScript.

2 lines (1 loc) 4.05 kB
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),F=require("../utils/index.cjs"),T={class:"m-countdown"},V={class:"countdown-time"},H={key:0,class:"time-prefix"},Y={key:0,class:"time-suffix"},q=e.defineComponent({__name:"Countdown",props:{title:{default:void 0},titleStyle:{default:()=>({})},prefix:{default:void 0},suffix:{default:void 0},finish:{default:void 0},future:{type:Boolean,default:!0},format:{default:"HH:mm:ss"},value:{default:0},valueStyle:{default:()=>({})},active:{type:Boolean,default:!0}},emits:["finish"],setup(D,{expose:M,emit:B}){const o=D,s=e.ref(0),a=e.ref(0),n=e.ref(null),g=B,m=F.useSlotsExist(["title","prefix","suffix"]),x=e.computed(()=>m.title||o.title),w=e.computed(()=>m.prefix||o.prefix),y=e.computed(()=>m.suffix||o.suffix),r=e.computed(()=>({showMillisecond:o.format.includes("SSS"),showYear:o.format.includes("Y"),showMonth:o.format.includes("M"),showDay:o.format.includes("D"),showHour:o.format.includes("H"),showMinute:o.format.includes("m"),showSecond:o.format.includes("s")}));e.watch(()=>o.active,t=>{o.future||(t?(s.value=a.value+Date.now(),n.value=requestAnimationFrame(S)):(n.value&&cancelAnimationFrame(n.value),n.value=null))}),e.watch(()=>[o.value,o.future],()=>{p()},{deep:!0}),e.onMounted(()=>{p()});function p(){Number.isFinite(o.value)?(o.future?o.value>Date.now()?s.value=o.value:h():o.value>0?s.value=o.value+Date.now():h(),a.value=s.value-Date.now(),(o.future||!o.future&&o.active)&&(n.value&&cancelAnimationFrame(n.value),n.value=requestAnimationFrame(S))):a.value=0}function h(){a.value=0,g("finish")}function S(){s.value>Date.now()?(a.value=s.value-Date.now(),n.value=requestAnimationFrame(S)):h()}function u(t,l=2){return String(t).padStart(l,"0")}function E(t){let l=o.format;if(r.value.showMillisecond){var C=t%1e3;l=l.replace("SSS",u(C,3))}if(t=Math.floor(t/1e3),r.value.showYear){var i=Math.floor(t/31104e3);l=l.includes("YY")?l.replace("YY",u(i)):l.replace("Y",String(i))}else var i=0;if(r.value.showMonth){t=t-i*60*60*24*30*12;var c=Math.floor(t/(60*60*24*30));l=l.includes("MM")?l.replace("MM",u(c)):l.replace("M",String(c))}else var c=0;if(r.value.showDay){t=t-c*60*60*24*30;var f=Math.floor(t/(60*60*24));l=l.includes("DD")?l.replace("DD",u(f)):l.replace("D",String(f))}else var f=0;if(r.value.showHour){t=t-f*60*60*24;var d=Math.floor(t/(60*60));l=l.includes("HH")?l.replace("HH",u(d)):l.replace("H",String(d))}else var d=0;if(r.value.showMinute){t=t-d*60*60;var v=Math.floor(t/60);l=l.includes("mm")?l.replace("mm",u(v)):l.replace("m",String(v))}else var v=0;if(r.value.showSecond){var k=t-v*60;l=l.includes("ss")?l.replace("ss",u(k)):l.replace("s",String(k))}return l}function N(){p()}return M({reset:N}),(t,l)=>(e.openBlock(),e.createElementBlock("div",T,[x.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"countdown-title",style:e.normalizeStyle(t.titleStyle)},[e.renderSlot(t.$slots,"title",{},()=>[e.createTextVNode(e.toDisplayString(o.title),1)],!0)],4)):e.createCommentVNode("",!0),e.createElementVNode("div",V,[w.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[w.value||a.value>0?(e.openBlock(),e.createElementBlock("span",H,[e.renderSlot(t.$slots,"prefix",{},()=>[e.createTextVNode(e.toDisplayString(t.prefix),1)],!0)])):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),t.finish&&a.value===0?(e.openBlock(),e.createElementBlock("span",{key:1,class:"time-value",style:e.normalizeStyle(t.valueStyle)},[e.renderSlot(t.$slots,"finish",{},()=>[e.createTextVNode(e.toDisplayString(t.finish),1)],!0)],4)):(e.openBlock(),e.createElementBlock("span",{key:2,class:"time-value",style:e.normalizeStyle(t.valueStyle)},e.toDisplayString(E(a.value)),5)),y.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[y.value||a.value>0?(e.openBlock(),e.createElementBlock("span",Y,[e.renderSlot(t.$slots,"suffix",{},()=>[e.createTextVNode(e.toDisplayString(t.suffix),1)],!0)])):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)])]))}});exports.default=q;