@cuppy/core
Version:
A lightweight currency display component with automatic inflation adjustment.
2 lines (1 loc) • 3.91 kB
JavaScript
(function(l,s){typeof exports=="object"&&typeof module!="undefined"?s(exports):typeof define=="function"&&define.amd?define(["exports"],s):(l=typeof globalThis!="undefined"?globalThis:l||self,s(l.Cuppy={}))})(this,function(l){"use strict";var U=Object.defineProperty;var I=Object.getOwnPropertySymbols;var E=Object.prototype.hasOwnProperty,G=Object.prototype.propertyIsEnumerable;var q=(l,s,e)=>s in l?U(l,s,{enumerable:!0,configurable:!0,writable:!0,value:e}):l[s]=e,C=(l,s)=>{for(var e in s||(s={}))E.call(s,e)&&q(l,e,s[e]);if(I)for(var e of I(s))G.call(s,e)&&q(l,e,s[e]);return l};var s=(r=>(r.cpiU="CUUR0000SA0",r))(s||{});const e={hint:"none",hintDisplay:"tooltip",currencyStyle:"symbol",numberStyle:"compactLong",yearDisplay:"ifFallback",hintYearDisplay:"always",precisionMode:"sigfigs",inflationDataset:"cpiU",yearFormatter:(r,t)=>`${r} (${t})`,inlineHintFormatter:(r,t)=>`${r} [${t}]`},F={},M=r=>{r(h)},v=new Date().getFullYear(),A=(r,t)=>e.inlineHintFormatter(r,t),V=(r,t)=>{const{year:a,requestedYear:i,yearDisplay:n}=t,o=e.yearFormatter(r,a);if(n==="never")return r;if(n==="always")return o;if(n==="exceptCurrent")return a!==v?o:r;if(n==="ifFallback")return i!=null&&a!==i?o:r;throw new RangeError(`Invalid year display style: ${n}.`)},j={},g=(r,t)=>{var p,x,D;const a=(x=(p=t.locale)!=null?p:e.locale)!=null?x:document.documentElement.lang,i="USD",n=t.currencyStyle||e.currencyStyle,o=(D=e.useGrouping)!=null?D:t.useGrouping!=null&&String(t.useGrouping)!=="false",u=t.signDisplay||e.signDisplay,Y=t.precisionMode||e.precisionMode,m=t.minDigits!=null?+t.minDigits:e.minDigits,f=t.maxDigits!=null?+t.maxDigits:e.maxDigits;let y;Y==="decimalPlaces"?y={minimumFractionDigits:m,maximumFractionDigits:f}:y={minimumSignificantDigits:m,maximumSignificantDigits:f};const c=t.numberStyle||e.numberStyle;let S,$;if(c==="compactShort"||c==="compactLong")S="compact",$=c==="compactShort"?"short":"long";else if(c==="standard"||c==="scientific"||c==="engineering")S=c;else throw new RangeError(`Invalid notation: ${c}.`);const b=`${a}|${i}|${n}|${o}|${u}|${Y}|${m}|${f}|${S}|${$}`;let d;return j[b]?d=j[b]:(d=new Intl.NumberFormat(a,C({style:"currency",currency:i,currencyDisplay:n,useGrouping:o,signDisplay:u,notation:S,compactDisplay:$},y)),j[b]=d),d.format(r)},w=(r,t,a)=>{const{data:i,years:n}=F[r],o=i[t]?t:n[0],Y=i[o][0],m=i[a]?a:n[n.length-1],y=i[m][0];return{from:{value:Y,year:+o},to:{value:y,year:+m}}},T=(r,t,a="cpiU")=>{let{from:i,to:n}=t;if(i!=null||(i=v),n!=null||(n=v),i===n)return{adjustedValue:r,from:i,to:n};const{from:o,to:u}=w(a,i,n);return{adjustedValue:r*(u.value/o.value),from:o.year,to:u.year}},P=/_/g,h=()=>{document.querySelectorAll("[data-cuppy]").forEach(t=>{var Y;const a=t.dataset;(Y=a.value)!=null||(a.value=t.innerText);const i=+a.value.replace(P,""),n=+(a.from||e.from||v),o=+(a.to||e.to||v),u=a.yearDisplay||e.yearDisplay;if(n!==o){const m=a.inflationDataset||e.inflationDataset,{adjustedValue:f,from:y,to:c}=T(i,{from:n,to:o},m),S=a.hint||e.hint,$=a.hintDisplay||e.hintDisplay,b=a.hintYearDisplay||e.hintYearDisplay;if(S==="to"){const d=g(i,a),p=V(d,{year:y,requestedYear:n,yearDisplay:u}),x=g(f,a),D=V(x,{year:c,requestedYear:o,yearDisplay:b});$==="tooltip"?(t.innerText=p,t.title=D):(t.innerText=A(p,D),t.removeAttribute("title"))}else if(S==="from"){const d=g(i,a),p=V(d,{year:y,requestedYear:n,yearDisplay:b}),x=g(f,a),D=V(x,{year:c,requestedYear:o,yearDisplay:u});$==="tooltip"?(t.innerText=D,t.title=p):(t.innerText=A(D,p),t.removeAttribute("title"))}else{const d=g(f,a);t.innerText=V(d,{year:c,requestedYear:o,yearDisplay:u}),t.removeAttribute("title")}}else{const m=g(i,a);t.innerText=V(m,{year:n,yearDisplay:u}),t.removeAttribute("title")}})};h.options=e,h.datasets=F,h.dataset=M,h.formatCurrency=g,h.adjustForInflation=T,l.InflationDataset=s,l.default=h,l.getInflationData=w,Object.defineProperties(l,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});