number-flow 0.3.1 → 0.3.3
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 +1 -1
- package/dist/index.js +1 -1
- package/dist/index.mjs +59 -67
- package/dist/styles.d.ts +1 -0
- package/dist/util/env.d.ts +1 -0
- package/dist/util/math.d.ts +1 -1
- package/package.json +1 -4
package/dist/index.d.ts
CHANGED
|
@@ -22,7 +22,7 @@ export declare class NumberFlowLite extends ServerSafeHTMLElement {
|
|
|
22
22
|
respectMotionPreference: boolean;
|
|
23
23
|
trend: RawTrend;
|
|
24
24
|
continuous: boolean;
|
|
25
|
-
get startingPlace(): number | undefined;
|
|
25
|
+
get startingPlace(): number | null | undefined;
|
|
26
26
|
get computedTrend(): Trend | undefined;
|
|
27
27
|
set parts(parts: PartitionedParts | undefined);
|
|
28
28
|
willUpdate(): void;
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Z=require("esm-env");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 yt=Z.BROWSER?HTMLElement:class{},vt=String.raw,_t=Z.BROWSER&&typeof CSS<"u"&&CSS.supports("line-height","mod(1,1)"),O=Z.BROWSER?matchMedia("(prefers-reduced-motion: reduce)"):null,Y="--_number-flow-d-opacity",it="--_number-flow-d-width",q="--_number-flow-dx",st="--_number-flow-d",bt=(()=>{try{return CSS.registerProperty({name:Y,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))`,T="#000 0, transparent 71%",lt="span",St=({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,${T}),radial-gradient(at bottom left,${T}),radial-gradient(at top left,${T}),radial-gradient(at top right,${T});-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(${Y}));}`,kt=(a,t)=>{if(a!=null&&t==null)return a;if(a==null&&t!=null)return t;if(a!=null&&t!=null)return Math.max(a,t)};var F,B,k,x,E,y,P,R,W,D,$,M,H,V,X,U,z,j,L,v,I,tt,_,G,K;const ht=_t&&bt;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 A;class xt extends yt{constructor(){super(...arguments),this.transformTiming=ft,this.opacityTiming=ct,F.set(this,!0),this.manual=!1,this.respectMotionPreference=!0,B.set(this,!1),k.set(this,void 0),x.set(this,void 0),E.set(this,void 0),this.trend=!0,y.set(this,void 0),this.continuous=!1,P.set(this,void 0),R.set(this,void 0),W.set(this,void 0)}static define(){Z.BROWSER&&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,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,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,kt(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,E,"f").update(r),this.manual||this.didUpdate()}else{if(h(this,R,t,"f"),this.attachShadow({mode:"open"}),typeof CSSStyleSheet<"u"&&this.shadowRoot.adoptedStyleSheets)A||(A=new CSSStyleSheet,A.replaceSync(nt)),this.shadowRoot.adoptedStyleSheets=[A];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,E,new ot(this,r,{inert:!0,ariaHidden:"true",justify:"left"}),"f"),this.shadowRoot.appendChild(n(this,E,"f").el)}h(this,B,!0,"f")}willUpdate(){this.animated&&(n(this,k,"f").willUpdate(),n(this,x,"f").willUpdate(),n(this,E,"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,E,"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,F,"f")&&(!this.respectMotionPreference||!(O!=null&&O.matches))}set animated(t){var e;this.animated!==t&&(h(this,F,t,"f"),(e=this.shadowRoot)==null||e.getAnimations().forEach(i=>i.finish()))}}F=new WeakMap,B=new WeakMap,k=new WeakMap,x=new WeakMap,E=new WeakMap,y=new WeakMap,P=new WeakMap,R=new WeakMap,W=new WeakMap;class Et{constructor(t,e,i,{className:s,...r}={}){this.flow=t,D.set(this,void 0),$.set(this,void 0),M.set(this,void 0),H.set(this,void 0),V.set(this,void 0),h(this,$,new at(t,e,{justify:"right"}),"f"),h(this,M,new at(t,i,{justify:"left"}),"f"),h(this,D,w("span",{className:"number__inner"},[n(this,$,"f").el,n(this,M,"f").el]),"f"),this.el=w("span",{...r,className:`number ${s??""}`},[n(this,D,"f")])}willUpdate(){h(this,H,this.el.offsetWidth,"f"),h(this,V,this.el.getBoundingClientRect().left,"f"),n(this,$,"f").willUpdate(),n(this,M,"f").willUpdate()}update({integer:t,fraction:e}){n(this,$,"f").update(t),n(this,M,"f").update(e)}didUpdate(){const t=this.el.getBoundingClientRect();n(this,$,"f").didUpdate(),n(this,M,"f").didUpdate();const e=n(this,V,"f")-t.left,i=this.el.offsetWidth,s=n(this,H,"f")-i;this.el.style.setProperty("--width",String(i)),this.el.animate({[q]:[`${e}px`,"0px"],[it]:[s,0]},{...this.flow.transformTiming,composite:"accumulate"})}}D=new WeakMap,$=new WeakMap,M=new WeakMap,H=new WeakMap,V=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)},X.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 $t(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,X,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,X,"f")-e;this.el.animate({transform:[`translateX(${i}px)`,"none"]},{...this.flow.transformTiming,composite:"accumulate"})}}X=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,U.set(this,!0),z.set(this,void 0),j.set(this,()=>{var r;this.el.remove(),(r=n(this,z,"f"))==null||r.call(this)}),this.el.classList.add("animate-presence"),this.flow.animated&&s&&this.el.animate({[Y]:[-.9999,0]},{...this.flow.opacityTiming,composite:"accumulate"}),h(this,z,i,"f")}get present(){return n(this,U,"f")}set present(t){if(n(this,U,"f")!==t){if(h(this,U,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({[Y]: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})}}}U=new WeakMap,z=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,L.set(this,void 0),v.set(this,void 0),I.set(this,void 0),tt.set(this,()=>{this.el.classList.remove("is-spinning")}),h(this,L,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,I,this.section.justify==="left"?i+s:i-s,"f")}update(t){var e,i;(e=n(this,L,"f")[this.value])==null||e.classList.remove("is-current"),this.el.style.setProperty("--current",String(t)),(i=n(this,L,"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,I,"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)}}L=new WeakMap,v=new WeakMap,I=new WeakMap,tt=new WeakMap;class $t 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),G.set(this,void 0),K.set(this,l=>()=>{n(this,_,"f").delete(l)}),n(this,_,"f").set(i,new et(this.flow,r,{onRemove:n(this,K,"f").call(this,i)}))}willUpdate(t){if(this.type==="decimal")return;const e=this.el.getBoundingClientRect();h(this,G,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,K,"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,G,"f")-i}px)`,"none"]},{...this.flow.transformTiming,composite:"accumulate"})}}_=new WeakMap,G=new WeakMap,K=new WeakMap;exports.NumberFlowLite=xt;exports.SlottedTag=lt;exports.canAnimate=ht;exports.defaultOpacityTiming=ct;exports.defaultTransformTiming=ft;exports.partitionParts=wt;exports.prefersReducedMotion=O;exports.slottedStyles=St;
|
|
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;
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { BROWSER as Z } from "esm-env";
|
|
2
1
|
function n(a, t, e, i) {
|
|
3
2
|
if (e === "a" && !i) throw new TypeError("Private accessor was defined without a getter");
|
|
4
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");
|
|
@@ -63,16 +62,16 @@ function $t(a, t) {
|
|
|
63
62
|
value: typeof a == "string" ? parseFloat(a) : a
|
|
64
63
|
};
|
|
65
64
|
}
|
|
66
|
-
const pt =
|
|
67
|
-
}, ut = String.raw, mt =
|
|
65
|
+
const T = typeof window < "u", pt = T ? HTMLElement : class {
|
|
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
67
|
try {
|
|
69
68
|
return CSS.registerProperty({
|
|
70
|
-
name:
|
|
69
|
+
name: Y,
|
|
71
70
|
syntax: "<number>",
|
|
72
71
|
inherits: !1,
|
|
73
72
|
initialValue: "0"
|
|
74
73
|
}), CSS.registerProperty({
|
|
75
|
-
name:
|
|
74
|
+
name: Z,
|
|
76
75
|
syntax: "<length>",
|
|
77
76
|
inherits: !0,
|
|
78
77
|
initialValue: "0px"
|
|
@@ -90,38 +89,31 @@ const pt = Z ? HTMLElement : class {
|
|
|
90
89
|
} catch {
|
|
91
90
|
return !1;
|
|
92
91
|
}
|
|
93
|
-
})(), 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))`,
|
|
92
|
+
})(), 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%", yt = "span", Et = ({ willChange: a }) => ({
|
|
94
93
|
fontKerning: "none",
|
|
95
94
|
display: "inline-block",
|
|
96
95
|
lineHeight: rt,
|
|
97
96
|
padding: `${g} 0`,
|
|
98
97
|
willChange: a ? "transform" : void 0
|
|
99
|
-
}), nt = ut`:host{display:inline-flex;align-items:baseline;direction:ltr;white-space:nowrap;position:relative;line-height:${rt} !important;isolation:isolate;}::slotted(${
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
if (a == null && t != null)
|
|
103
|
-
return t;
|
|
104
|
-
if (a != null && t != null)
|
|
105
|
-
return Math.max(a, t);
|
|
106
|
-
};
|
|
107
|
-
var F, D, x, k, $, y, P, U, W, O, E, M, B, H, V, j, X, L, R, v, z, tt, _, I, G;
|
|
108
|
-
const vt = mt && gt;
|
|
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;
|
|
109
101
|
var b;
|
|
110
102
|
(function(a) {
|
|
111
103
|
a[a.UP = 1] = "UP", a[a.DOWN = -1] = "DOWN", a[a.NONE = 0] = "NONE";
|
|
112
104
|
})(b || (b = {}));
|
|
113
|
-
const
|
|
105
|
+
const bt = { duration: 450, easing: "ease-out" }, St = {
|
|
114
106
|
duration: 900,
|
|
115
107
|
// Make sure to keep this minified:
|
|
116
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)"
|
|
117
109
|
};
|
|
118
|
-
let
|
|
110
|
+
let F;
|
|
119
111
|
class Mt extends pt {
|
|
120
112
|
constructor() {
|
|
121
|
-
super(...arguments), this.transformTiming =
|
|
113
|
+
super(...arguments), this.transformTiming = St, this.opacityTiming = bt, D.set(this, !0), this.manual = !1, this.respectMotionPreference = !0, O.set(this, !1), x.set(this, void 0), k.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);
|
|
122
114
|
}
|
|
123
115
|
static define() {
|
|
124
|
-
|
|
116
|
+
T && customElements.define("number-flow", this);
|
|
125
117
|
}
|
|
126
118
|
get startingPlace() {
|
|
127
119
|
return n(this, P, "f");
|
|
@@ -133,16 +125,16 @@ class Mt extends pt {
|
|
|
133
125
|
if (t == null)
|
|
134
126
|
return;
|
|
135
127
|
const { pre: e, integer: i, fraction: s, post: r, value: l } = t;
|
|
136
|
-
if (n(this,
|
|
128
|
+
if (n(this, O, "f")) {
|
|
137
129
|
const o = n(this, U, "f");
|
|
138
130
|
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) {
|
|
139
131
|
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));
|
|
140
|
-
h(this, P,
|
|
132
|
+
h(this, P, vt(m == null ? void 0 : m.place, N == null ? void 0 : N.place), "f");
|
|
141
133
|
}
|
|
142
134
|
this.manual || this.willUpdate(), n(this, x, "f").update(e), n(this, k, "f").update({ integer: i, fraction: s }), n(this, $, "f").update(r), this.manual || this.didUpdate();
|
|
143
135
|
} else {
|
|
144
136
|
if (h(this, U, t, "f"), this.attachShadow({ mode: "open" }), typeof CSSStyleSheet < "u" && this.shadowRoot.adoptedStyleSheets)
|
|
145
|
-
|
|
137
|
+
F || (F = new CSSStyleSheet(), F.replaceSync(nt)), this.shadowRoot.adoptedStyleSheets = [F];
|
|
146
138
|
else {
|
|
147
139
|
const o = document.createElement("style");
|
|
148
140
|
o.textContent = nt, this.shadowRoot.appendChild(o);
|
|
@@ -151,7 +143,7 @@ class Mt extends pt {
|
|
|
151
143
|
inert: !0,
|
|
152
144
|
ariaHidden: "true",
|
|
153
145
|
justify: "right"
|
|
154
|
-
}), "f"), this.shadowRoot.appendChild(n(this, x, "f").el), h(this, k, new
|
|
146
|
+
}), "f"), this.shadowRoot.appendChild(n(this, x, "f").el), h(this, k, new xt(this, i, s, {
|
|
155
147
|
inert: !0,
|
|
156
148
|
ariaHidden: "true"
|
|
157
149
|
}), "f"), this.shadowRoot.appendChild(n(this, k, "f").el), h(this, $, new ot(this, r, {
|
|
@@ -160,7 +152,7 @@ class Mt extends pt {
|
|
|
160
152
|
justify: "left"
|
|
161
153
|
}), "f"), this.shadowRoot.appendChild(n(this, $, "f").el);
|
|
162
154
|
}
|
|
163
|
-
h(this,
|
|
155
|
+
h(this, O, !0, "f");
|
|
164
156
|
}
|
|
165
157
|
willUpdate() {
|
|
166
158
|
this.animated && (n(this, x, "f").willUpdate(), n(this, k, "f").willUpdate(), n(this, $, "f").willUpdate());
|
|
@@ -175,29 +167,29 @@ class Mt extends pt {
|
|
|
175
167
|
}), h(this, W, t, "f");
|
|
176
168
|
}
|
|
177
169
|
get animated() {
|
|
178
|
-
return
|
|
170
|
+
return _t && n(this, D, "f") && (!this.respectMotionPreference || !(J != null && J.matches));
|
|
179
171
|
}
|
|
180
172
|
set animated(t) {
|
|
181
173
|
var e;
|
|
182
|
-
this.animated !== t && (h(this,
|
|
174
|
+
this.animated !== t && (h(this, D, t, "f"), (e = this.shadowRoot) == null || e.getAnimations().forEach((i) => i.finish()));
|
|
183
175
|
}
|
|
184
176
|
}
|
|
185
|
-
|
|
186
|
-
class
|
|
177
|
+
D = /* @__PURE__ */ new WeakMap(), O = /* @__PURE__ */ new WeakMap(), x = /* @__PURE__ */ new WeakMap(), k = /* @__PURE__ */ new WeakMap(), $ = /* @__PURE__ */ new WeakMap(), y = /* @__PURE__ */ new WeakMap(), P = /* @__PURE__ */ new WeakMap(), U = /* @__PURE__ */ new WeakMap(), W = /* @__PURE__ */ new WeakMap();
|
|
178
|
+
class xt {
|
|
187
179
|
constructor(t, e, i, { className: s, ...r } = {}) {
|
|
188
|
-
this.flow = t,
|
|
180
|
+
this.flow = t, B.set(this, void 0), E.set(this, void 0), M.set(this, void 0), H.set(this, void 0), V.set(this, void 0), h(this, E, new at(t, e, {
|
|
189
181
|
justify: "right"
|
|
190
182
|
}), "f"), h(this, M, new at(t, i, {
|
|
191
183
|
justify: "left"
|
|
192
|
-
}), "f"), h(this,
|
|
184
|
+
}), "f"), h(this, B, w("span", {
|
|
193
185
|
className: "number__inner"
|
|
194
186
|
}, [n(this, E, "f").el, n(this, M, "f").el]), "f"), this.el = w("span", {
|
|
195
187
|
...r,
|
|
196
188
|
className: `number ${s ?? ""}`
|
|
197
|
-
}, [n(this,
|
|
189
|
+
}, [n(this, B, "f")]);
|
|
198
190
|
}
|
|
199
191
|
willUpdate() {
|
|
200
|
-
h(this,
|
|
192
|
+
h(this, H, this.el.offsetWidth, "f"), h(this, V, this.el.getBoundingClientRect().left, "f"), n(this, E, "f").willUpdate(), n(this, M, "f").willUpdate();
|
|
201
193
|
}
|
|
202
194
|
update({ integer: t, fraction: e }) {
|
|
203
195
|
n(this, E, "f").update(t), n(this, M, "f").update(e);
|
|
@@ -205,9 +197,9 @@ class St {
|
|
|
205
197
|
didUpdate() {
|
|
206
198
|
const t = this.el.getBoundingClientRect();
|
|
207
199
|
n(this, E, "f").didUpdate(), n(this, M, "f").didUpdate();
|
|
208
|
-
const e = n(this,
|
|
200
|
+
const e = n(this, V, "f") - t.left, i = this.el.offsetWidth, s = n(this, H, "f") - i;
|
|
209
201
|
this.el.style.setProperty("--width", String(i)), this.el.animate({
|
|
210
|
-
[
|
|
202
|
+
[Z]: [`${e}px`, "0px"],
|
|
211
203
|
[it]: [s, 0]
|
|
212
204
|
}, {
|
|
213
205
|
...this.flow.transformTiming,
|
|
@@ -215,12 +207,12 @@ class St {
|
|
|
215
207
|
});
|
|
216
208
|
}
|
|
217
209
|
}
|
|
218
|
-
|
|
210
|
+
B = /* @__PURE__ */ new WeakMap(), E = /* @__PURE__ */ new WeakMap(), M = /* @__PURE__ */ new WeakMap(), H = /* @__PURE__ */ new WeakMap(), V = /* @__PURE__ */ new WeakMap();
|
|
219
211
|
class lt {
|
|
220
212
|
constructor(t, e, { justify: i, className: s, ...r }, l) {
|
|
221
213
|
this.flow = t, this.children = /* @__PURE__ */ new Map(), this.onCharRemove = (p) => () => {
|
|
222
214
|
this.children.delete(p);
|
|
223
|
-
},
|
|
215
|
+
}, X.set(this, void 0), this.justify = i;
|
|
224
216
|
const o = e.map((p) => this.addChar(p).el);
|
|
225
217
|
this.el = w("span", {
|
|
226
218
|
...r,
|
|
@@ -231,7 +223,7 @@ class lt {
|
|
|
231
223
|
const s = t.type === "integer" || t.type === "fraction" ? new ct(this, t.type, e ? 0 : t.value, t.place, {
|
|
232
224
|
...i,
|
|
233
225
|
onRemove: this.onCharRemove(t.key)
|
|
234
|
-
}) : new
|
|
226
|
+
}) : new kt(this, t.type, t.value, {
|
|
235
227
|
...i,
|
|
236
228
|
onRemove: this.onCharRemove(t.key)
|
|
237
229
|
});
|
|
@@ -266,12 +258,12 @@ class lt {
|
|
|
266
258
|
}
|
|
267
259
|
willUpdate() {
|
|
268
260
|
const t = this.el.getBoundingClientRect();
|
|
269
|
-
h(this,
|
|
261
|
+
h(this, X, t[this.justify], "f"), this.children.forEach((e) => e.willUpdate(t));
|
|
270
262
|
}
|
|
271
263
|
didUpdate() {
|
|
272
264
|
const t = this.el.getBoundingClientRect();
|
|
273
265
|
this.children.forEach((s) => s.didUpdate(t));
|
|
274
|
-
const e = t[this.justify], i = n(this,
|
|
266
|
+
const e = t[this.justify], i = n(this, X, "f") - e;
|
|
275
267
|
this.el.animate({
|
|
276
268
|
transform: [`translateX(${i}px)`, "none"]
|
|
277
269
|
}, {
|
|
@@ -280,7 +272,7 @@ class lt {
|
|
|
280
272
|
});
|
|
281
273
|
}
|
|
282
274
|
}
|
|
283
|
-
|
|
275
|
+
X = /* @__PURE__ */ new WeakMap();
|
|
284
276
|
class at extends lt {
|
|
285
277
|
update(t) {
|
|
286
278
|
const e = /* @__PURE__ */ new Map();
|
|
@@ -301,37 +293,37 @@ class ot extends lt {
|
|
|
301
293
|
}
|
|
302
294
|
class et {
|
|
303
295
|
constructor(t, e, { onRemove: i, animateIn: s = !1 } = {}) {
|
|
304
|
-
this.flow = t, this.el = e,
|
|
296
|
+
this.flow = t, this.el = e, L.set(this, !0), z.set(this, void 0), j.set(this, () => {
|
|
305
297
|
var r;
|
|
306
|
-
this.el.remove(), (r = n(this,
|
|
298
|
+
this.el.remove(), (r = n(this, z, "f")) == null || r.call(this);
|
|
307
299
|
}), this.el.classList.add("animate-presence"), this.flow.animated && s && this.el.animate({
|
|
308
|
-
[
|
|
300
|
+
[Y]: [-0.9999, 0]
|
|
309
301
|
}, {
|
|
310
302
|
...this.flow.opacityTiming,
|
|
311
303
|
composite: "accumulate"
|
|
312
|
-
}), h(this,
|
|
304
|
+
}), h(this, z, i, "f");
|
|
313
305
|
}
|
|
314
306
|
get present() {
|
|
315
|
-
return n(this,
|
|
307
|
+
return n(this, L, "f");
|
|
316
308
|
}
|
|
317
309
|
set present(t) {
|
|
318
|
-
if (n(this,
|
|
319
|
-
if (h(this,
|
|
320
|
-
t || n(this,
|
|
310
|
+
if (n(this, L, "f") !== t) {
|
|
311
|
+
if (h(this, L, t, "f"), !this.flow.animated) {
|
|
312
|
+
t || n(this, j, "f").call(this);
|
|
321
313
|
return;
|
|
322
314
|
}
|
|
323
315
|
this.el.style.setProperty("--_number-flow-d-opacity", t ? "0" : "-.999"), this.el.animate({
|
|
324
|
-
[
|
|
316
|
+
[Y]: t ? [-0.9999, 0] : [0.999, 0]
|
|
325
317
|
}, {
|
|
326
318
|
...this.flow.opacityTiming,
|
|
327
319
|
composite: "accumulate"
|
|
328
|
-
}), t ? this.flow.removeEventListener("animationsfinish", n(this,
|
|
320
|
+
}), t ? this.flow.removeEventListener("animationsfinish", n(this, j, "f")) : this.flow.addEventListener("animationsfinish", n(this, j, "f"), {
|
|
329
321
|
once: !0
|
|
330
322
|
});
|
|
331
323
|
}
|
|
332
324
|
}
|
|
333
325
|
}
|
|
334
|
-
|
|
326
|
+
L = /* @__PURE__ */ new WeakMap(), z = /* @__PURE__ */ new WeakMap(), j = /* @__PURE__ */ new WeakMap();
|
|
335
327
|
class ht extends et {
|
|
336
328
|
constructor(t, e, i, s) {
|
|
337
329
|
super(t.flow, i, s), this.section = t, this.value = e, this.el = i;
|
|
@@ -345,7 +337,7 @@ class ct extends ht {
|
|
|
345
337
|
}), o = w("span", {
|
|
346
338
|
className: "digit"
|
|
347
339
|
}, l);
|
|
348
|
-
o.style.setProperty("--current", String(i)), super(t, i, o, r), this.place = s, R.set(this, void 0), v.set(this, void 0),
|
|
340
|
+
o.style.setProperty("--current", String(i)), super(t, i, o, r), this.place = s, R.set(this, void 0), v.set(this, void 0), I.set(this, void 0), tt.set(this, () => {
|
|
349
341
|
this.el.classList.remove("is-spinning");
|
|
350
342
|
}), h(this, R, l, "f");
|
|
351
343
|
}
|
|
@@ -353,7 +345,7 @@ class ct extends ht {
|
|
|
353
345
|
const e = this.el.getBoundingClientRect();
|
|
354
346
|
h(this, v, this.value, "f");
|
|
355
347
|
const i = e[this.section.justify] - t[this.section.justify], s = e.width / 2;
|
|
356
|
-
h(this,
|
|
348
|
+
h(this, I, this.section.justify === "left" ? i + s : i - s, "f");
|
|
357
349
|
}
|
|
358
350
|
update(t) {
|
|
359
351
|
var e, i;
|
|
@@ -362,7 +354,7 @@ class ct extends ht {
|
|
|
362
354
|
didUpdate(t) {
|
|
363
355
|
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;
|
|
364
356
|
this.el.animate({
|
|
365
|
-
transform: [`translateX(${n(this,
|
|
357
|
+
transform: [`translateX(${n(this, I, "f") - r}px)`, "none"]
|
|
366
358
|
}, {
|
|
367
359
|
...this.flow.transformTiming,
|
|
368
360
|
composite: "accumulate"
|
|
@@ -381,8 +373,8 @@ class ct extends ht {
|
|
|
381
373
|
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);
|
|
382
374
|
}
|
|
383
375
|
}
|
|
384
|
-
R = /* @__PURE__ */ new WeakMap(), v = /* @__PURE__ */ new WeakMap(),
|
|
385
|
-
class
|
|
376
|
+
R = /* @__PURE__ */ new WeakMap(), v = /* @__PURE__ */ new WeakMap(), I = /* @__PURE__ */ new WeakMap(), tt = /* @__PURE__ */ new WeakMap();
|
|
377
|
+
class kt extends ht {
|
|
386
378
|
constructor(t, e, i, s) {
|
|
387
379
|
const r = w("span", {
|
|
388
380
|
className: "symbol__value",
|
|
@@ -390,17 +382,17 @@ class xt extends ht {
|
|
|
390
382
|
});
|
|
391
383
|
super(t, i, w("span", {
|
|
392
384
|
className: "symbol"
|
|
393
|
-
}, [r]), s), this.type = e, _.set(this, /* @__PURE__ */ new Map()),
|
|
385
|
+
}, [r]), s), this.type = e, _.set(this, /* @__PURE__ */ new Map()), G.set(this, void 0), K.set(this, (l) => () => {
|
|
394
386
|
n(this, _, "f").delete(l);
|
|
395
387
|
}), n(this, _, "f").set(i, new et(this.flow, r, {
|
|
396
|
-
onRemove: n(this,
|
|
388
|
+
onRemove: n(this, K, "f").call(this, i)
|
|
397
389
|
}));
|
|
398
390
|
}
|
|
399
391
|
willUpdate(t) {
|
|
400
392
|
if (this.type === "decimal")
|
|
401
393
|
return;
|
|
402
394
|
const e = this.el.getBoundingClientRect();
|
|
403
|
-
h(this,
|
|
395
|
+
h(this, G, e[this.section.justify] - t[this.section.justify], "f");
|
|
404
396
|
}
|
|
405
397
|
update(t) {
|
|
406
398
|
if (this.value !== t) {
|
|
@@ -415,7 +407,7 @@ class xt extends ht {
|
|
|
415
407
|
});
|
|
416
408
|
this.el.appendChild(i), n(this, _, "f").set(t, new et(this.flow, i, {
|
|
417
409
|
animateIn: !0,
|
|
418
|
-
onRemove: n(this,
|
|
410
|
+
onRemove: n(this, K, "f").call(this, t)
|
|
419
411
|
}));
|
|
420
412
|
}
|
|
421
413
|
}
|
|
@@ -426,17 +418,17 @@ class xt extends ht {
|
|
|
426
418
|
return;
|
|
427
419
|
const i = this.el.getBoundingClientRect()[this.section.justify] - t[this.section.justify];
|
|
428
420
|
this.el.animate({
|
|
429
|
-
transform: [`translateX(${n(this,
|
|
421
|
+
transform: [`translateX(${n(this, G, "f") - i}px)`, "none"]
|
|
430
422
|
}, { ...this.flow.transformTiming, composite: "accumulate" });
|
|
431
423
|
}
|
|
432
424
|
}
|
|
433
|
-
_ = /* @__PURE__ */ new WeakMap(),
|
|
425
|
+
_ = /* @__PURE__ */ new WeakMap(), G = /* @__PURE__ */ new WeakMap(), K = /* @__PURE__ */ new WeakMap();
|
|
434
426
|
export {
|
|
435
427
|
Mt as NumberFlowLite,
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
428
|
+
yt as SlottedTag,
|
|
429
|
+
_t as canAnimate,
|
|
430
|
+
bt as defaultOpacityTiming,
|
|
431
|
+
St as defaultTransformTiming,
|
|
440
432
|
$t as partitionParts,
|
|
441
433
|
J as prefersReducedMotion,
|
|
442
434
|
Et as slottedStyles
|
package/dist/styles.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const BROWSER: boolean;
|
package/dist/util/math.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const max: (n1?: number, n2?: number) => number |
|
|
1
|
+
export declare const max: (n1?: number, n2?: number) => number | null;
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "0.3.
|
|
6
|
+
"version": "0.3.3",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "Maxwell Barvian",
|
|
9
9
|
"email": "max@barvian.me",
|
|
@@ -55,9 +55,6 @@
|
|
|
55
55
|
"vite": "^5.4.3",
|
|
56
56
|
"vitest": "^2.1.2"
|
|
57
57
|
},
|
|
58
|
-
"dependencies": {
|
|
59
|
-
"esm-env": "^1.0.0"
|
|
60
|
-
},
|
|
61
58
|
"scripts": {
|
|
62
59
|
"build": "vite build --mode production",
|
|
63
60
|
"dev": "vite build --mode development --watch",
|