vega-functions 5.15.0 → 5.16.0

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.

Potentially problematic release.


This version of vega-functions might be problematic. Click here for more details.

@@ -111,12 +111,12 @@
111
111
  }
112
112
  }
113
113
 
114
- function getScale(nameOrFunction, ctx) {
115
- if (vegaUtil.isFunction(nameOrFunction)) {
116
- return nameOrFunction;
117
- }
118
- if (vegaUtil.isString(nameOrFunction)) {
119
- const maybeScale = ctx.scales[nameOrFunction];
114
+ /**
115
+ * Name must be a string. Return undefined if the scale is not registered.
116
+ */
117
+ function getScale(name, ctx) {
118
+ if (vegaUtil.isString(name)) {
119
+ const maybeScale = ctx.scales[name];
120
120
  return maybeScale && vegaScale.isRegisteredScale(maybeScale.value) ? maybeScale.value : undefined;
121
121
  }
122
122
  return undefined;
@@ -407,7 +407,7 @@
407
407
  boundsStream.point = boundsPoint;
408
408
  boundsStream.lineStart = boundsLineStart;
409
409
  boundsStream.lineEnd = boundsLineEnd;
410
- if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);else if (deltaSum > epsilon) phi1 = 90;else if (deltaSum < -epsilon) phi0 = -90;
410
+ if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);else if (deltaSum > epsilon) phi1 = 90;else if (deltaSum < -1e-6) phi0 = -90;
411
411
  range$1[0] = lambda0, range$1[1] = lambda1;
412
412
  },
