number-flow 0.3.3 → 0.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +20 -10
- package/dist/index.js +1 -1
- package/dist/index.mjs +165 -161
- package/dist/ssr.d.ts +6 -0
- package/dist/styles.d.ts +0 -9
- package/dist/util/dom.d.ts +2 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { type PartitionedParts } from './formatter';
|
|
2
2
|
import { ServerSafeHTMLElement } from './ssr';
|
|
3
|
-
export {
|
|
3
|
+
export { define } from './util/dom';
|
|
4
|
+
export { prefersReducedMotion } from './styles';
|
|
5
|
+
export { render, type RenderProps } from './ssr';
|
|
4
6
|
export * from './formatter';
|
|
5
7
|
export declare const canAnimate: boolean;
|
|
6
8
|
type RawTrend = boolean | 'increasing' | 'decreasing';
|
|
@@ -10,23 +12,31 @@ declare enum Trend {
|
|
|
10
12
|
DOWN = -1,
|
|
11
13
|
NONE = 0
|
|
12
14
|
}
|
|
13
|
-
export
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
export interface Props {
|
|
16
|
+
transformTiming: EffectTiming;
|
|
17
|
+
spinTiming: EffectTiming | undefined;
|
|
18
|
+
opacityTiming: EffectTiming;
|
|
19
|
+
animated: boolean;
|
|
20
|
+
respectMotionPreference: boolean;
|
|
21
|
+
trend: RawTrend;
|
|
22
|
+
continuous: boolean;
|
|
23
|
+
}
|
|
24
|
+
export declare class NumberFlowLite extends ServerSafeHTMLElement implements Props {
|
|
16
25
|
#private;
|
|
17
|
-
static
|
|
26
|
+
static defaultProps: Props;
|
|
18
27
|
transformTiming: EffectTiming;
|
|
19
|
-
spinTiming
|
|
28
|
+
spinTiming: EffectTiming | undefined;
|
|
20
29
|
opacityTiming: EffectTiming;
|
|
21
|
-
manual: boolean;
|
|
22
30
|
respectMotionPreference: boolean;
|
|
23
31
|
trend: RawTrend;
|
|
24
32
|
continuous: boolean;
|
|
25
|
-
get
|
|
33
|
+
get animated(): boolean;
|
|
34
|
+
set animated(val: boolean);
|
|
26
35
|
get computedTrend(): Trend | undefined;
|
|
36
|
+
get startingPlace(): number | null | undefined;
|
|
37
|
+
get computedAnimated(): boolean;
|
|
38
|
+
manual: boolean;
|
|
27
39
|
set parts(parts: PartitionedParts | undefined);
|
|
28
40
|
willUpdate(): void;
|
|
29
41
|
didUpdate(): void;
|
|
30
|
-
get animated(): boolean;
|
|
31
|
-
set animated(val: boolean);
|
|
32
42
|
}
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function n(a,t,e,i){if(e==="a"&&!i)throw new TypeError("Private accessor was defined without a getter");if(typeof t=="function"?a!==t||!i:!t.has(a))throw new TypeError("Cannot read private member from an object whose class did not declare it");return e==="m"?i:e==="a"?i.call(a):i?i.value:t.get(a)}function h(a,t,e,i,s){if(i==="m")throw new TypeError("Private method is not writable");if(i==="a"&&!s)throw new TypeError("Private accessor was defined without a setter");if(typeof t=="function"?a!==t||!s:!t.has(a))throw new TypeError("Cannot write private member to an object whose class did not declare it");return i==="a"?s.call(a,e):s?s.value=e:t.set(a,e),e}const w=(a,t,e)=>{const i=document.createElement(a),[s,r]=Array.isArray(t)?[void 0,t]:[t,e];return s&&Object.assign(i,s),r==null||r.forEach(l=>i.appendChild(l)),i},mt=(a,t)=>{var e;return t==="left"?a.offsetLeft:(((e=a.offsetParent instanceof HTMLElement?a.offsetParent:null)==null?void 0:e.offsetWidth)??0)-a.offsetWidth-a.offsetLeft};function gt(a,t,{reverse:e=!1}={}){const i=a.length;for(let s=e?i-1:0;e?s>=0:s<i;e?s--:s++)t(a[s],s)}function wt(a,t){const e=t.formatToParts(a),i=[],s=[],r=[],l=[],o={},p=c=>{const f=o[c]==null?o[c]=0:++o[c];return`${c}:${f}`};let u="",m=!1,N=!1;for(const c of e){u+=c.value;const f=c.type==="minusSign"||c.type==="plusSign"?"sign":c.type;f==="integer"?(m=!0,s.push(...c.value.split("").map(J=>({type:f,value:parseInt(J)})))):f==="group"?s.push({type:f,value:c.value}):f==="decimal"?(N=!0,r.push({type:f,value:c.value,key:p(f)})):f==="fraction"?r.push(...c.value.split("").map(J=>({type:f,value:parseInt(J),key:p(f),place:-1-o[f]}))):(m||N?l:i).push({type:f,value:c.value,key:p(f)})}const d=[];for(let c=s.length-1;c>=0;c--){const f=s[c];d.unshift(f.type==="integer"?{...f,key:p(f.type),place:o[f.type]}:{...f,key:p(f.type)})}return{pre:i,integer:d,fraction:r,post:l,formatted:u,value:typeof a=="string"?parseFloat(a):a}}const T=typeof window<"u",yt=T?HTMLElement:class{},vt=String.raw,_t=T&&typeof CSS<"u"&&CSS.supports("animation-timing-function","linear(1,2)"),bt=T&&typeof CSS<"u"&&CSS.supports("line-height","mod(1,1)"),O=T?matchMedia("(prefers-reduced-motion: reduce)"):null,Z="--_number-flow-d-opacity",it="--_number-flow-d-width",q="--_number-flow-dx",st="--_number-flow-d",St=(()=>{try{return CSS.registerProperty({name:Z,syntax:"<number>",inherits:!1,initialValue:"0"}),CSS.registerProperty({name:q,syntax:"<length>",inherits:!0,initialValue:"0px"}),CSS.registerProperty({name:it,syntax:"<number>",inherits:!1,initialValue:"0"}),CSS.registerProperty({name:st,syntax:"<number>",inherits:!0,initialValue:"0"}),!0}catch{return!1}})(),rt="var(--number-flow-char-height, 1em)",g="var(--number-flow-mask-height, 0.25em)",C=`calc(${g} / 2)`,Q="var(--number-flow-mask-width, 0.5em)",S=`calc(${Q} / var(--scale-x))`,A="#000 0, transparent 71%",lt="span",kt=({willChange:a})=>({fontKerning:"none",display:"inline-block",lineHeight:rt,padding:`${g} 0`,willChange:a?"transform":void 0}),nt=vt`:host{display:inline-flex;align-items:baseline;direction:ltr;white-space:nowrap;position:relative;line-height:${rt} !important;isolation:isolate;}::slotted(${lt}){position:absolute;left:0;top:0;color:transparent !important;z-index:-5;}:host > .number,:host > .section{pointer-events:none;user-select:none;}.number,.number__inner{display:inline-flex;align-items:baseline;transform-origin:left top;}:host([data-will-change]) .number,:host([data-will-change]) .number__inner{will-change:transform;}.number{--scale-x:calc(1 + var(${it}) / var(--width));transform:translateX(var(${q})) scaleX(var(--scale-x));margin:0 calc(-1 * ${Q});position:relative;z-index:-1;overflow:clip;-webkit-mask-image:linear-gradient( to right,transparent 0,#000 ${S},#000 calc(100% - ${S}),transparent ),linear-gradient( to bottom,transparent 0,#000 ${g},#000 calc(100% - ${g}),transparent 100% ),radial-gradient(at bottom right,${A}),radial-gradient(at bottom left,${A}),radial-gradient(at top left,${A}),radial-gradient(at top right,${A});-webkit-mask-size:100% calc(100% - ${g} * 2),calc(100% - ${S} * 2) 100%,${S} ${g},${S} ${g},${S} ${g},${S} ${g};-webkit-mask-position:center,center,top left,top right,bottom right,bottom left;-webkit-mask-repeat:no-repeat;}.number__inner{padding:0 ${Q};transform:scaleX(calc(1 / var(--scale-x))) translateX(calc(-1 * var(${q})));}.section{display:inline-flex;align-items:baseline;padding-bottom:${C};padding-top:${C};position:relative;isolation:isolate;}.section::after{content:'\200b';display:block;padding:${C} 0;}:host([data-will-change]) .section{will-change:transform;}.section--justify-left{transform-origin:center left;}.section--justify-right{transform-origin:center right;}.section__exiting{position:absolute !important;z-index:-1;}.digit{display:block;position:relative;--c:var(--current) + var(${st});}:host([data-will-change]) .digit,:host([data-will-change]) .digit__num{will-change:transform;}.digit__num{display:block;padding:${C} 0;--offset-raw:mod(10 + var(--n) - mod(var(--c),10),10);--offset:calc(var(--offset-raw) - 10 * round(down,var(--offset-raw) / 5,1));--y:clamp(-100%,var(--offset) * 100%,100%);transform:translateY(var(--y));}.digit__num:not(.is-current){position:absolute;top:0;left:50%;transform:translateX(-50%) translateY(var(--y));}.digit:not(.is-spinning) .digit__num:not(.is-current){display:none;}.symbol{display:inline-flex;align-items:baseline;position:relative;isolation:isolate;padding:${C} 0;}:host([data-will-change]) .symbol{will-change:transform;}.symbol__value{display:block;white-space:pre;}.symbol__exiting{position:absolute;z-index:-1;}.section--justify-left .symbol__exiting{left:0;}.section--justify-right .symbol__exiting{right:0;}.animate-presence{opacity:calc(1 + var(${Z}));}`,xt=(a,t)=>a!=null&&t==null?a:a==null&&t!=null?t:a!=null&&t!=null?Math.max(a,t):null;var D,B,k,x,$,y,P,U,W,H,E,M,V,X,z,L,I,j,R,v,G,tt,_,K,Y;const ht=bt&&_t&&St;var b;(function(a){a[a.UP=1]="UP",a[a.DOWN=-1]="DOWN",a[a.NONE=0]="NONE"})(b||(b={}));const ct={duration:450,easing:"ease-out"},ft={duration:900,easing:"linear(0,.005,.019,.039,.066,.096,.129,.165,.202,.24,.278,.316,.354,.39,.426,.461,.494,.526,.557,.586,.614,.64,.665,.689,.711,.731,.751,.769,.786,.802,.817,.831,.844,.856,.867,.877,.887,.896,.904,.912,.919,.925,.931,.937,.942,.947,.951,.955,.959,.962,.965,.968,.971,.973,.976,.978,.98,.981,.983,.984,.986,.987,.988,.989,.99,.991,.992,.992,.993,.994,.994,.995,.995,.996,.996,.9963,.9967,.9969,.9972,.9975,.9977,.9979,.9981,.9982,.9984,.9985,.9987,.9988,.9989,1)"};let F;class $t extends yt{constructor(){super(...arguments),this.transformTiming=ft,this.opacityTiming=ct,D.set(this,!0),this.manual=!1,this.respectMotionPreference=!0,B.set(this,!1),k.set(this,void 0),x.set(this,void 0),$.set(this,void 0),this.trend=!0,y.set(this,void 0),this.continuous=!1,P.set(this,void 0),U.set(this,void 0),W.set(this,void 0)}static define(){T&&customElements.define("number-flow",this)}get startingPlace(){return n(this,P,"f")}get computedTrend(){return n(this,y,"f")}set parts(t){if(t==null)return;const{pre:e,integer:i,fraction:s,post:r,value:l}=t;if(n(this,B,"f")){const o=n(this,U,"f");if(h(this,U,t,"f"),this.trend===!0?h(this,y,Math.sign(l-o.value),"f"):this.trend==="increasing"?h(this,y,b.UP,"f"):this.trend==="decreasing"?h(this,y,b.DOWN,"f"):h(this,y,b.NONE,"f"),h(this,P,void 0,"f"),n(this,y,"f")!==b.NONE&&this.continuous){const p=o.integer.concat(o.fraction).filter(d=>d.type==="integer"||d.type==="fraction"),u=t.integer.concat(t.fraction).filter(d=>d.type==="integer"||d.type==="fraction"),m=p.find(d=>!u.find(c=>c.place===d.place&&c.value===d.value)),N=u.find(d=>!p.find(c=>d.place===c.place&&d.value===c.value));h(this,P,xt(m==null?void 0:m.place,N==null?void 0:N.place),"f")}this.manual||this.willUpdate(),n(this,k,"f").update(e),n(this,x,"f").update({integer:i,fraction:s}),n(this,$,"f").update(r),this.manual||this.didUpdate()}else{if(h(this,U,t,"f"),this.attachShadow({mode:"open"}),typeof CSSStyleSheet<"u"&&this.shadowRoot.adoptedStyleSheets)F||(F=new CSSStyleSheet,F.replaceSync(nt)),this.shadowRoot.adoptedStyleSheets=[F];else{const o=document.createElement("style");o.textContent=nt,this.shadowRoot.appendChild(o)}this.shadowRoot.appendChild(w("slot")),h(this,k,new ot(this,e,{inert:!0,ariaHidden:"true",justify:"right"}),"f"),this.shadowRoot.appendChild(n(this,k,"f").el),h(this,x,new Et(this,i,s,{inert:!0,ariaHidden:"true"}),"f"),this.shadowRoot.appendChild(n(this,x,"f").el),h(this,$,new ot(this,r,{inert:!0,ariaHidden:"true",justify:"left"}),"f"),this.shadowRoot.appendChild(n(this,$,"f").el)}h(this,B,!0,"f")}willUpdate(){this.animated&&(n(this,k,"f").willUpdate(),n(this,x,"f").willUpdate(),n(this,$,"f").willUpdate())}didUpdate(){if(!this.animated)return;n(this,W,"f")?n(this,W,"f").abort():this.dispatchEvent(new Event("animationsstart")),n(this,k,"f").didUpdate(),n(this,x,"f").didUpdate(),n(this,$,"f").didUpdate();const t=new AbortController;Promise.all(this.shadowRoot.getAnimations().map(e=>e.finished)).then(()=>{t.signal.aborted||(this.dispatchEvent(new Event("animationsfinish")),h(this,W,void 0,"f"))}),h(this,W,t,"f")}get animated(){return ht&&n(this,D,"f")&&(!this.respectMotionPreference||!(O!=null&&O.matches))}set animated(t){var e;this.animated!==t&&(h(this,D,t,"f"),(e=this.shadowRoot)==null||e.getAnimations().forEach(i=>i.finish()))}}D=new WeakMap,B=new WeakMap,k=new WeakMap,x=new WeakMap,$=new WeakMap,y=new WeakMap,P=new WeakMap,U=new WeakMap,W=new WeakMap;class Et{constructor(t,e,i,{className:s,...r}={}){this.flow=t,H.set(this,void 0),E.set(this,void 0),M.set(this,void 0),V.set(this,void 0),X.set(this,void 0),h(this,E,new at(t,e,{justify:"right"}),"f"),h(this,M,new at(t,i,{justify:"left"}),"f"),h(this,H,w("span",{className:"number__inner"},[n(this,E,"f").el,n(this,M,"f").el]),"f"),this.el=w("span",{...r,className:`number ${s??""}`},[n(this,H,"f")])}willUpdate(){h(this,V,this.el.offsetWidth,"f"),h(this,X,this.el.getBoundingClientRect().left,"f"),n(this,E,"f").willUpdate(),n(this,M,"f").willUpdate()}update({integer:t,fraction:e}){n(this,E,"f").update(t),n(this,M,"f").update(e)}didUpdate(){const t=this.el.getBoundingClientRect();n(this,E,"f").didUpdate(),n(this,M,"f").didUpdate();const e=n(this,X,"f")-t.left,i=this.el.offsetWidth,s=n(this,V,"f")-i;this.el.style.setProperty("--width",String(i)),this.el.animate({[q]:[`${e}px`,"0px"],[it]:[s,0]},{...this.flow.transformTiming,composite:"accumulate"})}}H=new WeakMap,E=new WeakMap,M=new WeakMap,V=new WeakMap,X=new WeakMap;class dt{constructor(t,e,{justify:i,className:s,...r},l){this.flow=t,this.children=new Map,this.onCharRemove=p=>()=>{this.children.delete(p)},z.set(this,void 0),this.justify=i;const o=e.map(p=>this.addChar(p).el);this.el=w("span",{...r,className:`section section--justify-${i} ${s??""}`},l?l(o):o)}addChar(t,{startDigitsAtZero:e=!1,...i}={}){const s=t.type==="integer"||t.type==="fraction"?new ut(this,t.type,e?0:t.value,t.place,{...i,onRemove:this.onCharRemove(t.key)}):new Mt(this,t.type,t.value,{...i,onRemove:this.onCharRemove(t.key)});return this.children.set(t.key,s),s}unpop(t){t.el.classList.remove("section__exiting"),t.el.style[this.justify]=""}pop(t){t.forEach(e=>{e.el.style[this.justify]=`${mt(e.el,this.justify)}px`}),t.forEach(e=>{e.el.classList.add("section__exiting"),e.present=!1})}addNewAndUpdateExisting(t){const e=new Map,i=new Map,s=this.justify==="left",r=s?"prepend":"append";if(gt(t,l=>{let o;this.children.has(l.key)?(o=this.children.get(l.key),i.set(l,o),this.unpop(o),o.present=!0):(o=this.addChar(l,{startDigitsAtZero:!0,animateIn:!0}),e.set(l,o)),this.el[r](o.el)},{reverse:s}),this.flow.animated){const l=this.el.getBoundingClientRect();e.forEach(o=>{o.willUpdate(l)})}e.forEach((l,o)=>{l.update(o.value)}),i.forEach((l,o)=>{l.update(o.value)})}willUpdate(){const t=this.el.getBoundingClientRect();h(this,z,t[this.justify],"f"),this.children.forEach(e=>e.willUpdate(t))}didUpdate(){const t=this.el.getBoundingClientRect();this.children.forEach(s=>s.didUpdate(t));const e=t[this.justify],i=n(this,z,"f")-e;this.el.animate({transform:[`translateX(${i}px)`,"none"]},{...this.flow.transformTiming,composite:"accumulate"})}}z=new WeakMap;class at extends dt{update(t){const e=new Map;this.children.forEach((i,s)=>{t.find(r=>r.key===s)||e.set(s,i),this.unpop(i)}),this.addNewAndUpdateExisting(t),e.forEach(i=>{i instanceof ut&&i.update(0)}),this.pop(e)}}class ot extends dt{update(t){const e=new Map;this.children.forEach((i,s)=>{t.find(r=>r.key===s)||e.set(s,i)}),this.pop(e),this.addNewAndUpdateExisting(t)}}class et{constructor(t,e,{onRemove:i,animateIn:s=!1}={}){this.flow=t,this.el=e,L.set(this,!0),I.set(this,void 0),j.set(this,()=>{var r;this.el.remove(),(r=n(this,I,"f"))==null||r.call(this)}),this.el.classList.add("animate-presence"),this.flow.animated&&s&&this.el.animate({[Z]:[-.9999,0]},{...this.flow.opacityTiming,composite:"accumulate"}),h(this,I,i,"f")}get present(){return n(this,L,"f")}set present(t){if(n(this,L,"f")!==t){if(h(this,L,t,"f"),!this.flow.animated){t||n(this,j,"f").call(this);return}this.el.style.setProperty("--_number-flow-d-opacity",t?"0":"-.999"),this.el.animate({[Z]:t?[-.9999,0]:[.999,0]},{...this.flow.opacityTiming,composite:"accumulate"}),t?this.flow.removeEventListener("animationsfinish",n(this,j,"f")):this.flow.addEventListener("animationsfinish",n(this,j,"f"),{once:!0})}}}L=new WeakMap,I=new WeakMap,j=new WeakMap;class pt extends et{constructor(t,e,i,s){super(t.flow,i,s),this.section=t,this.value=e,this.el=i}}class ut extends pt{constructor(t,e,i,s,r){const l=Array.from({length:10}).map((p,u)=>{const m=w("span",{className:`digit__num${u===i?" is-current":""}`},[document.createTextNode(String(u))]);return m.style.setProperty("--n",String(u)),m}),o=w("span",{className:"digit"},l);o.style.setProperty("--current",String(i)),super(t,i,o,r),this.place=s,R.set(this,void 0),v.set(this,void 0),G.set(this,void 0),tt.set(this,()=>{this.el.classList.remove("is-spinning")}),h(this,R,l,"f")}willUpdate(t){const e=this.el.getBoundingClientRect();h(this,v,this.value,"f");const i=e[this.section.justify]-t[this.section.justify],s=e.width/2;h(this,G,this.section.justify==="left"?i+s:i-s,"f")}update(t){var e,i;(e=n(this,R,"f")[this.value])==null||e.classList.remove("is-current"),this.el.style.setProperty("--current",String(t)),(i=n(this,R,"f")[t])==null||i.classList.add("is-current"),this.value=t}didUpdate(t){const e=this.el.getBoundingClientRect(),i=e[this.section.justify]-t[this.section.justify],s=e.width/2,r=this.section.justify==="left"?i+s:i-s;this.el.animate({transform:[`translateX(${n(this,G,"f")-r}px)`,"none"]},{...this.flow.transformTiming,composite:"accumulate"});const l=this.diff;l&&(this.el.classList.add("is-spinning"),this.el.animate({[st]:[-l,0]},{...this.flow.spinTiming??this.flow.transformTiming,composite:"accumulate"}),this.flow.addEventListener("animationsfinish",n(this,tt,"f"),{once:!0}))}get diff(){let t=this.flow.computedTrend;const e=this.value-n(this,v,"f");return!e&&this.flow.startingPlace!=null&&this.flow.startingPlace>=this.place?10*t:(t||(t=Math.sign(e)),t===b.DOWN&&this.value>n(this,v,"f")?this.value-10-n(this,v,"f"):t===b.UP&&this.value<n(this,v,"f")?10-n(this,v,"f")+this.value:e)}}R=new WeakMap,v=new WeakMap,G=new WeakMap,tt=new WeakMap;class Mt extends pt{constructor(t,e,i,s){const r=w("span",{className:"symbol__value",textContent:i});super(t,i,w("span",{className:"symbol"},[r]),s),this.type=e,_.set(this,new Map),K.set(this,void 0),Y.set(this,l=>()=>{n(this,_,"f").delete(l)}),n(this,_,"f").set(i,new et(this.flow,r,{onRemove:n(this,Y,"f").call(this,i)}))}willUpdate(t){if(this.type==="decimal")return;const e=this.el.getBoundingClientRect();h(this,K,e[this.section.justify]-t[this.section.justify],"f")}update(t){if(this.value!==t){const e=n(this,_,"f").get(this.value);if(e.present=!1,e.el.classList.add("symbol__exiting"),n(this,_,"f").has(t)){const i=n(this,_,"f").get(t);i.present=!0,i.el.classList.remove("symbol__exiting")}else{const i=w("span",{className:"symbol__value",textContent:t});this.el.appendChild(i),n(this,_,"f").set(t,new et(this.flow,i,{animateIn:!0,onRemove:n(this,Y,"f").call(this,t)}))}}this.value=t}didUpdate(t){if(this.type==="decimal")return;const i=this.el.getBoundingClientRect()[this.section.justify]-t[this.section.justify];this.el.animate({transform:[`translateX(${n(this,K,"f")-i}px)`,"none"]},{...this.flow.transformTiming,composite:"accumulate"})}}_=new WeakMap,K=new WeakMap,Y=new WeakMap;exports.NumberFlowLite=$t;exports.SlottedTag=lt;exports.canAnimate=ht;exports.defaultOpacityTiming=ct;exports.defaultTransformTiming=ft;exports.partitionParts=wt;exports.prefersReducedMotion=O;exports.slottedStyles=kt;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function s(a,t,e,i){if(e==="a"&&!i)throw new TypeError("Private accessor was defined without a getter");if(typeof t=="function"?a!==t||!i:!t.has(a))throw new TypeError("Cannot read private member from an object whose class did not declare it");return e==="m"?i:e==="a"?i.call(a):i?i.value:t.get(a)}function h(a,t,e,i,n){if(i==="m")throw new TypeError("Private method is not writable");if(i==="a"&&!n)throw new TypeError("Private accessor was defined without a setter");if(typeof t=="function"?a!==t||!n:!t.has(a))throw new TypeError("Cannot write private member to an object whose class did not declare it");return i==="a"?n.call(a,e):n?n.value=e:t.set(a,e),e}const F=typeof window<"u",w=(a,t,e)=>{const i=document.createElement(a),[n,r]=Array.isArray(t)?[void 0,t]:[t,e];return n&&Object.assign(i,n),r==null||r.forEach(l=>i.appendChild(l)),i},mt=(a,t)=>{var e;return t==="left"?a.offsetLeft:(((e=a.offsetParent instanceof HTMLElement?a.offsetParent:null)==null?void 0:e.offsetWidth)??0)-a.offsetWidth-a.offsetLeft},gt=a=>a.offsetWidth>0&&a.offsetHeight>0,wt=(a,t)=>{if(!(!F||customElements.get(a)===t))return customElements.define(a,t)};function yt(a,t,{reverse:e=!1}={}){const i=a.length;for(let n=e?i-1:0;e?n>=0:n<i;e?n--:n++)t(a[n],n)}function vt(a,t){const e=t.formatToParts(a),i=[],n=[],r=[],l=[],o={},u=c=>{const f=o[c]==null?o[c]=0:++o[c];return`${c}:${f}`};let p="",m=!1,P=!1;for(const c of e){p+=c.value;const f=c.type==="minusSign"||c.type==="plusSign"?"sign":c.type;f==="integer"?(m=!0,n.push(...c.value.split("").map(Q=>({type:f,value:parseInt(Q)})))):f==="group"?n.push({type:f,value:c.value}):f==="decimal"?(P=!0,r.push({type:f,value:c.value,key:u(f)})):f==="fraction"?r.push(...c.value.split("").map(Q=>({type:f,value:parseInt(Q),key:u(f),place:-1-o[f]}))):(m||P?l:i).push({type:f,value:c.value,key:u(f)})}const d=[];for(let c=n.length-1;c>=0;c--){const f=n[c];d.unshift(f.type==="integer"?{...f,key:u(f.type),place:o[f.type]}:{...f,key:u(f.type)})}return{pre:i,integer:d,fraction:r,post:l,formatted:p,value:typeof a=="string"?parseFloat(a):a}}const _t=String.raw,bt=F&&typeof CSS<"u"&&CSS.supports("animation-timing-function","linear(1,2)"),St=F&&typeof CSS<"u"&&CSS.supports("line-height","mod(1,1)"),B=F?matchMedia("(prefers-reduced-motion: reduce)"):null,q="--_number-flow-d-opacity",nt="--_number-flow-d-width",J="--_number-flow-dx",at="--_number-flow-d",kt=(()=>{try{return CSS.registerProperty({name:q,syntax:"<number>",inherits:!1,initialValue:"0"}),CSS.registerProperty({name:J,syntax:"<length>",inherits:!0,initialValue:"0px"}),CSS.registerProperty({name:nt,syntax:"<number>",inherits:!1,initialValue:"0"}),CSS.registerProperty({name:at,syntax:"<number>",inherits:!0,initialValue:"0"}),!0}catch{return!1}})(),ht="var(--number-flow-char-height, 1em)",g="var(--number-flow-mask-height, 0.25em)",C=`calc(${g} / 2)`,tt="var(--number-flow-mask-width, 0.5em)",S=`calc(${tt} / var(--scale-x))`,D="#000 0, transparent 71%",et="span",ot=_t`:host{display:inline-flex;align-items:baseline;direction:ltr;white-space:nowrap;position:relative;line-height:${ht} !important;isolation:isolate;}::slotted(${et}){position:absolute;left:0;top:0;color:transparent !important;will-change:unset !important;z-index:-5;}:host > .number,:host > .section{pointer-events:none;user-select:none;}.number,.number__inner{display:inline-flex;align-items:baseline;transform-origin:left top;}:host([data-will-change]) .number,:host([data-will-change]) .number__inner{will-change:transform;}.number{--scale-x:calc(1 + var(${nt}) / var(--width));transform:translateX(var(${J})) scaleX(var(--scale-x));margin:0 calc(-1 * ${tt});position:relative;z-index:-1;overflow:clip;-webkit-mask-image:linear-gradient( to right,transparent 0,#000 ${S},#000 calc(100% - ${S}),transparent ),linear-gradient( to bottom,transparent 0,#000 ${g},#000 calc(100% - ${g}),transparent 100% ),radial-gradient(at bottom right,${D}),radial-gradient(at bottom left,${D}),radial-gradient(at top left,${D}),radial-gradient(at top right,${D});-webkit-mask-size:100% calc(100% - ${g} * 2),calc(100% - ${S} * 2) 100%,${S} ${g},${S} ${g},${S} ${g},${S} ${g};-webkit-mask-position:center,center,top left,top right,bottom right,bottom left;-webkit-mask-repeat:no-repeat;}.number__inner{padding:0 ${tt};transform:scaleX(calc(1 / var(--scale-x))) translateX(calc(-1 * var(${J})));}.section{display:inline-flex;align-items:baseline;padding-bottom:${C};padding-top:${C};position:relative;isolation:isolate;}.section::after{content:'\200b';display:block;padding:${C} 0;}:host([data-will-change]) .section{will-change:transform;}.section--justify-left{transform-origin:center left;}.section--justify-right{transform-origin:center right;}.section__exiting{position:absolute !important;z-index:-1;}.digit{display:block;position:relative;--c:var(--current) + var(${at});}:host([data-will-change]) .digit,:host([data-will-change]) .digit__num{will-change:transform;}.digit__num{display:block;padding:${C} 0;--offset-raw:mod(10 + var(--n) - mod(var(--c),10),10);--offset:calc(var(--offset-raw) - 10 * round(down,var(--offset-raw) / 5,1));--y:clamp(-100%,var(--offset) * 100%,100%);transform:translateY(var(--y));}.digit__num:not(.is-current){position:absolute;top:0;left:50%;transform:translateX(-50%) translateY(var(--y));}.digit:not(.is-spinning) .digit__num:not(.is-current){display:none;}.symbol{display:inline-flex;align-items:baseline;position:relative;isolation:isolate;padding:${C} 0;}:host([data-will-change]) .symbol{will-change:transform;}.symbol__value{display:block;white-space:pre;}.symbol__exiting{position:absolute;z-index:-1;}.section--justify-left .symbol__exiting{left:0;}.section--justify-right .symbol__exiting{right:0;}.animate-presence{opacity:calc(1 + var(${q}));}`,$t=F?HTMLElement:class{},xt=({formatted:a,willChange:t})=>`<${et} style="font-kerning: none; display: inline-block; line-height: ${ht}; padding: ${g} 0;${t?"will-change: transform":""}">${a}</${et}>`,Et=(a,t)=>a!=null&&t==null?a:a==null&&t!=null?t:a!=null&&t!=null?Math.max(a,t):null;var N,H,k,$,x,y,U,L,R,W,V,E,M,X,z,I,j,G,T,A,v,Y,it,_,K,Z;const ct=St&&bt&&kt;var b;(function(a){a[a.UP=1]="UP",a[a.DOWN=-1]="DOWN",a[a.NONE=0]="NONE"})(b||(b={}));let O;class ft extends $t{constructor(){super(...arguments),this.transformTiming=this.constructor.defaultProps.transformTiming,this.spinTiming=this.constructor.defaultProps.spinTiming,this.opacityTiming=this.constructor.defaultProps.opacityTiming,this.respectMotionPreference=this.constructor.defaultProps.respectMotionPreference,this.trend=this.constructor.defaultProps.trend,this.continuous=this.constructor.defaultProps.continuous,N.set(this,this.constructor.defaultProps.animated),H.set(this,!1),k.set(this,void 0),$.set(this,void 0),x.set(this,void 0),y.set(this,void 0),U.set(this,void 0),L.set(this,s(this,N,"f")),R.set(this,void 0),this.manual=!1,W.set(this,void 0)}get animated(){return s(this,N,"f")}set animated(t){var e;this.animated!==t&&(h(this,N,t,"f"),(e=this.shadowRoot)==null||e.getAnimations().forEach(i=>i.finish()))}get computedTrend(){return s(this,y,"f")}get startingPlace(){return s(this,U,"f")}get computedAnimated(){return s(this,L,"f")}set parts(t){if(t==null)return;const{pre:e,integer:i,fraction:n,post:r,value:l}=t;if(s(this,H,"f")){const o=s(this,R,"f");if(h(this,R,t,"f"),this.trend===!0?h(this,y,Math.sign(l-o.value),"f"):this.trend==="increasing"?h(this,y,b.UP,"f"):this.trend==="decreasing"?h(this,y,b.DOWN,"f"):h(this,y,b.NONE,"f"),h(this,U,void 0,"f"),s(this,y,"f")!==b.NONE&&this.continuous){const u=o.integer.concat(o.fraction).filter(d=>d.type==="integer"||d.type==="fraction"),p=t.integer.concat(t.fraction).filter(d=>d.type==="integer"||d.type==="fraction"),m=u.find(d=>!p.find(c=>c.place===d.place&&c.value===d.value)),P=p.find(d=>!u.find(c=>d.place===c.place&&d.value===c.value));h(this,U,Et(m==null?void 0:m.place,P==null?void 0:P.place),"f")}h(this,L,ct&&s(this,N,"f")&&(!this.respectMotionPreference||!(B!=null&&B.matches))&>(this),"f"),this.manual||this.willUpdate(),s(this,k,"f").update(e),s(this,$,"f").update({integer:i,fraction:n}),s(this,x,"f").update(r),this.manual||this.didUpdate()}else{if(h(this,R,t,"f"),this.attachShadow({mode:"open"}),typeof CSSStyleSheet<"u"&&this.shadowRoot.adoptedStyleSheets)O||(O=new CSSStyleSheet,O.replaceSync(ot)),this.shadowRoot.adoptedStyleSheets=[O];else{const o=document.createElement("style");o.textContent=ot,this.shadowRoot.appendChild(o)}this.shadowRoot.appendChild(w("slot")),h(this,k,new lt(this,e,{inert:!0,ariaHidden:"true",justify:"right"}),"f"),this.shadowRoot.appendChild(s(this,k,"f").el),h(this,$,new Mt(this,i,n,{inert:!0,ariaHidden:"true"}),"f"),this.shadowRoot.appendChild(s(this,$,"f").el),h(this,x,new lt(this,r,{inert:!0,ariaHidden:"true",justify:"left"}),"f"),this.shadowRoot.appendChild(s(this,x,"f").el)}h(this,H,!0,"f")}willUpdate(){s(this,k,"f").willUpdate(),s(this,$,"f").willUpdate(),s(this,x,"f").willUpdate()}didUpdate(){if(!s(this,L,"f"))return;s(this,W,"f")?s(this,W,"f").abort():this.dispatchEvent(new Event("animationsstart")),s(this,k,"f").didUpdate(),s(this,$,"f").didUpdate(),s(this,x,"f").didUpdate();const t=new AbortController;Promise.all(this.shadowRoot.getAnimations().map(e=>e.finished)).then(()=>{t.signal.aborted||(this.dispatchEvent(new Event("animationsfinish")),h(this,W,void 0,"f"))}),h(this,W,t,"f")}}N=new WeakMap,H=new WeakMap,k=new WeakMap,$=new WeakMap,x=new WeakMap,y=new WeakMap,U=new WeakMap,L=new WeakMap,R=new WeakMap,W=new WeakMap;ft.defaultProps={transformTiming:{duration:900,easing:"linear(0,.005,.019,.039,.066,.096,.129,.165,.202,.24,.278,.316,.354,.39,.426,.461,.494,.526,.557,.586,.614,.64,.665,.689,.711,.731,.751,.769,.786,.802,.817,.831,.844,.856,.867,.877,.887,.896,.904,.912,.919,.925,.931,.937,.942,.947,.951,.955,.959,.962,.965,.968,.971,.973,.976,.978,.98,.981,.983,.984,.986,.987,.988,.989,.99,.991,.992,.992,.993,.994,.994,.995,.995,.996,.996,.9963,.9967,.9969,.9972,.9975,.9977,.9979,.9981,.9982,.9984,.9985,.9987,.9988,.9989,1)"},spinTiming:void 0,opacityTiming:{duration:450,easing:"ease-out"},animated:!0,trend:!0,continuous:!1,respectMotionPreference:!0};class Mt{constructor(t,e,i,{className:n,...r}={}){this.flow=t,V.set(this,void 0),E.set(this,void 0),M.set(this,void 0),X.set(this,void 0),z.set(this,void 0),h(this,E,new rt(t,e,{justify:"right"}),"f"),h(this,M,new rt(t,i,{justify:"left"}),"f"),h(this,V,w("span",{className:"number__inner"},[s(this,E,"f").el,s(this,M,"f").el]),"f"),this.el=w("span",{...r,className:`number ${n??""}`},[s(this,V,"f")])}willUpdate(){h(this,X,this.el.offsetWidth,"f"),h(this,z,this.el.getBoundingClientRect().left,"f"),s(this,E,"f").willUpdate(),s(this,M,"f").willUpdate()}update({integer:t,fraction:e}){s(this,E,"f").update(t),s(this,M,"f").update(e)}didUpdate(){const t=this.el.getBoundingClientRect();s(this,E,"f").didUpdate(),s(this,M,"f").didUpdate();const e=s(this,z,"f")-t.left,i=this.el.offsetWidth,n=s(this,X,"f")-i;this.el.style.setProperty("--width",String(i)),this.el.animate({[J]:[`${e}px`,"0px"],[nt]:[n,0]},{...this.flow.transformTiming,composite:"accumulate"})}}V=new WeakMap,E=new WeakMap,M=new WeakMap,X=new WeakMap,z=new WeakMap;class dt{constructor(t,e,{justify:i,className:n,...r},l){this.flow=t,this.children=new Map,this.onCharRemove=u=>()=>{this.children.delete(u)},I.set(this,void 0),this.justify=i;const o=e.map(u=>this.addChar(u).el);this.el=w("span",{...r,className:`section section--justify-${i} ${n??""}`},l?l(o):o)}addChar(t,{startDigitsAtZero:e=!1,...i}={}){const n=t.type==="integer"||t.type==="fraction"?new pt(this,t.type,e?0:t.value,t.place,{...i,onRemove:this.onCharRemove(t.key)}):new Pt(this,t.type,t.value,{...i,onRemove:this.onCharRemove(t.key)});return this.children.set(t.key,n),n}unpop(t){t.el.classList.remove("section__exiting"),t.el.style[this.justify]=""}pop(t){t.forEach(e=>{e.el.style[this.justify]=`${mt(e.el,this.justify)}px`}),t.forEach(e=>{e.el.classList.add("section__exiting"),e.present=!1})}addNewAndUpdateExisting(t){const e=new Map,i=new Map,n=this.justify==="left",r=n?"prepend":"append";if(yt(t,l=>{let o;this.children.has(l.key)?(o=this.children.get(l.key),i.set(l,o),this.unpop(o),o.present=!0):(o=this.addChar(l,{startDigitsAtZero:!0,animateIn:!0}),e.set(l,o)),this.el[r](o.el)},{reverse:n}),this.flow.computedAnimated){const l=this.el.getBoundingClientRect();e.forEach(o=>{o.willUpdate(l)})}e.forEach((l,o)=>{l.update(o.value)}),i.forEach((l,o)=>{l.update(o.value)})}willUpdate(){const t=this.el.getBoundingClientRect();h(this,I,t[this.justify],"f"),this.children.forEach(e=>e.willUpdate(t))}didUpdate(){const t=this.el.getBoundingClientRect();this.children.forEach(n=>n.didUpdate(t));const e=t[this.justify],i=s(this,I,"f")-e;this.el.animate({transform:[`translateX(${i}px)`,"none"]},{...this.flow.transformTiming,composite:"accumulate"})}}I=new WeakMap;class rt extends dt{update(t){const e=new Map;this.children.forEach((i,n)=>{t.find(r=>r.key===n)||e.set(n,i),this.unpop(i)}),this.addNewAndUpdateExisting(t),e.forEach(i=>{i instanceof pt&&i.update(0)}),this.pop(e)}}class lt extends dt{update(t){const e=new Map;this.children.forEach((i,n)=>{t.find(r=>r.key===n)||e.set(n,i)}),this.pop(e),this.addNewAndUpdateExisting(t)}}class st{constructor(t,e,{onRemove:i,animateIn:n=!1}={}){this.flow=t,this.el=e,j.set(this,!0),G.set(this,void 0),T.set(this,()=>{var r;this.el.remove(),(r=s(this,G,"f"))==null||r.call(this)}),this.el.classList.add("animate-presence"),this.flow.computedAnimated&&n&&this.el.animate({[q]:[-.9999,0]},{...this.flow.opacityTiming,composite:"accumulate"}),h(this,G,i,"f")}get present(){return s(this,j,"f")}set present(t){if(s(this,j,"f")!==t){if(h(this,j,t,"f"),!this.flow.computedAnimated){t||s(this,T,"f").call(this);return}this.el.style.setProperty("--_number-flow-d-opacity",t?"0":"-.999"),this.el.animate({[q]:t?[-.9999,0]:[.999,0]},{...this.flow.opacityTiming,composite:"accumulate"}),t?this.flow.removeEventListener("animationsfinish",s(this,T,"f")):this.flow.addEventListener("animationsfinish",s(this,T,"f"),{once:!0})}}}j=new WeakMap,G=new WeakMap,T=new WeakMap;class ut extends st{constructor(t,e,i,n){super(t.flow,i,n),this.section=t,this.value=e,this.el=i}}class pt extends ut{constructor(t,e,i,n,r){const l=Array.from({length:10}).map((u,p)=>{const m=w("span",{className:`digit__num${p===i?" is-current":""}`},[document.createTextNode(String(p))]);return m.style.setProperty("--n",String(p)),m}),o=w("span",{className:"digit"},l);o.style.setProperty("--current",String(i)),super(t,i,o,r),this.place=n,A.set(this,void 0),v.set(this,void 0),Y.set(this,void 0),it.set(this,()=>{this.el.classList.remove("is-spinning")}),h(this,A,l,"f")}willUpdate(t){const e=this.el.getBoundingClientRect();h(this,v,this.value,"f");const i=e[this.section.justify]-t[this.section.justify],n=e.width/2;h(this,Y,this.section.justify==="left"?i+n:i-n,"f")}update(t){var e,i;(e=s(this,A,"f")[this.value])==null||e.classList.remove("is-current"),this.el.style.setProperty("--current",String(t)),(i=s(this,A,"f")[t])==null||i.classList.add("is-current"),this.value=t}didUpdate(t){const e=this.el.getBoundingClientRect(),i=e[this.section.justify]-t[this.section.justify],n=e.width/2,r=this.section.justify==="left"?i+n:i-n;this.el.animate({transform:[`translateX(${s(this,Y,"f")-r}px)`,"none"]},{...this.flow.transformTiming,composite:"accumulate"});const l=this.diff;l&&(this.el.classList.add("is-spinning"),this.el.animate({[at]:[-l,0]},{...this.flow.spinTiming??this.flow.transformTiming,composite:"accumulate"}),this.flow.addEventListener("animationsfinish",s(this,it,"f"),{once:!0}))}get diff(){let t=this.flow.computedTrend;const e=this.value-s(this,v,"f");return!e&&this.flow.startingPlace!=null&&this.flow.startingPlace>=this.place?10*t:(t||(t=Math.sign(e)),t===b.DOWN&&this.value>s(this,v,"f")?this.value-10-s(this,v,"f"):t===b.UP&&this.value<s(this,v,"f")?10-s(this,v,"f")+this.value:e)}}A=new WeakMap,v=new WeakMap,Y=new WeakMap,it=new WeakMap;class Pt extends ut{constructor(t,e,i,n){const r=w("span",{className:"symbol__value",textContent:i});super(t,i,w("span",{className:"symbol"},[r]),n),this.type=e,_.set(this,new Map),K.set(this,void 0),Z.set(this,l=>()=>{s(this,_,"f").delete(l)}),s(this,_,"f").set(i,new st(this.flow,r,{onRemove:s(this,Z,"f").call(this,i)}))}willUpdate(t){if(this.type==="decimal")return;const e=this.el.getBoundingClientRect();h(this,K,e[this.section.justify]-t[this.section.justify],"f")}update(t){if(this.value!==t){const e=s(this,_,"f").get(this.value);if(e.present=!1,e.el.classList.add("symbol__exiting"),s(this,_,"f").has(t)){const i=s(this,_,"f").get(t);i.present=!0,i.el.classList.remove("symbol__exiting")}else{const i=w("span",{className:"symbol__value",textContent:t});this.el.appendChild(i),s(this,_,"f").set(t,new st(this.flow,i,{animateIn:!0,onRemove:s(this,Z,"f").call(this,t)}))}}this.value=t}didUpdate(t){if(this.type==="decimal")return;const i=this.el.getBoundingClientRect()[this.section.justify]-t[this.section.justify];this.el.animate({transform:[`translateX(${s(this,K,"f")-i}px)`,"none"]},{...this.flow.transformTiming,composite:"accumulate"})}}_=new WeakMap,K=new WeakMap,Z=new WeakMap;exports.NumberFlowLite=ft;exports.canAnimate=ct;exports.define=wt;exports.partitionParts=vt;exports.prefersReducedMotion=B;exports.render=xt;
|
package/dist/index.mjs
CHANGED
|
@@ -1,28 +1,31 @@
|
|
|
1
|
-
function
|
|
1
|
+
function s(a, t, e, i) {
|
|
2
2
|
if (e === "a" && !i) throw new TypeError("Private accessor was defined without a getter");
|
|
3
3
|
if (typeof t == "function" ? a !== t || !i : !t.has(a)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
4
4
|
return e === "m" ? i : e === "a" ? i.call(a) : i ? i.value : t.get(a);
|
|
5
5
|
}
|
|
6
|
-
function h(a, t, e, i,
|
|
6
|
+
function h(a, t, e, i, n) {
|
|
7
7
|
if (i === "m") throw new TypeError("Private method is not writable");
|
|
8
|
-
if (i === "a" && !
|
|
9
|
-
if (typeof t == "function" ? a !== t || !
|
|
10
|
-
return i === "a" ?
|
|
8
|
+
if (i === "a" && !n) throw new TypeError("Private accessor was defined without a setter");
|
|
9
|
+
if (typeof t == "function" ? a !== t || !n : !t.has(a)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
10
|
+
return i === "a" ? n.call(a, e) : n ? n.value = e : t.set(a, e), e;
|
|
11
11
|
}
|
|
12
|
-
const w = (a, t, e) => {
|
|
13
|
-
const i = document.createElement(a), [
|
|
14
|
-
return
|
|
15
|
-
},
|
|
12
|
+
const F = typeof window < "u", w = (a, t, e) => {
|
|
13
|
+
const i = document.createElement(a), [n, r] = Array.isArray(t) ? [void 0, t] : [t, e];
|
|
14
|
+
return n && Object.assign(i, n), r == null || r.forEach((l) => i.appendChild(l)), i;
|
|
15
|
+
}, pt = (a, t) => {
|
|
16
16
|
var e;
|
|
17
17
|
return t === "left" ? a.offsetLeft : (((e = a.offsetParent instanceof HTMLElement ? a.offsetParent : null) == null ? void 0 : e.offsetWidth) ?? 0) - a.offsetWidth - a.offsetLeft;
|
|
18
|
+
}, ut = (a) => a.offsetWidth > 0 && a.offsetHeight > 0, Et = (a, t) => {
|
|
19
|
+
if (!(!F || customElements.get(a) === t))
|
|
20
|
+
return customElements.define(a, t);
|
|
18
21
|
};
|
|
19
|
-
function
|
|
22
|
+
function mt(a, t, { reverse: e = !1 } = {}) {
|
|
20
23
|
const i = a.length;
|
|
21
|
-
for (let
|
|
22
|
-
t(a[
|
|
24
|
+
for (let n = e ? i - 1 : 0; e ? n >= 0 : n < i; e ? n-- : n++)
|
|
25
|
+
t(a[n], n);
|
|
23
26
|
}
|
|
24
|
-
function
|
|
25
|
-
const e = t.formatToParts(a), i = [],
|
|
27
|
+
function Mt(a, t) {
|
|
28
|
+
const e = t.formatToParts(a), i = [], n = [], r = [], l = [], o = {}, p = (c) => {
|
|
26
29
|
const f = o[c] == null ? o[c] = 0 : ++o[c];
|
|
27
30
|
return `${c}:${f}`;
|
|
28
31
|
};
|
|
@@ -30,9 +33,9 @@ function $t(a, t) {
|
|
|
30
33
|
for (const c of e) {
|
|
31
34
|
u += c.value;
|
|
32
35
|
const f = c.type === "minusSign" || c.type === "plusSign" ? "sign" : c.type;
|
|
33
|
-
f === "integer" ? (m = !0,
|
|
36
|
+
f === "integer" ? (m = !0, n.push(...c.value.split("").map((J) => ({ type: f, value: parseInt(J) })))) : f === "group" ? n.push({ type: f, value: c.value }) : f === "decimal" ? (N = !0, r.push({ type: f, value: c.value, key: p(f) })) : f === "fraction" ? r.push(...c.value.split("").map((J) => ({
|
|
34
37
|
type: f,
|
|
35
|
-
value: parseInt(
|
|
38
|
+
value: parseInt(J),
|
|
36
39
|
key: p(f),
|
|
37
40
|
place: -1 - o[f]
|
|
38
41
|
}))) : (m || N ? l : i).push({
|
|
@@ -42,8 +45,8 @@ function $t(a, t) {
|
|
|
42
45
|
});
|
|
43
46
|
}
|
|
44
47
|
const d = [];
|
|
45
|
-
for (let c =
|
|
46
|
-
const f =
|
|
48
|
+
for (let c = n.length - 1; c >= 0; c--) {
|
|
49
|
+
const f = n[c];
|
|
47
50
|
d.unshift(f.type === "integer" ? {
|
|
48
51
|
...f,
|
|
49
52
|
key: p(f.type),
|
|
@@ -62,26 +65,25 @@ function $t(a, t) {
|
|
|
62
65
|
value: typeof a == "string" ? parseFloat(a) : a
|
|
63
66
|
};
|
|
64
67
|
}
|
|
65
|
-
const
|
|
66
|
-
}, ut = String.raw, mt = T && typeof CSS < "u" && CSS.supports("animation-timing-function", "linear(1,2)"), gt = T && typeof CSS < "u" && CSS.supports("line-height", "mod(1,1)"), J = T ? matchMedia("(prefers-reduced-motion: reduce)") : null, Y = "--_number-flow-d-opacity", it = "--_number-flow-d-width", Z = "--_number-flow-dx", st = "--_number-flow-d", wt = (() => {
|
|
68
|
+
const gt = String.raw, wt = F && typeof CSS < "u" && CSS.supports("animation-timing-function", "linear(1,2)"), yt = F && typeof CSS < "u" && CSS.supports("line-height", "mod(1,1)"), Q = F ? matchMedia("(prefers-reduced-motion: reduce)") : null, Z = "--_number-flow-d-opacity", nt = "--_number-flow-d-width", q = "--_number-flow-dx", at = "--_number-flow-d", _t = (() => {
|
|
67
69
|
try {
|
|
68
70
|
return CSS.registerProperty({
|
|
69
|
-
name:
|
|
71
|
+
name: Z,
|
|
70
72
|
syntax: "<number>",
|
|
71
73
|
inherits: !1,
|
|
72
74
|
initialValue: "0"
|
|
73
75
|
}), CSS.registerProperty({
|
|
74
|
-
name:
|
|
76
|
+
name: q,
|
|
75
77
|
syntax: "<length>",
|
|
76
78
|
inherits: !0,
|
|
77
79
|
initialValue: "0px"
|
|
78
80
|
}), CSS.registerProperty({
|
|
79
|
-
name:
|
|
81
|
+
name: nt,
|
|
80
82
|
syntax: "<number>",
|
|
81
83
|
inherits: !1,
|
|
82
84
|
initialValue: "0"
|
|
83
85
|
}), CSS.registerProperty({
|
|
84
|
-
name:
|
|
86
|
+
name: at,
|
|
85
87
|
syntax: "<number>",
|
|
86
88
|
inherits: !0,
|
|
87
89
|
initialValue: "0"
|
|
@@ -89,162 +91,166 @@ const T = typeof window < "u", pt = T ? HTMLElement : class {
|
|
|
89
91
|
} catch {
|
|
90
92
|
return !1;
|
|
91
93
|
}
|
|
92
|
-
})(),
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
padding: `${g} 0`,
|
|
97
|
-
willChange: a ? "transform" : void 0
|
|
98
|
-
}), nt = ut`:host{display:inline-flex;align-items:baseline;direction:ltr;white-space:nowrap;position:relative;line-height:${rt} !important;isolation:isolate;}::slotted(${yt}){position:absolute;left:0;top:0;color:transparent !important;z-index:-5;}:host > .number,:host > .section{pointer-events:none;user-select:none;}.number,.number__inner{display:inline-flex;align-items:baseline;transform-origin:left top;}:host([data-will-change]) .number,:host([data-will-change]) .number__inner{will-change:transform;}.number{--scale-x:calc(1 + var(${it}) / var(--width));transform:translateX(var(${Z})) scaleX(var(--scale-x));margin:0 calc(-1 * ${Q});position:relative;z-index:-1;overflow:clip;-webkit-mask-image:linear-gradient( to right,transparent 0,#000 ${S},#000 calc(100% - ${S}),transparent ),linear-gradient( to bottom,transparent 0,#000 ${g},#000 calc(100% - ${g}),transparent 100% ),radial-gradient(at bottom right,${A}),radial-gradient(at bottom left,${A}),radial-gradient(at top left,${A}),radial-gradient(at top right,${A});-webkit-mask-size:100% calc(100% - ${g} * 2),calc(100% - ${S} * 2) 100%,${S} ${g},${S} ${g},${S} ${g},${S} ${g};-webkit-mask-position:center,center,top left,top right,bottom right,bottom left;-webkit-mask-repeat:no-repeat;}.number__inner{padding:0 ${Q};transform:scaleX(calc(1 / var(--scale-x))) translateX(calc(-1 * var(${Z})));}.section{display:inline-flex;align-items:baseline;padding-bottom:${C};padding-top:${C};position:relative;isolation:isolate;}.section::after{content:'\200b';display:block;padding:${C} 0;}:host([data-will-change]) .section{will-change:transform;}.section--justify-left{transform-origin:center left;}.section--justify-right{transform-origin:center right;}.section__exiting{position:absolute !important;z-index:-1;}.digit{display:block;position:relative;--c:var(--current) + var(${st});}:host([data-will-change]) .digit,:host([data-will-change]) .digit__num{will-change:transform;}.digit__num{display:block;padding:${C} 0;--offset-raw:mod(10 + var(--n) - mod(var(--c),10),10);--offset:calc(var(--offset-raw) - 10 * round(down,var(--offset-raw) / 5,1));--y:clamp(-100%,var(--offset) * 100%,100%);transform:translateY(var(--y));}.digit__num:not(.is-current){position:absolute;top:0;left:50%;transform:translateX(-50%) translateY(var(--y));}.digit:not(.is-spinning) .digit__num:not(.is-current){display:none;}.symbol{display:inline-flex;align-items:baseline;position:relative;isolation:isolate;padding:${C} 0;}:host([data-will-change]) .symbol{will-change:transform;}.symbol__value{display:block;white-space:pre;}.symbol__exiting{position:absolute;z-index:-1;}.section--justify-left .symbol__exiting{left:0;}.section--justify-right .symbol__exiting{right:0;}.animate-presence{opacity:calc(1 + var(${Y}));}`, vt = (a, t) => a != null && t == null ? a : a == null && t != null ? t : a != null && t != null ? Math.max(a, t) : null;
|
|
99
|
-
var D, O, x, k, $, y, P, U, W, B, E, M, H, V, X, L, z, j, R, v, I, tt, _, G, K;
|
|
100
|
-
const _t = gt && mt && wt;
|
|
94
|
+
})(), ht = "var(--number-flow-char-height, 1em)", g = "var(--number-flow-mask-height, 0.25em)", C = `calc(${g} / 2)`, tt = "var(--number-flow-mask-width, 0.5em)", S = `calc(${tt} / var(--scale-x))`, D = "#000 0, transparent 71%", et = "span", ot = gt`:host{display:inline-flex;align-items:baseline;direction:ltr;white-space:nowrap;position:relative;line-height:${ht} !important;isolation:isolate;}::slotted(${et}){position:absolute;left:0;top:0;color:transparent !important;will-change:unset !important;z-index:-5;}:host > .number,:host > .section{pointer-events:none;user-select:none;}.number,.number__inner{display:inline-flex;align-items:baseline;transform-origin:left top;}:host([data-will-change]) .number,:host([data-will-change]) .number__inner{will-change:transform;}.number{--scale-x:calc(1 + var(${nt}) / var(--width));transform:translateX(var(${q})) scaleX(var(--scale-x));margin:0 calc(-1 * ${tt});position:relative;z-index:-1;overflow:clip;-webkit-mask-image:linear-gradient( to right,transparent 0,#000 ${S},#000 calc(100% - ${S}),transparent ),linear-gradient( to bottom,transparent 0,#000 ${g},#000 calc(100% - ${g}),transparent 100% ),radial-gradient(at bottom right,${D}),radial-gradient(at bottom left,${D}),radial-gradient(at top left,${D}),radial-gradient(at top right,${D});-webkit-mask-size:100% calc(100% - ${g} * 2),calc(100% - ${S} * 2) 100%,${S} ${g},${S} ${g},${S} ${g},${S} ${g};-webkit-mask-position:center,center,top left,top right,bottom right,bottom left;-webkit-mask-repeat:no-repeat;}.number__inner{padding:0 ${tt};transform:scaleX(calc(1 / var(--scale-x))) translateX(calc(-1 * var(${q})));}.section{display:inline-flex;align-items:baseline;padding-bottom:${C};padding-top:${C};position:relative;isolation:isolate;}.section::after{content:'\200b';display:block;padding:${C} 0;}:host([data-will-change]) .section{will-change:transform;}.section--justify-left{transform-origin:center left;}.section--justify-right{transform-origin:center right;}.section__exiting{position:absolute !important;z-index:-1;}.digit{display:block;position:relative;--c:var(--current) + var(${at});}:host([data-will-change]) .digit,:host([data-will-change]) .digit__num{will-change:transform;}.digit__num{display:block;padding:${C} 0;--offset-raw:mod(10 + var(--n) - mod(var(--c),10),10);--offset:calc(var(--offset-raw) - 10 * round(down,var(--offset-raw) / 5,1));--y:clamp(-100%,var(--offset) * 100%,100%);transform:translateY(var(--y));}.digit__num:not(.is-current){position:absolute;top:0;left:50%;transform:translateX(-50%) translateY(var(--y));}.digit:not(.is-spinning) .digit__num:not(.is-current){display:none;}.symbol{display:inline-flex;align-items:baseline;position:relative;isolation:isolate;padding:${C} 0;}:host([data-will-change]) .symbol{will-change:transform;}.symbol__value{display:block;white-space:pre;}.symbol__exiting{position:absolute;z-index:-1;}.section--justify-left .symbol__exiting{left:0;}.section--justify-right .symbol__exiting{right:0;}.animate-presence{opacity:calc(1 + var(${Z}));}`, vt = F ? HTMLElement : class {
|
|
95
|
+
}, Nt = ({ formatted: a, willChange: t }) => `<${et} style="font-kerning: none; display: inline-block; line-height: ${ht}; padding: ${g} 0;${t ? "will-change: transform" : ""}">${a}</${et}>`, bt = (a, t) => a != null && t == null ? a : a == null && t != null ? t : a != null && t != null ? Math.max(a, t) : null;
|
|
96
|
+
var P, B, k, x, $, y, U, L, R, W, H, E, M, V, X, z, j, I, T, A, _, G, it, v, Y, K;
|
|
97
|
+
const St = yt && wt && _t;
|
|
101
98
|
var b;
|
|
102
99
|
(function(a) {
|
|
103
100
|
a[a.UP = 1] = "UP", a[a.DOWN = -1] = "DOWN", a[a.NONE = 0] = "NONE";
|
|
104
101
|
})(b || (b = {}));
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
// Make sure to keep this minified:
|
|
108
|
-
easing: "linear(0,.005,.019,.039,.066,.096,.129,.165,.202,.24,.278,.316,.354,.39,.426,.461,.494,.526,.557,.586,.614,.64,.665,.689,.711,.731,.751,.769,.786,.802,.817,.831,.844,.856,.867,.877,.887,.896,.904,.912,.919,.925,.931,.937,.942,.947,.951,.955,.959,.962,.965,.968,.971,.973,.976,.978,.98,.981,.983,.984,.986,.987,.988,.989,.99,.991,.992,.992,.993,.994,.994,.995,.995,.996,.996,.9963,.9967,.9969,.9972,.9975,.9977,.9979,.9981,.9982,.9984,.9985,.9987,.9988,.9989,1)"
|
|
109
|
-
};
|
|
110
|
-
let F;
|
|
111
|
-
class Mt extends pt {
|
|
102
|
+
let O;
|
|
103
|
+
class kt extends vt {
|
|
112
104
|
constructor() {
|
|
113
|
-
super(...arguments), this.transformTiming =
|
|
105
|
+
super(...arguments), this.transformTiming = this.constructor.defaultProps.transformTiming, this.spinTiming = this.constructor.defaultProps.spinTiming, this.opacityTiming = this.constructor.defaultProps.opacityTiming, this.respectMotionPreference = this.constructor.defaultProps.respectMotionPreference, this.trend = this.constructor.defaultProps.trend, this.continuous = this.constructor.defaultProps.continuous, P.set(this, this.constructor.defaultProps.animated), B.set(this, !1), k.set(this, void 0), x.set(this, void 0), $.set(this, void 0), y.set(this, void 0), U.set(this, void 0), L.set(this, s(this, P, "f")), R.set(this, void 0), this.manual = !1, W.set(this, void 0);
|
|
114
106
|
}
|
|
115
|
-
|
|
116
|
-
|
|
107
|
+
get animated() {
|
|
108
|
+
return s(this, P, "f");
|
|
117
109
|
}
|
|
118
|
-
|
|
119
|
-
|
|
110
|
+
set animated(t) {
|
|
111
|
+
var e;
|
|
112
|
+
this.animated !== t && (h(this, P, t, "f"), (e = this.shadowRoot) == null || e.getAnimations().forEach((i) => i.finish()));
|
|
120
113
|
}
|
|
121
114
|
get computedTrend() {
|
|
122
|
-
return
|
|
115
|
+
return s(this, y, "f");
|
|
116
|
+
}
|
|
117
|
+
get startingPlace() {
|
|
118
|
+
return s(this, U, "f");
|
|
119
|
+
}
|
|
120
|
+
get computedAnimated() {
|
|
121
|
+
return s(this, L, "f");
|
|
123
122
|
}
|
|
124
123
|
set parts(t) {
|
|
125
124
|
if (t == null)
|
|
126
125
|
return;
|
|
127
|
-
const { pre: e, integer: i, fraction:
|
|
128
|
-
if (
|
|
129
|
-
const o =
|
|
130
|
-
if (h(this,
|
|
126
|
+
const { pre: e, integer: i, fraction: n, post: r, value: l } = t;
|
|
127
|
+
if (s(this, B, "f")) {
|
|
128
|
+
const o = s(this, R, "f");
|
|
129
|
+
if (h(this, R, t, "f"), this.trend === !0 ? h(this, y, Math.sign(l - o.value), "f") : this.trend === "increasing" ? h(this, y, b.UP, "f") : this.trend === "decreasing" ? h(this, y, b.DOWN, "f") : h(this, y, b.NONE, "f"), h(this, U, void 0, "f"), s(this, y, "f") !== b.NONE && this.continuous) {
|
|
131
130
|
const p = o.integer.concat(o.fraction).filter((d) => d.type === "integer" || d.type === "fraction"), u = t.integer.concat(t.fraction).filter((d) => d.type === "integer" || d.type === "fraction"), m = p.find((d) => !u.find((c) => c.place === d.place && c.value === d.value)), N = u.find((d) => !p.find((c) => d.place === c.place && d.value === c.value));
|
|
132
|
-
h(this,
|
|
131
|
+
h(this, U, bt(m == null ? void 0 : m.place, N == null ? void 0 : N.place), "f");
|
|
133
132
|
}
|
|
134
|
-
|
|
133
|
+
h(this, L, St && s(this, P, "f") && (!this.respectMotionPreference || !(Q != null && Q.matches)) && // https://github.com/barvian/number-flow/issues/9
|
|
134
|
+
ut(this), "f"), this.manual || this.willUpdate(), s(this, k, "f").update(e), s(this, x, "f").update({ integer: i, fraction: n }), s(this, $, "f").update(r), this.manual || this.didUpdate();
|
|
135
135
|
} else {
|
|
136
|
-
if (h(this,
|
|
137
|
-
|
|
136
|
+
if (h(this, R, t, "f"), this.attachShadow({ mode: "open" }), typeof CSSStyleSheet < "u" && this.shadowRoot.adoptedStyleSheets)
|
|
137
|
+
O || (O = new CSSStyleSheet(), O.replaceSync(ot)), this.shadowRoot.adoptedStyleSheets = [O];
|
|
138
138
|
else {
|
|
139
139
|
const o = document.createElement("style");
|
|
140
|
-
o.textContent =
|
|
140
|
+
o.textContent = ot, this.shadowRoot.appendChild(o);
|
|
141
141
|
}
|
|
142
|
-
this.shadowRoot.appendChild(w("slot")), h(this,
|
|
142
|
+
this.shadowRoot.appendChild(w("slot")), h(this, k, new lt(this, e, {
|
|
143
143
|
inert: !0,
|
|
144
144
|
ariaHidden: "true",
|
|
145
145
|
justify: "right"
|
|
146
|
-
}), "f"), this.shadowRoot.appendChild(
|
|
146
|
+
}), "f"), this.shadowRoot.appendChild(s(this, k, "f").el), h(this, x, new xt(this, i, n, {
|
|
147
147
|
inert: !0,
|
|
148
148
|
ariaHidden: "true"
|
|
149
|
-
}), "f"), this.shadowRoot.appendChild(
|
|
149
|
+
}), "f"), this.shadowRoot.appendChild(s(this, x, "f").el), h(this, $, new lt(this, r, {
|
|
150
150
|
inert: !0,
|
|
151
151
|
ariaHidden: "true",
|
|
152
152
|
justify: "left"
|
|
153
|
-
}), "f"), this.shadowRoot.appendChild(
|
|
153
|
+
}), "f"), this.shadowRoot.appendChild(s(this, $, "f").el);
|
|
154
154
|
}
|
|
155
|
-
h(this,
|
|
155
|
+
h(this, B, !0, "f");
|
|
156
156
|
}
|
|
157
157
|
willUpdate() {
|
|
158
|
-
|
|
158
|
+
s(this, k, "f").willUpdate(), s(this, x, "f").willUpdate(), s(this, $, "f").willUpdate();
|
|
159
159
|
}
|
|
160
160
|
didUpdate() {
|
|
161
|
-
if (!this
|
|
161
|
+
if (!s(this, L, "f"))
|
|
162
162
|
return;
|
|
163
|
-
|
|
163
|
+
s(this, W, "f") ? s(this, W, "f").abort() : this.dispatchEvent(new Event("animationsstart")), s(this, k, "f").didUpdate(), s(this, x, "f").didUpdate(), s(this, $, "f").didUpdate();
|
|
164
164
|
const t = new AbortController();
|
|
165
165
|
Promise.all(this.shadowRoot.getAnimations().map((e) => e.finished)).then(() => {
|
|
166
166
|
t.signal.aborted || (this.dispatchEvent(new Event("animationsfinish")), h(this, W, void 0, "f"));
|
|
167
167
|
}), h(this, W, t, "f");
|
|
168
168
|
}
|
|
169
|
-
get animated() {
|
|
170
|
-
return _t && n(this, D, "f") && (!this.respectMotionPreference || !(J != null && J.matches));
|
|
171
|
-
}
|
|
172
|
-
set animated(t) {
|
|
173
|
-
var e;
|
|
174
|
-
this.animated !== t && (h(this, D, t, "f"), (e = this.shadowRoot) == null || e.getAnimations().forEach((i) => i.finish()));
|
|
175
|
-
}
|
|
176
169
|
}
|
|
177
|
-
|
|
170
|
+
P = /* @__PURE__ */ new WeakMap(), B = /* @__PURE__ */ new WeakMap(), k = /* @__PURE__ */ new WeakMap(), x = /* @__PURE__ */ new WeakMap(), $ = /* @__PURE__ */ new WeakMap(), y = /* @__PURE__ */ new WeakMap(), U = /* @__PURE__ */ new WeakMap(), L = /* @__PURE__ */ new WeakMap(), R = /* @__PURE__ */ new WeakMap(), W = /* @__PURE__ */ new WeakMap();
|
|
171
|
+
kt.defaultProps = {
|
|
172
|
+
transformTiming: {
|
|
173
|
+
duration: 900,
|
|
174
|
+
// Make sure to keep this minified:
|
|
175
|
+
easing: "linear(0,.005,.019,.039,.066,.096,.129,.165,.202,.24,.278,.316,.354,.39,.426,.461,.494,.526,.557,.586,.614,.64,.665,.689,.711,.731,.751,.769,.786,.802,.817,.831,.844,.856,.867,.877,.887,.896,.904,.912,.919,.925,.931,.937,.942,.947,.951,.955,.959,.962,.965,.968,.971,.973,.976,.978,.98,.981,.983,.984,.986,.987,.988,.989,.99,.991,.992,.992,.993,.994,.994,.995,.995,.996,.996,.9963,.9967,.9969,.9972,.9975,.9977,.9979,.9981,.9982,.9984,.9985,.9987,.9988,.9989,1)"
|
|
176
|
+
},
|
|
177
|
+
spinTiming: void 0,
|
|
178
|
+
opacityTiming: { duration: 450, easing: "ease-out" },
|
|
179
|
+
animated: !0,
|
|
180
|
+
trend: !0,
|
|
181
|
+
continuous: !1,
|
|
182
|
+
respectMotionPreference: !0
|
|
183
|
+
};
|
|
178
184
|
class xt {
|
|
179
|
-
constructor(t, e, i, { className:
|
|
180
|
-
this.flow = t,
|
|
185
|
+
constructor(t, e, i, { className: n, ...r } = {}) {
|
|
186
|
+
this.flow = t, H.set(this, void 0), E.set(this, void 0), M.set(this, void 0), V.set(this, void 0), X.set(this, void 0), h(this, E, new rt(t, e, {
|
|
181
187
|
justify: "right"
|
|
182
|
-
}), "f"), h(this, M, new
|
|
188
|
+
}), "f"), h(this, M, new rt(t, i, {
|
|
183
189
|
justify: "left"
|
|
184
|
-
}), "f"), h(this,
|
|
190
|
+
}), "f"), h(this, H, w("span", {
|
|
185
191
|
className: "number__inner"
|
|
186
|
-
}, [
|
|
192
|
+
}, [s(this, E, "f").el, s(this, M, "f").el]), "f"), this.el = w("span", {
|
|
187
193
|
...r,
|
|
188
|
-
className: `number ${
|
|
189
|
-
}, [
|
|
194
|
+
className: `number ${n ?? ""}`
|
|
195
|
+
}, [s(this, H, "f")]);
|
|
190
196
|
}
|
|
191
197
|
willUpdate() {
|
|
192
|
-
h(this,
|
|
198
|
+
h(this, V, this.el.offsetWidth, "f"), h(this, X, this.el.getBoundingClientRect().left, "f"), s(this, E, "f").willUpdate(), s(this, M, "f").willUpdate();
|
|
193
199
|
}
|
|
194
200
|
update({ integer: t, fraction: e }) {
|
|
195
|
-
|
|
201
|
+
s(this, E, "f").update(t), s(this, M, "f").update(e);
|
|
196
202
|
}
|
|
197
203
|
didUpdate() {
|
|
198
204
|
const t = this.el.getBoundingClientRect();
|
|
199
|
-
|
|
200
|
-
const e =
|
|
205
|
+
s(this, E, "f").didUpdate(), s(this, M, "f").didUpdate();
|
|
206
|
+
const e = s(this, X, "f") - t.left, i = this.el.offsetWidth, n = s(this, V, "f") - i;
|
|
201
207
|
this.el.style.setProperty("--width", String(i)), this.el.animate({
|
|
202
|
-
[
|
|
203
|
-
[
|
|
208
|
+
[q]: [`${e}px`, "0px"],
|
|
209
|
+
[nt]: [n, 0]
|
|
204
210
|
}, {
|
|
205
211
|
...this.flow.transformTiming,
|
|
206
212
|
composite: "accumulate"
|
|
207
213
|
});
|
|
208
214
|
}
|
|
209
215
|
}
|
|
210
|
-
|
|
211
|
-
class
|
|
212
|
-
constructor(t, e, { justify: i, className:
|
|
216
|
+
H = /* @__PURE__ */ new WeakMap(), E = /* @__PURE__ */ new WeakMap(), M = /* @__PURE__ */ new WeakMap(), V = /* @__PURE__ */ new WeakMap(), X = /* @__PURE__ */ new WeakMap();
|
|
217
|
+
class ct {
|
|
218
|
+
constructor(t, e, { justify: i, className: n, ...r }, l) {
|
|
213
219
|
this.flow = t, this.children = /* @__PURE__ */ new Map(), this.onCharRemove = (p) => () => {
|
|
214
220
|
this.children.delete(p);
|
|
215
|
-
},
|
|
221
|
+
}, z.set(this, void 0), this.justify = i;
|
|
216
222
|
const o = e.map((p) => this.addChar(p).el);
|
|
217
223
|
this.el = w("span", {
|
|
218
224
|
...r,
|
|
219
|
-
className: `section section--justify-${i} ${
|
|
225
|
+
className: `section section--justify-${i} ${n ?? ""}`
|
|
220
226
|
}, l ? l(o) : o);
|
|
221
227
|
}
|
|
222
228
|
addChar(t, { startDigitsAtZero: e = !1, ...i } = {}) {
|
|
223
|
-
const
|
|
229
|
+
const n = t.type === "integer" || t.type === "fraction" ? new dt(this, t.type, e ? 0 : t.value, t.place, {
|
|
224
230
|
...i,
|
|
225
231
|
onRemove: this.onCharRemove(t.key)
|
|
226
|
-
}) : new
|
|
232
|
+
}) : new $t(this, t.type, t.value, {
|
|
227
233
|
...i,
|
|
228
234
|
onRemove: this.onCharRemove(t.key)
|
|
229
235
|
});
|
|
230
|
-
return this.children.set(t.key,
|
|
236
|
+
return this.children.set(t.key, n), n;
|
|
231
237
|
}
|
|
232
238
|
unpop(t) {
|
|
233
239
|
t.el.classList.remove("section__exiting"), t.el.style[this.justify] = "";
|
|
234
240
|
}
|
|
235
241
|
pop(t) {
|
|
236
242
|
t.forEach((e) => {
|
|
237
|
-
e.el.style[this.justify] = `${
|
|
243
|
+
e.el.style[this.justify] = `${pt(e.el, this.justify)}px`;
|
|
238
244
|
}), t.forEach((e) => {
|
|
239
245
|
e.el.classList.add("section__exiting"), e.present = !1;
|
|
240
246
|
});
|
|
241
247
|
}
|
|
242
248
|
addNewAndUpdateExisting(t) {
|
|
243
|
-
const e = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map(),
|
|
244
|
-
if (
|
|
249
|
+
const e = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map(), n = this.justify === "left", r = n ? "prepend" : "append";
|
|
250
|
+
if (mt(t, (l) => {
|
|
245
251
|
let o;
|
|
246
252
|
this.children.has(l.key) ? (o = this.children.get(l.key), i.set(l, o), this.unpop(o), o.present = !0) : (o = this.addChar(l, { startDigitsAtZero: !0, animateIn: !0 }), e.set(l, o)), this.el[r](o.el);
|
|
247
|
-
}, { reverse:
|
|
253
|
+
}, { reverse: n }), this.flow.computedAnimated) {
|
|
248
254
|
const l = this.el.getBoundingClientRect();
|
|
249
255
|
e.forEach((o) => {
|
|
250
256
|
o.willUpdate(l);
|
|
@@ -258,12 +264,12 @@ class lt {
|
|
|
258
264
|
}
|
|
259
265
|
willUpdate() {
|
|
260
266
|
const t = this.el.getBoundingClientRect();
|
|
261
|
-
h(this,
|
|
267
|
+
h(this, z, t[this.justify], "f"), this.children.forEach((e) => e.willUpdate(t));
|
|
262
268
|
}
|
|
263
269
|
didUpdate() {
|
|
264
270
|
const t = this.el.getBoundingClientRect();
|
|
265
|
-
this.children.forEach((
|
|
266
|
-
const e = t[this.justify], i =
|
|
271
|
+
this.children.forEach((n) => n.didUpdate(t));
|
|
272
|
+
const e = t[this.justify], i = s(this, z, "f") - e;
|
|
267
273
|
this.el.animate({
|
|
268
274
|
transform: [`translateX(${i}px)`, "none"]
|
|
269
275
|
}, {
|
|
@@ -272,142 +278,142 @@ class lt {
|
|
|
272
278
|
});
|
|
273
279
|
}
|
|
274
280
|
}
|
|
275
|
-
|
|
276
|
-
class
|
|
281
|
+
z = /* @__PURE__ */ new WeakMap();
|
|
282
|
+
class rt extends ct {
|
|
277
283
|
update(t) {
|
|
278
284
|
const e = /* @__PURE__ */ new Map();
|
|
279
|
-
this.children.forEach((i,
|
|
280
|
-
t.find((r) => r.key ===
|
|
285
|
+
this.children.forEach((i, n) => {
|
|
286
|
+
t.find((r) => r.key === n) || e.set(n, i), this.unpop(i);
|
|
281
287
|
}), this.addNewAndUpdateExisting(t), e.forEach((i) => {
|
|
282
|
-
i instanceof
|
|
288
|
+
i instanceof dt && i.update(0);
|
|
283
289
|
}), this.pop(e);
|
|
284
290
|
}
|
|
285
291
|
}
|
|
286
|
-
class
|
|
292
|
+
class lt extends ct {
|
|
287
293
|
update(t) {
|
|
288
294
|
const e = /* @__PURE__ */ new Map();
|
|
289
|
-
this.children.forEach((i,
|
|
290
|
-
t.find((r) => r.key ===
|
|
295
|
+
this.children.forEach((i, n) => {
|
|
296
|
+
t.find((r) => r.key === n) || e.set(n, i);
|
|
291
297
|
}), this.pop(e), this.addNewAndUpdateExisting(t);
|
|
292
298
|
}
|
|
293
299
|
}
|
|
294
|
-
class
|
|
295
|
-
constructor(t, e, { onRemove: i, animateIn:
|
|
296
|
-
this.flow = t, this.el = e,
|
|
300
|
+
class st {
|
|
301
|
+
constructor(t, e, { onRemove: i, animateIn: n = !1 } = {}) {
|
|
302
|
+
this.flow = t, this.el = e, j.set(this, !0), I.set(this, void 0), T.set(this, () => {
|
|
297
303
|
var r;
|
|
298
|
-
this.el.remove(), (r =
|
|
299
|
-
}), this.el.classList.add("animate-presence"), this.flow.
|
|
300
|
-
[
|
|
304
|
+
this.el.remove(), (r = s(this, I, "f")) == null || r.call(this);
|
|
305
|
+
}), this.el.classList.add("animate-presence"), this.flow.computedAnimated && n && this.el.animate({
|
|
306
|
+
[Z]: [-0.9999, 0]
|
|
301
307
|
}, {
|
|
302
308
|
...this.flow.opacityTiming,
|
|
303
309
|
composite: "accumulate"
|
|
304
|
-
}), h(this,
|
|
310
|
+
}), h(this, I, i, "f");
|
|
305
311
|
}
|
|
306
312
|
get present() {
|
|
307
|
-
return
|
|
313
|
+
return s(this, j, "f");
|
|
308
314
|
}
|
|
309
315
|
set present(t) {
|
|
310
|
-
if (
|
|
311
|
-
if (h(this,
|
|
312
|
-
t ||
|
|
316
|
+
if (s(this, j, "f") !== t) {
|
|
317
|
+
if (h(this, j, t, "f"), !this.flow.computedAnimated) {
|
|
318
|
+
t || s(this, T, "f").call(this);
|
|
313
319
|
return;
|
|
314
320
|
}
|
|
315
321
|
this.el.style.setProperty("--_number-flow-d-opacity", t ? "0" : "-.999"), this.el.animate({
|
|
316
|
-
[
|
|
322
|
+
[Z]: t ? [-0.9999, 0] : [0.999, 0]
|
|
317
323
|
}, {
|
|
318
324
|
...this.flow.opacityTiming,
|
|
319
325
|
composite: "accumulate"
|
|
320
|
-
}), t ? this.flow.removeEventListener("animationsfinish",
|
|
326
|
+
}), t ? this.flow.removeEventListener("animationsfinish", s(this, T, "f")) : this.flow.addEventListener("animationsfinish", s(this, T, "f"), {
|
|
321
327
|
once: !0
|
|
322
328
|
});
|
|
323
329
|
}
|
|
324
330
|
}
|
|
325
331
|
}
|
|
326
|
-
|
|
327
|
-
class
|
|
328
|
-
constructor(t, e, i,
|
|
329
|
-
super(t.flow, i,
|
|
332
|
+
j = /* @__PURE__ */ new WeakMap(), I = /* @__PURE__ */ new WeakMap(), T = /* @__PURE__ */ new WeakMap();
|
|
333
|
+
class ft extends st {
|
|
334
|
+
constructor(t, e, i, n) {
|
|
335
|
+
super(t.flow, i, n), this.section = t, this.value = e, this.el = i;
|
|
330
336
|
}
|
|
331
337
|
}
|
|
332
|
-
class
|
|
333
|
-
constructor(t, e, i,
|
|
338
|
+
class dt extends ft {
|
|
339
|
+
constructor(t, e, i, n, r) {
|
|
334
340
|
const l = Array.from({ length: 10 }).map((p, u) => {
|
|
335
341
|
const m = w("span", { className: `digit__num${u === i ? " is-current" : ""}` }, [document.createTextNode(String(u))]);
|
|
336
342
|
return m.style.setProperty("--n", String(u)), m;
|
|
337
343
|
}), o = w("span", {
|
|
338
344
|
className: "digit"
|
|
339
345
|
}, l);
|
|
340
|
-
o.style.setProperty("--current", String(i)), super(t, i, o, r), this.place =
|
|
346
|
+
o.style.setProperty("--current", String(i)), super(t, i, o, r), this.place = n, A.set(this, void 0), _.set(this, void 0), G.set(this, void 0), it.set(this, () => {
|
|
341
347
|
this.el.classList.remove("is-spinning");
|
|
342
|
-
}), h(this,
|
|
348
|
+
}), h(this, A, l, "f");
|
|
343
349
|
}
|
|
344
350
|
willUpdate(t) {
|
|
345
351
|
const e = this.el.getBoundingClientRect();
|
|
346
|
-
h(this,
|
|
347
|
-
const i = e[this.section.justify] - t[this.section.justify],
|
|
348
|
-
h(this,
|
|
352
|
+
h(this, _, this.value, "f");
|
|
353
|
+
const i = e[this.section.justify] - t[this.section.justify], n = e.width / 2;
|
|
354
|
+
h(this, G, this.section.justify === "left" ? i + n : i - n, "f");
|
|
349
355
|
}
|
|
350
356
|
update(t) {
|
|
351
357
|
var e, i;
|
|
352
|
-
(e =
|
|
358
|
+
(e = s(this, A, "f")[this.value]) == null || e.classList.remove("is-current"), this.el.style.setProperty("--current", String(t)), (i = s(this, A, "f")[t]) == null || i.classList.add("is-current"), this.value = t;
|
|
353
359
|
}
|
|
354
360
|
didUpdate(t) {
|
|
355
|
-
const e = this.el.getBoundingClientRect(), i = e[this.section.justify] - t[this.section.justify],
|
|
361
|
+
const e = this.el.getBoundingClientRect(), i = e[this.section.justify] - t[this.section.justify], n = e.width / 2, r = this.section.justify === "left" ? i + n : i - n;
|
|
356
362
|
this.el.animate({
|
|
357
|
-
transform: [`translateX(${
|
|
363
|
+
transform: [`translateX(${s(this, G, "f") - r}px)`, "none"]
|
|
358
364
|
}, {
|
|
359
365
|
...this.flow.transformTiming,
|
|
360
366
|
composite: "accumulate"
|
|
361
367
|
});
|
|
362
368
|
const l = this.diff;
|
|
363
369
|
l && (this.el.classList.add("is-spinning"), this.el.animate({
|
|
364
|
-
[
|
|
370
|
+
[at]: [-l, 0]
|
|
365
371
|
}, {
|
|
366
372
|
...this.flow.spinTiming ?? this.flow.transformTiming,
|
|
367
373
|
composite: "accumulate"
|
|
368
|
-
}), this.flow.addEventListener("animationsfinish",
|
|
374
|
+
}), this.flow.addEventListener("animationsfinish", s(this, it, "f"), { once: !0 }));
|
|
369
375
|
}
|
|
370
376
|
get diff() {
|
|
371
377
|
let t = this.flow.computedTrend;
|
|
372
|
-
const e = this.value -
|
|
373
|
-
return !e && this.flow.startingPlace != null && this.flow.startingPlace >= this.place ? 10 * t : (t || (t = Math.sign(e)), t === b.DOWN && this.value >
|
|
378
|
+
const e = this.value - s(this, _, "f");
|
|
379
|
+
return !e && this.flow.startingPlace != null && this.flow.startingPlace >= this.place ? 10 * t : (t || (t = Math.sign(e)), t === b.DOWN && this.value > s(this, _, "f") ? this.value - 10 - s(this, _, "f") : t === b.UP && this.value < s(this, _, "f") ? 10 - s(this, _, "f") + this.value : e);
|
|
374
380
|
}
|
|
375
381
|
}
|
|
376
|
-
|
|
377
|
-
class
|
|
378
|
-
constructor(t, e, i,
|
|
382
|
+
A = /* @__PURE__ */ new WeakMap(), _ = /* @__PURE__ */ new WeakMap(), G = /* @__PURE__ */ new WeakMap(), it = /* @__PURE__ */ new WeakMap();
|
|
383
|
+
class $t extends ft {
|
|
384
|
+
constructor(t, e, i, n) {
|
|
379
385
|
const r = w("span", {
|
|
380
386
|
className: "symbol__value",
|
|
381
387
|
textContent: i
|
|
382
388
|
});
|
|
383
389
|
super(t, i, w("span", {
|
|
384
390
|
className: "symbol"
|
|
385
|
-
}, [r]),
|
|
386
|
-
|
|
387
|
-
}),
|
|
388
|
-
onRemove:
|
|
391
|
+
}, [r]), n), this.type = e, v.set(this, /* @__PURE__ */ new Map()), Y.set(this, void 0), K.set(this, (l) => () => {
|
|
392
|
+
s(this, v, "f").delete(l);
|
|
393
|
+
}), s(this, v, "f").set(i, new st(this.flow, r, {
|
|
394
|
+
onRemove: s(this, K, "f").call(this, i)
|
|
389
395
|
}));
|
|
390
396
|
}
|
|
391
397
|
willUpdate(t) {
|
|
392
398
|
if (this.type === "decimal")
|
|
393
399
|
return;
|
|
394
400
|
const e = this.el.getBoundingClientRect();
|
|
395
|
-
h(this,
|
|
401
|
+
h(this, Y, e[this.section.justify] - t[this.section.justify], "f");
|
|
396
402
|
}
|
|
397
403
|
update(t) {
|
|
398
404
|
if (this.value !== t) {
|
|
399
|
-
const e =
|
|
400
|
-
if (e.present = !1, e.el.classList.add("symbol__exiting"),
|
|
401
|
-
const i =
|
|
405
|
+
const e = s(this, v, "f").get(this.value);
|
|
406
|
+
if (e.present = !1, e.el.classList.add("symbol__exiting"), s(this, v, "f").has(t)) {
|
|
407
|
+
const i = s(this, v, "f").get(t);
|
|
402
408
|
i.present = !0, i.el.classList.remove("symbol__exiting");
|
|
403
409
|
} else {
|
|
404
410
|
const i = w("span", {
|
|
405
411
|
className: "symbol__value",
|
|
406
412
|
textContent: t
|
|
407
413
|
});
|
|
408
|
-
this.el.appendChild(i),
|
|
414
|
+
this.el.appendChild(i), s(this, v, "f").set(t, new st(this.flow, i, {
|
|
409
415
|
animateIn: !0,
|
|
410
|
-
onRemove:
|
|
416
|
+
onRemove: s(this, K, "f").call(this, t)
|
|
411
417
|
}));
|
|
412
418
|
}
|
|
413
419
|
}
|
|
@@ -418,18 +424,16 @@ class kt extends ht {
|
|
|
418
424
|
return;
|
|
419
425
|
const i = this.el.getBoundingClientRect()[this.section.justify] - t[this.section.justify];
|
|
420
426
|
this.el.animate({
|
|
421
|
-
transform: [`translateX(${
|
|
427
|
+
transform: [`translateX(${s(this, Y, "f") - i}px)`, "none"]
|
|
422
428
|
}, { ...this.flow.transformTiming, composite: "accumulate" });
|
|
423
429
|
}
|
|
424
430
|
}
|
|
425
|
-
|
|
431
|
+
v = /* @__PURE__ */ new WeakMap(), Y = /* @__PURE__ */ new WeakMap(), K = /* @__PURE__ */ new WeakMap();
|
|
426
432
|
export {
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
J as prefersReducedMotion,
|
|
434
|
-
Et as slottedStyles
|
|
433
|
+
kt as NumberFlowLite,
|
|
434
|
+
St as canAnimate,
|
|
435
|
+
Et as define,
|
|
436
|
+
Mt as partitionParts,
|
|
437
|
+
Q as prefersReducedMotion,
|
|
438
|
+
Nt as render
|
|
435
439
|
};
|
package/dist/ssr.d.ts
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
|
+
import type { PartitionedParts } from './formatter';
|
|
1
2
|
export declare const ServerSafeHTMLElement: {
|
|
2
3
|
new (): HTMLElement;
|
|
3
4
|
prototype: HTMLElement;
|
|
4
5
|
};
|
|
6
|
+
export type RenderProps = {
|
|
7
|
+
formatted: PartitionedParts['formatted'];
|
|
8
|
+
willChange?: boolean;
|
|
9
|
+
};
|
|
10
|
+
export declare const render: ({ formatted, willChange }: RenderProps) => string;
|
package/dist/styles.d.ts
CHANGED
|
@@ -9,14 +9,5 @@ export declare const supportsAtProperty: boolean;
|
|
|
9
9
|
export declare const charHeight = "var(--number-flow-char-height, 1em)";
|
|
10
10
|
export declare const maskHeight = "var(--number-flow-mask-height, 0.25em)";
|
|
11
11
|
export declare const SlottedTag = "span";
|
|
12
|
-
export declare const slottedStyles: ({ willChange }: {
|
|
13
|
-
willChange?: boolean;
|
|
14
|
-
}) => {
|
|
15
|
-
readonly fontKerning: "none";
|
|
16
|
-
readonly display: "inline-block";
|
|
17
|
-
readonly lineHeight: "var(--number-flow-char-height, 1em)";
|
|
18
|
-
readonly padding: "var(--number-flow-mask-height, 0.25em) 0";
|
|
19
|
-
readonly willChange: "transform" | undefined;
|
|
20
|
-
};
|
|
21
12
|
declare const styles: string;
|
|
22
13
|
export default styles;
|
package/dist/util/dom.d.ts
CHANGED
|
@@ -7,4 +7,6 @@ export type HTMLProps<K extends keyof HTMLElementTagNameMap> = Partial<ExcludeRe
|
|
|
7
7
|
export declare const createElement: <K extends keyof HTMLElementTagNameMap>(tagName: K, optionsOrChildren?: HTMLProps<K> | Node[], _children?: Node[]) => HTMLElementTagNameMap[K];
|
|
8
8
|
export type Justify = 'left' | 'right';
|
|
9
9
|
export declare const offset: (el: HTMLElement, justify: Justify) => number;
|
|
10
|
+
export declare const visible: (el: HTMLElement) => boolean;
|
|
11
|
+
export declare const define: (name: string, constructor: CustomElementConstructor) => void;
|
|
10
12
|
export {};
|