UNPKG

vuux

Version:

Vue3 Nuxt3 Nuxt4 组件库

2 lines (1 loc) 1.07 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("vue"),v=t=>{const w=typeof window<"u"&&typeof document<"u",l=c.ref(t.start);let s="",m=NaN;const N=e=>!isNaN(parseFloat(e)),g=e=>e<.5?4*e*e*e:1-Math.pow(-2*e+2,3)/2,y=e=>{if(typeof e!="number")return"0";if(e===m)return s;const a=e.toFixed(t.decimalPlaces).split(".");let n=a[0];const u=a.length>1?t.decimal+a[1]:"",i=/(\d+)(\d{3})/;if(t.useGrouping&&t.separator&&!N(t.separator))for(;i.test(n);)n=n.replace(i,"$1"+t.separator+"$2");return m=e,s=t.prefix+n+u+t.suffix,s},b=c.computed(()=>y(l.value));let r=null;const d=()=>{if(!w)return;r&&(cancelAnimationFrame(r),r=null);const e=Date.now(),o=e+t.duration,a=l.value,n=t.end-a,u=()=>{const i=Date.now();if(i<o){let f=(i-e)/t.duration;f=g(f),l.value=a+f*n,r=requestAnimationFrame(u)}else l.value=t.end,r=null};u()};return c.watch(()=>[t.start,t.end],(e,o=[])=>{const[a,n]=e,[u,i]=o;a!==u&&(l.value=a),t.autoplay&&n!==i&&d()},{immediate:!0}),c.onMounted(()=>{t.autoplay&&d()}),{displayValue:b,start:d}};exports.useStatistic=v;