vue-devui
Version:
DevUI components based on Vite and Vue3
2 lines (1 loc) • 4.43 kB
JavaScript
(function(f,s){typeof exports=="object"&&typeof module!="undefined"?s(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],s):(f=typeof globalThis!="undefined"?globalThis:f||self,s(f.index={},f.Vue))})(this,function(f,s){"use strict";const x={title:{type:String,default:""},value:{type:[Number,String]},prefix:{type:String},suffix:{type:String},precision:{type:Number},groupSeparator:{type:String,default:""},animationDuration:{type:Number,default:2e3},valueFrom:{type:Number},animation:{type:Boolean,default:!1},start:{type:Boolean,default:!0},extra:{type:String,default:""}},l=(t,e)=>t.replace(/\d+/,function(n){return n.replace(/(\d)(?=(\d{3})+$)/g,function(a){return a+`${e}`})}),I=t=>isNaN(t)?!1:(t+"").indexOf(".")!==-1,$=(t,e,i,n)=>{const a=(e==null?void 0:e.toString().indexOf("."))!==-1?(e==null?void 0:e.toString().length)-(e==null?void 0:e.toString().indexOf("."))-1:0;return typeof t=="number"?I(t)?l(n?t.toFixed(n).toString():t.toFixed(a).toString(),i):l(n?t.toFixed(n).toString():t.toString(),i):t},d=Math.pow,v=Math.sqrt;var A={easeOutCubic:function(t){return 1-d(1-t,3)},linear:t=>t,easeOutExpo:function(t){return t===1?1:1-d(2,-10*t)},easeInOutExpo:function(t){return t===0?0:t===1?1:t<.5?d(2,20*t-10)/2:(2-d(2,-20*t+10))/2},easeInExpo:function(t){return t===0?0:d(2,10*t-10)},easeInOutCirc:function(t){return t<.5?(1-v(1-d(2*t,2)))/2:(v(1-d(-2*t+2,2))+1)/2}};class M{constructor(e){const{from:i,to:n,duration:a,delay:h,easing:y,onStart:r,onUpdate:o,onFinish:c}=e;for(const u in i)n[u]===void 0&&(n[u]=i[u]);for(const u in n)i[u]===void 0&&(i[u]=n[u]);this.from=i,this.to=n,this.duration=a,this.delay=h,this.easing=y,this.onStart=r,this.onUpdate=o,this.onFinish=c,this.startTime=Date.now()+this.delay,this.started=!1,this.finished=!1,this.timer=null,this.keys={}}update(){if(this.time=Date.now(),!(this.time<this.startTime)&&!this.finished){if(this.elapsed===this.duration){this.finished||(this.finished=!0,this.onFinish&&this.onFinish(this.keys));return}this.elapsed=this.time-this.startTime,this.elapsed=this.elapsed>this.duration?this.duration:this.elapsed;for(const e in this.to)this.keys[e]=this.from[e]+(this.to[e]-this.from[e])*A[this.easing](this.elapsed/this.duration);this.started||(this.onStart&&this.onStart(this.keys),this.started=!0),this.onUpdate(this.keys)}}start(){this.startTime=Date.now()+this.delay;const e=()=>{this.update(),this.timer=requestAnimationFrame(e),this.finished&&(cancelAnimationFrame(this.timer),this.timer=null)};e()}stop(){cancelAnimationFrame(this.timer),this.timer=null}}function m(t,e,i){let n=t;return e&&(n+=`__${e}`),i&&(n+=`--${i}`),n}function q(t,e=!1){const i=e?`.devui-${t}`:`devui-${t}`;return{b:()=>m(i),e:r=>r?m(i,r):"",m:r=>r?m(i,"",r):"",em:(r,o)=>r&&o?m(i,r,o):""}}var J="",S=s.defineComponent({name:"DStatistic",props:x,setup(t,e){var r;const i=s.ref((r=t.valueFrom)!=null?r:t.value),n=s.ref(null),a=q("statistic"),h=(o=(u=>(u=t.valueFrom)!=null?u:0)(),c=typeof t.value=="number"?t.value:Number(t.value))=>{o!==c&&(n.value=new M({from:{value:o},to:{value:c},delay:0,duration:t.animationDuration,easing:"easeOutCubic",onUpdate:g=>{i.value=g.value},onFinish:()=>{i.value=c}}),n.value.start())},y=s.computed(()=>$(i.value,t.value,t.groupSeparator,t.precision));return s.onMounted(()=>{t.animation&&t.start&&h()}),s.watch(()=>t.start,o=>{o&&!n.value&&h()}),()=>{var o,c,u,g,F,N,O,b,T,w,k,C,D,E;return s.createVNode("div",{class:a.b()},[s.createVNode("div",{class:a.e("title")},[((c=(o=e.slots).title)==null?void 0:c.call(o))||t.title]),s.createVNode("div",{class:a.e("content")},[t.prefix||((g=(u=e.slots).prefix)==null?void 0:g.call(u))?s.createVNode("span",{class:a.e("prefix")},[((N=(F=e.slots).prefix)==null?void 0:N.call(F))||t.prefix]):null,s.createVNode("span",{class:a.e("value")},[y.value]),t.suffix||((b=(O=e.slots).suffix)==null?void 0:b.call(O))?s.createVNode("span",{class:a.e("suffix")},[((w=(T=e.slots).suffix)==null?void 0:w.call(T))||t.suffix]):null]),t.extra||((C=(k=e.slots).extra)==null?void 0:C.call(k))?s.createVNode("div",{class:a.e("extra")},[s.createTextVNode(" "),((E=(D=e.slots).extra)==null?void 0:E.call(D))||t.extra]):null])}}}),B={title:"Statistic \u7EDF\u8BA1\u6570\u503C",category:"\u6570\u636E\u5C55\u793A",status:"100%",install(t){t.component(S.name,S)}};f.Statistic=S,f.default=B,f.statisticProps=x,Object.defineProperties(f,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});