Repository navigation
Expand file tree
/
Copy pathanimatedCounter-_tSwH-SZ.js
More file actions
3 lines (3 loc) · 6.38 KB
/
Copy pathanimatedCounter-_tSwH-SZ.js
File metadata and controls
3 lines (3 loc) · 6.38 KB
1
2
3
//# allFunctionsCalledOnLoad
import{n as e}from"./schedulers-CsiwybLM.js";import{t}from"./liteMode-C33MNtex.js";import{t as n}from"./sequentialDom-aIhgXZb5.js";import{t as r}from"./middleware-Dc03_CQ8.js";import{d as i,u as a}from"./animations-DigaVfT2.js";var o,s=class e{constructor(t){this.rows={},this.duration=t?.duration??e.DEFAULT_DURATION,this.container=document.createElement(`div`),this.container.className=e.BASE_CLASS}getRow(t,n=!1){if(this.rows[t])return this.rows[t].element;let i=document.createElement(`div`),a=!Object.keys(this.rows).length&&!n;return i.className=e.BASE_CLASS+`-row`+(a?``:` is-hiding hide`),this.rows[t]={element:i,middleware:i.middlewareHelper=r(),new:!0},this.container.append(i),i}setRow(e){this.clearTimeout&&clearTimeout(this.clearTimeout),this.destroy();let t=this.getRow(e);return delete this.rows[e].new,t}clearRow(e){this.rows[e]&&(this.rows[e].element.remove(),this.rows[e].middleware.destroy(),delete this.rows[e])}clearRows(e){this.clearTimeout&&clearTimeout(this.clearTimeout),this.clearTimeout=window.setTimeout(()=>{for(let t in this.rows)t!==``+e&&this.clearRow(t)},this.duration)}setNewRow(e){let t=this.rows[e];t.new&&(t.element.classList.remove(`is-hiding`,`hide`),delete t.new),this.clearRows(e)}animate(e,t,n=+e>+t,r=!1){if(e===t||!this.rows[t]&&!r)return this.setNewRow(e);this.prepare(e,t,n)&&this.rows[e].element.offsetLeft,this.flip(e,t)}prepare(e,t,n){this.clearTimeout&&clearTimeout(this.clearTimeout);let r=this.rows[e],i=this.rows[t],a=[`from-top`,`from-bottom`];return n||a.reverse(),r.element.classList.add(a[0]),r.element.classList.remove(a[1]),i&&(i.element.classList.add(a[1]),i.element.classList.remove(a[0])),r.new?(r.element.classList.remove(`hide`),!0):!1}flip(e,t){let n=this.rows[e];delete n.new,n.element.classList.remove(`is-hiding`),this.rows[t]?.element.classList.add(`is-hiding`),this.clearRows(e)}destroy(){for(let e in this.rows)this.clearRow(e)}};o=s,o.BASE_CLASS=`animated-super`,o.DEFAULT_DURATION=200;var c;function l(e,t){e.textContent!==t&&(e.textContent=t)}var u=class e{constructor(t){if(this.decimals=[],this.previousNumber=0,this.previousText=`0`,this.reverse=t.reverse,this.duration=t.duration??s.DEFAULT_DURATION,this.container=document.createElement(`div`),this.container.className=e.BASE_CLASS,this.calculateWidth=t.calculateWidth,this.calculateWidth&&this.container.classList.add(`animated-counter-dynamic-width`),t.prefix){let n=document.createElement(`div`);n.className=e.BASE_CLASS+`-decimal-prefix`,n.innerText=this.prefix=t.prefix,this.container.append(n),this.prefixContainer=n}}getDecimal(t){if(this.decimals[t])return this.decimals[t];let n=document.createElement(`div`);n.className=e.BASE_CLASS+`-decimal`;let r=document.createElement(`div`);r.className=e.BASE_CLASS+`-decimal-placeholder`;let i=new s({duration:this.duration});return i.container.className=e.BASE_CLASS+`-decimal-wrapper`,n.append(r,i.container),this.container.append(n),this.decimals[t]={container:n,placeholder:r,animatedSuper:i}}clear(e){this.clearTimeout&&clearTimeout(this.clearTimeout),!(e>=this.decimals.length)&&(this.clearTimeout=window.setTimeout(()=>{this.decimals.splice(e,this.decimals.length-e).forEach(e=>{e.container.remove()})},this.duration))}setCount(e,t){this.setText(``+e,e-this.previousNumber,t),this.previousNumber=e}setText(e,t,n){this.prepare(e,t)&&this.container.offsetLeft,this.commit(n)}putText(e){this.clearTimeout&&clearTimeout(this.clearTimeout),this.prepared=void 0;let t=Array.from(e);t.forEach((e,t)=>{let n=this.getDecimal(t);n.animatedSuper.setRow(e).textContent=n.placeholder.textContent=e}),this.decimals.splice(t.length).forEach(e=>{e.animatedSuper.destroy(),e.container.remove()}),this.previousText=e}prepare(t,n){this.clearTimeout&&clearTimeout(this.clearTimeout);let r=this.reverse?n<0:n>0,i=Array.from(this.previousText),a=Array.from(t),o=[],s=!1,c=(e,t,n)=>{t===n?o.push(()=>e.setNewRow(t)):(s=e.prepare(t,n,r)||s,o.push(()=>e.flip(t,n)))};return a.forEach((t,n)=>{let{animatedSuper:r}=this.getDecimal(n);l(r.getRow(t,!0),t),c(r,t,i[n]??e.EMPTY_INDEX)}),this.decimals.slice(a.length).forEach(({animatedSuper:t,placeholder:n})=>{t.getRow(e.EMPTY_INDEX,!0),c(t,e.EMPTY_INDEX,n.textContent)}),this.prepared={text:t,flips:o},s}commit(e){let{text:t,flips:n}=this.prepared;this.prepared=void 0;let r=Array.from(t);r.forEach((e,t)=>{l(this.decimals[t].placeholder,e)}),n.forEach(e=>e()),this.clear(r.length),this.previousText=t,this.updateWidth(e)}measureWidth(){let{calculateWidth:e}=this;if(typeof e!=`boolean`)return e((this.prefix||``)+this.previousText);let t=this.prefixContainer?i(this.prefixContainer):0;for(let e=0,n=Array.from(this.previousText).length;e<n;++e)t+=i(this.decimals[e].container);return t}setWidth(e){this.container.style.setProperty(`--width`,e+`px`)}updateWidth(e){if(!this.calculateWidth)return;if(e){this.setWidth(this.measureWidth());return}let t;n.measure(()=>t=this.measureWidth()),n.mutate(()=>this.setWidth(t))}destroy(){this.clearTimeout&&clearTimeout(this.clearTimeout),this.decimals.forEach(e=>{e.animatedSuper.destroy()})}};c=u,c.EMPTY_INDEX=-1,c.BASE_CLASS=`animated-counter`;var d=new WeakMap,f=new Set;function p(e,t){clearTimeout(t.timeout),t.counter.destroy(),d.delete(e),e.classList.remove(`is-rolling`),e.textContent=t.text}function m(e){let t=([e,t,n])=>d.get(e)===t&&t.version===n,r;n.measure(()=>{e=e.filter(t),r=e.map(([e,t])=>{let n=a(e);return{inSight:n,width:n&&t.isSeeded?t.counter.measureWidth():void 0}})}),n.mutate(()=>e.forEach((e,n)=>{let[i,a]=e;if(!t(e))return;let{inSight:o,width:s}=r[n];o?(s!==void 0&&(a.counter.setWidth(s),a.isSeeded=!1),a.counter.commit(),a.timeout=window.setTimeout(()=>p(i,a),a.counter.duration+100)):p(i,a)}))}function h({element:n,text:r,direction:i,animate:a}){let o=d.get(n);if(r===(o?o.text:n.textContent))return;if(!a||document.hidden||!n.isConnected||!t.isAvailable(`motion`)){o?(o.text=r,p(n,o)):n.textContent=r;return}if(o)clearTimeout(o.timeout);else{let e=new u({reverse:!0,calculateWidth:!0});e.container.setAttribute(`aria-hidden`,`true`),e.putText(n.textContent);let t=document.createElement(`span`);t.className=`sr-only`,n.replaceChildren(e.container,t),n.classList.add(`is-rolling`),d.set(n,o={counter:e,label:t,text:r,version:0,isSeeded:!0,timeout:0})}o.counter.prepare(r,i),o.label.textContent=o.text=r,++o.version;let s=!!f.size;f.add(n),!s&&e(()=>{let t=[];f.forEach(e=>{let n=d.get(e);n&&t.push([e,n,n.version])}),f=new Set,e(()=>m(t))})}export{h as n,s as r,u as t};
//# sourceMappingURL=animatedCounter-_tSwH-SZ.js.map