!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).Scale={})}(this,function(t){"use strict";function l(t,...e){return e.reduce((e,n)=>t=>e(n(t)),t)}function h(e,n){return n-e?t=>(t-e)/(n-e):t=>.5}function c(t,e,n,r,o){let a=n||0,i=r||t.length;for(var s=o||(t=>t);ae?i=u:a=u+1}return a}const F=Math.sqrt(50),R=Math.sqrt(10),P=Math.sqrt(2);function u(t,e,n){e=(e-t)/Math.max(0,n),t=Math.floor(Math.log(e)/Math.LN10),n=e/10**t;return 0<=t?(n>=F?10:n>=R?5:n>=P?2:1)*10**t:-(10**-t)/(n>=F?10:n>=R?5:n>=P?2:1)}function K(t,e,n){n=Math.abs(e-t)/Math.max(0,n);let r=10**Math.floor(Math.log(n)/Math.LN10);n/=r;return n>=F?r*=10:n>=R?r*=5:n>=P&&(r*=2),e{t=[t,e];let r=0,o=t.length-1,a=t[r],i=t[o],s;return i{let n=e;for(;n&&r(t)%e!=0;)s(t,-1),--n;return t},u=(t,e)=>{e&&o(t,e),n(t)};const l=(t,e)=>{t=new Date(+t-1);return u(t,e),s(t,e),u(t),t};return{ceil:l,floor:(t,e)=>{t=new Date(+t);return u(t,e),t},range:(t,e,n,r)=>{for(var o=[],a=Math.floor(n),i=r?l(t,n):l(t);it,(t,e=1)=>{t.setTime(+t+e)},t=>t.getTime()),d=e(n,t=>{t.setMilliseconds(0)},(t,e=1)=>{t.setTime(+t+n*e)},t=>t.getSeconds()),g=e(r,t=>{t.setSeconds(0,0)},(t,e=1)=>{t.setTime(+t+r*e)},t=>t.getMinutes()),p=e(o,t=>{t.setMinutes(0,0,0)},(t,e=1)=>{t.setTime(+t+o*e)},t=>t.getHours()),f=e(a,t=>{t.setHours(0,0,0,0)},(t,e=1)=>{t.setTime(+t+a*e)},t=>t.getDate()-1);const W=e(B,t=>{t.setDate(1),t.setHours(0,0,0,0)},(t,e=1)=>{var n=t.getMonth();t.setMonth(n+e)},t=>t.getMonth());var $=e(i,t=>{t.setDate(t.getDate()-t.getDay()%7),t.setHours(0,0,0,0)},(t,e=1)=>{t.setDate(t.getDate()+7*e)},t=>{var e=W.floor(t),t=new Date(+t);return Math.floor((+t-+e)/i)}),_=e(E,t=>{t.setMonth(0,1),t.setHours(0,0,0,0)},(t,e=1)=>{var n=t.getFullYear();t.setFullYear(n+e)},t=>t.getFullYear());const z={millisecond:s,second:d,minute:g,hour:p,day:f,week:$,month:W,year:_};s=e(1,t=>t,(t,e=1)=>{t.setTime(+t+e)},t=>t.getTime()),d=e(n,t=>{t.setUTCMilliseconds(0)},(t,e=1)=>{t.setTime(+t+n*e)},t=>t.getUTCSeconds()),g=e(r,t=>{t.setUTCSeconds(0,0)},(t,e=1)=>{t.setTime(+t+r*e)},t=>t.getUTCMinutes()),p=e(o,t=>{t.setUTCMinutes(0,0,0)},(t,e=1)=>{t.setTime(+t+o*e)},t=>t.getUTCHours()),f=e(a,t=>{t.setUTCHours(0,0,0,0)},(t,e=1)=>{t.setTime(+t+a*e)},t=>t.getUTCDate()-1);const L=e(B,t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)},(t,e=1)=>{var n=t.getUTCMonth();t.setUTCMonth(n+e)},t=>t.getUTCMonth());$=e(i,t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7)%7),t.setUTCHours(0,0,0,0)},(t,e=1)=>{t.setTime(+t+i*e)},t=>{var e=L.floor(t),t=new Date(+t);return Math.floor((+t-+e)/i)}),_=e(E,t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,e=1)=>{var n=t.getUTCFullYear();t.setUTCFullYear(n+e)},t=>t.getUTCFullYear());const Z={millisecond:s,second:d,minute:g,hour:p,day:f,week:$,month:L,year:_};function J(t,e,n,r,o){var t=+t,e=+e,{tickIntervals:o,year:a,millisecond:i}=function(t){var{year:t,month:e,week:n,day:r,hour:o,minute:a,second:i,millisecond:s}=t?Z:z;return{tickIntervals:[[i,1],[i,5],[i,15],[i,30],[a,1],[a,5],[a,15],[a,30],[o,1],[o,3],[o,6],[o,12],[r,1],[r,2],[n,1],[e,1],[e,3],[t,1]],year:t,millisecond:s}}(o),s=([t,e])=>t.duration*e,n=r?(e-t)/r:n||5,u=r||(e-t)/n,l=o.length,h=c(o,u,0,l,s);let d;return d=h===l?[a,K(t/a.duration,e/a.duration,n)]:h?([l,a]=u/s(o[h-1]){var a=et=>-e(-t),gt=(t,e)=>{const n=Math.log(t);t=t===Math.E?Math.log:10===t?Math.log10:2===t?Math.log2:t=>Math.log(t)/n;return e?ct(t):t},pt=(e,t)=>{var n=e===Math.E?Math.exp:t=>e**t;return t?ct(n):n},ft=(t,e,n,r)=>{var o=t<0,a=gt(r,o),r=pt(r,o),o=e{t.prototype.rescale=function(){this.initRange(),this.nice();var[t]=this.chooseTransforms();this.composeOutput(t,this.chooseClamp(t))},t.prototype.initRange=function(){var t=this.options["interpolator"];this.options.range=e(t)},t.prototype.composeOutput=function(t,e){var n,{domain:r,interpolator:o,round:a}=this.getOptions(),r=i(r.map(t)),a=a?(n=o,t=>{t=n(t);return m(t)?Math.round(t):t}):o;this.output=l(a,r,e,t)},t.prototype.invert=void 0}}var y,s={exports:{}},d={exports:{}},vt=function(t){return!(!t||"string"==typeof t)&&(t instanceof Array||Array.isArray(t)||0<=t.length&&(t.splice instanceof Function||Object.getOwnPropertyDescriptor(t,t.length-1)&&"String"!==t.constructor.name))},Mt=Array.prototype.concat,yt=Array.prototype.slice,kt=d.exports=function(t){for(var e=[],n=0,r=t.length;nt=>e*(1-t)+n*t,xt=(t,e)=>{const u=Tt(t),l=Tt(e);return null===u||null===l?u?()=>t:()=>e:e=>{var n=new Array(4);for(let t=0;t<4;t+=1){var r=u[t],o=l[t];n[t]=r*(1-e)+o*e}var[t,a,i,s]=n;return`rgba(${Math.round(t)}, ${Math.round(a)}, ${Math.round(i)}, ${s})`}},x=(t,e)=>"number"==typeof t&&"number"==typeof e?T(t,e):"string"==typeof t&&"string"==typeof e?xt(t,e):()=>t,St=(t,e)=>{const n=T(t,e);return t=>Math.round(n(t))};function Ct({map:t,initKey:e},n){e=e(n);return t.has(e)?t.get(e):n}function Yt(t){return"object"==typeof t?t.valueOf():t}class Nt extends Map{constructor(t){if(super(),this.map=new Map,this.initKey=Yt,null!==t)for(var[e,n]of t)this.set(e,n)}get(t){return super.get(Ct({map:this.map,initKey:this.initKey},t))}has(t){return super.has(Ct({map:this.map,initKey:this.initKey},t))}set(t,e){return super.set(([{map:t,initKey:n},r]=[{map:this.map,initKey:this.initKey},t],n=n(r),t.has(n)?t.get(n):(t.set(n,r),r)),e);var n,r}delete(t){return super.delete(([{map:t,initKey:e},n]=[{map:this.map,initKey:this.initKey},t],e=e(n),t.has(e)&&(n=t.get(e),t.delete(e)),n));var e,n}}class S{constructor(t){this.options=ut({},this.getDefaultOptions()),this.update(t)}getOptions(){return this.options}update(t={}){this.options=ut({},this.options,t),this.rescale(t)}rescale(t){}}const C=Symbol("defaultUnknown");function It(e,n,r){for(let t=0;t""+t:"object"==typeof t?t=>JSON.stringify(t):t=>t}class jt extends S{getDefaultOptions(){return{domain:[],range:[],unknown:C}}constructor(t){super(t)}map(t){return 0===this.domainIndexMap.size&&It(this.domainIndexMap,this.getDomain(),this.domainKey),At({value:this.domainKey(t),mapper:this.domainIndexMap,from:this.getDomain(),to:this.getRange(),notFoundReturn:this.options.unknown})}invert(t){return 0===this.rangeIndexMap.size&&It(this.rangeIndexMap,this.getRange(),this.rangeKey),At({value:this.rangeKey(t),mapper:this.rangeIndexMap,from:this.getRange(),to:this.getDomain(),notFoundReturn:this.options.unknown})}rescale(t){var[e]=this.options.domain,[n]=this.options.range;this.domainKey=Ut(e),this.rangeKey=Ut(n),this.rangeIndexMap?(t&&!t.range||this.rangeIndexMap.clear(),t&&!t.domain&&!t.compare||(this.domainIndexMap.clear(),this.sortedDomain=void 0)):(this.rangeIndexMap=new Map,this.domainIndexMap=new Map)}clone(){return new jt(this.options)}getRange(){return this.options.range}getDomain(){var t,e;return this.sortedDomain||({domain:t,compare:e}=this.options,this.sortedDomain=e?[...t].sort(e):t),this.sortedDomain}}function Ft(t){const{domain:e,range:n,paddingOuter:r,paddingInner:o,flex:a,round:i,align:s}=t;var u=e.length,l=0<(l=(t=u)-(h=a).length)?[...h,...new Array(l).fill(1)]:l<0?h.slice(0,t):h,[t,h]=n,h=h-t,d=h/(2/u*r+1-1/u*o);const c=d*o/u;d-=u*c;const g=function(t){const e=Math.min(...t);return t.map(t=>t/e)}(l),p=d/g.reduce((t,e)=>t+e);var l=new Nt(e.map((t,e)=>{e=g[e]*p;return[t,i?Math.floor(e):e]})),f=new Nt(e.map((t,e)=>{e=g[e]*p+c;return[t,i?Math.floor(e):e]})),d=Array.from(f.values()).reduce((t,e)=>t+e),t=t+(h-(d-d/u*o))*s;let m=i?Math.round(t):t;var v=new Array(u);for(let t=0;tu+e*i),{valueStep:i,valueBandWidth:s,adjustedRange:t}}({align:t,range:n,round:r,flex:o,paddingInner:this.getPaddingInner(),paddingOuter:this.getPaddingOuter(),domain:e});this.valueStep=r,this.valueBandWidth=n,this.adjustedRange=t}}const Y=(t,e,n)=>{let r,o,a=t,i=e;if(a===i&&0{var s=t<0?0:Math.round(t);if(Number.isNaN(n)||Number.isNaN(r)||"number"!=typeof n||"number"!=typeof r||!s)return[];if(r-n<1e-15||1===s)return[n];var u,l,h,d,c,g,p,f={score:-2,lmin:0,lmax:0,lstep:0};let m=1;for(;m<1/0;){for(let t=0;t{var[t,r]=t,[e,o]=e;let a,i;return l(i=t{const o=Math.min(r.length,t.length)-1,a=new Array(o),i=new Array(o);var n=r[0]>r[o],s=n?[...r].reverse():r,u=n?[...t].reverse():t;for(let t=0;t{var e=c(r,t,1,o)-1,n=a[e];return l(i[e],n)(t)}},Wt=(t,e,n,r)=>{return(2Math.min(Math.max(r,t),o)}return v}composeOutput(t,e){var{domain:n,range:r,round:o,interpolate:a}=this.options,n=Wt(n.map(t),r,a,o);this.output=l(n,e,t)}composeInput(t,e,n){var{domain:r,range:o}=this.options,o=Wt(o,r.map(t),T);this.input=l(e,n,o)}}class A extends I{getDefaultOptions(){return{domain:[0,1],range:[0,1],unknown:void 0,nice:!1,clamp:!1,round:!1,interpolate:x,tickMethod:Y,tickCount:5}}chooseTransforms(){return[v,v]}clone(){return new A(this.options)}}class $t extends Ht{getDefaultOptions(){return{domain:[],range:[0,1],align:.5,round:!1,padding:0,unknown:C,paddingInner:1,paddingOuter:0}}constructor(t){super(t)}getPaddingInner(){return 1}clone(){return new $t(this.options)}update(t){super.update(t)}getPaddingOuter(){return this.options.padding}}const _t=t=>t<0?-Math.sqrt(-t):Math.sqrt(t);class zt extends I{getDefaultOptions(){return{domain:[0,1],range:[0,1],nice:!1,clamp:!1,round:!1,exponent:2,interpolate:x,tickMethod:Y,tickCount:5}}constructor(t){super(t)}chooseTransforms(){var t,e,n,r=this.options["exponent"];return 1===r?[v,v]:(t=.5===r?_t:(e=r,t=>t<0?-((-t)**e):t**e),n=r,[t,t=>t<0?-((-t)**(1/n)):t**(1/n)])}clone(){return new zt(this.options)}}class Lt extends zt{getDefaultOptions(){return{domain:[0,1],range:[0,1],nice:!1,clamp:!1,round:!1,interpolate:x,tickMethod:Y,tickCount:5,exponent:.5}}constructor(t){super(t)}update(t){super.update(t)}clone(){return new Lt(this.options)}}class U extends S{getDefaultOptions(){return{domain:[.5],range:[0,1]}}constructor(t){super(t)}map(t){return M(t)?(t=c(this.thresholds,t,0,this.n),this.options.range[t]):this.options.unknown}invert(t){var e=this.options["range"],e=e.indexOf(t),t=this.thresholds;return[t[e-1],t[e]]}clone(){return new U(this.options)}rescale(){var{domain:t,range:e}=this.options;this.n=Math.min(t.length,e.length-1),this.thresholds=t}}const Zt=(t,e,n,r=10)=>{var o=t<0,a=pt(r,o),i=gt(r,o),s=et-e),[]);for(let t=1;t{var a=e+t,t=>new Date(t)]}chooseNice(){return Q}getTickMethodOptions(){var{domain:t,tickCount:e,tickInterval:n,utc:r}=this.options;return[t[0],t[t.length-1],e,n,r]}getFormatter(){const{mask:a,utc:t}=this.options,i=t?Z:z,s=t?ue:v;return t=>{var e=s(t),t=a||function(t,e){var{second:e,minute:n,hour:r,day:o,week:a,month:i,year:s}=e;return e.floor(t){var[t,e]=t;return l(T(0,1),h(t,e))})],t.Sequential);t.Diverging=he=class extends A{getDefaultOptions(){return{domain:[0,.5,1],unknown:void 0,nice:!1,clamp:!1,round:!1,interpolator:v,tickMethod:Y,tickCount:5}}constructor(t){super(t)}clone(){return new he(this.options)}},t.Diverging=he=dt([mt(function(t){return[t(0),t(.5),t(1)]},t=>{const[e,n,r]=t,o=l(T(0,.5),h(e,n)),a=l(T(.5,1),h(n,r));return t=>(e>r?t{if(t===e)return[t];n=n<0?0:Math.round(n);if(0===n)return[];var n=(e-t)/n,r=10**Math.floor(Math.log10(n));let o=r;2*r-n<1.5*(n-o)&&5*r-n<2.75*(n-(o=2*r))&&10*r-n<1.5*(n-(o=5*r))&&(o=10*r);var n=Math.ceil(e/o),r=Math.floor(t/o),n=Math.max(n*o,e),a=Math.min(r*o,t),i=Math.floor((n-a)/o)+1,s=new Array(i);for(let t=0;t