413
413
  sphere: function () {
@@ -1310,6 +1310,9 @@
1310
1310
  function reverse(seq) {
1311
1311
  return array(seq).slice().reverse();
1312
1312
  }
1313
+ function sort(seq) {
1314
+ return array(seq).slice().sort(vegaUtil.ascending);
1315
+ }
1313
1316
 
1314
1317
  function bandspace(count, paddingInner, paddingOuter) {
1315
1318
  return vegaScale.bandSpace(count || 0, paddingInner || 0, paddingOuter || 0);
@@ -1339,8 +1342,12 @@
1339
1342
  return s ? s(value) : undefined;
1340
1343
  }
1341
1344
 
1342
- function scaleGradient (scale, p0, p1, count, group) {
1343
- scale = getScale(scale, (group || this).context);
1345
+ /**
1346
+ * Passing a function is only used for for testing.
1347
+ * Outside of tests, the first argument should be a string.
1348
+ */
1349
+ function scaleGradient (scaleOrFunction, p0, p1, count, group) {
1350
+ let scale = typeof scaleOrFunction === 'string' ? getScale(scaleOrFunction, (group || this).context) : scaleOrFunction;
1344
1351
  const gradient = vegaScenegraph.Gradient(p0, p1);
1345
1352
  let stops = scale.domain(),
1346
1353
  min = stops[0],
@@ -1554,6 +1561,7 @@
1554
1561
  lastindexof,
1555
1562
  replace,
1556
1563
  reverse,
1564
+ sort,
1557
1565
  slice,
1558
1566
  flush: vegaUtil.flush,
1559
1567
  lerp: vegaUtil.lerp,
@@ -1794,6 +1802,7 @@
1794
1802
  exports.screen = screen;
1795
1803
  exports.setdata = setdata;
1796
1804
  exports.slice = slice;
1805
+ exports.sort = sort;
1797
1806
  exports.timeFormat = timeFormat;
1798
1807
  exports.timeParse = timeParse;
1799
1808
  exports.treeAncestors = treeAncestors;
@@ -1,2 +1,2 @@
1
- !function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("vega-util"),require("vega-expression"),require("vega-scale"),require("vega-dataflow"),require("vega-scenegraph"),require("vega-selections"),require("vega-statistics"),require("vega-time")):"function"==typeof define&&define.amd?define(["exports","vega-util","vega-expression","vega-scale","vega-dataflow","vega-scenegraph","vega-selections","vega-statistics","vega-time"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).vega={},t.vega,t.vega,t.vega,t.vega,t.vega,t.vega,t.vega,t.vega)}(this,(function(t,n,e,r,i,o,a,s,u){"use strict";function c(t){const n=this.context.data[t];return n?n.values.value:[]}function l(t,n,e){const r=this.context.data[t]["index:"+n],i=r?r.value.get(e):void 0;return i?i.count:i}function h(t,e){const r=this.context.dataflow,i=this.context.data[t].input;return r.pulse(i,r.changeset().remove(n.truthy).insert(e)),1}function f(t,n,e){if(t){const e=this.context.dataflow,r=t.mark.source;e.pulse(r,e.changeset().encode(t,n))}return void 0!==e?e:t}const g=t=>function(n,e){const r=this.context.dataflow.locale();return null===n?"null":r[t](e)(n)},d=g("format"),p=g("timeFormat"),m=g("utcFormat"),y=g("timeParse"),v=g("utcParse"),b=new Date(2e3,0,1);function w(t,n,e){return Number.isInteger(t)&&Number.isInteger(n)?(b.setYear(2e3),b.setMonth(t),b.setDate(n),p.call(this,b,e)):""}function x(t){return w.call(this,t,1,"%B")}function N(t){return w.call(this,t,1,"%b")}function S(t){return w.call(this,0,2+t,"%A")}function $(t){return w.call(this,0,2+t,"%a")}const k="%";function E(t,r,i,o){r[0].type!==e.Literal&&n.error("First argument to data functions must be a string literal.");const a=r[0].value,s=":"+a;if(!n.hasOwnProperty(s,o))try{o[s]=i.getData(a).tuplesRef()}catch(t){}}function M(t,r,i,o){r[0].type!==e.Literal&&n.error("First argument to indata must be a string literal."),r[1].type!==e.Literal&&n.error("Second argument to indata must be a string literal.");const a=r[0].value,s=r[1].value,u="@"+s;n.hasOwnProperty(u,o)||(o[u]=i.getData(a).indataRef(i,s))}function q(t,n,r,i){if(n[0].type===e.Literal)A(r,i,n[0].value);else for(t in r.scales)A(r,i,t)}function A(t,e,r){const i=k+r;if(!n.hasOwnProperty(e,i))try{e[i]=t.scaleRef(r)}catch(t){}}function P(t,e){if(n.isFunction(t))return t;if(n.isString(t)){const n=e.scales[t];return n&&r.isRegisteredScale(n.value)?n.value:void 0}}function _(t,r,i){r.__bandwidth=t=>t&&t.bandwidth?t.bandwidth():0,i._bandwidth=q,i._range=q,i._scale=q;const o=r=>"_["+(r.type===e.Literal?n.stringValue(k+r.value):n.stringValue(k)+"+"+t(r))+"]";return{_bandwidth:t=>`this.__bandwidth(${o(t[0])})`,_range:t=>`${o(t[0])}.range()`,_scale:n=>`${o(n[0])}(${t(n[1])})`}}class F{constructor(){this._partials=new Float64Array(32),this._n=0}add(t){const n=this._partials;let e=0;for(let r=0;r<this._n&&r<32;r++){const i=n[r],o=t+i,a=Math.abs(t)<Math.abs(i)?t-(o-i):i-(o-t);a&&(n[e++]=a),t=o}return n[e]=t,this._n=e+1,this}valueOf(){const t=this._partials;let n,e,r,i=this._n,o=0;if(i>0){for(o=t[--i];i>0&&(n=o,e=t[--i],o=n+e,r=e-(o-n),!r););i>0&&(r<0&&t[i-1]<0||r>0&&t[i-1]>0)&&(e=2*r,n=o+e,e==n-o&&(o=n))}return o}}var R=1e-6,L=Math.PI,O=L/2,I=L/4,T=2*L,z=180/L,D=L/180,V=Math.abs,j=Math.atan2,H=Math.cos,B=Math.hypot,U=Math.sin,G=Math.sqrt;function C(t){return t>1?O:t<-1?-O:Math.asin(t)}function X(){}function Y(t,n){t&&Z.hasOwnProperty(t.type)&&Z[t.type](t,n)}var W={Feature:function(t,n){Y(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r<i;)Y(e[r].geometry,n)}},Z={Sphere:function(t,n){n.sphere()},Point:function(t,n){t=t.coordinates,n.point(t[0],t[1],t[2])},MultiPoint:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)t=e[r],n.point(t[0],t[1],t[2])},LineString:function(t,n){J(t.coordinates,n,0)},MultiLineString:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)J(e[r],n,0)},Polygon:function(t,n){K(t.coordinates,n)},MultiPolygon:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)K(e[r],n)},GeometryCollection:function(t,n){for(var e=t.geometries,r=-1,i=e.length;++r<i;)Y(e[r],n)}};function J(t,n,e){var r,i=-1,o=t.length-e;for(n.lineStart();++i<o;)r=t[i],n.point(r[0],r[1],r[2]);n.lineEnd()}function K(t,n){var e=-1,r=t.length;for(n.polygonStart();++e<r;)J(t[e],n,1);n.polygonEnd()}function Q(t,n){t&&W.hasOwnProperty(t.type)?W[t.type](t,n):Y(t,n)}var tt,nt,et,rt,it,ot,at,st,ut,ct,lt,ht,ft,gt,dt,pt,mt=new F,yt=new F,vt={point:X,lineStart:X,lineEnd:X,polygonStart:function(){mt=new F,vt.lineStart=bt,vt.lineEnd=wt},polygonEnd:function(){var t=+mt;yt.add(t<0?T+t:t),this.lineStart=this.lineEnd=this.point=X},sphere:function(){yt.add(T)}};function bt(){vt.point=xt}function wt(){Nt(tt,nt)}function xt(t,n){vt.point=Nt,tt=t,nt=n,et=t*=D,rt=H(n=(n*=D)/2+I),it=U(n)}function Nt(t,n){var e=(t*=D)-et,r=e>=0?1:-1,i=r*e,o=H(n=(n*=D)/2+I),a=U(n),s=it*a,u=rt*o+s*H(i),c=s*r*U(i);mt.add(j(c,u)),et=t,rt=o,it=a}function St(t,n){return[t[1]*n[2]-t[2]*n[1],t[2]*n[0]-t[0]*n[2],t[0]*n[1]-t[1]*n[0]]}var $t,kt,Et,Mt,qt,At,Pt,_t,Ft,Rt,Lt,Ot,It,Tt,zt,Dt,Vt={point:jt,lineStart:Bt,lineEnd:Ut,polygonStart:function(){Vt.point=Gt,Vt.lineStart=Ct,Vt.lineEnd=Xt,gt=new F,vt.polygonStart()},polygonEnd:function(){vt.polygonEnd(),Vt.point=jt,Vt.lineStart=Bt,Vt.lineEnd=Ut,mt<0?(ot=-(st=180),at=-(ut=90)):gt>R?ut=90:gt<-R&&(at=-90),pt[0]=ot,pt[1]=st},sphere:function(){ot=-(st=180),at=-(ut=90)}};function jt(t,n){dt.push(pt=[ot=t,st=t]),n<at&&(at=n),n>ut&&(ut=n)}function Ht(t,n){var e,r,i=function(t){var n=t[0],e=t[1],r=H(e);return[r*H(n),r*U(n),U(e)]}([t*D,n*D]);if(ft){var o=St(ft,i),a=St([o[1],-o[0],0],o);r=G((e=a)[0]*e[0]+e[1]*e[1]+e[2]*e[2]),e[0]/=r,e[1]/=r,e[2]/=r,a=function(t){return[j(t[1],t[0]),C(t[2])]}(a);var s,u=t-ct,c=u>0?1:-1,l=a[0]*z*c,h=V(u)>180;h^(c*ct<l&&l<c*t)?(s=a[1]*z)>ut&&(ut=s):h^(c*ct<(l=(l+360)%360-180)&&l<c*t)?(s=-a[1]*z)<at&&(at=s):(n<at&&(at=n),n>ut&&(ut=n)),h?t<ct?Yt(ot,t)>Yt(ot,st)&&(st=t):Yt(t,st)>Yt(ot,st)&&(ot=t):st>=ot?(t<ot&&(ot=t),t>st&&(st=t)):t>ct?Yt(ot,t)>Yt(ot,st)&&(st=t):Yt(t,st)>Yt(ot,st)&&(ot=t)}else dt.push(pt=[ot=t,st=t]);n<at&&(at=n),n>ut&&(ut=n),ft=i,ct=t}function Bt(){Vt.point=Ht}function Ut(){pt[0]=ot,pt[1]=st,Vt.point=jt,ft=null}function Gt(t,n){if(ft){var e=t-ct;gt.add(V(e)>180?e+(e>0?360:-360):e)}else lt=t,ht=n;vt.point(t,n),Ht(t,n)}function Ct(){vt.lineStart()}function Xt(){Gt(lt,ht),vt.lineEnd(),V(gt)>R&&(ot=-(st=180)),pt[0]=ot,pt[1]=st,ft=null}function Yt(t,n){return(n-=t)<0?n+360:n}function Wt(t,n){return t[0]-n[0]}function Zt(t,n){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:n<t[0]||t[1]<n}var Jt={sphere:X,point:Kt,lineStart:tn,lineEnd:rn,polygonStart:function(){Jt.lineStart=on,Jt.lineEnd=an},polygonEnd:function(){Jt.lineStart=tn,Jt.lineEnd=rn}};function Kt(t,n){t*=D;var e=H(n*=D);Qt(e*H(t),e*U(t),U(n))}function Qt(t,n,e){++$t,Et+=(t-Et)/$t,Mt+=(n-Mt)/$t,qt+=(e-qt)/$t}function tn(){Jt.point=nn}function nn(t,n){t*=D;var e=H(n*=D);Tt=e*H(t),zt=e*U(t),Dt=U(n),Jt.point=en,Qt(Tt,zt,Dt)}function en(t,n){t*=D;var e=H(n*=D),r=e*H(t),i=e*U(t),o=U(n),a=j(G((a=zt*o-Dt*i)*a+(a=Dt*r-Tt*o)*a+(a=Tt*i-zt*r)*a),Tt*r+zt*i+Dt*o);kt+=a,At+=a*(Tt+(Tt=r)),Pt+=a*(zt+(zt=i)),_t+=a*(Dt+(Dt=o)),Qt(Tt,zt,Dt)}function rn(){Jt.point=Kt}function on(){Jt.point=sn}function an(){un(Ot,It),Jt.point=Kt}function sn(t,n){Ot=t,It=n,t*=D,n*=D,Jt.point=un;var e=H(n);Tt=e*H(t),zt=e*U(t),Dt=U(n),Qt(Tt,zt,Dt)}function un(t,n){t*=D;var e=H(n*=D),r=e*H(t),i=e*U(t),o=U(n),a=zt*o-Dt*i,s=Dt*r-Tt*o,u=Tt*i-zt*r,c=B(a,s,u),l=C(c),h=c&&-l/c;Ft.add(h*a),Rt.add(h*s),Lt.add(h*u),kt+=l,At+=l*(Tt+(Tt=r)),Pt+=l*(zt+(zt=i)),_t+=l*(Dt+(Dt=o)),Qt(Tt,zt,Dt)}function cn(t,n){return function(e,r,i){if(e){const n=P(e,(i||this).context);return n&&n.path[t](r)}return n(r)}}const ln=cn("area",(function(t){return yt=new F,Q(t,vt),2*yt})),hn=cn("bounds",(function(t){var n,e,r,i,o,a,s;if(ut=st=-(ot=at=1/0),dt=[],Q(t,Vt),e=dt.length){for(dt.sort(Wt),n=1,o=[r=dt[0]];n<e;++n)Zt(r,(i=dt[n])[0])||Zt(r,i[1])?(Yt(r[0],i[1])>Yt(r[0],r[1])&&(r[1]=i[1]),Yt(i[0],r[1])>Yt(r[0],r[1])&&(r[0]=i[0])):o.push(r=i);for(a=-1/0,n=0,r=o[e=o.length-1];n<=e;r=i,++n)i=o[n],(s=Yt(r[1],i[0]))>a&&(a=s,ot=i[0],st=r[1])}return dt=pt=null,ot===1/0||at===1/0?[[NaN,NaN],[NaN,NaN]]:[[ot,at],[st,ut]]})),fn=cn("centroid",(function(t){$t=kt=Et=Mt=qt=At=Pt=_t=0,Ft=new F,Rt=new F,Lt=new F,Q(t,Jt);var n=+Ft,e=+Rt,r=+Lt,i=B(n,e,r);return i<1e-12&&(n=At,e=Pt,r=_t,kt<R&&(n=Et,e=Mt,r=qt),(i=B(n,e,r))<1e-12)?[NaN,NaN]:[j(e,n)*z,C(r/i)*z]}));function gn(t,n){const e=P(t,(n||this).context);return e&&e.scale()}function dn(t){const n=this.context.group;let e=!1;if(n)for(;t;){if(t===n){e=!0;break}t=t.mark.group}return e}function pn(t,n,e){try{t[n].apply(t,["EXPRESSION"].concat([].slice.call(e)))}catch(n){t.warn(n)}return e[e.length-1]}function mn(){return pn(this.context.dataflow,"warn",arguments)}function yn(){return pn(this.context.dataflow,"info",arguments)}function vn(){return pn(this.context.dataflow,"debug",arguments)}function bn(t,n,e){t.prototype=n.prototype=e,e.constructor=t}function wn(t,n){var e=Object.create(t.prototype);for(var r in n)e[r]=n[r];return e}function xn(){}var Nn=.7,Sn=1/Nn,$n="\\s*([+-]?\\d+)\\s*",kn="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",En="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Mn=/^#([0-9a-f]{3,8})$/,qn=new RegExp(`^rgb\\(${$n},${$n},${$n}\\)$`),An=new RegExp(`^rgb\\(${En},${En},${En}\\)$`),Pn=new RegExp(`^rgba\\(${$n},${$n},${$n},${kn}\\)$`),_n=new RegExp(`^rgba\\(${En},${En},${En},${kn}\\)$`),Fn=new RegExp(`^hsl\\(${kn},${En},${En}\\)$`),Rn=new RegExp(`^hsla\\(${kn},${En},${En},${kn}\\)$`),Ln={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function On(){return this.rgb().formatHex()}function In(){return this.rgb().formatRgb()}function Tn(t){var n,e;return t=(t+"").trim().toLowerCase(),(n=Mn.exec(t))?(e=n[1].length,n=parseInt(n[1],16),6===e?zn(n):3===e?new Hn(n>>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1):8===e?Dn(n>>24&255,n>>16&255,n>>8&255,(255&n)/255):4===e?Dn(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|240&n,((15&n)<<4|15&n)/255):null):(n=qn.exec(t))?new Hn(n[1],n[2],n[3],1):(n=An.exec(t))?new Hn(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=Pn.exec(t))?Dn(n[1],n[2],n[3],n[4]):(n=_n.exec(t))?Dn(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=Fn.exec(t))?Yn(n[1],n[2]/100,n[3]/100,1):(n=Rn.exec(t))?Yn(n[1],n[2]/100,n[3]/100,n[4]):Ln.hasOwnProperty(t)?zn(Ln[t]):"transparent"===t?new Hn(NaN,NaN,NaN,0):null}function zn(t){return new Hn(t>>16&255,t>>8&255,255&t,1)}function Dn(t,n,e,r){return r<=0&&(t=n=e=NaN),new Hn(t,n,e,r)}function Vn(t){return t instanceof xn||(t=Tn(t)),t?new Hn((t=t.rgb()).r,t.g,t.b,t.opacity):new Hn}function jn(t,n,e,r){return 1===arguments.length?Vn(t):new Hn(t,n,e,null==r?1:r)}function Hn(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function Bn(){return`#${Xn(this.r)}${Xn(this.g)}${Xn(this.b)}`}function Un(){const t=Gn(this.opacity);return`${1===t?"rgb(":"rgba("}${Cn(this.r)}, ${Cn(this.g)}, ${Cn(this.b)}${1===t?")":`, ${t})`}`}function Gn(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Cn(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Xn(t){return((t=Cn(t))<16?"0":"")+t.toString(16)}function Yn(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new Jn(t,n,e,r)}function Wn(t){if(t instanceof Jn)return new Jn(t.h,t.s,t.l,t.opacity);if(t instanceof xn||(t=Tn(t)),!t)return new Jn;if(t instanceof Jn)return t;var n=(t=t.rgb()).r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),a=NaN,s=o-i,u=(o+i)/2;return s?(a=n===o?(e-r)/s+6*(e<r):e===o?(r-n)/s+2:(n-e)/s+4,s/=u<.5?o+i:2-o-i,a*=60):s=u>0&&u<1?0:a,new Jn(a,s,u,t.opacity)}function Zn(t,n,e,r){return 1===arguments.length?Wn(t):new Jn(t,n,e,null==r?1:r)}function Jn(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Kn(t){return(t=(t||0)%360)<0?t+360:t}function Qn(t){return Math.max(0,Math.min(1,t||0))}function te(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}bn(xn,Tn,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:On,formatHex:On,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return Wn(this).formatHsl()},formatRgb:In,toString:In}),bn(Hn,jn,wn(xn,{brighter(t){return t=null==t?Sn:Math.pow(Sn,t),new Hn(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=null==t?Nn:Math.pow(Nn,t),new Hn(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new Hn(Cn(this.r),Cn(this.g),Cn(this.b),Gn(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Bn,formatHex:Bn,formatHex8:function(){return`#${Xn(this.r)}${Xn(this.g)}${Xn(this.b)}${Xn(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:Un,toString:Un})),bn(Jn,Zn,wn(xn,{brighter(t){return t=null==t?Sn:Math.pow(Sn,t),new Jn(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?Nn:Math.pow(Nn,t),new Jn(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+360*(this.h<0),n=isNaN(t)||isNaN(this.s)?0:this.s,e=this.l,r=e+(e<.5?e:1-e)*n,i=2*e-r;return new Hn(te(t>=240?t-240:t+120,i,r),te(t,i,r),te(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new Jn(Kn(this.h),Qn(this.s),Qn(this.l),Gn(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Gn(this.opacity);return`${1===t?"hsl(":"hsla("}${Kn(this.h)}, ${100*Qn(this.s)}%, ${100*Qn(this.l)}%${1===t?")":`, ${t})`}`}}));const ne=Math.PI/180,ee=180/Math.PI,re=.96422,ie=1,oe=.82521,ae=4/29,se=6/29,ue=3*se*se,ce=se*se*se;function le(t){if(t instanceof fe)return new fe(t.l,t.a,t.b,t.opacity);if(t instanceof ve)return be(t);t instanceof Hn||(t=Vn(t));var n,e,r=me(t.r),i=me(t.g),o=me(t.b),a=ge((.2225045*r+.7168786*i+.0606169*o)/ie);return r===i&&i===o?n=e=a:(n=ge((.4360747*r+.3850649*i+.1430804*o)/re),e=ge((.0139322*r+.0971045*i+.7141733*o)/oe)),new fe(116*a-16,500*(n-a),200*(a-e),t.opacity)}function he(t,n,e,r){return 1===arguments.length?le(t):new fe(t,n,e,null==r?1:r)}function fe(t,n,e,r){this.l=+t,this.a=+n,this.b=+e,this.opacity=+r}function ge(t){return t>ce?Math.pow(t,1/3):t/ue+ae}function de(t){return t>se?t*t*t:ue*(t-ae)}function pe(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function me(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function ye(t,n,e,r){return 1===arguments.length?function(t){if(t instanceof ve)return new ve(t.h,t.c,t.l,t.opacity);if(t instanceof fe||(t=le(t)),0===t.a&&0===t.b)return new ve(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var n=Math.atan2(t.b,t.a)*ee;return new ve(n<0?n+360:n,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}(t):new ve(t,n,e,null==r?1:r)}function ve(t,n,e,r){this.h=+t,this.c=+n,this.l=+e,this.opacity=+r}function be(t){if(isNaN(t.h))return new fe(t.l,0,0,t.opacity);var n=t.h*ne;return new fe(t.l,Math.cos(n)*t.c,Math.sin(n)*t.c,t.opacity)}function we(t){const n=t/255;return n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4)}function xe(t){const n=jn(t);return.2126*we(n.r)+.7152*we(n.g)+.0722*we(n.b)}function Ne(t,n){const e=xe(t),r=xe(n);return(Math.max(e,r)+.05)/(Math.min(e,r)+.05)}function Se(){const t=[].slice.call(arguments);return t.unshift({}),n.extend(...t)}function $e(t,e){return t===e||t!=t&&e!=e||(n.isArray(t)?!(!n.isArray(e)||t.length!==e.length)&&function(t,n){for(let e=0,r=t.length;e<r;++e)if(!$e(t[e],n[e]))return!1;return!0}(t,e):!(!n.isObject(t)||!n.isObject(e))&&ke(t,e))}function ke(t,n){for(const e in t)if(!$e(t[e],n[e]))return!1;return!0}function Ee(t){return n=>ke(t,n)}function Me(t,e,r,o,a,s){const u=this.context.dataflow,c=this.context.data[t],l=c.input,h=u.stamp();let f,g,d=c.changes;if(!1===u._trigger||!(l.value.length||e||o))return 0;if((!d||d.stamp<h)&&(c.changes=d=u.changeset(),d.stamp=h,u.runAfter((()=>{c.modified=!0,u.pulse(l,d).run()}),!0,1)),r&&(f=!0===r?n.truthy:n.isArray(r)||i.isTuple(r)?r:Ee(r),d.remove(f)),e&&d.insert(e),o&&(f=Ee(o),l.value.some(f)?d.remove(f):d.insert(o)),a)for(g in s)d.modify(a,g,s[g]);return 1}function qe(t){const n=t.touches,e=n[0].clientX-n[1].clientX,r=n[0].clientY-n[1].clientY;return Math.hypot(e,r)}function Ae(t){const n=t.touches;return Math.atan2(n[0].clientY-n[1].clientY,n[0].clientX-n[1].clientX)}bn(fe,he,wn(xn,{brighter(t){return new fe(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker(t){return new fe(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,n=isNaN(this.a)?t:t+this.a/500,e=isNaN(this.b)?t:t-this.b/200;return new Hn(pe(3.1338561*(n=re*de(n))-1.6168667*(t=ie*de(t))-.4906146*(e=oe*de(e))),pe(-.9787684*n+1.9161415*t+.033454*e),pe(.0719453*n-.2289914*t+1.4052427*e),this.opacity)}})),bn(ve,ye,wn(xn,{brighter(t){return new ve(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker(t){return new ve(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb(){return be(this).rgb()}}));const Pe={};function _e(t,e){const r=Pe[e]||(Pe[e]=n.field(e));return n.isArray(t)?t.map(r):r(t)}function Fe(t){return n.isArray(t)||ArrayBuffer.isView(t)?t:null}function Re(t){return Fe(t)||(n.isString(t)?t:null)}function Le(t){for(var n=arguments.length,e=new Array(n>1?n-1:0),r=1;r<n;r++)e[r-1]=arguments[r];return Fe(t).join(...e)}function Oe(t){for(var n=arguments.length,e=new Array(n>1?n-1:0),r=1;r<n;r++)e[r-1]=arguments[r];return Re(t).indexOf(...e)}function Ie(t){for(var n=arguments.length,e=new Array(n>1?n-1:0),r=1;r<n;r++)e[r-1]=arguments[r];return Re(t).lastIndexOf(...e)}function Te(t){for(var n=arguments.length,e=new Array(n>1?n-1:0),r=1;r<n;r++)e[r-1]=arguments[r];return Re(t).slice(...e)}function ze(t,e,r){return n.isFunction(r)&&n.error("Function argument passed to replace."),String(t).replace(e,r)}function De(t){return Fe(t).slice().reverse()}function Ve(t,n,e){return r.bandSpace(t||0,n||0,e||0)}function je(t,n){const e=P(t,(n||this).context);return e&&e.bandwidth?e.bandwidth():0}function He(t,n){const e=P(t,(n||this).context);return e?e.copy():void 0}function Be(t,n){const e=P(t,(n||this).context);return e?e.domain():[]}function Ue(t,e,r){const i=P(t,(r||this).context);return i?n.isArray(e)?(i.invertRange||i.invert)(e):(i.invert||i.invertExtent)(e):void 0}function Ge(t,n){const e=P(t,(n||this).context);return e&&e.range?e.range():[]}function Ce(t,n,e){const r=P(t,(e||this).context);return r?r(n):void 0}function Xe(t,e,i,a,s){t=P(t,(s||this).context);const u=o.Gradient(e,i);let c=t.domain(),l=c[0],h=n.peek(c),f=n.identity;return h-l?f=r.scaleFraction(t,l,h):t=(t.interpolator?r.scale("sequential")().interpolator(t.interpolator()):r.scale("linear")().interpolate(t.interpolate()).range(t.range())).domain([l=0,h=1]),t.ticks&&(c=t.ticks(+a||15),l!==c[0]&&c.unshift(l),h!==n.peek(c)&&c.push(h)),c.forEach((n=>u.stop(f(n),t(n)))),u}function Ye(t,n,e){const r=P(t,(e||this).context);return function(t){return r?r.path.context(t)(n):""}}function We(t){let n=null;return function(e){return e?o.pathRender(e,n=n||o.pathParse(t)):t}}const Ze=t=>t.data;function Je(t,n){const e=c.call(n,t);return e.root&&e.root.lookup||{}}function Ke(t,n,e){const r=Je(t,this),i=r[n],o=r[e];return i&&o?i.path(o).map(Ze):void 0}function Qe(t,n){const e=Je(t,this)[n];return e?e.ancestors().map(Ze):void 0}const tr=()=>"undefined"!=typeof window&&window||null;function nr(){const t=tr();return t?t.screen:{}}function er(){const t=tr();return t?[t.innerWidth,t.innerHeight]:[void 0,void 0]}function rr(){const t=this.context.dataflow,n=t.container&&t.container();return n?[n.clientWidth,n.clientHeight]:[void 0,void 0]}function ir(t,e,r){if(!t)return[];const[i,a]=t,s=(new o.Bounds).set(i[0],i[1],a[0],a[1]),u=r||this.context.dataflow.scenegraph().root;return o.intersect(u,s,function(t){let e=null;if(t){const r=n.array(t.marktype),i=n.array(t.markname);e=t=>(!r.length||r.some((n=>t.marktype===n)))&&(!i.length||i.some((n=>t.name===n)))}return e}(e))}const or={random:()=>s.random(),cumulativeNormal:s.cumulativeNormal,cumulativeLogNormal:s.cumulativeLogNormal,cumulativeUniform:s.cumulativeUniform,densityNormal:s.densityNormal,densityLogNormal:s.densityLogNormal,densityUniform:s.densityUniform,quantileNormal:s.quantileNormal,quantileLogNormal:s.quantileLogNormal,quantileUniform:s.quantileUniform,sampleNormal:s.sampleNormal,sampleLogNormal:s.sampleLogNormal,sampleUniform:s.sampleUniform,isArray:n.isArray,isBoolean:n.isBoolean,isDate:n.isDate,isDefined:t=>void 0!==t,isNumber:n.isNumber,isObject:n.isObject,isRegExp:n.isRegExp,isString:n.isString,isTuple:i.isTuple,isValid:t=>null!=t&&t==t,toBoolean:n.toBoolean,toDate:t=>n.toDate(t),toNumber:n.toNumber,toString:n.toString,indexof:Oe,join:Le,lastindexof:Ie,replace:ze,reverse:De,slice:Te,flush:n.flush,lerp:n.lerp,merge:Se,pad:n.pad,peek:n.peek,pluck:_e,span:n.span,inrange:n.inrange,truncate:n.truncate,rgb:jn,lab:he,hcl:ye,hsl:Zn,luminance:xe,contrast:Ne,sequence:function(t,n,e){t=+t,n=+n,e=(i=arguments.length)<2?(n=t,t=0,1):i<3?1:+e;for(var r=-1,i=0|Math.max(0,Math.ceil((n-t)/e)),o=new Array(i);++r<i;)o[r]=t+r*e;return o},format:d,utcFormat:m,utcParse:v,utcOffset:u.utcOffset,utcSequence:u.utcSequence,timeFormat:p,timeParse:y,timeOffset:u.timeOffset,timeSequence:u.timeSequence,timeUnitSpecifier:u.timeUnitSpecifier,monthFormat:x,monthAbbrevFormat:N,dayFormat:S,dayAbbrevFormat:$,quarter:n.quarter,utcquarter:n.utcquarter,week:u.week,utcweek:u.utcweek,dayofyear:u.dayofyear,utcdayofyear:u.utcdayofyear,warn:mn,info:yn,debug:vn,extent:t=>n.extent(t),inScope:dn,intersect:ir,clampRange:n.clampRange,pinchDistance:qe,pinchAngle:Ae,screen:nr,containerSize:rr,windowSize:er,bandspace:Ve,setdata:h,pathShape:We,panLinear:n.panLinear,panLog:n.panLog,panPow:n.panPow,panSymlog:n.panSymlog,zoomLinear:n.zoomLinear,zoomLog:n.zoomLog,zoomPow:n.zoomPow,zoomSymlog:n.zoomSymlog,encode:f,modify:Me,lassoAppend:function(t,e,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:5;const o=(t=n.array(t))[t.length-1];return void 0===o||Math.hypot(o[0]-e,o[1]-r)>i?[...t,[e,r]]:t},lassoPath:function(t){return n.array(t).reduce(((n,e,r)=>{let[i,o]=e;return n+(0==r?`M ${i},${o} `:r===t.length-1?" Z":`L ${i},${o} `)}),"")},intersectLasso:function(t,n,e){const{x:r,y:i,mark:a}=e,s=(new o.Bounds).set(Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER,Number.MIN_SAFE_INTEGER,Number.MIN_SAFE_INTEGER);for(const[t,e]of n)t<s.x1&&(s.x1=t),t>s.x2&&(s.x2=t),e<s.y1&&(s.y1=e),e>s.y2&&(s.y2=e);return s.translate(r,i),ir([[s.x1,s.y1],[s.x2,s.y2]],t,a).filter((t=>function(t,n,e){let r=0;for(let i=0,o=e.length-1;i<e.length;o=i++){const[a,s]=e[o],[u,c]=e[i];c>n!=s>n&&t<(a-u)*(n-c)/(s-c)+u&&r++}return 1&r}(t.x,t.y,n)))}},ar=["view","item","group","xy","x","y"],sr="this.",ur={},cr={forbidden:["_"],allowed:["datum","event","item"],fieldvar:"datum",globalvar:t=>`_[${n.stringValue("$"+t)}]`,functions:function(t){const r=e.functions(t);ar.forEach((t=>r[t]="event.vega."+t));for(const t in or)r[t]=sr+t;return n.extend(r,_(t,or,ur)),r},constants:e.constants,visitors:ur},lr=e.codegenExpression(cr);function hr(t,n,e){return 1===arguments.length?or[t]:(or[t]=n,e&&(ur[t]=e),lr&&(lr.functions[t]=sr+t),this)}hr("bandwidth",je,q),hr("copy",He,q),hr("domain",Be,q),hr("range",Ge,q),hr("invert",Ue,q),hr("scale",Ce,q),hr("gradient",Xe,q),hr("geoArea",ln,q),hr("geoBounds",hn,q),hr("geoCentroid",fn,q),hr("geoShape",Ye,q),hr("geoScale",gn,q),hr("indata",l,M),hr("data",c,E),hr("treePath",Ke,E),hr("treeAncestors",Qe,E),hr("vlSelectionTest",a.selectionTest,a.selectionVisitor),hr("vlSelectionIdTest",a.selectionIdTest,a.selectionVisitor),hr("vlSelectionResolve",a.selectionResolve,a.selectionVisitor),hr("vlSelectionTuples",a.selectionTuples),t.DataPrefix=":",t.IndexPrefix="@",t.ScalePrefix=k,t.SignalPrefix="$",t.bandspace=Ve,t.bandwidth=je,t.codeGenerator=lr,t.codegenParams=cr,t.containerSize=rr,t.contrast=Ne,t.copy=He,t.data=c,t.dataVisitor=E,t.dayAbbrevFormat=$,t.dayFormat=S,t.debug=vn,t.domain=Be,t.encode=f,t.expressionFunction=hr,t.format=d,t.functionContext=or,t.geoArea=ln,t.geoBounds=hn,t.geoCentroid=fn,t.geoScale=gn,t.geoShape=Ye,t.inScope=dn,t.indata=l,t.indataVisitor=M,t.indexof=Oe,t.info=yn,t.invert=Ue,t.join=Le,t.lastindexof=Ie,t.luminance=xe,t.merge=Se,t.modify=Me,t.monthAbbrevFormat=N,t.monthFormat=x,t.parseExpression=function(t,r){const i={};let o;try{t=n.isString(t)?t:n.stringValue(t)+"",o=e.parseExpression(t)}catch(e){n.error("Expression parse error: "+t)}o.visit((t=>{if(t.type!==e.CallExpression)return;const n=t.callee.name,o=cr.visitors[n];o&&o(n,t.arguments,r,i)}));const a=lr(o);return a.globals.forEach((t=>{const e="$"+t;!n.hasOwnProperty(i,e)&&r.getSignal(t)&&(i[e]=r.signalRef(t))})),{$expr:n.extend({code:a.code},r.options.ast?{ast:o}:null),$fields:a.fields,$params:i}},t.pathShape=We,t.pinchAngle=Ae,t.pinchDistance=qe,t.pluck=_e,t.range=Ge,t.replace=ze,t.reverse=De,t.scale=Ce,t.scaleGradient=Xe,t.scaleVisitor=q,t.screen=nr,t.setdata=h,t.slice=Te,t.timeFormat=p,t.timeParse=y,t.treeAncestors=Qe,t.treePath=Ke,t.utcFormat=m,t.utcParse=v,t.warn=mn,t.windowSize=er}));
1
+ !function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("vega-util"),require("vega-expression"),require("vega-scale"),require("vega-dataflow"),require("vega-scenegraph"),require("vega-selections"),require("vega-statistics"),require("vega-time")):"function"==typeof define&&define.amd?define(["exports","vega-util","vega-expression","vega-scale","vega-dataflow","vega-scenegraph","vega-selections","vega-statistics","vega-time"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).vega={},t.vega,t.vega,t.vega,t.vega,t.vega,t.vega,t.vega,t.vega)}(this,(function(t,n,e,r,i,o,a,s,u){"use strict";function c(t){const n=this.context.data[t];return n?n.values.value:[]}function l(t,n,e){const r=this.context.data[t]["index:"+n],i=r?r.value.get(e):void 0;return i?i.count:i}function h(t,e){const r=this.context.dataflow,i=this.context.data[t].input;return r.pulse(i,r.changeset().remove(n.truthy).insert(e)),1}function f(t,n,e){if(t){const e=this.context.dataflow,r=t.mark.source;e.pulse(r,e.changeset().encode(t,n))}return void 0!==e?e:t}const g=t=>function(n,e){const r=this.context.dataflow.locale();return null===n?"null":r[t](e)(n)},d=g("format"),p=g("timeFormat"),m=g("utcFormat"),y=g("timeParse"),v=g("utcParse"),b=new Date(2e3,0,1);function w(t,n,e){return Number.isInteger(t)&&Number.isInteger(n)?(b.setYear(2e3),b.setMonth(t),b.setDate(n),p.call(this,b,e)):""}function x(t){return w.call(this,t,1,"%B")}function N(t){return w.call(this,t,1,"%b")}function S(t){return w.call(this,0,2+t,"%A")}function $(t){return w.call(this,0,2+t,"%a")}const k="%";function E(t,r,i,o){r[0].type!==e.Literal&&n.error("First argument to data functions must be a string literal.");const a=r[0].value,s=":"+a;if(!n.hasOwnProperty(s,o))try{o[s]=i.getData(a).tuplesRef()}catch(t){}}function M(t,r,i,o){r[0].type!==e.Literal&&n.error("First argument to indata must be a string literal."),r[1].type!==e.Literal&&n.error("Second argument to indata must be a string literal.");const a=r[0].value,s=r[1].value,u="@"+s;n.hasOwnProperty(u,o)||(o[u]=i.getData(a).indataRef(i,s))}function q(t,n,r,i){if(n[0].type===e.Literal)A(r,i,n[0].value);else for(t in r.scales)A(r,i,t)}function A(t,e,r){const i=k+r;if(!n.hasOwnProperty(e,i))try{e[i]=t.scaleRef(r)}catch(t){}}function P(t,e){if(n.isString(t)){const n=e.scales[t];return n&&r.isRegisteredScale(n.value)?n.value:void 0}}function _(t,r,i){r.__bandwidth=t=>t&&t.bandwidth?t.bandwidth():0,i._bandwidth=q,i._range=q,i._scale=q;const o=r=>"_["+(r.type===e.Literal?n.stringValue(k+r.value):n.stringValue(k)+"+"+t(r))+"]";return{_bandwidth:t=>`this.__bandwidth(${o(t[0])})`,_range:t=>`${o(t[0])}.range()`,_scale:n=>`${o(n[0])}(${t(n[1])})`}}class F{constructor(){this._partials=new Float64Array(32),this._n=0}add(t){const n=this._partials;let e=0;for(let r=0;r<this._n&&r<32;r++){const i=n[r],o=t+i,a=Math.abs(t)<Math.abs(i)?t-(o-i):i-(o-t);a&&(n[e++]=a),t=o}return n[e]=t,this._n=e+1,this}valueOf(){const t=this._partials;let n,e,r,i=this._n,o=0;if(i>0){for(o=t[--i];i>0&&(n=o,e=t[--i],o=n+e,r=e-(o-n),!r););i>0&&(r<0&&t[i-1]<0||r>0&&t[i-1]>0)&&(e=2*r,n=o+e,e==n-o&&(o=n))}return o}}var R=1e-6,L=Math.PI,O=L/2,I=L/4,T=2*L,z=180/L,D=L/180,V=Math.abs,j=Math.atan2,H=Math.cos,B=Math.hypot,U=Math.sin,G=Math.sqrt;function C(t){return t>1?O:t<-1?-O:Math.asin(t)}function X(){}function Y(t,n){t&&Z.hasOwnProperty(t.type)&&Z[t.type](t,n)}var W={Feature:function(t,n){Y(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r<i;)Y(e[r].geometry,n)}},Z={Sphere:function(t,n){n.sphere()},Point:function(t,n){t=t.coordinates,n.point(t[0],t[1],t[2])},MultiPoint:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)t=e[r],n.point(t[0],t[1],t[2])},LineString:function(t,n){J(t.coordinates,n,0)},MultiLineString:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)J(e[r],n,0)},Polygon:function(t,n){K(t.coordinates,n)},MultiPolygon:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)K(e[r],n)},GeometryCollection:function(t,n){for(var e=t.geometries,r=-1,i=e.length;++r<i;)Y(e[r],n)}};function J(t,n,e){var r,i=-1,o=t.length-e;for(n.lineStart();++i<o;)r=t[i],n.point(r[0],r[1],r[2]);n.lineEnd()}function K(t,n){var e=-1,r=t.length;for(n.polygonStart();++e<r;)J(t[e],n,1);n.polygonEnd()}function Q(t,n){t&&W.hasOwnProperty(t.type)?W[t.type](t,n):Y(t,n)}var tt,nt,et,rt,it,ot,at,st,ut,ct,lt,ht,ft,gt,dt,pt,mt=new F,yt=new F,vt={point:X,lineStart:X,lineEnd:X,polygonStart:function(){mt=new F,vt.lineStart=bt,vt.lineEnd=wt},polygonEnd:function(){var t=+mt;yt.add(t<0?T+t:t),this.lineStart=this.lineEnd=this.point=X},sphere:function(){yt.add(T)}};function bt(){vt.point=xt}function wt(){Nt(tt,nt)}function xt(t,n){vt.point=Nt,tt=t,nt=n,et=t*=D,rt=H(n=(n*=D)/2+I),it=U(n)}function Nt(t,n){var e=(t*=D)-et,r=e>=0?1:-1,i=r*e,o=H(n=(n*=D)/2+I),a=U(n),s=it*a,u=rt*o+s*H(i),c=s*r*U(i);mt.add(j(c,u)),et=t,rt=o,it=a}function St(t,n){return[t[1]*n[2]-t[2]*n[1],t[2]*n[0]-t[0]*n[2],t[0]*n[1]-t[1]*n[0]]}var $t,kt,Et,Mt,qt,At,Pt,_t,Ft,Rt,Lt,Ot,It,Tt,zt,Dt,Vt={point:jt,lineStart:Bt,lineEnd:Ut,polygonStart:function(){Vt.point=Gt,Vt.lineStart=Ct,Vt.lineEnd=Xt,gt=new F,vt.polygonStart()},polygonEnd:function(){vt.polygonEnd(),Vt.point=jt,Vt.lineStart=Bt,Vt.lineEnd=Ut,mt<0?(ot=-(st=180),at=-(ut=90)):gt>R?ut=90:gt<-1e-6&&(at=-90),pt[0]=ot,pt[1]=st},sphere:function(){ot=-(st=180),at=-(ut=90)}};function jt(t,n){dt.push(pt=[ot=t,st=t]),n<at&&(at=n),n>ut&&(ut=n)}function Ht(t,n){var e,r,i=function(t){var n=t[0],e=t[1],r=H(e);return[r*H(n),r*U(n),U(e)]}([t*D,n*D]);if(ft){var o=St(ft,i),a=St([o[1],-o[0],0],o);r=G((e=a)[0]*e[0]+e[1]*e[1]+e[2]*e[2]),e[0]/=r,e[1]/=r,e[2]/=r,a=function(t){return[j(t[1],t[0]),C(t[2])]}(a);var s,u=t-ct,c=u>0?1:-1,l=a[0]*z*c,h=V(u)>180;h^(c*ct<l&&l<c*t)?(s=a[1]*z)>ut&&(ut=s):h^(c*ct<(l=(l+360)%360-180)&&l<c*t)?(s=-a[1]*z)<at&&(at=s):(n<at&&(at=n),n>ut&&(ut=n)),h?t<ct?Yt(ot,t)>Yt(ot,st)&&(st=t):Yt(t,st)>Yt(ot,st)&&(ot=t):st>=ot?(t<ot&&(ot=t),t>st&&(st=t)):t>ct?Yt(ot,t)>Yt(ot,st)&&(st=t):Yt(t,st)>Yt(ot,st)&&(ot=t)}else dt.push(pt=[ot=t,st=t]);n<at&&(at=n),n>ut&&(ut=n),ft=i,ct=t}function Bt(){Vt.point=Ht}function Ut(){pt[0]=ot,pt[1]=st,Vt.point=jt,ft=null}function Gt(t,n){if(ft){var e=t-ct;gt.add(V(e)>180?e+(e>0?360:-360):e)}else lt=t,ht=n;vt.point(t,n),Ht(t,n)}function Ct(){vt.lineStart()}function Xt(){Gt(lt,ht),vt.lineEnd(),V(gt)>R&&(ot=-(st=180)),pt[0]=ot,pt[1]=st,ft=null}function Yt(t,n){return(n-=t)<0?n+360:n}function Wt(t,n){return t[0]-n[0]}function Zt(t,n){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:n<t[0]||t[1]<n}var Jt={sphere:X,point:Kt,lineStart:tn,lineEnd:rn,polygonStart:function(){Jt.lineStart=on,Jt.lineEnd=an},polygonEnd:function(){Jt.lineStart=tn,Jt.lineEnd=rn}};function Kt(t,n){t*=D;var e=H(n*=D);Qt(e*H(t),e*U(t),U(n))}function Qt(t,n,e){++$t,Et+=(t-Et)/$t,Mt+=(n-Mt)/$t,qt+=(e-qt)/$t}function tn(){Jt.point=nn}function nn(t,n){t*=D;var e=H(n*=D);Tt=e*H(t),zt=e*U(t),Dt=U(n),Jt.point=en,Qt(Tt,zt,Dt)}function en(t,n){t*=D;var e=H(n*=D),r=e*H(t),i=e*U(t),o=U(n),a=j(G((a=zt*o-Dt*i)*a+(a=Dt*r-Tt*o)*a+(a=Tt*i-zt*r)*a),Tt*r+zt*i+Dt*o);kt+=a,At+=a*(Tt+(Tt=r)),Pt+=a*(zt+(zt=i)),_t+=a*(Dt+(Dt=o)),Qt(Tt,zt,Dt)}function rn(){Jt.point=Kt}function on(){Jt.point=sn}function an(){un(Ot,It),Jt.point=Kt}function sn(t,n){Ot=t,It=n,t*=D,n*=D,Jt.point=un;var e=H(n);Tt=e*H(t),zt=e*U(t),Dt=U(n),Qt(Tt,zt,Dt)}function un(t,n){t*=D;var e=H(n*=D),r=e*H(t),i=e*U(t),o=U(n),a=zt*o-Dt*i,s=Dt*r-Tt*o,u=Tt*i-zt*r,c=B(a,s,u),l=C(c),h=c&&-l/c;Ft.add(h*a),Rt.add(h*s),Lt.add(h*u),kt+=l,At+=l*(Tt+(Tt=r)),Pt+=l*(zt+(zt=i)),_t+=l*(Dt+(Dt=o)),Qt(Tt,zt,Dt)}function cn(t,n){return function(e,r,i){if(e){const n=P(e,(i||this).context);return n&&n.path[t](r)}return n(r)}}const ln=cn("area",(function(t){return yt=new F,Q(t,vt),2*yt})),hn=cn("bounds",(function(t){var n,e,r,i,o,a,s;if(ut=st=-(ot=at=1/0),dt=[],Q(t,Vt),e=dt.length){for(dt.sort(Wt),n=1,o=[r=dt[0]];n<e;++n)Zt(r,(i=dt[n])[0])||Zt(r,i[1])?(Yt(r[0],i[1])>Yt(r[0],r[1])&&(r[1]=i[1]),Yt(i[0],r[1])>Yt(r[0],r[1])&&(r[0]=i[0])):o.push(r=i);for(a=-1/0,n=0,r=o[e=o.length-1];n<=e;r=i,++n)i=o[n],(s=Yt(r[1],i[0]))>a&&(a=s,ot=i[0],st=r[1])}return dt=pt=null,ot===1/0||at===1/0?[[NaN,NaN],[NaN,NaN]]:[[ot,at],[st,ut]]})),fn=cn("centroid",(function(t){$t=kt=Et=Mt=qt=At=Pt=_t=0,Ft=new F,Rt=new F,Lt=new F,Q(t,Jt);var n=+Ft,e=+Rt,r=+Lt,i=B(n,e,r);return i<1e-12&&(n=At,e=Pt,r=_t,kt<R&&(n=Et,e=Mt,r=qt),(i=B(n,e,r))<1e-12)?[NaN,NaN]:[j(e,n)*z,C(r/i)*z]}));function gn(t,n){const e=P(t,(n||this).context);return e&&e.scale()}function dn(t){const n=this.context.group;let e=!1;if(n)for(;t;){if(t===n){e=!0;break}t=t.mark.group}return e}function pn(t,n,e){try{t[n].apply(t,["EXPRESSION"].concat([].slice.call(e)))}catch(n){t.warn(n)}return e[e.length-1]}function mn(){return pn(this.context.dataflow,"warn",arguments)}function yn(){return pn(this.context.dataflow,"info",arguments)}function vn(){return pn(this.context.dataflow,"debug",arguments)}function bn(t,n,e){t.prototype=n.prototype=e,e.constructor=t}function wn(t,n){var e=Object.create(t.prototype);for(var r in n)e[r]=n[r];return e}function xn(){}var Nn=.7,Sn=1/Nn,$n="\\s*([+-]?\\d+)\\s*",kn="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",En="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Mn=/^#([0-9a-f]{3,8})$/,qn=new RegExp(`^rgb\\(${$n},${$n},${$n}\\)$`),An=new RegExp(`^rgb\\(${En},${En},${En}\\)$`),Pn=new RegExp(`^rgba\\(${$n},${$n},${$n},${kn}\\)$`),_n=new RegExp(`^rgba\\(${En},${En},${En},${kn}\\)$`),Fn=new RegExp(`^hsl\\(${kn},${En},${En}\\)$`),Rn=new RegExp(`^hsla\\(${kn},${En},${En},${kn}\\)$`),Ln={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function On(){return this.rgb().formatHex()}function In(){return this.rgb().formatRgb()}function Tn(t){var n,e;return t=(t+"").trim().toLowerCase(),(n=Mn.exec(t))?(e=n[1].length,n=parseInt(n[1],16),6===e?zn(n):3===e?new Hn(n>>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1):8===e?Dn(n>>24&255,n>>16&255,n>>8&255,(255&n)/255):4===e?Dn(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|240&n,((15&n)<<4|15&n)/255):null):(n=qn.exec(t))?new Hn(n[1],n[2],n[3],1):(n=An.exec(t))?new Hn(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=Pn.exec(t))?Dn(n[1],n[2],n[3],n[4]):(n=_n.exec(t))?Dn(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=Fn.exec(t))?Yn(n[1],n[2]/100,n[3]/100,1):(n=Rn.exec(t))?Yn(n[1],n[2]/100,n[3]/100,n[4]):Ln.hasOwnProperty(t)?zn(Ln[t]):"transparent"===t?new Hn(NaN,NaN,NaN,0):null}function zn(t){return new Hn(t>>16&255,t>>8&255,255&t,1)}function Dn(t,n,e,r){return r<=0&&(t=n=e=NaN),new Hn(t,n,e,r)}function Vn(t){return t instanceof xn||(t=Tn(t)),t?new Hn((t=t.rgb()).r,t.g,t.b,t.opacity):new Hn}function jn(t,n,e,r){return 1===arguments.length?Vn(t):new Hn(t,n,e,null==r?1:r)}function Hn(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function Bn(){return`#${Xn(this.r)}${Xn(this.g)}${Xn(this.b)}`}function Un(){const t=Gn(this.opacity);return`${1===t?"rgb(":"rgba("}${Cn(this.r)}, ${Cn(this.g)}, ${Cn(this.b)}${1===t?")":`, ${t})`}`}function Gn(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Cn(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Xn(t){return((t=Cn(t))<16?"0":"")+t.toString(16)}function Yn(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new Jn(t,n,e,r)}function Wn(t){if(t instanceof Jn)return new Jn(t.h,t.s,t.l,t.opacity);if(t instanceof xn||(t=Tn(t)),!t)return new Jn;if(t instanceof Jn)return t;var n=(t=t.rgb()).r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),a=NaN,s=o-i,u=(o+i)/2;return s?(a=n===o?(e-r)/s+6*(e<r):e===o?(r-n)/s+2:(n-e)/s+4,s/=u<.5?o+i:2-o-i,a*=60):s=u>0&&u<1?0:a,new Jn(a,s,u,t.opacity)}function Zn(t,n,e,r){return 1===arguments.length?Wn(t):new Jn(t,n,e,null==r?1:r)}function Jn(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Kn(t){return(t=(t||0)%360)<0?t+360:t}function Qn(t){return Math.max(0,Math.min(1,t||0))}function te(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}bn(xn,Tn,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:On,formatHex:On,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return Wn(this).formatHsl()},formatRgb:In,toString:In}),bn(Hn,jn,wn(xn,{brighter(t){return t=null==t?Sn:Math.pow(Sn,t),new Hn(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=null==t?Nn:Math.pow(Nn,t),new Hn(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new Hn(Cn(this.r),Cn(this.g),Cn(this.b),Gn(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Bn,formatHex:Bn,formatHex8:function(){return`#${Xn(this.r)}${Xn(this.g)}${Xn(this.b)}${Xn(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:Un,toString:Un})),bn(Jn,Zn,wn(xn,{brighter(t){return t=null==t?Sn:Math.pow(Sn,t),new Jn(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?Nn:Math.pow(Nn,t),new Jn(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+360*(this.h<0),n=isNaN(t)||isNaN(this.s)?0:this.s,e=this.l,r=e+(e<.5?e:1-e)*n,i=2*e-r;return new Hn(te(t>=240?t-240:t+120,i,r),te(t,i,r),te(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new Jn(Kn(this.h),Qn(this.s),Qn(this.l),Gn(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Gn(this.opacity);return`${1===t?"hsl(":"hsla("}${Kn(this.h)}, ${100*Qn(this.s)}%, ${100*Qn(this.l)}%${1===t?")":`, ${t})`}`}}));const ne=Math.PI/180,ee=180/Math.PI,re=.96422,ie=1,oe=.82521,ae=4/29,se=6/29,ue=3*se*se,ce=se*se*se;function le(t){if(t instanceof fe)return new fe(t.l,t.a,t.b,t.opacity);if(t instanceof ve)return be(t);t instanceof Hn||(t=Vn(t));var n,e,r=me(t.r),i=me(t.g),o=me(t.b),a=ge((.2225045*r+.7168786*i+.0606169*o)/ie);return r===i&&i===o?n=e=a:(n=ge((.4360747*r+.3850649*i+.1430804*o)/re),e=ge((.0139322*r+.0971045*i+.7141733*o)/oe)),new fe(116*a-16,500*(n-a),200*(a-e),t.opacity)}function he(t,n,e,r){return 1===arguments.length?le(t):new fe(t,n,e,null==r?1:r)}function fe(t,n,e,r){this.l=+t,this.a=+n,this.b=+e,this.opacity=+r}function ge(t){return t>ce?Math.pow(t,1/3):t/ue+ae}function de(t){return t>se?t*t*t:ue*(t-ae)}function pe(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function me(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function ye(t,n,e,r){return 1===arguments.length?function(t){if(t instanceof ve)return new ve(t.h,t.c,t.l,t.opacity);if(t instanceof fe||(t=le(t)),0===t.a&&0===t.b)return new ve(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var n=Math.atan2(t.b,t.a)*ee;return new ve(n<0?n+360:n,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}(t):new ve(t,n,e,null==r?1:r)}function ve(t,n,e,r){this.h=+t,this.c=+n,this.l=+e,this.opacity=+r}function be(t){if(isNaN(t.h))return new fe(t.l,0,0,t.opacity);var n=t.h*ne;return new fe(t.l,Math.cos(n)*t.c,Math.sin(n)*t.c,t.opacity)}function we(t){const n=t/255;return n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4)}function xe(t){const n=jn(t);return.2126*we(n.r)+.7152*we(n.g)+.0722*we(n.b)}function Ne(t,n){const e=xe(t),r=xe(n);return(Math.max(e,r)+.05)/(Math.min(e,r)+.05)}function Se(){const t=[].slice.call(arguments);return t.unshift({}),n.extend(...t)}function $e(t,e){return t===e||t!=t&&e!=e||(n.isArray(t)?!(!n.isArray(e)||t.length!==e.length)&&function(t,n){for(let e=0,r=t.length;e<r;++e)if(!$e(t[e],n[e]))return!1;return!0}(t,e):!(!n.isObject(t)||!n.isObject(e))&&ke(t,e))}function ke(t,n){for(const e in t)if(!$e(t[e],n[e]))return!1;return!0}function Ee(t){return n=>ke(t,n)}function Me(t,e,r,o,a,s){const u=this.context.dataflow,c=this.context.data[t],l=c.input,h=u.stamp();let f,g,d=c.changes;if(!1===u._trigger||!(l.value.length||e||o))return 0;if((!d||d.stamp<h)&&(c.changes=d=u.changeset(),d.stamp=h,u.runAfter((()=>{c.modified=!0,u.pulse(l,d).run()}),!0,1)),r&&(f=!0===r?n.truthy:n.isArray(r)||i.isTuple(r)?r:Ee(r),d.remove(f)),e&&d.insert(e),o&&(f=Ee(o),l.value.some(f)?d.remove(f):d.insert(o)),a)for(g in s)d.modify(a,g,s[g]);return 1}function qe(t){const n=t.touches,e=n[0].clientX-n[1].clientX,r=n[0].clientY-n[1].clientY;return Math.hypot(e,r)}function Ae(t){const n=t.touches;return Math.atan2(n[0].clientY-n[1].clientY,n[0].clientX-n[1].clientX)}bn(fe,he,wn(xn,{brighter(t){return new fe(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker(t){return new fe(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,n=isNaN(this.a)?t:t+this.a/500,e=isNaN(this.b)?t:t-this.b/200;return new Hn(pe(3.1338561*(n=re*de(n))-1.6168667*(t=ie*de(t))-.4906146*(e=oe*de(e))),pe(-.9787684*n+1.9161415*t+.033454*e),pe(.0719453*n-.2289914*t+1.4052427*e),this.opacity)}})),bn(ve,ye,wn(xn,{brighter(t){return new ve(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker(t){return new ve(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb(){return be(this).rgb()}}));const Pe={};function _e(t,e){const r=Pe[e]||(Pe[e]=n.field(e));return n.isArray(t)?t.map(r):r(t)}function Fe(t){return n.isArray(t)||ArrayBuffer.isView(t)?t:null}function Re(t){return Fe(t)||(n.isString(t)?t:null)}function Le(t){for(var n=arguments.length,e=new Array(n>1?n-1:0),r=1;r<n;r++)e[r-1]=arguments[r];return Fe(t).join(...e)}function Oe(t){for(var n=arguments.length,e=new Array(n>1?n-1:0),r=1;r<n;r++)e[r-1]=arguments[r];return Re(t).indexOf(...e)}function Ie(t){for(var n=arguments.length,e=new Array(n>1?n-1:0),r=1;r<n;r++)e[r-1]=arguments[r];return Re(t).lastIndexOf(...e)}function Te(t){for(var n=arguments.length,e=new Array(n>1?n-1:0),r=1;r<n;r++)e[r-1]=arguments[r];return Re(t).slice(...e)}function ze(t,e,r){return n.isFunction(r)&&n.error("Function argument passed to replace."),String(t).replace(e,r)}function De(t){return Fe(t).slice().reverse()}function Ve(t){return Fe(t).slice().sort(n.ascending)}function je(t,n,e){return r.bandSpace(t||0,n||0,e||0)}function He(t,n){const e=P(t,(n||this).context);return e&&e.bandwidth?e.bandwidth():0}function Be(t,n){const e=P(t,(n||this).context);return e?e.copy():void 0}function Ue(t,n){const e=P(t,(n||this).context);return e?e.domain():[]}function Ge(t,e,r){const i=P(t,(r||this).context);return i?n.isArray(e)?(i.invertRange||i.invert)(e):(i.invert||i.invertExtent)(e):void 0}function Ce(t,n){const e=P(t,(n||this).context);return e&&e.range?e.range():[]}function Xe(t,n,e){const r=P(t,(e||this).context);return r?r(n):void 0}function Ye(t,e,i,a,s){let u="string"==typeof t?P(t,(s||this).context):t;const c=o.Gradient(e,i);let l=u.domain(),h=l[0],f=n.peek(l),g=n.identity;return f-h?g=r.scaleFraction(u,h,f):u=(u.interpolator?r.scale("sequential")().interpolator(u.interpolator()):r.scale("linear")().interpolate(u.interpolate()).range(u.range())).domain([h=0,f=1]),u.ticks&&(l=u.ticks(+a||15),h!==l[0]&&l.unshift(h),f!==n.peek(l)&&l.push(f)),l.forEach((t=>c.stop(g(t),u(t)))),c}function We(t,n,e){const r=P(t,(e||this).context);return function(t){return r?r.path.context(t)(n):""}}function Ze(t){let n=null;return function(e){return e?o.pathRender(e,n=n||o.pathParse(t)):t}}const Je=t=>t.data;function Ke(t,n){const e=c.call(n,t);return e.root&&e.root.lookup||{}}function Qe(t,n,e){const r=Ke(t,this),i=r[n],o=r[e];return i&&o?i.path(o).map(Je):void 0}function tr(t,n){const e=Ke(t,this)[n];return e?e.ancestors().map(Je):void 0}const nr=()=>"undefined"!=typeof window&&window||null;function er(){const t=nr();return t?t.screen:{}}function rr(){const t=nr();return t?[t.innerWidth,t.innerHeight]:[void 0,void 0]}function ir(){const t=this.context.dataflow,n=t.container&&t.container();return n?[n.clientWidth,n.clientHeight]:[void 0,void 0]}function or(t,e,r){if(!t)return[];const[i,a]=t,s=(new o.Bounds).set(i[0],i[1],a[0],a[1]),u=r||this.context.dataflow.scenegraph().root;return o.intersect(u,s,function(t){let e=null;if(t){const r=n.array(t.marktype),i=n.array(t.markname);e=t=>(!r.length||r.some((n=>t.marktype===n)))&&(!i.length||i.some((n=>t.name===n)))}return e}(e))}const ar={random:()=>s.random(),cumulativeNormal:s.cumulativeNormal,cumulativeLogNormal:s.cumulativeLogNormal,cumulativeUniform:s.cumulativeUniform,densityNormal:s.densityNormal,densityLogNormal:s.densityLogNormal,densityUniform:s.densityUniform,quantileNormal:s.quantileNormal,quantileLogNormal:s.quantileLogNormal,quantileUniform:s.quantileUniform,sampleNormal:s.sampleNormal,sampleLogNormal:s.sampleLogNormal,sampleUniform:s.sampleUniform,isArray:n.isArray,isBoolean:n.isBoolean,isDate:n.isDate,isDefined:t=>void 0!==t,isNumber:n.isNumber,isObject:n.isObject,isRegExp:n.isRegExp,isString:n.isString,isTuple:i.isTuple,isValid:t=>null!=t&&t==t,toBoolean:n.toBoolean,toDate:t=>n.toDate(t),toNumber:n.toNumber,toString:n.toString,indexof:Oe,join:Le,lastindexof:Ie,replace:ze,reverse:De,sort:Ve,slice:Te,flush:n.flush,lerp:n.lerp,merge:Se,pad:n.pad,peek:n.peek,pluck:_e,span:n.span,inrange:n.inrange,truncate:n.truncate,rgb:jn,lab:he,hcl:ye,hsl:Zn,luminance:xe,contrast:Ne,sequence:function(t,n,e){t=+t,n=+n,e=(i=arguments.length)<2?(n=t,t=0,1):i<3?1:+e;for(var r=-1,i=0|Math.max(0,Math.ceil((n-t)/e)),o=new Array(i);++r<i;)o[r]=t+r*e;return o},format:d,utcFormat:m,utcParse:v,utcOffset:u.utcOffset,utcSequence:u.utcSequence,timeFormat:p,timeParse:y,timeOffset:u.timeOffset,timeSequence:u.timeSequence,timeUnitSpecifier:u.timeUnitSpecifier,monthFormat:x,monthAbbrevFormat:N,dayFormat:S,dayAbbrevFormat:$,quarter:n.quarter,utcquarter:n.utcquarter,week:u.week,utcweek:u.utcweek,dayofyear:u.dayofyear,utcdayofyear:u.utcdayofyear,warn:mn,info:yn,debug:vn,extent:t=>n.extent(t),inScope:dn,intersect:or,clampRange:n.clampRange,pinchDistance:qe,pinchAngle:Ae,screen:er,containerSize:ir,windowSize:rr,bandspace:je,setdata:h,pathShape:Ze,panLinear:n.panLinear,panLog:n.panLog,panPow:n.panPow,panSymlog:n.panSymlog,zoomLinear:n.zoomLinear,zoomLog:n.zoomLog,zoomPow:n.zoomPow,zoomSymlog:n.zoomSymlog,encode:f,modify:Me,lassoAppend:function(t,e,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:5;const o=(t=n.array(t))[t.length-1];return void 0===o||Math.hypot(o[0]-e,o[1]-r)>i?[...t,[e,r]]:t},lassoPath:function(t){return n.array(t).reduce(((n,e,r)=>{let[i,o]=e;return n+(0==r?`M ${i},${o} `:r===t.length-1?" Z":`L ${i},${o} `)}),"")},intersectLasso:function(t,n,e){const{x:r,y:i,mark:a}=e,s=(new o.Bounds).set(Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER,Number.MIN_SAFE_INTEGER,Number.MIN_SAFE_INTEGER);for(const[t,e]of n)t<s.x1&&(s.x1=t),t>s.x2&&(s.x2=t),e<s.y1&&(s.y1=e),e>s.y2&&(s.y2=e);return s.translate(r,i),or([[s.x1,s.y1],[s.x2,s.y2]],t,a).filter((t=>function(t,n,e){let r=0;for(let i=0,o=e.length-1;i<e.length;o=i++){const[a,s]=e[o],[u,c]=e[i];c>n!=s>n&&t<(a-u)*(n-c)/(s-c)+u&&r++}return 1&r}(t.x,t.y,n)))}},sr=["view","item","group","xy","x","y"],ur="this.",cr={},lr={forbidden:["_"],allowed:["datum","event","item"],fieldvar:"datum",globalvar:t=>`_[${n.stringValue("$"+t)}]`,functions:function(t){const r=e.functions(t);sr.forEach((t=>r[t]="event.vega."+t));for(const t in ar)r[t]=ur+t;return n.extend(r,_(t,ar,cr)),r},constants:e.constants,visitors:cr},hr=e.codegenExpression(lr);function fr(t,n,e){return 1===arguments.length?ar[t]:(ar[t]=n,e&&(cr[t]=e),hr&&(hr.functions[t]=ur+t),this)}fr("bandwidth",He,q),fr("copy",Be,q),fr("domain",Ue,q),fr("range",Ce,q),fr("invert",Ge,q),fr("scale",Xe,q),fr("gradient",Ye,q),fr("geoArea",ln,q),fr("geoBounds",hn,q),fr("geoCentroid",fn,q),fr("geoShape",We,q),fr("geoScale",gn,q),fr("indata",l,M),fr("data",c,E),fr("treePath",Qe,E),fr("treeAncestors",tr,E),fr("vlSelectionTest",a.selectionTest,a.selectionVisitor),fr("vlSelectionIdTest",a.selectionIdTest,a.selectionVisitor),fr("vlSelectionResolve",a.selectionResolve,a.selectionVisitor),fr("vlSelectionTuples",a.selectionTuples),t.DataPrefix=":",t.IndexPrefix="@",t.ScalePrefix=k,t.SignalPrefix="$",t.bandspace=je,t.bandwidth=He,t.codeGenerator=hr,t.codegenParams=lr,t.containerSize=ir,t.contrast=Ne,t.copy=Be,t.data=c,t.dataVisitor=E,t.dayAbbrevFormat=$,t.dayFormat=S,t.debug=vn,t.domain=Ue,t.encode=f,t.expressionFunction=fr,t.format=d,t.functionContext=ar,t.geoArea=ln,t.geoBounds=hn,t.geoCentroid=fn,t.geoScale=gn,t.geoShape=We,t.inScope=dn,t.indata=l,t.indataVisitor=M,t.indexof=Oe,t.info=yn,t.invert=Ge,t.join=Le,t.lastindexof=Ie,t.luminance=xe,t.merge=Se,t.modify=Me,t.monthAbbrevFormat=N,t.monthFormat=x,t.parseExpression=function(t,r){const i={};let o;try{t=n.isString(t)?t:n.stringValue(t)+"",o=e.parseExpression(t)}catch(e){n.error("Expression parse error: "+t)}o.visit((t=>{if(t.type!==e.CallExpression)return;const n=t.callee.name,o=lr.visitors[n];o&&o(n,t.arguments,r,i)}));const a=hr(o);return a.globals.forEach((t=>{const e="$"+t;!n.hasOwnProperty(i,e)&&r.getSignal(t)&&(i[e]=r.signalRef(t))})),{$expr:n.extend({code:a.code},r.options.ast?{ast:o}:null),$fields:a.fields,$params:i}},t.pathShape=Ze,t.pinchAngle=Ae,t.pinchDistance=qe,t.pluck=_e,t.range=Ce,t.replace=ze,t.reverse=De,t.scale=Xe,t.scaleGradient=Ye,t.scaleVisitor=q,t.screen=er,t.setdata=h,t.slice=Te,t.sort=Ve,t.timeFormat=p,t.timeParse=y,t.treeAncestors=tr,t.treePath=Qe,t.utcFormat=m,t.utcParse=v,t.warn=mn,t.windowSize=rr}));
2
2
  //# sourceMappingURL=vega-functions.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vega-functions.min.js","sources":["../src/functions/data.js","../src/functions/encode.js","../src/functions/format.js","../src/constants.js","../src/visitors.js","../src/scales.js","../../../node_modules/d3-array/src/fsum.js","../../../node_modules/d3-geo/src/math.js","../../../node_modules/d3-geo/src/noop.js","../../../node_modules/d3-geo/src/stream.js","../../../node_modules/d3-geo/src/area.js","../../../node_modules/d3-geo/src/bounds.js","../../../node_modules/d3-geo/src/cartesian.js","../../../node_modules/d3-geo/src/centroid.js","../src/functions/geo.js","../src/functions/inscope.js","../src/functions/log.js","../../../node_modules/d3-color/src/define.js","../../../node_modules/d3-color/src/color.js","../../../node_modules/d3-color/src/math.js","../../../node_modules/d3-color/src/lab.js","../src/functions/luminance.js","../src/functions/merge.js","../src/functions/modify.js","../src/functions/pinch.js","../src/functions/pluck.js","../src/functions/sequence.js","../src/functions/scale.js","../src/functions/scale-gradient.js","../src/functions/shape.js","../src/functions/tree.js","../src/functions/window.js","../src/functions/intersect.js","../src/codegen.js","../../../node_modules/d3-array/src/range.js","../src/functions/lasso.js","../src/parser.js"],"sourcesContent":["import {truthy} from 'vega-util';\n\nexport function data(name) {\n const data = this.context.data[name];\n return data ? data.values.value : [];\n}\n\nexport function indata(name, field, value) {\n const index = this.context.data[name]['index:' + field],\n entry = index ? index.value.get(value) : undefined;\n return entry ? entry.count : entry;\n}\n\nexport function setdata(name, tuples) {\n const df = this.context.dataflow,\n data = this.context.data[name],\n input = data.input;\n\n df.pulse(input, df.changeset().remove(truthy).insert(tuples));\n return 1;\n}\n","export default function(item, name, retval) {\n if (item) {\n const df = this.context.dataflow,\n target = item.mark.source;\n df.pulse(target, df.changeset().encode(item, name));\n }\n return retval !== undefined ? retval : item;\n}\n","const wrap = method => function(value, spec) {\n const locale = this.context.dataflow.locale();\n return value === null ? 'null' : locale[method](spec)(value);\n};\n\nexport const format = wrap('format');\nexport const timeFormat = wrap('timeFormat');\nexport const utcFormat = wrap('utcFormat');\nexport const timeParse = wrap('timeParse');\nexport const utcParse = wrap('utcParse');\n\nconst dateObj = new Date(2000, 0, 1);\n\nfunction time(month, day, specifier) {\n if (!Number.isInteger(month) || !Number.isInteger(day)) return '';\n dateObj.setYear(2000);\n dateObj.setMonth(month);\n dateObj.setDate(day);\n return timeFormat.call(this, dateObj, specifier);\n}\n\nexport function monthFormat(month) {\n return time.call(this, month, 1, '%B');\n}\n\nexport function monthAbbrevFormat(month) {\n return time.call(this, month, 1, '%b');\n}\n\nexport function dayFormat(day) {\n return time.call(this, 0, 2 + day, '%A');\n}\n\nexport function dayAbbrevFormat(day) {\n return time.call(this, 0, 2 + day, '%a');\n}\n","export const DataPrefix = ':';\nexport const IndexPrefix = '@';\nexport const ScalePrefix = '%';\nexport const SignalPrefix = '$';\n","import {DataPrefix, IndexPrefix, ScalePrefix} from './constants';\nimport {Literal} from 'vega-expression';\nimport {error, hasOwnProperty} from 'vega-util';\n\nexport function dataVisitor(name, args, scope, params) {\n if (args[0].type !== Literal) {\n error('First argument to data functions must be a string literal.');\n }\n\n const data = args[0].value,\n dataName = DataPrefix + data;\n\n if (!hasOwnProperty(dataName, params)) {\n try {\n params[dataName] = scope.getData(data).tuplesRef();\n } catch (err) {\n // if data set does not exist, there's nothing to track\n }\n }\n}\n\nexport function indataVisitor(name, args, scope, params) {\n if (args[0].type !== Literal) error('First argument to indata must be a string literal.');\n if (args[1].type !== Literal) error('Second argument to indata must be a string literal.');\n\n const data = args[0].value,\n field = args[1].value,\n indexName = IndexPrefix + field;\n\n if (!hasOwnProperty(indexName, params)) {\n params[indexName] = scope.getData(data).indataRef(scope, field);\n }\n}\n\nexport function scaleVisitor(name, args, scope, params) {\n if (args[0].type === Literal) {\n // add scale dependency\n addScaleDependency(scope, params, args[0].value);\n } else {\n // indirect scale lookup; add all scales as parameters\n for (name in scope.scales) {\n addScaleDependency(scope, params, name);\n }\n }\n}\n\nfunction addScaleDependency(scope, params, name) {\n const scaleName = ScalePrefix + name;\n if (!hasOwnProperty(params, scaleName)) {\n try {\n params[scaleName] = scope.scaleRef(name);\n } catch (err) {\n // TODO: error handling? warning?\n }\n }\n}\n","import {ScalePrefix} from './constants';\nimport {scaleVisitor} from './visitors';\nimport {Literal} from 'vega-expression';\nimport {isFunction, isString, stringValue} from 'vega-util';\nimport {isRegisteredScale} from 'vega-scale';\n\nexport function getScale(nameOrFunction, ctx) {\n\n if (isFunction(nameOrFunction)) {\n return nameOrFunction;\n }\n\n if (isString(nameOrFunction)) {\n const maybeScale = ctx.scales[nameOrFunction];\n return (maybeScale && isRegisteredScale(maybeScale.value)) ? maybeScale.value : undefined;\n\n }\n\n return undefined;\n}\n\nexport function internalScaleFunctions(codegen, fnctx, visitors) {\n // add helper method to the 'this' expression function context\n fnctx.__bandwidth = s => s && s.bandwidth ? s.bandwidth() : 0;\n\n // register AST visitors for internal scale functions\n visitors._bandwidth = scaleVisitor;\n visitors._range = scaleVisitor;\n visitors._scale = scaleVisitor;\n\n // resolve scale reference directly to the signal hash argument\n const ref = arg => '_[' + (\n arg.type === Literal\n ? stringValue(ScalePrefix + arg.value)\n : stringValue(ScalePrefix) + '+' + codegen(arg)\n ) + ']';\n\n // define and return internal scale function code generators\n // these internal functions are called by mark encoders\n return {\n _bandwidth: args => `this.__bandwidth(${ref(args[0])})`,\n _range: args => `${ref(args[0])}.range()`,\n _scale: args => `${ref(args[0])}(${codegen(args[1])})`\n };\n}\n","// https://github.com/python/cpython/blob/a74eea238f5baba15797e2e8b570d153bc8690a7/Modules/mathmodule.c#L1423\nexport class Adder {\n constructor() {\n this._partials = new Float64Array(32);\n this._n = 0;\n }\n add(x) {\n const p = this._partials;\n let i = 0;\n for (let j = 0; j < this._n && j < 32; j++) {\n const y = p[j],\n hi = x + y,\n lo = Math.abs(x) < Math.abs(y) ? x - (hi - y) : y - (hi - x);\n if (lo) p[i++] = lo;\n x = hi;\n }\n p[i] = x;\n this._n = i + 1;\n return this;\n }\n valueOf() {\n const p = this._partials;\n let n = this._n, x, y, lo, hi = 0;\n if (n > 0) {\n hi = p[--n];\n while (n > 0) {\n x = hi;\n y = p[--n];\n hi = x + y;\n lo = y - (hi - x);\n if (lo) break;\n }\n if (n > 0 && ((lo < 0 && p[n - 1] < 0) || (lo > 0 && p[n - 1] > 0))) {\n y = lo * 2;\n x = hi + y;\n if (y == x - hi) hi = x;\n }\n }\n return hi;\n }\n}\n\nexport function fsum(values, valueof) {\n const adder = new Adder();\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n adder.add(value);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n adder.add(value);\n }\n }\n }\n return +adder;\n}\n\nexport function fcumsum(values, valueof) {\n const adder = new Adder();\n let index = -1;\n return Float64Array.from(values, valueof === undefined\n ? v => adder.add(+v || 0)\n : v => adder.add(+valueof(v, ++index, values) || 0)\n );\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var hypot = Math.hypot;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n","import {Adder} from \"d3-array\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nexport var areaRingSum = new Adder();\n\n// hello?\n\nvar areaSum = new Adder(),\n lambda00,\n phi00,\n lambda0,\n cosPhi0,\n sinPhi0;\n\nexport var areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaRingSum = new Adder();\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n var areaRing = +areaRingSum;\n areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n this.lineStart = this.lineEnd = this.point = noop;\n },\n sphere: function() {\n areaSum.add(tau);\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n areaStream.point = areaPoint;\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n // Spherical excess E for a spherical triangle with vertices: south pole,\n // previous point, current point. Uses a formula derived from Cagnoli’s\n // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n var dLambda = lambda - lambda0,\n sdLambda = dLambda >= 0 ? 1 : -1,\n adLambda = sdLambda * dLambda,\n cosPhi = cos(phi),\n sinPhi = sin(phi),\n k = sinPhi0 * sinPhi,\n u = cosPhi0 * cosPhi + k * cos(adLambda),\n v = k * sdLambda * sin(adLambda);\n areaRingSum.add(atan2(v, u));\n\n // Advance the previous points.\n lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n areaSum = new Adder();\n stream(object, areaStream);\n return areaSum * 2;\n}\n","import {Adder} from \"d3-array\";\nimport {areaStream, areaRingSum} from \"./area.js\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport {abs, degrees, epsilon, radians} from \"./math.js\";\nimport stream from \"./stream.js\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n lambda2, // previous lambda-coordinate\n lambda00, phi00, // first point\n p0, // previous 3D point\n deltaSum,\n ranges,\n range;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: boundsLineStart,\n lineEnd: boundsLineEnd,\n polygonStart: function() {\n boundsStream.point = boundsRingPoint;\n boundsStream.lineStart = boundsRingStart;\n boundsStream.lineEnd = boundsRingEnd;\n deltaSum = new Adder();\n areaStream.polygonStart();\n },\n polygonEnd: function() {\n areaStream.polygonEnd();\n boundsStream.point = boundsPoint;\n boundsStream.lineStart = boundsLineStart;\n boundsStream.lineEnd = boundsLineEnd;\n if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n else if (deltaSum > epsilon) phi1 = 90;\n else if (deltaSum < -epsilon) phi0 = -90;\n range[0] = lambda0, range[1] = lambda1;\n },\n sphere: function() {\n lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n }\n};\n\nfunction boundsPoint(lambda, phi) {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n var p = cartesian([lambda * radians, phi * radians]);\n if (p0) {\n var normal = cartesianCross(p0, p),\n equatorial = [normal[1], -normal[0], 0],\n inflection = cartesianCross(equatorial, normal);\n cartesianNormalizeInPlace(inflection);\n inflection = spherical(inflection);\n var delta = lambda - lambda2,\n sign = delta > 0 ? 1 : -1,\n lambdai = inflection[0] * degrees * sign,\n phii,\n antimeridian = abs(delta) > 180;\n if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = inflection[1] * degrees;\n if (phii > phi1) phi1 = phii;\n } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = -inflection[1] * degrees;\n if (phii < phi0) phi0 = phii;\n } else {\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n }\n if (antimeridian) {\n if (lambda < lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n } else {\n if (lambda1 >= lambda0) {\n if (lambda < lambda0) lambda0 = lambda;\n if (lambda > lambda1) lambda1 = lambda;\n } else {\n if (lambda > lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n }\n }\n } else {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n }\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n range[0] = lambda0, range[1] = lambda1;\n boundsStream.point = boundsPoint;\n p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n if (p0) {\n var delta = lambda - lambda2;\n deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n } else {\n lambda00 = lambda, phi00 = phi;\n }\n areaStream.point(lambda, phi);\n linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n boundsRingPoint(lambda00, phi00);\n areaStream.lineEnd();\n if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n range[0] = lambda0, range[1] = lambda1;\n p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n var i, n, a, b, merged, deltaMax, delta;\n\n phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n ranges = [];\n stream(feature, boundsStream);\n\n // First, sort ranges by their minimum longitudes.\n if (n = ranges.length) {\n ranges.sort(rangeCompare);\n\n // Then, merge any ranges that overlap.\n for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n b = ranges[i];\n if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n\n // Finally, find the largest gap between the merged ranges.\n // The final bounding box will be the inverse of this gap.\n for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n b = merged[i];\n if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n }\n }\n\n ranges = range = null;\n\n return lambda0 === Infinity || phi0 === Infinity\n ? [[NaN, NaN], [NaN, NaN]]\n : [[lambda0, phi0], [lambda1, phi1]];\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math.js\";\n\nexport function spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","import {Adder} from \"d3-array\";\nimport {asin, atan2, cos, degrees, epsilon, epsilon2, hypot, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar W0, W1,\n X0, Y0, Z0,\n X1, Y1, Z1,\n X2, Y2, Z2,\n lambda00, phi00, // first point\n x0, y0, z0; // previous point\n\nvar centroidStream = {\n sphere: noop,\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n ++W0;\n X0 += (x - X0) / W0;\n Y0 += (y - Y0) / W0;\n Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidStream.point = centroidLinePoint;\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n centroidRingPoint(lambda00, phi00);\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n centroidStream.point = centroidRingPoint;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n cx = y0 * z - z0 * y,\n cy = z0 * x - x0 * z,\n cz = x0 * y - y0 * x,\n m = hypot(cx, cy, cz),\n w = asin(m), // line weight = angle\n v = m && -w / m; // area weight multiplier\n X2.add(v * cx);\n Y2.add(v * cy);\n Z2.add(v * cz);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nexport default function(object) {\n W0 = W1 =\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 = 0;\n X2 = new Adder();\n Y2 = new Adder();\n Z2 = new Adder();\n stream(object, centroidStream);\n\n var x = +X2,\n y = +Y2,\n z = +Z2,\n m = hypot(x, y, z);\n\n // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n if (m < epsilon2) {\n x = X1, y = Y1, z = Z1;\n // If the feature has zero length, fall back to arithmetic mean of point vectors.\n if (W1 < epsilon) x = X0, y = Y0, z = Z0;\n m = hypot(x, y, z);\n // If the feature still has an undefined ccentroid, then return.\n if (m < epsilon2) return [NaN, NaN];\n }\n\n return [atan2(y, x) * degrees, asin(z / m) * degrees];\n}\n","import {getScale} from '../scales';\nimport {\n geoArea as area,\n geoBounds as bounds,\n geoCentroid as centroid\n} from 'd3-geo';\n\nfunction geoMethod(methodName, globalMethod) {\n return function(projection, geojson, group) {\n if (projection) {\n // projection defined, use it\n const p = getScale(projection, (group || this).context);\n return p && p.path[methodName](geojson);\n } else {\n // projection undefined, use global method\n return globalMethod(geojson);\n }\n };\n}\n\nexport const geoArea = geoMethod('area', area);\nexport const geoBounds = geoMethod('bounds', bounds);\nexport const geoCentroid = geoMethod('centroid', centroid);\n\nexport function geoScale(projection, group) {\n const p = getScale(projection, (group || this).context);\n return p && p.scale();\n}\n","export default function(item) {\n const group = this.context.group;\n let value = false;\n\n if (group) while (item) {\n if (item === group) { value = true; break; }\n item = item.mark.group;\n }\n return value;\n}\n","function log(df, method, args) {\n try {\n df[method].apply(df, ['EXPRESSION'].concat([].slice.call(args)));\n } catch (err) {\n df.warn(err);\n }\n return args[args.length-1];\n}\n\nexport function warn() {\n return log(this.context.dataflow, 'warn', arguments);\n}\n\nexport function info() {\n return log(this.context.dataflow, 'info', arguments);\n}\n\nexport function debug() {\n return log(this.context.dataflow, 'debug', arguments);\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export const radians = Math.PI / 180;\nexport const degrees = 180 / Math.PI;\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nconst K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * degrees;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * radians;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb() {\n return hcl2lab(this).rgb();\n }\n}));\n","import {rgb} from 'd3-color';\n\n// https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\nfunction channel_luminance_value(channelValue) {\n const val = channelValue / 255;\n if (val <= 0.03928) {\n return val / 12.92;\n }\n return Math.pow((val + 0.055) / 1.055, 2.4);\n}\n\nexport function luminance(color) {\n const c = rgb(color),\n r = channel_luminance_value(c.r),\n g = channel_luminance_value(c.g),\n b = channel_luminance_value(c.b);\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n}\n\n// https://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef\nexport function contrast(color1, color2) {\n const lum1 = luminance(color1),\n lum2 = luminance(color2),\n lumL = Math.max(lum1, lum2),\n lumD = Math.min(lum1, lum2);\n return (lumL + 0.05) / (lumD + 0.05);\n}\n","import {extend} from 'vega-util';\n\nexport default function() {\n const args = [].slice.call(arguments);\n args.unshift({});\n return extend(...args);\n}\n","import {isTuple} from 'vega-dataflow';\nimport {isArray, isObject, truthy} from 'vega-util';\n\nfunction equal(a, b) {\n return a === b || a !== a && b !== b ? true\n : isArray(a) ? (\n isArray(b) && a.length === b.length ? equalArray(a, b) : false\n )\n : isObject(a) && isObject(b) ? equalObject(a, b)\n : false;\n}\n\nfunction equalArray(a, b) {\n for (let i=0, n=a.length; i<n; ++i) {\n if (!equal(a[i], b[i])) return false;\n }\n return true;\n}\n\nfunction equalObject(a, b) {\n for (const key in a) {\n if (!equal(a[key], b[key])) return false;\n }\n return true;\n}\n\nfunction removePredicate(props) {\n return _ => equalObject(props, _);\n}\n\nexport default function(name, insert, remove, toggle, modify, values) {\n const df = this.context.dataflow,\n data = this.context.data[name],\n input = data.input,\n stamp = df.stamp();\n\n let changes = data.changes,\n predicate, key;\n\n if (df._trigger === false || !(input.value.length || insert || toggle)) {\n // nothing to do!\n return 0;\n }\n\n if (!changes || changes.stamp < stamp) {\n data.changes = (changes = df.changeset());\n changes.stamp = stamp;\n df.runAfter(() => {\n data.modified = true;\n df.pulse(input, changes).run();\n }, true, 1);\n }\n\n if (remove) {\n predicate = remove === true ? truthy\n : (isArray(remove) || isTuple(remove)) ? remove\n : removePredicate(remove);\n changes.remove(predicate);\n }\n\n if (insert) {\n changes.insert(insert);\n }\n\n if (toggle) {\n predicate = removePredicate(toggle);\n if (input.value.some(predicate)) {\n changes.remove(predicate);\n } else {\n changes.insert(toggle);\n }\n }\n\n if (modify) {\n for (key in values) {\n changes.modify(modify, key, values[key]);\n }\n }\n\n return 1;\n}\n","export function pinchDistance(event) {\n const t = event.touches,\n dx = t[0].clientX - t[1].clientX,\n dy = t[0].clientY - t[1].clientY;\n return Math.hypot(dx, dy);\n}\n\nexport function pinchAngle(event) {\n const t = event.touches;\n return Math.atan2(\n t[0].clientY - t[1].clientY,\n t[0].clientX - t[1].clientX\n );\n}\n","import {field, isArray} from 'vega-util';\n\n// memoize accessor functions\nconst accessors = {};\n\nexport default function(data, name) {\n const accessor = accessors[name] || (accessors[name] = field(name));\n return isArray(data) ? data.map(accessor) : accessor(data);\n}\n","import {error, isArray, isFunction, isString} from 'vega-util';\n\nfunction array(seq) {\n return isArray(seq) || ArrayBuffer.isView(seq) ? seq : null;\n}\n\nfunction sequence(seq) {\n return array(seq) || (isString(seq) ? seq : null);\n}\n\nexport function join(seq, ...args) {\n return array(seq).join(...args);\n}\n\nexport function indexof(seq, ...args) {\n return sequence(seq).indexOf(...args);\n}\n\nexport function lastindexof(seq, ...args) {\n return sequence(seq).lastIndexOf(...args);\n}\n\nexport function slice(seq, ...args) {\n return sequence(seq).slice(...args);\n}\n\nexport function replace(str, pattern, repl) {\n if (isFunction(repl)) error('Function argument passed to replace.');\n return String(str).replace(pattern, repl);\n}\nexport function reverse(seq) {\n return array(seq).slice().reverse();\n}\n","import {getScale} from '../scales';\nimport {bandSpace} from 'vega-scale';\nimport {isArray} from 'vega-util';\n\nexport function bandspace(count, paddingInner, paddingOuter) {\n return bandSpace(count || 0, paddingInner || 0, paddingOuter || 0);\n}\n\nexport function bandwidth(name, group) {\n const s = getScale(name, (group || this).context);\n return s && s.bandwidth ? s.bandwidth() : 0;\n}\n\nexport function copy(name, group) {\n const s = getScale(name, (group || this).context);\n return s ? s.copy() : undefined;\n}\n\nexport function domain(name, group) {\n const s = getScale(name, (group || this).context);\n return s ? s.domain() : [];\n}\n\nexport function invert(name, range, group) {\n const s = getScale(name, (group || this).context);\n return !s ? undefined\n : isArray(range) ? (s.invertRange || s.invert)(range)\n : (s.invert || s.invertExtent)(range);\n}\n\nexport function range(name, group) {\n const s = getScale(name, (group || this).context);\n return s && s.range ? s.range() : [];\n}\n\nexport function scale(name, value, group) {\n const s = getScale(name, (group || this).context);\n return s ? s(value) : undefined;\n}\n","import {getScale} from '../scales';\nimport {scale as get, scaleFraction} from 'vega-scale';\nimport {Gradient} from 'vega-scenegraph';\nimport {identity, peek} from 'vega-util';\n\nexport default function(scale, p0, p1, count, group) {\n scale = getScale(scale, (group || this).context);\n\n const gradient = Gradient(p0, p1);\n\n let stops = scale.domain(),\n min = stops[0],\n max = peek(stops),\n fraction = identity;\n\n if (!(max - min)) {\n // expand scale if domain has zero span, fix #1479\n scale = (scale.interpolator\n ? get('sequential')().interpolator(scale.interpolator())\n : get('linear')().interpolate(scale.interpolate()).range(scale.range())\n ).domain([min=0, max=1]);\n } else {\n fraction = scaleFraction(scale, min, max);\n }\n\n if (scale.ticks) {\n stops = scale.ticks(+count || 15);\n if (min !== stops[0]) stops.unshift(min);\n if (max !== peek(stops)) stops.push(max);\n }\n\n stops.forEach(_ => gradient.stop(fraction(_), scale(_)));\n\n return gradient;\n}\n","import {getScale} from '../scales';\nimport {pathParse, pathRender} from 'vega-scenegraph';\n\nexport function geoShape(projection, geojson, group) {\n const p = getScale(projection, (group || this).context);\n return function(context) {\n return p ? p.path.context(context)(geojson) : '';\n };\n}\n\nexport function pathShape(path) {\n let p = null;\n return function(context) {\n return context\n ? pathRender(context, (p = p || pathParse(path)))\n : path;\n };\n}\n","import {data} from './data';\n\nconst datum = d => d.data;\n\nfunction treeNodes(name, context) {\n const tree = data.call(context, name);\n return tree.root && tree.root.lookup || {};\n}\n\nexport function treePath(name, source, target) {\n const nodes = treeNodes(name, this),\n s = nodes[source],\n t = nodes[target];\n return s && t ? s.path(t).map(datum) : undefined;\n}\n\nexport function treeAncestors(name, node) {\n const n = treeNodes(name, this)[node];\n return n ? n.ancestors().map(datum) : undefined;\n}\n","const _window = () => (typeof window !== 'undefined' && window) || null;\n\nexport function screen() {\n const w = _window();\n return w ? w.screen : {};\n}\n\nexport function windowSize() {\n const w = _window();\n return w\n ? [w.innerWidth, w.innerHeight]\n : [undefined, undefined];\n}\n\nexport function containerSize() {\n const view = this.context.dataflow,\n el = view.container && view.container();\n return el\n ? [el.clientWidth, el.clientHeight]\n : [undefined, undefined];\n}\n","import {Bounds, intersect} from 'vega-scenegraph';\nimport {array} from 'vega-util';\n\nexport default function(b, opt, group) {\n if (!b) return [];\n\n const [u, v] = b,\n box = new Bounds().set(u[0], u[1], v[0], v[1]),\n scene = group || this.context.dataflow.scenegraph().root;\n\n return intersect(scene, box, filter(opt));\n}\n\nfunction filter(opt) {\n let p = null;\n\n if (opt) {\n const types = array(opt.marktype),\n names = array(opt.markname);\n p = _ => (!types.length || types.some(t => _.marktype === t))\n && (!names.length || names.some(s => _.name === s));\n }\n\n return p;\n}","import {\n codegenExpression,\n constants,\n functions\n} from 'vega-expression';\n\nimport {\n isTuple\n} from 'vega-dataflow';\n\nimport {\n selectionIdTest,\n selectionResolve,\n selectionTest,\n selectionTuples,\n selectionVisitor\n} from 'vega-selections';\n\nimport {\n cumulativeLogNormal,\n cumulativeNormal,\n cumulativeUniform,\n densityLogNormal,\n densityNormal,\n densityUniform,\n quantileLogNormal,\n quantileNormal,\n quantileUniform,\n random,\n sampleLogNormal,\n sampleNormal,\n sampleUniform\n} from 'vega-statistics';\n\nimport {\n dayofyear,\n timeOffset,\n timeSequence,\n timeUnitSpecifier,\n utcOffset,\n utcSequence,\n utcdayofyear,\n utcweek,\n week\n} from 'vega-time';\n\nimport {\n clampRange,\n extend,\n extent,\n flush,\n inrange,\n isArray,\n isBoolean,\n isDate,\n isNumber,\n isObject,\n isRegExp,\n isString,\n lerp,\n pad,\n panLinear,\n panLog,\n panPow,\n panSymlog,\n peek,\n quarter,\n span,\n stringValue,\n toBoolean,\n toDate,\n toNumber,\n toString,\n truncate,\n utcquarter,\n zoomLinear,\n zoomLog,\n zoomPow,\n zoomSymlog\n} from 'vega-util';\n\nimport {\n range as sequence\n} from 'd3-array';\n\nimport {\n hcl,\n hsl,\n lab,\n rgb\n} from 'd3-color';\n\nimport {\n contrast,\n luminance\n} from './functions/luminance';\n\nimport {\n data,\n indata,\n setdata\n} from './functions/data';\n\nimport encode from './functions/encode';\n\nimport {\n dayAbbrevFormat,\n dayFormat,\n format,\n monthAbbrevFormat,\n monthFormat,\n timeFormat,\n timeParse,\n utcFormat,\n utcParse\n} from './functions/format';\n\nimport {\n geoArea,\n geoBounds,\n geoCentroid,\n geoScale\n} from './functions/geo';\n\nimport inScope from './functions/inscope';\n\nimport intersect from './functions/intersect';\n\nimport {\n debug,\n info,\n warn\n} from './functions/log';\n\nimport merge from './functions/merge';\n\nimport modify from './functions/modify';\n\nimport {\n pinchAngle,\n pinchDistance\n} from './functions/pinch';\n\nimport pluck from './functions/pluck';\n\nimport {\n indexof,\n join,\n lastindexof,\n replace,\n reverse,\n slice\n} from './functions/sequence';\n\nimport {\n intersectLasso,\n lassoAppend,\n lassoPath\n} from './functions/lasso';\n\nimport {\n bandspace,\n bandwidth,\n copy,\n domain,\n invert,\n range,\n scale\n} from './functions/scale';\n\nimport scaleGradient from './functions/scale-gradient';\n\nimport {\n geoShape,\n pathShape\n} from './functions/shape';\n\nimport {\n treeAncestors,\n treePath\n} from './functions/tree';\n\nimport {\n containerSize,\n screen,\n windowSize\n} from './functions/window';\n\nimport {\n SignalPrefix\n} from './constants';\n\nimport {\n internalScaleFunctions\n} from './scales';\n\nimport {\n dataVisitor,\n indataVisitor,\n scaleVisitor\n} from './visitors';\n\n// Expression function context object\nexport const functionContext = {\n random() { return random(); }, // override default\n cumulativeNormal,\n cumulativeLogNormal,\n cumulativeUniform,\n densityNormal,\n densityLogNormal,\n densityUniform,\n quantileNormal,\n quantileLogNormal,\n quantileUniform,\n sampleNormal,\n sampleLogNormal,\n sampleUniform,\n isArray,\n isBoolean,\n isDate,\n isDefined(_) { return _ !== undefined; },\n isNumber,\n isObject,\n isRegExp,\n isString,\n isTuple,\n isValid(_) { return _ != null && _ === _; },\n toBoolean,\n toDate(_) { return toDate(_); }, // suppress extra arguments\n toNumber,\n toString,\n indexof,\n join,\n lastindexof,\n replace,\n reverse,\n slice,\n flush,\n lerp,\n merge,\n pad,\n peek,\n pluck,\n span,\n inrange,\n truncate,\n rgb,\n lab,\n hcl,\n hsl,\n luminance,\n contrast,\n sequence,\n format,\n utcFormat,\n utcParse,\n utcOffset,\n utcSequence,\n timeFormat,\n timeParse,\n timeOffset,\n timeSequence,\n timeUnitSpecifier,\n monthFormat,\n monthAbbrevFormat,\n dayFormat,\n dayAbbrevFormat,\n quarter,\n utcquarter,\n week,\n utcweek,\n dayofyear,\n utcdayofyear,\n warn,\n info,\n debug,\n extent(_) { return extent(_); }, // suppress extra arguments\n inScope,\n intersect,\n clampRange,\n pinchDistance,\n pinchAngle,\n screen,\n containerSize,\n windowSize,\n bandspace,\n setdata,\n pathShape,\n panLinear,\n panLog,\n panPow,\n panSymlog,\n zoomLinear,\n zoomLog,\n zoomPow,\n zoomSymlog,\n encode,\n modify,\n lassoAppend,\n lassoPath,\n intersectLasso\n};\n\nconst eventFunctions = ['view', 'item', 'group', 'xy', 'x', 'y'], // event functions\n eventPrefix = 'event.vega.', // event function prefix\n thisPrefix = 'this.', // function context prefix\n astVisitors = {}; // AST visitors for dependency analysis\n\n// export code generator parameters\nexport const codegenParams = {\n forbidden: ['_'],\n allowed: ['datum', 'event', 'item'],\n fieldvar: 'datum',\n globalvar: id => `_[${stringValue(SignalPrefix + id)}]`,\n functions: buildFunctions,\n constants: constants,\n visitors: astVisitors\n};\n\n// export code generator\nexport const codeGenerator = codegenExpression(codegenParams);\n\n// Build expression function registry\nfunction buildFunctions(codegen) {\n const fn = functions(codegen);\n eventFunctions.forEach(name => fn[name] = eventPrefix + name);\n for (const name in functionContext) { fn[name] = thisPrefix + name; }\n extend(fn, internalScaleFunctions(codegen, functionContext, astVisitors));\n return fn;\n}\n\n// Register an expression function\nexport function expressionFunction(name, fn, visitor) {\n if (arguments.length === 1) {\n return functionContext[name];\n }\n\n // register with the functionContext\n functionContext[name] = fn;\n\n // if there is an astVisitor register that, too\n if (visitor) astVisitors[name] = visitor;\n\n // if the code generator has already been initialized,\n // we need to also register the function with it\n if (codeGenerator) codeGenerator.functions[name] = thisPrefix + name;\n return this;\n}\n\n// register expression functions with ast visitors\nexpressionFunction('bandwidth', bandwidth, scaleVisitor);\nexpressionFunction('copy', copy, scaleVisitor);\nexpressionFunction('domain', domain, scaleVisitor);\nexpressionFunction('range', range, scaleVisitor);\nexpressionFunction('invert', invert, scaleVisitor);\nexpressionFunction('scale', scale, scaleVisitor);\nexpressionFunction('gradient', scaleGradient, scaleVisitor);\nexpressionFunction('geoArea', geoArea, scaleVisitor);\nexpressionFunction('geoBounds', geoBounds, scaleVisitor);\nexpressionFunction('geoCentroid', geoCentroid, scaleVisitor);\nexpressionFunction('geoShape', geoShape, scaleVisitor);\nexpressionFunction('geoScale', geoScale, scaleVisitor);\nexpressionFunction('indata', indata, indataVisitor);\nexpressionFunction('data', data, dataVisitor);\nexpressionFunction('treePath', treePath, dataVisitor);\nexpressionFunction('treeAncestors', treeAncestors, dataVisitor);\n\n// register Vega-Lite selection functions\nexpressionFunction('vlSelectionTest', selectionTest, selectionVisitor);\nexpressionFunction('vlSelectionIdTest', selectionIdTest, selectionVisitor);\nexpressionFunction('vlSelectionResolve', selectionResolve, selectionVisitor);\nexpressionFunction('vlSelectionTuples', selectionTuples);\n","export default function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","import intersect from './intersect';\nimport {Bounds} from 'vega-scenegraph';\nimport {array} from 'vega-util';\n\n/**\n * Appends a new point to the lasso\n *\n * @param {*} lasso the lasso in pixel space\n * @param {*} x the x coordinate in pixel space\n * @param {*} y the y coordinate in pixel space\n * @param {*} minDist the minimum distance, in pixels, that thenew point needs to be apart from the last point\n * @returns a new array containing the lasso with the new point\n */\nexport function lassoAppend(lasso, x, y, minDist = 5) {\n lasso = array(lasso);\n const last = lasso[lasso.length - 1];\n\n // Add point to lasso if its the first point or distance to last point exceed minDist\n return (last === undefined || Math.hypot(last[0] - x, last[1] - y) > minDist)\n ? [...lasso, [x, y]]\n : lasso;\n}\n\n\n/**\n * Generates a svg path command which draws a lasso\n *\n * @param {*} lasso the lasso in pixel space in the form [[x,y], [x,y], ...]\n * @returns the svg path command that draws the lasso\n */\nexport function lassoPath(lasso) {\n return array(lasso).reduce((svg, [x, y], i) => {\n return svg += i == 0\n ? `M ${x},${y} `\n : i === lasso.length - 1\n ? ' Z'\n : `L ${x},${y} `;\n }, '');\n}\n\n\n\n/**\n * Inverts the lasso from pixel space to an array of vega scenegraph tuples\n *\n * @param {*} data the dataset\n * @param {*} pixelLasso the lasso in pixel space, [[x,y], [x,y], ...]\n * @param {*} unit the unit where the lasso is defined\n *\n * @returns an array of vega scenegraph tuples\n */\nexport function intersectLasso(markname, pixelLasso, unit) {\n const { x, y, mark } = unit;\n\n const bb = new Bounds().set(\n Number.MAX_SAFE_INTEGER,\n Number.MAX_SAFE_INTEGER,\n Number.MIN_SAFE_INTEGER,\n Number.MIN_SAFE_INTEGER\n );\n\n // Get bounding box around lasso\n for (const [px, py] of pixelLasso) {\n if (px < bb.x1) bb.x1 = px;\n if (px > bb.x2) bb.x2 = px;\n if (py < bb.y1) bb.y1 = py;\n if (py > bb.y2) bb.y2 = py;\n }\n\n // Translate bb against unit coordinates\n bb.translate(x, y);\n\n const intersection = intersect([[bb.x1, bb.y1], [bb.x2, bb.y2]],\n markname,\n mark);\n\n // Check every point against the lasso\n return intersection.filter(tuple => pointInPolygon(tuple.x, tuple.y, pixelLasso));\n}\n\n\n\n/**\n * Performs a test if a point is inside a polygon based on the idea from\n * https://wrf.ecse.rpi.edu/Research/Short_Notes/pnpoly.html\n *\n * This method will not need the same start/end point since it wraps around the edges of the array\n *\n * @param {*} test a point to test against\n * @param {*} polygon a polygon in the form [[x,y], [x,y], ...]\n * @returns true if the point lies inside the polygon, false otherwise\n */\nfunction pointInPolygon(testx, testy, polygon) {\n let intersections = 0;\n\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const [prevX, prevY] = polygon[j];\n const [x, y] = polygon[i];\n\n // count intersections\n if (((y > testy) != (prevY > testy)) && (testx < (prevX - x) * (testy - y) / (prevY - y) + x)) {\n intersections++;\n }\n }\n\n // point is in polygon if intersection count is odd\n return intersections & 1;\n}\n","import {codeGenerator, codegenParams} from './codegen';\nimport {SignalPrefix} from './constants';\nimport {CallExpression, parseExpression} from 'vega-expression';\nimport {error, extend, hasOwnProperty, isString, stringValue} from 'vega-util';\n\nexport default function(expr, scope) {\n const params = {};\n\n // parse the expression to an abstract syntax tree (ast)\n let ast;\n try {\n expr = isString(expr) ? expr : (stringValue(expr) + '');\n ast = parseExpression(expr);\n } catch (err) {\n error('Expression parse error: ' + expr);\n }\n\n // analyze ast function calls for dependencies\n ast.visit(node => {\n if (node.type !== CallExpression) return;\n const name = node.callee.name,\n visit = codegenParams.visitors[name];\n if (visit) visit(name, node.arguments, scope, params);\n });\n\n // perform code generation\n const gen = codeGenerator(ast);\n\n // collect signal dependencies\n gen.globals.forEach(name => {\n const signalName = SignalPrefix + name;\n if (!hasOwnProperty(params, signalName) && scope.getSignal(name)) {\n params[signalName] = scope.signalRef(name);\n }\n });\n\n // return generated expression code and dependencies\n return {\n $expr: extend({code: gen.code}, scope.options.ast ? {ast} : null),\n $fields: gen.fields,\n $params: params\n };\n}\n"],"names":["data","name","this","context","values","value","indata","field","index","entry","get","undefined","count","setdata","tuples","df","dataflow","input","pulse","changeset","remove","truthy","insert","encode","item","retval","target","mark","source","wrap","method","spec","locale","format","timeFormat","utcFormat","timeParse","utcParse","dateObj","Date","time","month","day","specifier","Number","isInteger","setYear","setMonth","setDate","call","monthFormat","monthAbbrevFormat","dayFormat","dayAbbrevFormat","DataPrefix","ScalePrefix","dataVisitor","args","scope","params","type","Literal","error","dataName","hasOwnProperty","getData","tuplesRef","err","indataVisitor","indexName","indataRef","scaleVisitor","addScaleDependency","scales","scaleName","scaleRef","getScale","nameOrFunction","ctx","isFunction","isString","maybeScale","isRegisteredScale","internalScaleFunctions","codegen","fnctx","visitors","__bandwidth","s","bandwidth","_bandwidth","_range","_scale","ref","arg","stringValue","Adder","constructor","_partials","Float64Array","_n","add","x","p","i","j","y","hi","lo","Math","abs","valueOf","n","epsilon","pi","PI","halfPi","quarterPi","tau","degrees","radians","atan2","cos","hypot","sin","sqrt","asin","noop","streamGeometry","geometry","stream","streamGeometryType","streamObjectType","Feature","object","FeatureCollection","features","length","Sphere","sphere","Point","coordinates","point","MultiPoint","LineString","streamLine","MultiLineString","Polygon","streamPolygon","MultiPolygon","GeometryCollection","geometries","closed","coordinate","lineStart","lineEnd","polygonStart","polygonEnd","geoStream","lambda00","phi00","lambda0","cosPhi0","sinPhi0","phi0","lambda1","phi1","lambda2","p0","deltaSum","ranges","range","areaRingSum","areaSum","areaStream","areaRingStart","areaRingEnd","areaRing","areaPointFirst","areaPoint","lambda","phi","dLambda","sdLambda","adLambda","cosPhi","sinPhi","k","u","v","cartesianCross","a","b","W0","W1","X0","Y0","Z0","X1","Y1","Z1","X2","Y2","Z2","x0","y0","z0","boundsStream","boundsPoint","boundsLineStart","boundsLineEnd","boundsRingPoint","boundsRingStart","boundsRingEnd","push","linePoint","d","l","spherical","cartesian","normal","inflection","phii","delta","sign","lambdai","antimeridian","angle","rangeCompare","rangeContains","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroidPointCartesian","z","centroidLinePointFirst","centroidLinePoint","w","centroidRingPointFirst","centroidRingPoint","cx","cy","cz","m","geoMethod","methodName","globalMethod","projection","geojson","group","path","geoArea","geoBounds","feature","merged","deltaMax","Infinity","sort","NaN","geoCentroid","geoScale","scale","inScope","log","apply","concat","slice","warn","arguments","info","debug","define","factory","prototype","extend","parent","definition","Object","create","key","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","color","trim","toLowerCase","exec","parseInt","rgbn","Rgb","rgba","hsla","r","g","rgbConvert","o","opacity","rgb_formatHex","hex","rgb_formatRgb","clampa","clampi","isNaN","max","min","round","toString","h","Hsl","hslConvert","hsl","clamph","clampt","hsl2rgb","m1","m2","copy","channels","assign","displayable","formatHex8","formatHsl","pow","clamp","Xn","Yn","Zn","t0","t1","t2","t3","labConvert","Lab","Hcl","hcl2lab","rgb2lrgb","xyz2lab","lab","t","lab2xyz","lrgb2rgb","hcl","c","hclConvert","channel_luminance_value","channelValue","val","luminance","contrast","color1","color2","lum1","lum2","merge","unshift","equal","isArray","equalArray","isObject","equalObject","removePredicate","props","_","modify","toggle","stamp","predicate","changes","_trigger","runAfter","modified","run","isTuple","some","pinchDistance","event","touches","dx","clientX","dy","clientY","pinchAngle","accessors","pluck","accessor","map","array","seq","ArrayBuffer","isView","sequence","join","_len","Array","_key","indexof","_len2","_key2","indexOf","lastindexof","_len3","_key3","lastIndexOf","_len4","_key4","replace","str","pattern","repl","String","reverse","bandspace","paddingInner","paddingOuter","bandSpace","domain","invert","invertRange","invertExtent","scaleGradient","p1","gradient","Gradient","stops","peek","fraction","identity","scaleFraction","interpolator","interpolate","ticks","forEach","stop","geoShape","pathShape","pathRender","pathParse","datum","treeNodes","tree","root","lookup","treePath","nodes","treeAncestors","node","ancestors","_window","window","screen","windowSize","innerWidth","innerHeight","containerSize","view","el","container","clientWidth","clientHeight","intersect","opt","box","Bounds","set","scene","scenegraph","types","marktype","names","markname","filter","functionContext","random","cumulativeNormal","cumulativeLogNormal","cumulativeUniform","densityNormal","densityLogNormal","densityUniform","quantileNormal","quantileLogNormal","quantileUniform","sampleNormal","sampleLogNormal","sampleUniform","isBoolean","isDate","isDefined","isNumber","isRegExp","isValid","toBoolean","toDate","toNumber","flush","lerp","pad","span","inrange","truncate","start","step","ceil","utcOffset","utcSequence","timeOffset","timeSequence","timeUnitSpecifier","quarter","utcquarter","week","utcweek","dayofyear","utcdayofyear","extent","clampRange","panLinear","panLog","panPow","panSymlog","zoomLinear","zoomLog","zoomPow","zoomSymlog","lassoAppend","lasso","minDist","last","lassoPath","reduce","svg","_ref","intersectLasso","pixelLasso","unit","bb","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","px","py","x1","x2","y1","y2","translate","tuple","testx","testy","polygon","intersections","prevX","prevY","pointInPolygon","eventFunctions","thisPrefix","astVisitors","codegenParams","forbidden","allowed","fieldvar","globalvar","id","functions","fn","constants","codeGenerator","codegenExpression","expressionFunction","visitor","selectionTest","selectionVisitor","selectionIdTest","selectionResolve","selectionTuples","expr","ast","parseExpression","visit","CallExpression","callee","gen","globals","signalName","getSignal","signalRef","$expr","code","options","$fields","fields","$params"],"mappings":"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","x_google_ignoreList":[6,7,8,9,10,11,12,13,17,18,19,20,34]}
1
+ {"version":3,"file":"vega-functions.min.js","sources":["../src/functions/data.js","../src/functions/encode.js","../src/functions/format.js","../src/constants.js","../src/visitors.js","../src/scales.js","../../../node_modules/d3-array/src/fsum.js","../../../node_modules/d3-geo/src/math.js","../../../node_modules/d3-geo/src/noop.js","../../../node_modules/d3-geo/src/stream.js","../../../node_modules/d3-geo/src/area.js","../../../node_modules/d3-geo/src/bounds.js","../../../node_modules/d3-geo/src/cartesian.js","../../../node_modules/d3-geo/src/centroid.js","../src/functions/geo.js","../src/functions/inscope.js","../src/functions/log.js","../../../node_modules/d3-color/src/define.js","../../../node_modules/d3-color/src/color.js","../../../node_modules/d3-color/src/math.js","../../../node_modules/d3-color/src/lab.js","../src/functions/luminance.js","../src/functions/merge.js","../src/functions/modify.js","../src/functions/pinch.js","../src/functions/pluck.js","../src/functions/sequence.js","../src/functions/scale.js","../src/functions/scale-gradient.js","../src/functions/shape.js","../src/functions/tree.js","../src/functions/window.js","../src/functions/intersect.js","../src/codegen.js","../../../node_modules/d3-array/src/range.js","../src/functions/lasso.js","../src/parser.js"],"sourcesContent":["import {truthy} from 'vega-util';\n\nexport function data(name) {\n const data = this.context.data[name];\n return data ? data.values.value : [];\n}\n\nexport function indata(name, field, value) {\n const index = this.context.data[name]['index:' + field],\n entry = index ? index.value.get(value) : undefined;\n return entry ? entry.count : entry;\n}\n\nexport function setdata(name, tuples) {\n const df = this.context.dataflow,\n data = this.context.data[name],\n input = data.input;\n\n df.pulse(input, df.changeset().remove(truthy).insert(tuples));\n return 1;\n}\n","export default function(item, name, retval) {\n if (item) {\n const df = this.context.dataflow,\n target = item.mark.source;\n df.pulse(target, df.changeset().encode(item, name));\n }\n return retval !== undefined ? retval : item;\n}\n","const wrap = method => function(value, spec) {\n const locale = this.context.dataflow.locale();\n return value === null ? 'null' : locale[method](spec)(value);\n};\n\nexport const format = wrap('format');\nexport const timeFormat = wrap('timeFormat');\nexport const utcFormat = wrap('utcFormat');\nexport const timeParse = wrap('timeParse');\nexport const utcParse = wrap('utcParse');\n\nconst dateObj = new Date(2000, 0, 1);\n\nfunction time(month, day, specifier) {\n if (!Number.isInteger(month) || !Number.isInteger(day)) return '';\n dateObj.setYear(2000);\n dateObj.setMonth(month);\n dateObj.setDate(day);\n return timeFormat.call(this, dateObj, specifier);\n}\n\nexport function monthFormat(month) {\n return time.call(this, month, 1, '%B');\n}\n\nexport function monthAbbrevFormat(month) {\n return time.call(this, month, 1, '%b');\n}\n\nexport function dayFormat(day) {\n return time.call(this, 0, 2 + day, '%A');\n}\n\nexport function dayAbbrevFormat(day) {\n return time.call(this, 0, 2 + day, '%a');\n}\n","export const DataPrefix = ':';\nexport const IndexPrefix = '@';\nexport const ScalePrefix = '%';\nexport const SignalPrefix = '$';\n","import {DataPrefix, IndexPrefix, ScalePrefix} from './constants';\nimport {Literal} from 'vega-expression';\nimport {error, hasOwnProperty} from 'vega-util';\n\nexport function dataVisitor(name, args, scope, params) {\n if (args[0].type !== Literal) {\n error('First argument to data functions must be a string literal.');\n }\n\n const data = args[0].value,\n dataName = DataPrefix + data;\n\n if (!hasOwnProperty(dataName, params)) {\n try {\n params[dataName] = scope.getData(data).tuplesRef();\n } catch (err) {\n // if data set does not exist, there's nothing to track\n }\n }\n}\n\nexport function indataVisitor(name, args, scope, params) {\n if (args[0].type !== Literal) error('First argument to indata must be a string literal.');\n if (args[1].type !== Literal) error('Second argument to indata must be a string literal.');\n\n const data = args[0].value,\n field = args[1].value,\n indexName = IndexPrefix + field;\n\n if (!hasOwnProperty(indexName, params)) {\n params[indexName] = scope.getData(data).indataRef(scope, field);\n }\n}\n\nexport function scaleVisitor(name, args, scope, params) {\n if (args[0].type === Literal) {\n // add scale dependency\n addScaleDependency(scope, params, args[0].value);\n } else {\n // indirect scale lookup; add all scales as parameters\n for (name in scope.scales) {\n addScaleDependency(scope, params, name);\n }\n }\n}\n\nfunction addScaleDependency(scope, params, name) {\n const scaleName = ScalePrefix + name;\n if (!hasOwnProperty(params, scaleName)) {\n try {\n params[scaleName] = scope.scaleRef(name);\n } catch (err) {\n // TODO: error handling? warning?\n }\n }\n}\n","import {ScalePrefix} from './constants';\nimport {scaleVisitor} from './visitors';\nimport {Literal} from 'vega-expression';\nimport {isString, stringValue} from 'vega-util';\nimport {isRegisteredScale} from 'vega-scale';\n\n/**\n * Name must be a string. Return undefined if the scale is not registered.\n */\nexport function getScale(name, ctx) {\n\n if (isString(name)) {\n const maybeScale = ctx.scales[name];\n return (maybeScale && isRegisteredScale(maybeScale.value)) ? maybeScale.value : undefined;\n }\n\n return undefined;\n}\n\nexport function internalScaleFunctions(codegen, fnctx, visitors) {\n // add helper method to the 'this' expression function context\n fnctx.__bandwidth = s => s && s.bandwidth ? s.bandwidth() : 0;\n\n // register AST visitors for internal scale functions\n visitors._bandwidth = scaleVisitor;\n visitors._range = scaleVisitor;\n visitors._scale = scaleVisitor;\n\n // resolve scale reference directly to the signal hash argument\n const ref = arg => '_[' + (\n arg.type === Literal\n ? stringValue(ScalePrefix + arg.value)\n : stringValue(ScalePrefix) + '+' + codegen(arg)\n ) + ']';\n\n // define and return internal scale function code generators\n // these internal functions are called by mark encoders\n return {\n _bandwidth: args => `this.__bandwidth(${ref(args[0])})`,\n _range: args => `${ref(args[0])}.range()`,\n _scale: args => `${ref(args[0])}(${codegen(args[1])})`\n };\n}\n","// https://github.com/python/cpython/blob/a74eea238f5baba15797e2e8b570d153bc8690a7/Modules/mathmodule.c#L1423\nexport class Adder {\n constructor() {\n this._partials = new Float64Array(32);\n this._n = 0;\n }\n add(x) {\n const p = this._partials;\n let i = 0;\n for (let j = 0; j < this._n && j < 32; j++) {\n const y = p[j],\n hi = x + y,\n lo = Math.abs(x) < Math.abs(y) ? x - (hi - y) : y - (hi - x);\n if (lo) p[i++] = lo;\n x = hi;\n }\n p[i] = x;\n this._n = i + 1;\n return this;\n }\n valueOf() {\n const p = this._partials;\n let n = this._n, x, y, lo, hi = 0;\n if (n > 0) {\n hi = p[--n];\n while (n > 0) {\n x = hi;\n y = p[--n];\n hi = x + y;\n lo = y - (hi - x);\n if (lo) break;\n }\n if (n > 0 && ((lo < 0 && p[n - 1] < 0) || (lo > 0 && p[n - 1] > 0))) {\n y = lo * 2;\n x = hi + y;\n if (y == x - hi) hi = x;\n }\n }\n return hi;\n }\n}\n\nexport function fsum(values, valueof) {\n const adder = new Adder();\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n adder.add(value);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n adder.add(value);\n }\n }\n }\n return +adder;\n}\n\nexport function fcumsum(values, valueof) {\n const adder = new Adder();\n let index = -1;\n return Float64Array.from(values, valueof === undefined\n ? v => adder.add(+v || 0)\n : v => adder.add(+valueof(v, ++index, values) || 0)\n );\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var hypot = Math.hypot;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n","import {Adder} from \"d3-array\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nexport var areaRingSum = new Adder();\n\n// hello?\n\nvar areaSum = new Adder(),\n lambda00,\n phi00,\n lambda0,\n cosPhi0,\n sinPhi0;\n\nexport var areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaRingSum = new Adder();\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n var areaRing = +areaRingSum;\n areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n this.lineStart = this.lineEnd = this.point = noop;\n },\n sphere: function() {\n areaSum.add(tau);\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n areaStream.point = areaPoint;\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n // Spherical excess E for a spherical triangle with vertices: south pole,\n // previous point, current point. Uses a formula derived from Cagnoli’s\n // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n var dLambda = lambda - lambda0,\n sdLambda = dLambda >= 0 ? 1 : -1,\n adLambda = sdLambda * dLambda,\n cosPhi = cos(phi),\n sinPhi = sin(phi),\n k = sinPhi0 * sinPhi,\n u = cosPhi0 * cosPhi + k * cos(adLambda),\n v = k * sdLambda * sin(adLambda);\n areaRingSum.add(atan2(v, u));\n\n // Advance the previous points.\n lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n areaSum = new Adder();\n stream(object, areaStream);\n return areaSum * 2;\n}\n","import {Adder} from \"d3-array\";\nimport {areaStream, areaRingSum} from \"./area.js\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport {abs, degrees, epsilon, radians} from \"./math.js\";\nimport stream from \"./stream.js\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n lambda2, // previous lambda-coordinate\n lambda00, phi00, // first point\n p0, // previous 3D point\n deltaSum,\n ranges,\n range;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: boundsLineStart,\n lineEnd: boundsLineEnd,\n polygonStart: function() {\n boundsStream.point = boundsRingPoint;\n boundsStream.lineStart = boundsRingStart;\n boundsStream.lineEnd = boundsRingEnd;\n deltaSum = new Adder();\n areaStream.polygonStart();\n },\n polygonEnd: function() {\n areaStream.polygonEnd();\n boundsStream.point = boundsPoint;\n boundsStream.lineStart = boundsLineStart;\n boundsStream.lineEnd = boundsLineEnd;\n if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n else if (deltaSum > epsilon) phi1 = 90;\n else if (deltaSum < -epsilon) phi0 = -90;\n range[0] = lambda0, range[1] = lambda1;\n },\n sphere: function() {\n lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n }\n};\n\nfunction boundsPoint(lambda, phi) {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n var p = cartesian([lambda * radians, phi * radians]);\n if (p0) {\n var normal = cartesianCross(p0, p),\n equatorial = [normal[1], -normal[0], 0],\n inflection = cartesianCross(equatorial, normal);\n cartesianNormalizeInPlace(inflection);\n inflection = spherical(inflection);\n var delta = lambda - lambda2,\n sign = delta > 0 ? 1 : -1,\n lambdai = inflection[0] * degrees * sign,\n phii,\n antimeridian = abs(delta) > 180;\n if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = inflection[1] * degrees;\n if (phii > phi1) phi1 = phii;\n } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = -inflection[1] * degrees;\n if (phii < phi0) phi0 = phii;\n } else {\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n }\n if (antimeridian) {\n if (lambda < lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n } else {\n if (lambda1 >= lambda0) {\n if (lambda < lambda0) lambda0 = lambda;\n if (lambda > lambda1) lambda1 = lambda;\n } else {\n if (lambda > lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n }\n }\n } else {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n }\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n range[0] = lambda0, range[1] = lambda1;\n boundsStream.point = boundsPoint;\n p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n if (p0) {\n var delta = lambda - lambda2;\n deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n } else {\n lambda00 = lambda, phi00 = phi;\n }\n areaStream.point(lambda, phi);\n linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n boundsRingPoint(lambda00, phi00);\n areaStream.lineEnd();\n if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n range[0] = lambda0, range[1] = lambda1;\n p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n var i, n, a, b, merged, deltaMax, delta;\n\n phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n ranges = [];\n stream(feature, boundsStream);\n\n // First, sort ranges by their minimum longitudes.\n if (n = ranges.length) {\n ranges.sort(rangeCompare);\n\n // Then, merge any ranges that overlap.\n for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n b = ranges[i];\n if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n\n // Finally, find the largest gap between the merged ranges.\n // The final bounding box will be the inverse of this gap.\n for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n b = merged[i];\n if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n }\n }\n\n ranges = range = null;\n\n return lambda0 === Infinity || phi0 === Infinity\n ? [[NaN, NaN], [NaN, NaN]]\n : [[lambda0, phi0], [lambda1, phi1]];\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math.js\";\n\nexport function spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","import {Adder} from \"d3-array\";\nimport {asin, atan2, cos, degrees, epsilon, epsilon2, hypot, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar W0, W1,\n X0, Y0, Z0,\n X1, Y1, Z1,\n X2, Y2, Z2,\n lambda00, phi00, // first point\n x0, y0, z0; // previous point\n\nvar centroidStream = {\n sphere: noop,\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n ++W0;\n X0 += (x - X0) / W0;\n Y0 += (y - Y0) / W0;\n Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidStream.point = centroidLinePoint;\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n centroidRingPoint(lambda00, phi00);\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n centroidStream.point = centroidRingPoint;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n cx = y0 * z - z0 * y,\n cy = z0 * x - x0 * z,\n cz = x0 * y - y0 * x,\n m = hypot(cx, cy, cz),\n w = asin(m), // line weight = angle\n v = m && -w / m; // area weight multiplier\n X2.add(v * cx);\n Y2.add(v * cy);\n Z2.add(v * cz);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nexport default function(object) {\n W0 = W1 =\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 = 0;\n X2 = new Adder();\n Y2 = new Adder();\n Z2 = new Adder();\n stream(object, centroidStream);\n\n var x = +X2,\n y = +Y2,\n z = +Z2,\n m = hypot(x, y, z);\n\n // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n if (m < epsilon2) {\n x = X1, y = Y1, z = Z1;\n // If the feature has zero length, fall back to arithmetic mean of point vectors.\n if (W1 < epsilon) x = X0, y = Y0, z = Z0;\n m = hypot(x, y, z);\n // If the feature still has an undefined ccentroid, then return.\n if (m < epsilon2) return [NaN, NaN];\n }\n\n return [atan2(y, x) * degrees, asin(z / m) * degrees];\n}\n","import {getScale} from '../scales';\nimport {\n geoArea as area,\n geoBounds as bounds,\n geoCentroid as centroid\n} from 'd3-geo';\n\nfunction geoMethod(methodName, globalMethod) {\n return function(projection, geojson, group) {\n if (projection) {\n // projection defined, use it\n const p = getScale(projection, (group || this).context);\n return p && p.path[methodName](geojson);\n } else {\n // projection undefined, use global method\n return globalMethod(geojson);\n }\n };\n}\n\nexport const geoArea = geoMethod('area', area);\nexport const geoBounds = geoMethod('bounds', bounds);\nexport const geoCentroid = geoMethod('centroid', centroid);\n\nexport function geoScale(projection, group) {\n const p = getScale(projection, (group || this).context);\n return p && p.scale();\n}\n","export default function(item) {\n const group = this.context.group;\n let value = false;\n\n if (group) while (item) {\n if (item === group) { value = true; break; }\n item = item.mark.group;\n }\n return value;\n}\n","function log(df, method, args) {\n try {\n df[method].apply(df, ['EXPRESSION'].concat([].slice.call(args)));\n } catch (err) {\n df.warn(err);\n }\n return args[args.length-1];\n}\n\nexport function warn() {\n return log(this.context.dataflow, 'warn', arguments);\n}\n\nexport function info() {\n return log(this.context.dataflow, 'info', arguments);\n}\n\nexport function debug() {\n return log(this.context.dataflow, 'debug', arguments);\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export const radians = Math.PI / 180;\nexport const degrees = 180 / Math.PI;\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nconst K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * degrees;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * radians;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb() {\n return hcl2lab(this).rgb();\n }\n}));\n","import {rgb} from 'd3-color';\n\n// https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\nfunction channel_luminance_value(channelValue) {\n const val = channelValue / 255;\n if (val <= 0.03928) {\n return val / 12.92;\n }\n return Math.pow((val + 0.055) / 1.055, 2.4);\n}\n\nexport function luminance(color) {\n const c = rgb(color),\n r = channel_luminance_value(c.r),\n g = channel_luminance_value(c.g),\n b = channel_luminance_value(c.b);\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n}\n\n// https://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef\nexport function contrast(color1, color2) {\n const lum1 = luminance(color1),\n lum2 = luminance(color2),\n lumL = Math.max(lum1, lum2),\n lumD = Math.min(lum1, lum2);\n return (lumL + 0.05) / (lumD + 0.05);\n}\n","import {extend} from 'vega-util';\n\nexport default function() {\n const args = [].slice.call(arguments);\n args.unshift({});\n return extend(...args);\n}\n","import {isTuple} from 'vega-dataflow';\nimport {isArray, isObject, truthy} from 'vega-util';\n\nfunction equal(a, b) {\n return a === b || a !== a && b !== b ? true\n : isArray(a) ? (\n isArray(b) && a.length === b.length ? equalArray(a, b) : false\n )\n : isObject(a) && isObject(b) ? equalObject(a, b)\n : false;\n}\n\nfunction equalArray(a, b) {\n for (let i=0, n=a.length; i<n; ++i) {\n if (!equal(a[i], b[i])) return false;\n }\n return true;\n}\n\nfunction equalObject(a, b) {\n for (const key in a) {\n if (!equal(a[key], b[key])) return false;\n }\n return true;\n}\n\nfunction removePredicate(props) {\n return _ => equalObject(props, _);\n}\n\nexport default function(name, insert, remove, toggle, modify, values) {\n const df = this.context.dataflow,\n data = this.context.data[name],\n input = data.input,\n stamp = df.stamp();\n\n let changes = data.changes,\n predicate, key;\n\n if (df._trigger === false || !(input.value.length || insert || toggle)) {\n // nothing to do!\n return 0;\n }\n\n if (!changes || changes.stamp < stamp) {\n data.changes = (changes = df.changeset());\n changes.stamp = stamp;\n df.runAfter(() => {\n data.modified = true;\n df.pulse(input, changes).run();\n }, true, 1);\n }\n\n if (remove) {\n predicate = remove === true ? truthy\n : (isArray(remove) || isTuple(remove)) ? remove\n : removePredicate(remove);\n changes.remove(predicate);\n }\n\n if (insert) {\n changes.insert(insert);\n }\n\n if (toggle) {\n predicate = removePredicate(toggle);\n if (input.value.some(predicate)) {\n changes.remove(predicate);\n } else {\n changes.insert(toggle);\n }\n }\n\n if (modify) {\n for (key in values) {\n changes.modify(modify, key, values[key]);\n }\n }\n\n return 1;\n}\n","export function pinchDistance(event) {\n const t = event.touches,\n dx = t[0].clientX - t[1].clientX,\n dy = t[0].clientY - t[1].clientY;\n return Math.hypot(dx, dy);\n}\n\nexport function pinchAngle(event) {\n const t = event.touches;\n return Math.atan2(\n t[0].clientY - t[1].clientY,\n t[0].clientX - t[1].clientX\n );\n}\n","import {field, isArray} from 'vega-util';\n\n// memoize accessor functions\nconst accessors = {};\n\nexport default function(data, name) {\n const accessor = accessors[name] || (accessors[name] = field(name));\n return isArray(data) ? data.map(accessor) : accessor(data);\n}\n","import { ascending, error, isArray, isFunction, isString } from 'vega-util';\n\nfunction array(seq) {\n return isArray(seq) || ArrayBuffer.isView(seq) ? seq : null;\n}\n\nfunction sequence(seq) {\n return array(seq) || (isString(seq) ? seq : null);\n}\n\nexport function join(seq, ...args) {\n return array(seq).join(...args);\n}\n\nexport function indexof(seq, ...args) {\n return sequence(seq).indexOf(...args);\n}\n\nexport function lastindexof(seq, ...args) {\n return sequence(seq).lastIndexOf(...args);\n}\n\nexport function slice(seq, ...args) {\n return sequence(seq).slice(...args);\n}\n\nexport function replace(str, pattern, repl) {\n if (isFunction(repl)) error('Function argument passed to replace.');\n return String(str).replace(pattern, repl);\n}\nexport function reverse(seq) {\n return array(seq).slice().reverse();\n}\nexport function sort(seq) {\n return array(seq).slice().sort(ascending);\n}\n","import {getScale} from '../scales';\nimport {bandSpace} from 'vega-scale';\nimport {isArray} from 'vega-util';\n\nexport function bandspace(count, paddingInner, paddingOuter) {\n return bandSpace(count || 0, paddingInner || 0, paddingOuter || 0);\n}\n\nexport function bandwidth(name, group) {\n const s = getScale(name, (group || this).context);\n return s && s.bandwidth ? s.bandwidth() : 0;\n}\n\nexport function copy(name, group) {\n const s = getScale(name, (group || this).context);\n return s ? s.copy() : undefined;\n}\n\nexport function domain(name, group) {\n const s = getScale(name, (group || this).context);\n return s ? s.domain() : [];\n}\n\nexport function invert(name, range, group) {\n const s = getScale(name, (group || this).context);\n return !s ? undefined\n : isArray(range) ? (s.invertRange || s.invert)(range)\n : (s.invert || s.invertExtent)(range);\n}\n\nexport function range(name, group) {\n const s = getScale(name, (group || this).context);\n return s && s.range ? s.range() : [];\n}\n\nexport function scale(name, value, group) {\n const s = getScale(name, (group || this).context);\n return s ? s(value) : undefined;\n}\n","import {getScale} from '../scales';\nimport {scale as get, scaleFraction} from 'vega-scale';\nimport {Gradient} from 'vega-scenegraph';\nimport {identity, peek} from 'vega-util';\n\n/**\n * Passing a function is only used for for testing.\n * Outside of tests, the first argument should be a string.\n */\nexport default function(scaleOrFunction, p0, p1, count, group) {\n\n let scale = typeof scaleOrFunction === 'string' ? getScale(scaleOrFunction, (group || this).context) : scaleOrFunction;\n\n const gradient = Gradient(p0, p1);\n\n let stops = scale.domain(),\n min = stops[0],\n max = peek(stops),\n fraction = identity;\n\n if (!(max - min)) {\n // expand scale if domain has zero span, fix #1479\n scale = (scale.interpolator\n ? get('sequential')().interpolator(scale.interpolator())\n : get('linear')().interpolate(scale.interpolate()).range(scale.range())\n ).domain([min=0, max=1]);\n } else {\n fraction = scaleFraction(scale, min, max);\n }\n\n if (scale.ticks) {\n stops = scale.ticks(+count || 15);\n if (min !== stops[0]) stops.unshift(min);\n if (max !== peek(stops)) stops.push(max);\n }\n\n stops.forEach(_ => gradient.stop(fraction(_), scale(_)));\n\n return gradient;\n}\n","import {getScale} from '../scales';\nimport {pathParse, pathRender} from 'vega-scenegraph';\n\nexport function geoShape(projection, geojson, group) {\n const p = getScale(projection, (group || this).context);\n return function(context) {\n return p ? p.path.context(context)(geojson) : '';\n };\n}\n\nexport function pathShape(path) {\n let p = null;\n return function(context) {\n return context\n ? pathRender(context, (p = p || pathParse(path)))\n : path;\n };\n}\n","import {data} from './data';\n\nconst datum = d => d.data;\n\nfunction treeNodes(name, context) {\n const tree = data.call(context, name);\n return tree.root && tree.root.lookup || {};\n}\n\nexport function treePath(name, source, target) {\n const nodes = treeNodes(name, this),\n s = nodes[source],\n t = nodes[target];\n return s && t ? s.path(t).map(datum) : undefined;\n}\n\nexport function treeAncestors(name, node) {\n const n = treeNodes(name, this)[node];\n return n ? n.ancestors().map(datum) : undefined;\n}\n","const _window = () => (typeof window !== 'undefined' && window) || null;\n\nexport function screen() {\n const w = _window();\n return w ? w.screen : {};\n}\n\nexport function windowSize() {\n const w = _window();\n return w\n ? [w.innerWidth, w.innerHeight]\n : [undefined, undefined];\n}\n\nexport function containerSize() {\n const view = this.context.dataflow,\n el = view.container && view.container();\n return el\n ? [el.clientWidth, el.clientHeight]\n : [undefined, undefined];\n}\n","import {Bounds, intersect} from 'vega-scenegraph';\nimport {array} from 'vega-util';\n\nexport default function(b, opt, group) {\n if (!b) return [];\n\n const [u, v] = b,\n box = new Bounds().set(u[0], u[1], v[0], v[1]),\n scene = group || this.context.dataflow.scenegraph().root;\n\n return intersect(scene, box, filter(opt));\n}\n\nfunction filter(opt) {\n let p = null;\n\n if (opt) {\n const types = array(opt.marktype),\n names = array(opt.markname);\n p = _ => (!types.length || types.some(t => _.marktype === t))\n && (!names.length || names.some(s => _.name === s));\n }\n\n return p;\n}","import {\n codegenExpression,\n constants,\n functions\n} from 'vega-expression';\n\nimport {\n isTuple\n} from 'vega-dataflow';\n\nimport {\n selectionIdTest,\n selectionResolve,\n selectionTest,\n selectionTuples,\n selectionVisitor\n} from 'vega-selections';\n\nimport {\n cumulativeLogNormal,\n cumulativeNormal,\n cumulativeUniform,\n densityLogNormal,\n densityNormal,\n densityUniform,\n quantileLogNormal,\n quantileNormal,\n quantileUniform,\n random,\n sampleLogNormal,\n sampleNormal,\n sampleUniform\n} from 'vega-statistics';\n\nimport {\n dayofyear,\n timeOffset,\n timeSequence,\n timeUnitSpecifier,\n utcOffset,\n utcSequence,\n utcdayofyear,\n utcweek,\n week\n} from 'vega-time';\n\nimport {\n clampRange,\n extend,\n extent,\n flush,\n inrange,\n isArray,\n isBoolean,\n isDate,\n isNumber,\n isObject,\n isRegExp,\n isString,\n lerp,\n pad,\n panLinear,\n panLog,\n panPow,\n panSymlog,\n peek,\n quarter,\n span,\n stringValue,\n toBoolean,\n toDate,\n toNumber,\n toString,\n truncate,\n utcquarter,\n zoomLinear,\n zoomLog,\n zoomPow,\n zoomSymlog\n} from 'vega-util';\n\nimport {\n range as sequence\n} from 'd3-array';\n\nimport {\n hcl,\n hsl,\n lab,\n rgb\n} from 'd3-color';\n\nimport {\n contrast,\n luminance\n} from './functions/luminance';\n\nimport {\n data,\n indata,\n setdata\n} from './functions/data';\n\nimport encode from './functions/encode';\n\nimport {\n dayAbbrevFormat,\n dayFormat,\n format,\n monthAbbrevFormat,\n monthFormat,\n timeFormat,\n timeParse,\n utcFormat,\n utcParse\n} from './functions/format';\n\nimport {\n geoArea,\n geoBounds,\n geoCentroid,\n geoScale\n} from './functions/geo';\n\nimport inScope from './functions/inscope';\n\nimport intersect from './functions/intersect';\n\nimport {\n debug,\n info,\n warn\n} from './functions/log';\n\nimport merge from './functions/merge';\n\nimport modify from './functions/modify';\n\nimport {\n pinchAngle,\n pinchDistance\n} from './functions/pinch';\n\nimport pluck from './functions/pluck';\n\nimport {\n indexof,\n join,\n lastindexof,\n replace,\n reverse,\n slice,\n sort\n} from './functions/sequence';\n\nimport {\n intersectLasso,\n lassoAppend,\n lassoPath\n} from './functions/lasso';\n\nimport {\n bandspace,\n bandwidth,\n copy,\n domain,\n invert,\n range,\n scale\n} from './functions/scale';\n\nimport scaleGradient from './functions/scale-gradient';\n\nimport {\n geoShape,\n pathShape\n} from './functions/shape';\n\nimport {\n treeAncestors,\n treePath\n} from './functions/tree';\n\nimport {\n containerSize,\n screen,\n windowSize\n} from './functions/window';\n\nimport {\n SignalPrefix\n} from './constants';\n\nimport {\n internalScaleFunctions\n} from './scales';\n\nimport {\n dataVisitor,\n indataVisitor,\n scaleVisitor\n} from './visitors';\n\n// Expression function context object\nexport const functionContext = {\n random() { return random(); }, // override default\n cumulativeNormal,\n cumulativeLogNormal,\n cumulativeUniform,\n densityNormal,\n densityLogNormal,\n densityUniform,\n quantileNormal,\n quantileLogNormal,\n quantileUniform,\n sampleNormal,\n sampleLogNormal,\n sampleUniform,\n isArray,\n isBoolean,\n isDate,\n isDefined(_) { return _ !== undefined; },\n isNumber,\n isObject,\n isRegExp,\n isString,\n isTuple,\n isValid(_) { return _ != null && _ === _; },\n toBoolean,\n toDate(_) { return toDate(_); }, // suppress extra arguments\n toNumber,\n toString,\n indexof,\n join,\n lastindexof,\n replace,\n reverse,\n sort,\n slice,\n flush,\n lerp,\n merge,\n pad,\n peek,\n pluck,\n span,\n inrange,\n truncate,\n rgb,\n lab,\n hcl,\n hsl,\n luminance,\n contrast,\n sequence,\n format,\n utcFormat,\n utcParse,\n utcOffset,\n utcSequence,\n timeFormat,\n timeParse,\n timeOffset,\n timeSequence,\n timeUnitSpecifier,\n monthFormat,\n monthAbbrevFormat,\n dayFormat,\n dayAbbrevFormat,\n quarter,\n utcquarter,\n week,\n utcweek,\n dayofyear,\n utcdayofyear,\n warn,\n info,\n debug,\n extent(_) { return extent(_); }, // suppress extra arguments\n inScope,\n intersect,\n clampRange,\n pinchDistance,\n pinchAngle,\n screen,\n containerSize,\n windowSize,\n bandspace,\n setdata,\n pathShape,\n panLinear,\n panLog,\n panPow,\n panSymlog,\n zoomLinear,\n zoomLog,\n zoomPow,\n zoomSymlog,\n encode,\n modify,\n lassoAppend,\n lassoPath,\n intersectLasso\n};\n\nconst eventFunctions = ['view', 'item', 'group', 'xy', 'x', 'y'], // event functions\n eventPrefix = 'event.vega.', // event function prefix\n thisPrefix = 'this.', // function context prefix\n astVisitors = {}; // AST visitors for dependency analysis\n\n// export code generator parameters\nexport const codegenParams = {\n forbidden: ['_'],\n allowed: ['datum', 'event', 'item'],\n fieldvar: 'datum',\n globalvar: id => `_[${stringValue(SignalPrefix + id)}]`,\n functions: buildFunctions,\n constants: constants,\n visitors: astVisitors\n};\n\n// export code generator\nexport const codeGenerator = codegenExpression(codegenParams);\n\n// Build expression function registry\nfunction buildFunctions(codegen) {\n const fn = functions(codegen);\n eventFunctions.forEach(name => fn[name] = eventPrefix + name);\n for (const name in functionContext) { fn[name] = thisPrefix + name; }\n extend(fn, internalScaleFunctions(codegen, functionContext, astVisitors));\n return fn;\n}\n\n// Register an expression function\nexport function expressionFunction(name, fn, visitor) {\n if (arguments.length === 1) {\n return functionContext[name];\n }\n\n // register with the functionContext\n functionContext[name] = fn;\n\n // if there is an astVisitor register that, too\n if (visitor) astVisitors[name] = visitor;\n\n // if the code generator has already been initialized,\n // we need to also register the function with it\n if (codeGenerator) codeGenerator.functions[name] = thisPrefix + name;\n return this;\n}\n\n// register expression functions with ast visitors\nexpressionFunction('bandwidth', bandwidth, scaleVisitor);\nexpressionFunction('copy', copy, scaleVisitor);\nexpressionFunction('domain', domain, scaleVisitor);\nexpressionFunction('range', range, scaleVisitor);\nexpressionFunction('invert', invert, scaleVisitor);\nexpressionFunction('scale', scale, scaleVisitor);\nexpressionFunction('gradient', scaleGradient, scaleVisitor);\nexpressionFunction('geoArea', geoArea, scaleVisitor);\nexpressionFunction('geoBounds', geoBounds, scaleVisitor);\nexpressionFunction('geoCentroid', geoCentroid, scaleVisitor);\nexpressionFunction('geoShape', geoShape, scaleVisitor);\nexpressionFunction('geoScale', geoScale, scaleVisitor);\nexpressionFunction('indata', indata, indataVisitor);\nexpressionFunction('data', data, dataVisitor);\nexpressionFunction('treePath', treePath, dataVisitor);\nexpressionFunction('treeAncestors', treeAncestors, dataVisitor);\n\n// register Vega-Lite selection functions\nexpressionFunction('vlSelectionTest', selectionTest, selectionVisitor);\nexpressionFunction('vlSelectionIdTest', selectionIdTest, selectionVisitor);\nexpressionFunction('vlSelectionResolve', selectionResolve, selectionVisitor);\nexpressionFunction('vlSelectionTuples', selectionTuples);\n","export default function range(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","import intersect from './intersect';\nimport {Bounds} from 'vega-scenegraph';\nimport {array} from 'vega-util';\n\n/**\n * Appends a new point to the lasso\n *\n * @param {*} lasso the lasso in pixel space\n * @param {*} x the x coordinate in pixel space\n * @param {*} y the y coordinate in pixel space\n * @param {*} minDist the minimum distance, in pixels, that thenew point needs to be apart from the last point\n * @returns a new array containing the lasso with the new point\n */\nexport function lassoAppend(lasso, x, y, minDist = 5) {\n lasso = array(lasso);\n const last = lasso[lasso.length - 1];\n\n // Add point to lasso if its the first point or distance to last point exceed minDist\n return (last === undefined || Math.hypot(last[0] - x, last[1] - y) > minDist)\n ? [...lasso, [x, y]]\n : lasso;\n}\n\n\n/**\n * Generates a svg path command which draws a lasso\n *\n * @param {*} lasso the lasso in pixel space in the form [[x,y], [x,y], ...]\n * @returns the svg path command that draws the lasso\n */\nexport function lassoPath(lasso) {\n return array(lasso).reduce((svg, [x, y], i) => {\n return svg += i == 0\n ? `M ${x},${y} `\n : i === lasso.length - 1\n ? ' Z'\n : `L ${x},${y} `;\n }, '');\n}\n\n\n\n/**\n * Inverts the lasso from pixel space to an array of vega scenegraph tuples\n *\n * @param {*} data the dataset\n * @param {*} pixelLasso the lasso in pixel space, [[x,y], [x,y], ...]\n * @param {*} unit the unit where the lasso is defined\n *\n * @returns an array of vega scenegraph tuples\n */\nexport function intersectLasso(markname, pixelLasso, unit) {\n const { x, y, mark } = unit;\n\n const bb = new Bounds().set(\n Number.MAX_SAFE_INTEGER,\n Number.MAX_SAFE_INTEGER,\n Number.MIN_SAFE_INTEGER,\n Number.MIN_SAFE_INTEGER\n );\n\n // Get bounding box around lasso\n for (const [px, py] of pixelLasso) {\n if (px < bb.x1) bb.x1 = px;\n if (px > bb.x2) bb.x2 = px;\n if (py < bb.y1) bb.y1 = py;\n if (py > bb.y2) bb.y2 = py;\n }\n\n // Translate bb against unit coordinates\n bb.translate(x, y);\n\n const intersection = intersect([[bb.x1, bb.y1], [bb.x2, bb.y2]],\n markname,\n mark);\n\n // Check every point against the lasso\n return intersection.filter(tuple => pointInPolygon(tuple.x, tuple.y, pixelLasso));\n}\n\n\n\n/**\n * Performs a test if a point is inside a polygon based on the idea from\n * https://wrf.ecse.rpi.edu/Research/Short_Notes/pnpoly.html\n *\n * This method will not need the same start/end point since it wraps around the edges of the array\n *\n * @param {*} test a point to test against\n * @param {*} polygon a polygon in the form [[x,y], [x,y], ...]\n * @returns true if the point lies inside the polygon, false otherwise\n */\nfunction pointInPolygon(testx, testy, polygon) {\n let intersections = 0;\n\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const [prevX, prevY] = polygon[j];\n const [x, y] = polygon[i];\n\n // count intersections\n if (((y > testy) != (prevY > testy)) && (testx < (prevX - x) * (testy - y) / (prevY - y) + x)) {\n intersections++;\n }\n }\n\n // point is in polygon if intersection count is odd\n return intersections & 1;\n}\n","import {codeGenerator, codegenParams} from './codegen';\nimport {SignalPrefix} from './constants';\nimport {CallExpression, parseExpression} from 'vega-expression';\nimport {error, extend, hasOwnProperty, isString, stringValue} from 'vega-util';\n\nexport default function(expr, scope) {\n const params = {};\n\n // parse the expression to an abstract syntax tree (ast)\n let ast;\n try {\n expr = isString(expr) ? expr : (stringValue(expr) + '');\n ast = parseExpression(expr);\n } catch (err) {\n error('Expression parse error: ' + expr);\n }\n\n // analyze ast function calls for dependencies\n ast.visit(node => {\n if (node.type !== CallExpression) return;\n const name = node.callee.name,\n visit = codegenParams.visitors[name];\n if (visit) visit(name, node.arguments, scope, params);\n });\n\n // perform code generation\n const gen = codeGenerator(ast);\n\n // collect signal dependencies\n gen.globals.forEach(name => {\n const signalName = SignalPrefix + name;\n if (!hasOwnProperty(params, signalName) && scope.getSignal(name)) {\n params[signalName] = scope.signalRef(name);\n }\n });\n\n // return generated expression code and dependencies\n return {\n $expr: extend({code: gen.code}, scope.options.ast ? {ast} : null),\n $fields: gen.fields,\n $params: params\n };\n}\n"],"names":["data","name","this","context","values","value","indata","field","index","entry","get","undefined","count","setdata","tuples","df","dataflow","input","pulse","changeset","remove","truthy","insert","encode","item","retval","target","mark","source","wrap","method","spec","locale","format","timeFormat","utcFormat","timeParse","utcParse","dateObj","Date","time","month","day","specifier","Number","isInteger","setYear","setMonth","setDate","call","monthFormat","monthAbbrevFormat","dayFormat","dayAbbrevFormat","ScalePrefix","dataVisitor","args","scope","params","type","Literal","error","dataName","hasOwnProperty","getData","tuplesRef","err","indataVisitor","indexName","indataRef","scaleVisitor","addScaleDependency","scales","scaleName","scaleRef","getScale","ctx","isString","maybeScale","isRegisteredScale","internalScaleFunctions","codegen","fnctx","visitors","__bandwidth","s","bandwidth","_bandwidth","_range","_scale","ref","arg","stringValue","Adder","constructor","_partials","Float64Array","_n","add","x","p","i","j","y","hi","lo","Math","abs","valueOf","n","epsilon","pi","PI","halfPi","quarterPi","tau","degrees","radians","atan2","cos","hypot","sin","sqrt","asin","noop","streamGeometry","geometry","stream","streamGeometryType","streamObjectType","Feature","object","FeatureCollection","features","length","Sphere","sphere","Point","coordinates","point","MultiPoint","LineString","streamLine","MultiLineString","Polygon","streamPolygon","MultiPolygon","GeometryCollection","geometries","closed","coordinate","lineStart","lineEnd","polygonStart","polygonEnd","geoStream","lambda00","phi00","lambda0","cosPhi0","sinPhi0","phi0","lambda1","phi1","lambda2","p0","deltaSum","ranges","range","areaRingSum","areaSum","areaStream","areaRingStart","areaRingEnd","areaRing","areaPointFirst","areaPoint","lambda","phi","dLambda","sdLambda","adLambda","cosPhi","sinPhi","k","u","v","cartesianCross","a","b","W0","W1","X0","Y0","Z0","X1","Y1","Z1","X2","Y2","Z2","x0","y0","z0","boundsStream","boundsPoint","boundsLineStart","boundsLineEnd","boundsRingPoint","boundsRingStart","boundsRingEnd","push","linePoint","d","l","spherical","cartesian","normal","inflection","phii","delta","sign","lambdai","antimeridian","angle","rangeCompare","rangeContains","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroidPointCartesian","z","centroidLinePointFirst","centroidLinePoint","w","centroidRingPointFirst","centroidRingPoint","cx","cy","cz","m","geoMethod","methodName","globalMethod","projection","geojson","group","path","geoArea","geoBounds","feature","merged","deltaMax","Infinity","sort","NaN","geoCentroid","geoScale","scale","inScope","log","apply","concat","slice","warn","arguments","info","debug","define","factory","prototype","extend","parent","definition","Object","create","key","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","color","trim","toLowerCase","exec","parseInt","rgbn","Rgb","rgba","hsla","r","g","rgbConvert","o","opacity","rgb_formatHex","hex","rgb_formatRgb","clampa","clampi","isNaN","max","min","round","toString","h","Hsl","hslConvert","hsl","clamph","clampt","hsl2rgb","m1","m2","copy","channels","assign","displayable","formatHex8","formatHsl","pow","clamp","Xn","Yn","Zn","t0","t1","t2","t3","labConvert","Lab","Hcl","hcl2lab","rgb2lrgb","xyz2lab","lab","t","lab2xyz","lrgb2rgb","hcl","c","hclConvert","channel_luminance_value","channelValue","val","luminance","contrast","color1","color2","lum1","lum2","merge","unshift","equal","isArray","equalArray","isObject","equalObject","removePredicate","props","_","modify","toggle","stamp","predicate","changes","_trigger","runAfter","modified","run","isTuple","some","pinchDistance","event","touches","dx","clientX","dy","clientY","pinchAngle","accessors","pluck","accessor","map","array","seq","ArrayBuffer","isView","sequence","join","_len","Array","_key","indexof","_len2","_key2","indexOf","lastindexof","_len3","_key3","lastIndexOf","_len4","_key4","replace","str","pattern","repl","isFunction","String","reverse","ascending","bandspace","paddingInner","paddingOuter","bandSpace","domain","invert","invertRange","invertExtent","scaleGradient","scaleOrFunction","p1","gradient","Gradient","stops","peek","fraction","identity","scaleFraction","interpolator","interpolate","ticks","forEach","stop","geoShape","pathShape","pathRender","pathParse","datum","treeNodes","tree","root","lookup","treePath","nodes","treeAncestors","node","ancestors","_window","window","screen","windowSize","innerWidth","innerHeight","containerSize","view","el","container","clientWidth","clientHeight","intersect","opt","box","Bounds","set","scene","scenegraph","types","marktype","names","markname","filter","functionContext","random","cumulativeNormal","cumulativeLogNormal","cumulativeUniform","densityNormal","densityLogNormal","densityUniform","quantileNormal","quantileLogNormal","quantileUniform","sampleNormal","sampleLogNormal","sampleUniform","isBoolean","isDate","isDefined","isNumber","isRegExp","isValid","toBoolean","toDate","toNumber","flush","lerp","pad","span","inrange","truncate","start","step","ceil","utcOffset","utcSequence","timeOffset","timeSequence","timeUnitSpecifier","quarter","utcquarter","week","utcweek","dayofyear","utcdayofyear","extent","clampRange","panLinear","panLog","panPow","panSymlog","zoomLinear","zoomLog","zoomPow","zoomSymlog","lassoAppend","lasso","minDist","last","lassoPath","reduce","svg","_ref","intersectLasso","pixelLasso","unit","bb","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","px","py","x1","x2","y1","y2","translate","tuple","testx","testy","polygon","intersections","prevX","prevY","pointInPolygon","eventFunctions","thisPrefix","astVisitors","codegenParams","forbidden","allowed","fieldvar","globalvar","id","functions","fn","constants","codeGenerator","codegenExpression","expressionFunction","visitor","selectionTest","selectionVisitor","selectionIdTest","selectionResolve","selectionTuples","expr","ast","parseExpression","visit","CallExpression","callee","gen","globals","signalName","getSignal","signalRef","$expr","code","options","$fields","fields","$params"],"mappings":"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","x_google_ignoreList":[6,7,8,9,10,11,12,13,17,18,19,20,34]}
@@ -1,4 +1,4 @@
1
- import { truthy, error, hasOwnProperty, isFunction, isString, stringValue, extend, isArray, isObject, field, peek, identity, array as array$1, isBoolean, isDate, isNumber, isRegExp, toBoolean, toDate, toNumber, toString, flush, lerp, pad, span, inrange, truncate, quarter, utcquarter, extent, clampRange, panLinear, panLog, panPow, panSymlog, zoomLinear, zoomLog, zoomPow, zoomSymlog } from 'vega-util';
1
+ import { truthy, error, hasOwnProperty, isString, stringValue, extend, isArray, isObject, field, isFunction, ascending, peek, identity, array as array$1, isBoolean, isDate, isNumber, isRegExp, toBoolean, toDate, toNumber, toString, flush, lerp, pad, span, inrange, truncate, quarter, utcquarter, extent, clampRange, panLinear, panLog, panPow, panSymlog, zoomLinear, zoomLog, zoomPow, zoomSymlog } from 'vega-util';
2
2
  import { Literal, codegenExpression, constants, functions, parseExpression, CallExpression } from 'vega-expression';
3
3
  import { isRegisteredScale, bandSpace, scale as scale$1, scaleFraction } from 'vega-scale';
4
4
  import { geoArea as geoArea$1, geoBounds as geoBounds$1, geoCentroid as geoCentroid$1 } from 'd3-geo';
@@ -117,12 +117,12 @@ function addScaleDependency(scope, params, name) {
117
117
  }
118
118
  }
119
119
 
120
- function getScale(nameOrFunction, ctx) {
121
- if (isFunction(nameOrFunction)) {
122
- return nameOrFunction;
123
- }
124
- if (isString(nameOrFunction)) {
125
- const maybeScale = ctx.scales[nameOrFunction];
120
+ /**
121
+ * Name must be a string. Return undefined if the scale is not registered.
122
+ */
123
+ function getScale(name, ctx) {
124
+ if (isString(name)) {
125
+ const maybeScale = ctx.scales[name];
126
126
  return maybeScale && isRegisteredScale(maybeScale.value) ? maybeScale.value : undefined;
127
127
  }
128
128
  return undefined;
@@ -346,6 +346,9 @@ function replace(str, pattern, repl) {
346
346
  function reverse(seq) {
347
347
  return array(seq).slice().reverse();
348
348
  }
349
+ function sort(seq) {
350
+ return array(seq).slice().sort(ascending);
351
+ }
349
352
 
350
353
  function bandspace(count, paddingInner, paddingOuter) {
351
354
  return bandSpace(count || 0, paddingInner || 0, paddingOuter || 0);
@@ -375,8 +378,12 @@ function scale(name, value, group) {
375
378
  return s ? s(value) : undefined;
376
379
  }
377
380
 
378
- function scaleGradient (scale, p0, p1, count, group) {
379
- scale = getScale(scale, (group || this).context);
381
+ /**
382
+ * Passing a function is only used for for testing.
383
+ * Outside of tests, the first argument should be a string.
384
+ */
385
+ function scaleGradient (scaleOrFunction, p0, p1, count, group) {
386
+ let scale = typeof scaleOrFunction === 'string' ? getScale(scaleOrFunction, (group || this).context) : scaleOrFunction;
380
387
  const gradient = Gradient(p0, p1);
381
388
  let stops = scale.domain(),
382
389
  min = stops[0],
@@ -592,6 +599,7 @@ const functionContext = {
592
599
  lastindexof,
593
600
  replace,
594
601
  reverse,
602
+ sort,
595
603
  slice,
596
604
  flush,
597
605
  lerp,
@@ -779,4 +787,4 @@ function parser (expr, scope) {
779
787
  };
780
788
  }
781
789
 
782
- export { DataPrefix, IndexPrefix, ScalePrefix, SignalPrefix, bandspace, bandwidth, codeGenerator, codegenParams, containerSize, contrast, copy, data, dataVisitor, dayAbbrevFormat, dayFormat, debug, domain, encode, expressionFunction, format, functionContext, geoArea, geoBounds, geoCentroid, geoScale, geoShape, inScope, indata, indataVisitor, indexof, info, invert, join, lastindexof, luminance, merge, modify, monthAbbrevFormat, monthFormat, parser as parseExpression, pathShape, pinchAngle, pinchDistance, pluck, range, replace, reverse, scale, scaleGradient, scaleVisitor, screen, setdata, slice, timeFormat, timeParse, treeAncestors, treePath, utcFormat, utcParse, warn, windowSize };
790
+ export { DataPrefix, IndexPrefix, ScalePrefix, SignalPrefix, bandspace, bandwidth, codeGenerator, codegenParams, containerSize, contrast, copy, data, dataVisitor, dayAbbrevFormat, dayFormat, debug, domain, encode, expressionFunction, format, functionContext, geoArea, geoBounds, geoCentroid, geoScale, geoShape, inScope, indata, indataVisitor, indexof, info, invert, join, lastindexof, luminance, merge, modify, monthAbbrevFormat, monthFormat, parser as parseExpression, pathShape, pinchAngle, pinchDistance, pluck, range, replace, reverse, scale, scaleGradient, scaleVisitor, screen, setdata, slice, sort, timeFormat, timeParse, treeAncestors, treePath, utcFormat, utcParse, warn, windowSize };
package/index.js CHANGED
@@ -65,7 +65,8 @@ export {
65
65
  lastindexof,
66
66
  replace,
67
67
  reverse,
68
- slice
68
+ slice,
69
+ sort
69
70
  } from './src/functions/sequence';
70
71
 
71
72
  export {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vega-functions",
3
- "version": "5.15.0",
3
+ "version": "5.16.0",
4
4
  "description": "Custom functions for the Vega expression language.",
5
5
  "keywords": [
6
6
  "vega",
@@ -24,17 +24,17 @@
24
24
  "d3-array": "^3.2.2",
25
25
  "d3-color": "^3.1.0",
26
26
  "d3-geo": "^3.1.0",
27
- "vega-dataflow": "^5.7.6",
28
- "vega-expression": "^5.1.1",
29
- "vega-scale": "^7.4.1",
30
- "vega-scenegraph": "^4.13.0",
31
- "vega-selections": "^5.4.2",
27
+ "vega-dataflow": "^5.7.7",
28
+ "vega-expression": "^5.1.2",
29
+ "vega-scale": "^7.4.2",
30
+ "vega-scenegraph": "^4.13.1",
31
+ "vega-selections": "^5.5.0",
32
32
  "vega-statistics": "^1.9.0",
33
- "vega-time": "^2.1.2",
34
- "vega-util": "^1.17.2"
33
+ "vega-time": "^2.1.3",
34
+ "vega-util": "^1.17.3"
35
35
  },
36
36
  "devDependencies": {
37
- "vega-format": "^1.1.2"
37
+ "vega-format": "^1.1.3"
38
38
  },
39
- "gitHead": "d2ef8b4f7d59c02ea80129f59551550a22e0ed97"
39
+ "gitHead": "0e1eb8b091bc83a343bcb23caa87a6d8762abc54"
40
40
  }
package/src/codegen.js CHANGED
@@ -149,7 +149,8 @@ import {
149
149
  lastindexof,
150
150
  replace,
151
151
  reverse,
152
- slice
152
+ slice,
153
+ sort
153
154
  } from './functions/sequence';
154
155
 
155
156
  import {
@@ -234,6 +235,7 @@ export const functionContext = {
234
235
  lastindexof,
235
236
  replace,
236
237
  reverse,
238
+ sort,
237
239
  slice,
238
240
  flush,
239
241
  lerp,
@@ -3,8 +3,13 @@ import {scale as get, scaleFraction} from 'vega-scale';
3
3
  import {Gradient} from 'vega-scenegraph';
4
4
  import {identity, peek} from 'vega-util';
5
5
 
6
- export default function(scale, p0, p1, count, group) {
7
- scale = getScale(scale, (group || this).context);
6
+ /**
7
+ * Passing a function is only used for for testing.
8
+ * Outside of tests, the first argument should be a string.
9
+ */
10
+ export default function(scaleOrFunction, p0, p1, count, group) {
11
+
12
+ let scale = typeof scaleOrFunction === 'string' ? getScale(scaleOrFunction, (group || this).context) : scaleOrFunction;
8
13
 
9
14
  const gradient = Gradient(p0, p1);
10
15
 
@@ -1,4 +1,4 @@
1
- import {error, isArray, isFunction, isString} from 'vega-util';
1
+ import { ascending, error, isArray, isFunction, isString } from 'vega-util';
2
2
 
3
3
  function array(seq) {
4
4
  return isArray(seq) || ArrayBuffer.isView(seq) ? seq : null;
@@ -31,3 +31,6 @@ export function replace(str, pattern, repl) {
31
31
  export function reverse(seq) {
32
32
  return array(seq).slice().reverse();
33
33
  }
34
+ export function sort(seq) {
35
+ return array(seq).slice().sort(ascending);
36
+ }
package/src/scales.js CHANGED
@@ -1,19 +1,17 @@
1
1
  import {ScalePrefix} from './constants';
2
2
  import {scaleVisitor} from './visitors';
3
3
  import {Literal} from 'vega-expression';
4
- import {isFunction, isString, stringValue} from 'vega-util';
4
+ import {isString, stringValue} from 'vega-util';
5
5
  import {isRegisteredScale} from 'vega-scale';
6
6
 
7
- export function getScale(nameOrFunction, ctx) {
7
+ /**
8
+ * Name must be a string. Return undefined if the scale is not registered.
9
+ */
10
+ export function getScale(name, ctx) {
8
11
 
9
- if (isFunction(nameOrFunction)) {
10
- return nameOrFunction;
11
- }
12
-
13
- if (isString(nameOrFunction)) {
14
- const maybeScale = ctx.scales[nameOrFunction];
12
+ if (isString(name)) {
13
+ const maybeScale = ctx.scales[name];
15
14
  return (maybeScale && isRegisteredScale(maybeScale.value)) ? maybeScale.value : undefined;
16
-
17
15
  }
18
16
 
19
17
  return undefined;