ll-package
Version:
2 lines (1 loc) • 1.51 kB
JavaScript
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const S=require("../../../@babel/runtime/helpers/esm/objectSpread2.js"),o=require("../../../@babel/runtime/helpers/esm/extends.js"),n=require("vue"),T=require("../_util/omit.js"),D=require("../_util/props-util/initDefaultProps.js"),h=require("../_util/type.js"),f=require("./Statistic.js"),b=require("./utils.js"),F=1e3/30;function s(t){return new Date(t).getTime()}const d=()=>o.default(o.default({},f.statisticProps()),{value:h.someType([Number,String,Object]),format:String,onFinish:Function,onChange:Function}),P=n.defineComponent({compatConfig:{MODE:3},name:"AStatisticCountdown",props:D.default(d(),{format:"HH:mm:ss"}),setup(t,m){let{emit:i,slots:v}=m;const u=n.ref(),c=n.ref(),a=()=>{const{value:e}=t;s(e)>=Date.now()?w():l()},w=()=>{if(u.value)return;const e=s(t.value);u.value=setInterval(()=>{c.value.$forceUpdate(),e>Date.now()&&i("change",e-Date.now()),a()},F)},l=()=>{const{value:e}=t;u.value&&(clearInterval(u.value),u.value=void 0,s(e)<Date.now()&&i("finish"))},g=e=>{let{value:r,config:q}=e;const{format:C}=t;return b.formatCountdown(r,o.default(o.default({},q),{format:C}))},p=e=>e;return n.onMounted(()=>{a()}),n.onUpdated(()=>{a()}),n.onBeforeUnmount(()=>{l()}),()=>{const e=t.value;return n.createVNode(f.default,S.default({ref:c},o.default(o.default({},T.default(t,["onFinish","onChange"])),{value:e,valueRender:p,formatter:g})),v)}}});exports.countdownProps=d;exports.default=P;
;