mirror of
https://github.com/pure-admin/vue-pure-admin.git
synced 2025-06-08 01:17:23 +08:00
5 lines
3.7 KiB
JavaScript
5 lines
3.7 KiB
JavaScript
import{p as n}from"./propTypes.js";import{d as S,an as D,G as w,X as z,ac as A,a as B,j as a,F as _,u as m,r as x,at as k,b as R,i as r,S as v,c as q,f as E,w as T,g as F,h as g,n as $,y as G}from"./index.js";const M={startVal:n.number.def(0),endVal:n.number.def(2020),duration:n.number.def(1300),autoplay:n.bool.def(!0),decimals:{type:Number,required:!1,default:0,validator(t){return t>=0}},color:n.string.def(),fontSize:n.string.def(),decimal:n.string.def("."),separator:n.string.def(","),prefix:n.string.def(""),suffix:n.string.def(""),useEasing:n.bool.def(!0),easingFn:{type:Function,default(t,u,e,i){return e*(-Math.pow(2,-10*t/i)+1)*1024/1023+u}}},L=S({name:"ReNormalCountTo",props:M,emits:["mounted","callback"],setup(t,{emit:u}){const e=D({localStartVal:t.startVal,displayValue:p(t.startVal),printVal:null,paused:!1,localDuration:t.duration,startTime:null,timestamp:null,remaining:null,rAF:null,color:null,fontSize:"16px"}),i=w(()=>t.startVal>t.endVal);z([()=>t.startVal,()=>t.endVal],()=>{t.autoplay&&c()});function c(){const{startVal:o,duration:V,color:f,fontSize:l}=t;e.localStartVal=o,e.startTime=null,e.localDuration=V,e.paused=!1,e.color=f,e.fontSize=l,e.rAF=requestAnimationFrame(d)}function d(o){const{useEasing:V,easingFn:f,endVal:l}=t;e.startTime||(e.startTime=o),e.timestamp=o;const s=o-e.startTime;e.remaining=e.localDuration-s,V?m(i)?e.printVal=e.localStartVal-f(s,0,e.localStartVal-l,e.localDuration):e.printVal=f(s,e.localStartVal,l-e.localStartVal,e.localDuration):m(i)?e.printVal=e.localStartVal-(e.localStartVal-l)*(s/e.localDuration):e.printVal=e.localStartVal+(l-e.localStartVal)*(s/e.localDuration),m(i)?e.printVal=e.printVal<l?l:e.printVal:e.printVal=e.printVal>l?l:e.printVal,e.displayValue=p(e.printVal),s<e.localDuration?e.rAF=requestAnimationFrame(d):u("callback")}function p(o){const{decimals:V,decimal:f,separator:l,suffix:s,prefix:C}=t;o=Number(o).toFixed(V),o+="";const y=o.split(".");let b=y[0];const N=y.length>1?f+y[1]:"",h=/(\d+)(\d{3})/;if(l&&!A(l))for(;h.test(b);)b=b.replace(h,"$1"+l+"$2");return C+b+N+s}return B(()=>{t.autoplay&&c(),u("mounted")}),()=>a(_,null,[a("span",{style:{color:t.color,fontSize:t.fontSize}},[e.displayValue])])}});const P={delay:n.number.def(1),blur:n.number.def(2),i:{type:Number,required:!1,default:0,validator(t){return t<10&&t>=0&&Number.isInteger(t)}}},U=S({name:"ReboundCountTo",props:P,setup(t){const u=x(),e=x(null);return k(()=>{const i=navigator.userAgent.toLowerCase(),c=p=>p.test(i);c(/safari/g)&&!c(/chrome/g)&&(e.value=setTimeout(()=>{u.value.setAttribute("style",`
|
|
animation: none;
|
|
transform: translateY(calc(var(--i) * -9.09%))
|
|
`)},t.delay*1e3))}),R(()=>{clearTimeout(m(e))}),()=>a(_,null,[a("div",{class:"scroll-num",style:{"--i":t.i,"--delay":t.delay}},[a("ul",{ref:"ulRef",style:{fontSize:"32px"}},[a("li",null,[r("0")]),a("li",null,[r("1")]),a("li",null,[r("2")]),a("li",null,[r("3")]),a("li",null,[r("4")]),a("li",null,[r("5")]),a("li",null,[r("6")]),a("li",null,[r("7")]),a("li",null,[r("8")]),a("li",null,[r("9")]),a("li",null,[r("0")])]),a("svg",{width:"0",height:"0"},[a("filter",{id:"blur"},[a("feGaussianBlur",{in:"SourceGraphic",stdDeviation:`0 ${t.blur}`},null)])])])])}}),j=v(L),I=v(U),X=g("div",{class:"card-header"},[g("span",{class:"font-medium"},"数字动画组件")],-1),Y={class:"flex items-center"},H={class:"flex ml-8"},O=S({name:"CountTo",__name:"index",setup(t){return(u,e)=>{const i=q("el-card");return F(),E(i,{shadow:"never"},{header:T(()=>[X]),default:T(()=>[g("div",Y,[a(m(j),{prefix:"$",duration:1e3,color:"#409EFF",fontSize:"2em",startVal:1,endVal:1e3}),g("ul",H,[(F(),$(_,null,G([1,6,6,6],(c,d)=>a(m(I),{key:d,i:c,blur:d,delay:d+1},null,8,["i","blur","delay"])),64))])])]),_:1})}}});export{O as default};
|