uv-ui
Version:
基于vue3的移动端组件库
2 lines (1 loc) • 1.2 kB
JavaScript
;Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const u=require("vue"),w=require("../utils/common.cjs"),C=require("./useRequestAnimationFrame.cjs"),{requestAnimationFrame:R,cancelAnimationFrame:S}=C.useRequestAnimationFrame(),i=1e3,l=60*i,m=60*l,F=24*m;function j(e){const a=Math.floor(e/F),s=Math.floor(e%F/m),t=Math.floor(e%m/l),r=Math.floor(e%l/i),n=Math.floor(e%i);return{total:e,days:a,hours:s,minutes:t,seconds:r,milliseconds:n}}function k(e,a){return Math.floor(e/1e3)===Math.floor(a/1e3)}function O(e){let a,s,t,r;const n=u.ref(e.time),f=u.computed(()=>j(n.value)),c=()=>{t=!1,S(a)},d=()=>Math.max(s-Date.now(),0),v=o=>{var A,D;n.value=o,(A=e.onChange)==null||A.call(e,f.value),o===0&&(c(),(D=e.onFinish)==null||D.call(e))},h=()=>{a=R(()=>{t&&(v(d()),n.value>0&&h())})},M=()=>{a=R(()=>{if(t){const o=d();(!k(o,n.value)||o===0)&&v(o),n.value>0&&M()}})},q=()=>{!w.inBrowser||(e.millisecond?h():M())},T=()=>{t||(s=Date.now()+n.value,t=!0,q())},g=(o=e.time)=>{c(),n.value=o};return u.onBeforeUnmount(c),u.onActivated(()=>{r&&(t=!0,r=!1,q())}),u.onDeactivated(()=>{t&&(c(),r=!0)}),{start:T,pause:c,reset:g,current:f}}exports.useCountDown=O;