File size: 2,764 Bytes
a87c29e | 1 | import{B as e,C as t,H as n,St as r,T as i,a,b as o,bt as s,et as c,g as l,gt as u,lt as d,m as f,y as p,yt as m}from"../modules/shiki-CRDHBXw7.js";import{U as h,t as g,tt as _}from"../useNav-0H1CZeft.js";import{F as v}from"../modules/vue-jGGq3ahv.js";import{o as y}from"../index-BRVUm3_6.js";var b={class:`relative flex gap-px`},x=i({__name:`CurrentProgressBar`,props:{clicksContext:{},current:{}},setup(i){let u=i,d=g(),h=l(()=>u.clicksContext??d.clicksContext.value),_=l(()=>u.current??d.currentSlideNo.value),{total:v}=d;return(i,l)=>(e(),o(`div`,b,[(e(!0),o(f,null,n(m(v)-1,n=>(e(),o(`div`,{key:n,class:s([`border-x border-b border-main h-4px transition-all`,n<_.value?`bg-primary border-primary`:``]),style:r({width:`${1/(m(v)-1)*100}%`})},[t(a,{name:`fade`},{default:c(()=>[n===_.value?(e(),o(`div`,{key:0,class:`h-full bg-primary op75 transition-all`,style:r({width:`${h.value.total===0?0:h.value.current/(h.value.total+1)*100}%`})},null,4)):p(`v-if`,!0)]),_:2},1024)],6))),128))]))}});function S(){let e=l(()=>_.timer||`stopwatch`),t=l(()=>h(_.duration).seconds),n=v(100,{controls:!0}),r=u(y,`timer`),i=l(()=>r.value?.status),a=l(()=>(n.counter.value,r.value.status===`stopped`||!r.value.startedAt?0:r.value.status===`paused`?r.value.pausedAt-r.value.startedAt:Date.now()-r.value.startedAt)),o=l(()=>a.value/1e3),s=l(()=>o.value/t.value*100),c=l(()=>{if(e.value===`stopwatch`&&(r.value.status===`stopped`||!r.value.startedAt))return{h:``,m:`-`,s:`--`,ms:`-`};let n=e.value===`countdown`?t.value*1e3-a.value:a.value,i=Math.floor(n/1e3/60/60).toString();i===`0`&&(i=``);let o=Math.floor(n/1e3/60%60).toString();i&&(o=o.padStart(2,`0`));let s=Math.floor(n/1e3%60).toString().padStart(2,`0`),c=Math.floor(n%1e3/100).toString();return{h:i,m:o,s,ms:c}});function d(){n.pause(),r.value={status:`stopped`,slides:{},startedAt:0,pausedAt:0}}function f(){r.value&&(r.value?.status===`stopped`?(r.value.status=`running`,r.value.startedAt=Date.now()):r.value.status===`paused`&&(r.value.status=`running`,r.value.startedAt=Date.now()-(r.value.pausedAt-r.value.startedAt)),n.resume())}function p(){r.value.status=`paused`,r.value.pausedAt=Date.now(),n.pause()}function m(){r.value.status===`running`?p():f()}return{state:r,status:i,timer:c,reset:d,toggle:m,resume:f,pause:p,passed:o,percentage:s,duration:t,mode:e}}var C={class:`border-b mt-px border-main relative flex h-4px`},w=i({__name:`TimerBar`,setup(t){let n=d(S()),i=l(()=>n.status===`stopped`?`op50`:n.status===`paused`?`bg-blue`:n.percentage>100?`bg-red`:n.percentage>80?`bg-yellow`:`bg-green`);return(t,a)=>(e(),o(`div`,C,[n.status===`stopped`?p(`v-if`,!0):(e(),o(`div`,{key:0,class:s([`h-4px`,i.value]),style:r({width:`${n.percentage}%`})},null,6)),p(` {{ timesplits }} `)]))}});export{S as n,x as r,w as t}; |