Socket
Socket
Sign inDemoInstall

vega-parser

Package Overview
Dependencies
Maintainers
1
Versions
151
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

vega-parser - npm Package Compare versions

Comparing version 6.0.3 to 6.0.4

2

build/vega-parser.min.js

@@ -1,1 +0,1 @@

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vega-util"),require("vega-functions"),require("vega-event-selector"),require("vega-scale"),require("vega-dataflow")):"function"==typeof define&&define.amd?define(["exports","vega-util","vega-functions","vega-event-selector","vega-scale","vega-dataflow"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).vega={},e.vega,e.vega,e.vega,e.vega,e.vega)}(this,(function(e,t,i,n,a,r){"use strict";function l(e){return t.isObject(e)?e:{type:e||"pad"}}const s=e=>+e||0;function o(e){return t.isObject(e)?e.signal?e:{top:s(e.top),bottom:s(e.bottom),left:s(e.left),right:s(e.right)}:{top:i=s(e),bottom:i,left:i,right:i};var i}const u=e=>t.isObject(e)&&!t.isArray(e)?t.extend({},e):{value:e};function d(e,i,n,a){if(null!=n){return t.isObject(n)&&!t.isArray(n)||t.isArray(n)&&n.length&&t.isObject(n[0])?e.update[i]=n:e[a||"enter"][i]={value:n},1}return 0}function c(e,t,i){for(const i in t)d(e,i,t[i]);for(const t in i)d(e,t,i[t],"update")}function f(e,i,n){for(const a in i)n&&t.hasOwnProperty(n,a)||(e[a]=t.extend(e[a]||{},i[a]));return e}function p(e,t){return t&&(t.enter&&t.enter[e]||t.update&&t.update[e])}function g(e,t,i){e[t]=i&&i.signal?{signal:i.signal}:{value:i}}const m=e=>t.isString(e)?t.stringValue(e):e.signal?`(${e.signal})`:x(e);function h(e){if(null!=e.gradient)return function(e){const i=[e.start,e.stop,e.count].map(e=>null==e?null:t.stringValue(e));for(;i.length&&null==t.peek(i);)i.pop();return i.unshift(m(e.gradient)),`gradient(${i.join(",")})`}(e);let i=e.signal?`(${e.signal})`:e.color?function(e){return e.c?y("hcl",e.h,e.c,e.l):e.h||e.s?y("hsl",e.h,e.s,e.l):e.l||e.a?y("lab",e.l,e.a,e.b):e.r||e.g||e.b?y("rgb",e.r,e.g,e.b):null}(e.color):null!=e.field?x(e.field):void 0!==e.value?t.stringValue(e.value):void 0;return null!=e.scale&&(i=function(e,t){const i=m(e.scale);null!=e.range?t=`lerp(_range(${i}), ${+e.range})`:(void 0!==t&&(t=`_scale(${i}, ${t})`),e.band&&(t=(t?t+"+":"")+`_bandwidth(${i})`+(1==+e.band?"":"*"+b(e.band)),e.extra&&(t=`(datum.extra ? _scale(${i}, datum.extra.value) : ${t})`)),null==t&&(t="0"));return t}(e,i)),void 0===i&&(i=null),null!=e.exponent&&(i=`pow(${i},${b(e.exponent)})`),null!=e.mult&&(i+="*"+b(e.mult)),null!=e.offset&&(i+="+"+b(e.offset)),e.round&&(i=`round(${i})`),i}const y=(e,t,i,n)=>`(${e}(${[t,i,n].map(h).join(",")})+'')`;function b(e){return t.isObject(e)?"("+h(e)+")":e}function x(e){return function e(i){let n,a,r;if(i.signal)n="datum",r=i.signal;else if(i.group||i.parent){for(a=Math.max(1,i.level||1),n="item";a-- >0;)n+=".mark.group";i.parent?(r=i.parent,n+=".datum"):r=i.group}else i.datum?(n="datum",r=i.datum):t.error("Invalid field reference: "+t.stringValue(i));i.signal||(r=t.isString(r)?t.splitAccessPath(r).map(t.stringValue).join("]["):e(r));return n+"["+r+"]"}(t.isObject(e)?e:{datum:e})}function k(e,i,n,a,r,l){const s={};(l=l||{}).encoders={$encode:s},e=function(e,i,n,a,r){const l={},s={};let o,u,d,c;for(u in u="lineBreak","text"!==i||null==r[u]||p(u,e)||g(l,u,r[u]),("legend"==n||String(n).startsWith("axis"))&&(n=null),c="frame"===n?r.group:"mark"===n?t.extend({},r.mark,r[i]):null,c)d=p(u,e)||("fill"===u||"stroke"===u)&&(p("fill",e)||p("stroke",e)),d||g(l,u,c[u]);for(u in t.array(a).forEach(t=>{const i=r.style&&r.style[t];for(const t in i)p(t,e)||g(l,t,i[t])}),e=t.extend({},e),l)c=l[u],c.signal?(o=o||{})[u]=c:s[u]=c;return e.enter=t.extend(s,e.enter),o&&(e.update=t.extend(o,e.update)),e}(e,i,n,a,r.config);for(const t in e)s[t]=v(e[t],i,l,r);return l}function v(e,i,n,a){const r={},l={};for(const i in e)null!=e[i]&&(r[i]=$((s=e[i],t.isArray(s)?function(e){let i="";return e.forEach(e=>{const t=h(e);i+=e.test?`(${e.test})?${t}:`:t}),":"===t.peek(i)&&(i+="null"),i}(s):h(s)),a,n,l));var s;return{$expr:{marktype:i,channels:r},$fields:Object.keys(l),$output:Object.keys(e)}}function $(e,n,a,r){const l=i.parseExpression(e,n);return l.$fields.forEach(e=>r[e]=1),t.extend(a,l.$params),l.$expr}const S=["value","update","init","react","bind"];function O(e,i){t.error(e+' for "outer" push: '+t.stringValue(i))}function R(e,t){const i=e.name;if("outer"===e.push)t.signals[i]||O("No prior signal definition",i),S.forEach(t=>{void 0!==e[t]&&O("Invalid property ",t)});else{const n=t.addSignal(i,e.value);!1===e.react&&(n.react=!1),e.bind&&t.addBinding(i,e.bind)}}function z(e,t,i,n){this.id=-1,this.type=e,this.value=t,this.params=i,n&&(this.parent=n)}function j(e,t,i,n){return new z(e,t,i,n)}function w(e,t){return j("operator",e,t)}function W(e){const t={$ref:e.id};return e.id<0&&(e.refs=e.refs||[]).push(t),t}function P(e,t){return t?{$field:e,$name:t}:{$field:e}}const D=P("key");function V(e,t){return{$compare:e,$order:t}}function C(e,t){return(e&&e.signal?"$"+e.signal:e||"")+(e&&t?"_":"")+(t&&t.signal?"$"+t.signal:t||"")}function E(e){return e&&e.signal}function _(e){if(E(e))return!0;if(t.isObject(e))for(const t in e)if(_(e[t]))return!0;return!1}function L(e,t){return null!=e?e:t}function F(e){return e&&e.signal||e}function A(e,i){return(e.merge?T:e.stream?B:e.type?q:t.error("Invalid stream specification: "+t.stringValue(e)))(e,i)}function T(e,t){const i=U({merge:e.merge.map(e=>A(e,t))},e,t);return t.addStream(i).id}function B(e,t){const i=U({stream:A(e.stream,t)},e,t);return t.addStream(i).id}function q(e,t){let i,n;var a;return"timer"===e.type?(i=t.event("timer",e.throttle),e={between:e.between,filter:e.filter}):i=t.event("scope"===(a=e.source)?"view":a||"view",e.type),n=U({stream:i},e,t),1===Object.keys(n).length?i:t.addStream(n).id}function U(e,n,a){let r=n.between;return r&&(2!==r.length&&t.error('Stream "between" parameter must have 2 entries: '+t.stringValue(n)),e.between=[A(r[0],a),A(r[1],a)]),r=n.filter?[].concat(n.filter):[],(n.marktype||n.markname||n.markrole)&&r.push(function(e,t,i){const n="event.item";return n+(e&&"*"!==e?"&&"+n+".mark.marktype==='"+e+"'":"")+(i?"&&"+n+".mark.role==='"+i+"'":"")+(t?"&&"+n+".mark.name==='"+t+"'":"")}(n.marktype,n.markname,n.markrole)),"scope"===n.source&&r.push("inScope(event.item)"),r.length&&(e.filter=i.parseExpression("("+r.join(")&&(")+")",a).$expr),null!=(r=n.throttle)&&(e.throttle=+r),null!=(r=n.debounce)&&(e.debounce=+r),n.consume&&(e.consume=!0),e}const M={code:"_.$value",ast:{type:"Identifier",value:"value"}};function H(e,a,r){let l=e.events,s=e.update,o=e.encode,u=[],d={target:r};l||t.error("Signal update missing events specification."),t.isString(l)&&(l=n.selector(l,a.isSubscope()?"scope":"view")),l=t.array(l).filter(e=>e.signal||e.scale?(u.push(e),0):1),u.length>1&&(u=[I(u)]),l.length&&u.push(l.length>1?{merge:l}:l[0]),null!=o&&(s&&t.error("Signal encode and update are mutually exclusive."),s="encode(item(),"+t.stringValue(o)+")"),d.update=t.isString(s)?i.parseExpression(s,a):null!=s.expr?i.parseExpression(s.expr,a):null!=s.value?s.value:null!=s.signal?{$expr:M,$params:{$value:a.signalRef(s.signal)}}:t.error("Invalid signal update specification."),e.force&&(d.options={force:!0}),u.forEach(e=>a.addUpdate(t.extend(function(e,t){return{source:e.signal?t.signalRef(e.signal):e.scale?t.scaleRef(e.scale):A(e,t)}}(e,a),d)))}function I(e){return{signal:"["+e.map(e=>e.scale?'scale("'+e.scale+'")':e.signal)+"]"}}function X(e,n){let a=n.getSignal(e.name),r=e.update;e.init&&(r?t.error("Signals can not include both init and update expressions."):(r=e.init,a.initonly=!0)),r&&(r=i.parseExpression(r,n),a.update=r.$expr,a.params=r.$params),e.on&&e.on.forEach(e=>H(e,n,a.id))}const Y=e=>(t,i,n)=>j(e,i,t||void 0,n),N=Y("aggregate"),G=Y("axisticks"),Q=Y("bound"),J=Y("collect"),K=Y("compare"),Z=Y("datajoin"),ee=Y("encode"),te=Y("expression"),ie=Y("facet"),ne=Y("field"),ae=Y("key"),re=Y("legendentries"),le=Y("load"),se=Y("mark"),oe=Y("multiextent"),ue=Y("multivalues"),de=Y("overlap"),ce=Y("params"),fe=Y("prefacet"),pe=Y("projection"),ge=Y("proxy"),me=Y("relay"),he=Y("render"),ye=Y("scale"),be=Y("sieve"),xe=Y("sortitems"),ke=Y("viewlayout"),ve=Y("values");let $e=0;const Se={min:"min",max:"max",count:"sum"};function Oe(e,i){let n,r=i.getScale(e.name).params;var l;for(n in r.domain=we(e.domain,e,i),null!=e.range&&(r.range=function e(i,n,r){let l=i.range,s=n.config.range;if(l.signal)return n.signalRef(l.signal);if(t.isString(l)){if(s&&t.hasOwnProperty(s,l))return e(i=t.extend({},i,{range:s[l]}),n,r);"width"===l?l=[0,{signal:"width"}]:"height"===l?l=a.isDiscrete(i.type)?[0,{signal:"height"}]:[{signal:"height"},0]:t.error("Unrecognized scale range value: "+t.stringValue(l))}else{if(l.scheme)return r.scheme=t.isArray(l.scheme)?ze(l.scheme,n):Re(l.scheme,n),l.extent&&(r.schemeExtent=ze(l.extent,n)),void(l.count&&(r.schemeCount=Re(l.count,n)));if(l.step)return void(r.rangeStep=Re(l.step,n));if(a.isDiscrete(i.type)&&!t.isArray(l))return we(l,i,n);t.isArray(l)||t.error("Unsupported range type: "+t.stringValue(l))}return l.map(e=>(t.isArray(e)?ze:Re)(e,n))}(e,i,r)),null!=e.interpolate&&function(e,t){t.interpolate=Re(e.type||e),null!=e.gamma&&(t.interpolateGamma=Re(e.gamma))}(e.interpolate,r),null!=e.nice&&(r.nice=(l=e.nice,t.isObject(l)?{interval:Re(l.interval),step:Re(l.step)}:Re(l))),null!=e.bins&&(r.bins=function(e,i){return e.signal||t.isArray(e)?ze(e,i):i.objectProperty(e)}(e.bins,i)),e)t.hasOwnProperty(r,n)||"name"===n||(r[n]=Re(e[n],i))}function Re(e,i){return t.isObject(e)?e.signal?i.signalRef(e.signal):t.error("Unsupported object: "+t.stringValue(e)):e}function ze(e,t){return e.signal?t.signalRef(e.signal):e.map(e=>Re(e,t))}function je(e){t.error("Can not find data set: "+t.stringValue(e))}function we(e,i,n){if(e)return e.signal?n.signalRef(e.signal):(t.isArray(e)?We:e.fields?De:Pe)(e,i,n);null==i.domainMin&&null==i.domainMax||t.error("No scale domain defined for domainMin/domainMax to override.")}function We(e,t,i){return e.map(e=>Re(e,i))}function Pe(e,t,i){const n=i.getData(e.data);return n||je(e.data),a.isDiscrete(t.type)?n.valuesRef(i,e.field,Ce(e.sort,!1)):a.isQuantile(t.type)?n.domainRef(i,e.field):n.extentRef(i,e.field)}function De(e,i,n){const r=e.data,l=e.fields.reduce((function(e,i){return i=t.isString(i)?{data:r,field:i}:t.isArray(i)||i.signal?function(e,i){const n="_:vega:_"+$e++,a=J({});if(t.isArray(e))a.value={$ingest:e};else if(e.signal){const r="setdata("+t.stringValue(n)+","+e.signal+")";a.params.input=i.signalRef(r)}return i.addDataPipeline(n,[a,be({})]),{data:n,field:"data"}}(i,n):i,e.push(i),e}),[]);return(a.isDiscrete(i.type)?Ve:a.isQuantile(i.type)?Ee:_e)(e,n,l)}function Ve(e,t,i){let n,a,r,l,s,o=Ce(e.sort,!0);return n=i.map(e=>{const i=t.getData(e.data);return i||je(e.data),i.countsRef(t,e.field,o)}),a={groupby:D,pulse:n},o&&(r=o.op||"count",s=o.field?C(r,o.field):"count",a.ops=[Se[r]],a.fields=[t.fieldRef(s)],a.as=[s]),r=t.add(N(a)),l=t.add(J({pulse:W(r)})),s=t.add(ve({field:D,sort:t.sortRef(o),pulse:W(l)})),W(s)}function Ce(e,i){return e&&(e.field||e.op?e.field||"count"===e.op?i&&e.field&&e.op&&!Se[e.op]&&t.error("Multiple domain scales can not be sorted using "+e.op):t.error("No field provided for sort aggregate op: "+e.op):t.isObject(e)?e.field="key":e={field:"key"}),e}function Ee(e,t,i){const n=i.map(e=>{const i=t.getData(e.data);return i||je(e.data),i.domainRef(t,e.field)});return W(t.add(ue({values:n})))}function _e(e,t,i){const n=i.map(e=>{const i=t.getData(e.data);return i||je(e.data),i.extentRef(t,e.field)});return W(t.add(oe({extents:n})))}function Le(e,i,n){return t.isArray(e)?e.map(e=>Le(e,i,n)):t.isObject(e)?e.signal?n.signalRef(e.signal):"fit"===i?e:t.error("Unsupported parameter object: "+t.stringValue(e)):e}const Fe="top",Ae="value",Te=["size","shape","fill","stroke","strokeWidth","strokeDash","opacity"],Be={name:1,style:1,interactive:1},qe={value:0},Ue={value:1};function Me(e){return e.type="group",e.interactive=e.interactive||!1,e}function He(e,t){const i=(i,n)=>L(e[i],L(t[i],n));return i.isVertical=i=>"vertical"===L(e.direction,t.direction||(i?t.symbolDirection:t.gradientDirection)),i.gradientLength=()=>L(e.gradientLength,t.gradientLength||t.gradientWidth),i.gradientThickness=()=>L(e.gradientThickness,t.gradientThickness||t.gradientHeight),i.entryColumns=()=>L(e.columns,L(t.columns,+i.isVertical(!0))),i}function Ie(e,t){const i=t&&(t.update&&t.update[e]||t.enter&&t.enter[e]);return i&&i.signal?i:i?i.value:null}function Xe(e,t,i){return`item.anchor === 'start' ? ${e} : item.anchor === 'end' ? ${t} : ${i}`}const Ye=Xe(t.stringValue("left"),t.stringValue("right"),t.stringValue("center"));function Ne(e,i){return i?e?t.isObject(e)?Object.assign({},e,{offset:Ne(e.offset,i)}):{value:e,offset:i}:i:e}function Ge(e,t){return t?(e.name=t.name,e.style=t.style||e.style,e.interactive=!!t.interactive,e.encode=f(e.encode,t,Be)):e.interactive=!1,e}function Qe(e,i,n,a){let r,l,s,o,d,f,p=He(e,n),g=p.isVertical(),m=p.gradientThickness(),h=p.gradientLength();return g?(s=[0,1],o=[0,0],d=m,f=h):(s=[0,0],o=[1,0],d=h,f=m),r={enter:l={opacity:qe,x:qe,y:qe,width:u(d),height:u(f)},update:t.extend({},l,{opacity:Ue,fill:{gradient:i,start:s,stop:o}}),exit:{opacity:qe}},c(r,{stroke:p("gradientStrokeColor"),strokeWidth:p("gradientStrokeWidth")},{opacity:p("gradientOpacity")}),Ge({type:"rect",role:"legend-gradient",encode:r},a)}function Je(e,i,n,a,r){let l,s,o,d,f,p,g=He(e,n),m=g.isVertical(),h=g.gradientThickness(),y=g.gradientLength(),b="";return m?(o="y",f="y2",d="x",p="width",b="1-"):(o="x",f="x2",d="y",p="height"),s={opacity:qe,fill:{scale:i,field:Ae}},s[o]={signal:b+"datum.perc",mult:y},s[d]=qe,s[f]={signal:b+"datum.perc2",mult:y},s[p]=u(h),l={enter:s,update:t.extend({},s,{opacity:Ue}),exit:{opacity:qe}},c(l,{stroke:g("gradientStrokeColor"),strokeWidth:g("gradientStrokeWidth")},{opacity:g("gradientOpacity")}),Ge({type:"rect",role:"legend-band",key:Ae,from:r,encode:l},a)}function Ke(e,t,i,n){let a,r,l,s,o,d=He(e,t),f=d.isVertical(),p=u(d.gradientThickness()),g=d.gradientLength(),m=d("labelOverlap"),h="";return a={enter:r={opacity:qe},update:l={opacity:Ue,text:{field:"label"}},exit:{opacity:qe}},c(a,{fill:d("labelColor"),fillOpacity:d("labelOpacity"),font:d("labelFont"),fontSize:d("labelFontSize"),fontStyle:d("labelFontStyle"),fontWeight:d("labelFontWeight"),limit:L(e.labelLimit,t.gradientLabelLimit)}),f?(r.align={value:"left"},r.baseline=l.baseline={signal:'datum.perc<=0?"bottom":datum.perc>=1?"top":"middle"'},s="y",o="x",h="1-"):(r.align=l.align={signal:'datum.perc<=0?"left":datum.perc>=1?"right":"center"'},r.baseline={value:"top"},s="x",o="y"),r[s]=l[s]={signal:h+"datum.perc",mult:g},r[o]=l[o]=p,p.offset=L(e.labelOffset,t.gradientLabelOffset)||0,m=m?{separation:d("labelSeparation"),method:m,order:"datum.index"}:void 0,Ge({type:"text",role:"legend-label",style:"guide-label",key:Ae,from:n,encode:a,overlap:m},i)}function Ze(e,t,i,n,a){let r,l,s,o,d,p,g,m=He(e,t),h=i.entries,y=!(!h||!h.interactive),b=h?h.name:void 0,x=m("clipHeight"),k=m("symbolOffset"),v={data:"value"},$={},S=`(${a}) ? datum.offset : datum.size`,O=x?u(x):{field:"size"},R="datum.index",z=`max(1, ${a})`;O.mult=.5,$={enter:r={opacity:qe,x:{signal:S,mult:.5,offset:k},y:O},update:l={opacity:Ue,x:r.x,y:r.y},exit:{opacity:qe}};let j=null,w=null;return e.fill||(j=t.symbolBaseFillColor,w=t.symbolBaseStrokeColor),c($,{fill:m("symbolFillColor",j),shape:m("symbolType"),size:m("symbolSize"),stroke:m("symbolStrokeColor",w),strokeDash:m("symbolDash"),strokeDashOffset:m("symbolDashOffset"),strokeWidth:m("symbolStrokeWidth")},{opacity:m("symbolOpacity")}),Te.forEach((function(t){e[t]&&(l[t]=r[t]={scale:e[t],field:Ae})})),o=Ge({type:"symbol",role:"legend-symbol",key:Ae,from:v,clip:!!x||void 0,encode:$},i.symbols),s=u(k),s.offset=m("labelOffset"),$={enter:r={opacity:qe,x:{signal:S,offset:s},y:O},update:l={opacity:Ue,text:{field:"label"},x:r.x,y:r.y},exit:{opacity:qe}},c($,{align:m("labelAlign"),baseline:m("labelBaseline"),fill:m("labelColor"),fillOpacity:m("labelOpacity"),font:m("labelFont"),fontSize:m("labelFontSize"),fontStyle:m("labelFontStyle"),fontWeight:m("labelFontWeight"),limit:m("labelLimit")}),d=Ge({type:"text",role:"legend-label",style:"guide-label",key:Ae,from:v,encode:$},i.labels),$={enter:{noBound:{value:!x},width:qe,height:x?u(x):qe,opacity:qe},exit:{opacity:qe},update:l={opacity:Ue,row:{signal:null},column:{signal:null}}},m.isVertical(!0)?(p=`ceil(item.mark.items.length / ${z})`,l.row.signal=`${R}%${p}`,l.column.signal=`floor(${R} / ${p})`,g={field:["row",R]}):(l.row.signal=`floor(${R} / ${z})`,l.column.signal=`${R} % ${z}`,g={field:R}),l.column.signal=`(${a})?${l.column.signal}:${R}`,Me({role:"scope",from:n={facet:{data:n,name:"value",groupby:"index"}},encode:f($,h,Be),marks:[o,d],name:b,interactive:y,sort:g})}const et='item.orient === "left"',tt='item.orient === "right"',it=`(${et} || ${tt})`,nt="datum.vgrad && "+it,at=Xe('"top"','"bottom"','"middle"'),rt=`datum.vgrad && ${tt} ? (${Xe('"right"','"left"','"center"')}) : (${it} && !(datum.vgrad && ${et})) ? "left" : ${Ye}`,lt=`item._anchor || (${it} ? "middle" : "start")`,st=`${nt} ? (${et} ? -90 : 90) : 0`,ot=`${it} ? (datum.vgrad ? (${tt} ? "bottom" : "top") : ${at}) : "top"`;function ut(e,i){let n;return t.isObject(e)&&(e.signal?n=e.signal:e.path?n="pathShape("+dt(e.path)+")":e.sphere&&(n="geoShape("+dt(e.sphere)+', {type: "Sphere"})')),n?i.signalRef(n):!!e}function dt(e){return t.isObject(e)&&e.signal?e.signal:t.stringValue(e)}function ct(e){const t=e.role||"";return t.indexOf("axis")&&t.indexOf("legend")&&t.indexOf("title")?"group"===e.type?"scope":t||"mark":t}function ft(e){return{marktype:e.type,name:e.name||void 0,role:e.role||ct(e),zindex:+e.zindex||void 0,aria:e.aria,description:e.description}}function pt(e,t){return e&&e.signal?t.signalRef(e.signal):!1!==e}function gt(e,i){const n=r.definition(e.type);n||t.error("Unrecognized transform type: "+t.stringValue(e.type));const a=j(n.type.toLowerCase(),null,mt(n,e,i));return e.signal&&i.addSignal(e.signal,i.proxy(a)),a.metadata=n.metadata||{},a}function mt(e,t,i){let n,a,r,l={};for(a=0,r=e.params.length;a<r;++a)n=e.params[a],l[n.name]=ht(n,t,i);return l}function ht(e,i,n){const a=e.type,r=i[e.name];return"index"===a?function(e,i,n){t.isString(i.from)||t.error('Lookup "from" parameter must be a string literal.');return n.getData(i.from).lookupRef(n,i.key)}(0,i,n):void 0!==r?"param"===a?function(e,i,n){const a=i[e.name];return e.array?(t.isArray(a)||t.error("Expected an array of sub-parameters. Instead: "+t.stringValue(a)),a.map(t=>bt(e,t,n))):bt(e,a,n)}(e,i,n):"projection"===a?n.projectionRef(i[e.name]):e.array&&!E(r)?r.map(t=>yt(e,t,n)):yt(e,r,n):void(e.required&&t.error("Missing required "+t.stringValue(i.type)+" parameter: "+t.stringValue(e.name)))}function yt(e,n,a){const r=e.type;if(E(n))return $t(r)?t.error("Expression references can not be signals."):St(r)?a.fieldRef(n):Ot(r)?a.compareRef(n):a.signalRef(n.signal);{const t=e.expr||St(r);return t&&xt(n)?a.exprRef(n.expr,n.as):t&&kt(n)?P(n.field,n.as):$t(r)?i.parseExpression(n,a):vt(r)?W(a.getData(n).values):St(r)?P(n):Ot(r)?a.compareRef(n):n}}function bt(e,i,n){let a,r,l,s,o;for(s=0,o=e.params.length;s<o;++s){for(l in r=e.params[s],r.key)if(r.key[l]!==i[l]){r=null;break}if(r)break}return r||t.error("Unsupported parameter: "+t.stringValue(i)),a=t.extend(mt(r,i,n),r.key),W(n.add(ce(a)))}const xt=e=>e&&e.expr,kt=e=>e&&e.field,vt=e=>"data"===e,$t=e=>"expr"===e,St=e=>"field"===e,Ot=e=>"compare"===e;function Rt(e,t){return e.$ref?e:e.data&&e.data.$ref?e.data:W(t.getData(e.data).output)}function zt(e,t,i,n,a){this.scope=e,this.input=t,this.output=i,this.values=n,this.aggregate=a,this.index={}}function jt(e){return t.isString(e)?e:null}function wt(e,t,i){let n,a=C(i.op,i.field);if(t.ops){for(let e=0,i=t.as.length;e<i;++e)if(t.as[e]===a)return}else t.ops=["count"],t.fields=[null],t.as=["count"];i.op&&(t.ops.push((n=i.op.signal)?e.signalRef(n):i.op),t.fields.push(e.fieldRef(i.field)),t.as.push(a))}function Wt(e,i,n,a,r,l,s){let o,u,d=i[n]||(i[n]={}),c=function(e){return t.isObject(e)?("descending"===e.order?"-":"+")+C(e.op,e.field):""}(l),f=jt(r);if(null!=f&&(e=i.scope,f+=c?"|"+c:"",o=d[f]),!o){const t=l?{field:D,pulse:i.countsRef(e,r,l)}:{field:e.fieldRef(r),pulse:W(i.output)};c&&(t.sort=e.sortRef(l)),u=e.add(j(a,void 0,t)),s&&(i.index[r]=u),o=W(u),null!=f&&(d[f]=o)}return o}function Pt(e,t,n){let a,r,l=e.remove,s=e.insert,o=e.toggle,u=e.modify,d=e.values,c=t.add(w());a="if("+e.trigger+',modify("'+n+'",'+[s,l,o,u,d].map(e=>null==e?"null":e).join(",")+"),0)",r=i.parseExpression(a,t),c.update=r.$expr,c.params=r.$params}function Dt(e,i){let n,a,r,l,s,o,u,d,c,f,p,g,m,h,y=ct(e),b="group"===e.type,x=e.from&&e.from.facet,v=e.layout||"scope"===y||"frame"===y,$="mark"===y||v||x,S=e.overlap;r=function(e,i,n){let a,r,l,s,o;return e?(a=e.facet)&&(i||t.error("Only group marks can be faceted."),null!=a.field?s=o=Rt(a,n):(e.data?o=W(n.getData(e.data).aggregate):(l=gt(t.extend({type:"aggregate",groupby:t.array(a.groupby)},a.aggregate),n),l.params.key=n.keyRef(a.groupby),l.params.pulse=Rt(a,n),s=o=W(n.add(l))),r=n.keyRef(a.groupby,!0))):s=W(n.add(J(null,[{}]))),s||(s=Rt(e,n)),{key:r,pulse:s,parent:o}}(e.from,b,i),a=i.add(Z({key:r.key||(e.key?P(e.key):void 0),pulse:r.pulse,clean:!b})),f=W(a),a=l=i.add(J({pulse:f})),a=i.add(se({markdef:ft(e),interactive:pt(e.interactive,i),clip:ut(e.clip,i),context:{$context:!0},groups:i.lookup(),parent:i.signals.parent?i.signalRef("parent"):null,index:i.markpath(),pulse:W(a)})),p=W(a),a=s=i.add(ee(k(e.encode,e.type,y,e.style,i,{mod:!1,pulse:p}))),a.params.parent=i.encode(),e.transform&&e.transform.forEach(e=>{const n=gt(e,i),r=n.metadata;(r.generates||r.changes)&&t.error("Mark transforms should not generate new data."),r.nomod||(s.params.mod=!0),n.params.pulse=W(a),i.add(a=n)}),e.sort&&(a=i.add(xe({sort:i.compareRef(e.sort),pulse:W(a)}))),g=W(a),(x||v)&&(v=i.add(ke({layout:i.objectProperty(e.layout),legends:i.legends,mark:p,pulse:g})),m=W(v)),o=i.add(Q({mark:p,pulse:m||g})),h=W(o),b&&($&&(n=i.operators,n.pop(),v&&n.pop()),i.pushState(g,m||h,f),x?function(e,i,n){let a,r,l,s,o=e.from.facet,u=o.name,d=Rt(o,i);o.name||t.error("Facet must have a name: "+t.stringValue(o)),o.data||t.error("Facet must reference a data set: "+t.stringValue(o)),o.field?s=i.add(fe({field:i.fieldRef(o.field),pulse:d})):o.groupby?s=i.add(ie({key:i.keyRef(o.groupby),group:W(i.proxy(n.parent)),pulse:d})):t.error("Facet must specify groupby or field: "+t.stringValue(o)),a=i.fork(),r=a.add(J()),l=a.add(be({pulse:W(r)})),a.addData(u,new zt(a,r,r,l)),a.addSignal("parent",null),s.params.subflow={$subflow:a.parse(e).toRuntime()}}(e,i,r):$?function(e,t,i){const n=t.add(fe({pulse:i.pulse})),a=t.fork();a.add(be()),a.addSignal("parent",null),n.params.subflow={$subflow:a.parse(e).toRuntime()}}(e,i,r):i.parse(e),i.popState(),$&&(v&&n.push(v),n.push(o))),S&&(h=function(e,t,i){const n=e.method,a=e.bound,r=e.separation,l={separation:E(r)?i.signalRef(r.signal):r,method:E(n)?i.signalRef(n.signal):n,pulse:t};e.order&&(l.sort=i.compareRef({field:e.order}));if(a){const e=a.tolerance;l.boundTolerance=E(e)?i.signalRef(e.signal):+e,l.boundScale=i.scaleRef(a.scale),l.boundOrient=a.orient}return W(i.add(de(l)))}(S,h,i)),u=i.add(he({pulse:h})),d=i.add(be({pulse:W(u)},void 0,i.parent())),null!=e.name&&(c=e.name,i.addData(c,new zt(i,l,u,d)),e.on&&e.on.forEach(e=>{(e.insert||e.remove||e.toggle)&&t.error("Marks only support modify triggers."),Pt(e,i,c)}))}function Vt(e,n){let r,l,s,o,u,d,p,g,m=n.config.legend,h=e.encode||{},y=h.legend||{},b=y.name||void 0,x=y.interactive,k=y.style,v=He(e,m),$={},S=0;return Te.forEach(t=>e[t]?($[t]=e[t],S=S||e[t]):0),S||t.error("Missing valid scale for legend."),u=function(e,t){let i=e.type||"symbol";e.type||1!==function(e){return Te.reduce((function(t,i){return t+(e[i]?1:0)}),0)}(e)||!e.fill&&!e.stroke||(i=a.isContinuous(t)?"gradient":a.isDiscretizing(t)?"discrete":"symbol");return"gradient"!==i?i:a.isDiscretizing(t)?"discrete":"gradient"}(e,n.scaleType(S)),d={title:null!=e.title,scales:$,type:u,vgrad:"symbol"!==u&&v.isVertical()},p=W(n.add(J(null,[d]))),y=f(function(e,t,i){const n={enter:{},update:{}};return c(n,{orient:e("orient"),offset:e("offset"),padding:e("padding"),titlePadding:e("titlePadding"),cornerRadius:e("cornerRadius"),fill:e("fillColor"),stroke:e("strokeColor"),strokeWidth:i.strokeWidth,strokeDash:i.strokeDash,x:e("legendX"),y:e("legendY"),format:t.format,formatType:t.formatType}),n}(v,e,m),y,Be),r={enter:{x:{value:0},y:{value:0}}},g=W(n.add(re(s={type:u,scale:n.scaleRef(S),count:n.objectProperty(v("tickCount")),limit:n.property(v("symbolLimit")),values:n.objectProperty(e.values),minstep:n.property(e.tickMinStep),formatType:n.property(e.formatType),formatSpecifier:n.property(e.format)}))),"gradient"===u?(o=[Qe(e,S,m,h.gradient),Ke(e,m,h.labels,g)],s.count=s.count||n.signalRef(`max(2,2*floor((${F(v.gradientLength())})/100))`)):"discrete"===u?o=[Je(e,S,m,h.gradient,g),Ke(e,m,h.labels,g)]:(l=function(e,t){const i=He(e,t);return{align:i("gridAlign"),columns:i.entryColumns(),center:{row:!0,column:!1},padding:{row:i("rowPadding"),column:i("columnPadding")}}}(e,m),o=[Ze(e,m,h,g,F(l.columns))],s.size=function(e,t,n){const a=F(Ct("size",e,n)),r=F(Ct("strokeWidth",e,n)),l=F(function(e,t,i){return Ie("fontSize",e)||function(e,t,i){const n=t.config.style[i];return n&&n[e]}("fontSize",t,i)}(n[1].encode,t,"guide-label"));return i.parseExpression(`max(ceil(sqrt(${a})+${r}),${l})`,t)}(e,n,o[0].marks)),o=[Me({role:"legend-entry",from:p,encode:r,marks:o,layout:l,interactive:x})],d.title&&o.push(function(e,t,i,n){let a,r=He(e,t);return a={enter:{opacity:qe},update:{opacity:Ue,x:{field:{group:"padding"}},y:{field:{group:"padding"}}},exit:{opacity:qe}},c(a,{orient:r("titleOrient"),_anchor:r("titleAnchor"),anchor:{signal:lt},angle:{signal:st},align:{signal:rt},baseline:{signal:ot},text:e.title,fill:r("titleColor"),fillOpacity:r("titleOpacity"),font:r("titleFont"),fontSize:r("titleFontSize"),fontStyle:r("titleFontStyle"),fontWeight:r("titleFontWeight"),limit:r("titleLimit"),lineHeight:r("titleLineHeight")},{align:r("titleAlign"),baseline:r("titleBaseline")}),Ge({type:"text",role:"legend-title",style:"guide-title",from:n,encode:a},i)}(e,m,h.title,p)),Dt(Me({role:"legend",from:p,encode:y,marks:o,aria:v("aria"),description:v("description"),zindex:v("zindex"),name:b,interactive:x,style:k}),n)}function Ct(e,t,i){return t[e]?`scale("${t[e]}",datum)`:Ie(e,i[0].encode)}zt.fromEntries=function(e,t){let i=t.length,n=1,a=t[0],r=t[i-1],l=t[i-2],s=null;for(a&&"load"===a.type&&(a=t[1]),e.add(t[0]);n<i;++n)t[n].params.pulse=W(t[n-1]),e.add(t[n]),"aggregate"===t[n].type&&(s=t[n]);return new zt(e,a,l,r,s)},zt.prototype={countsRef(e,t,i){let n,a,r,l=this,s=l.counts||(l.counts={}),o=jt(t);return null!=o&&(e=l.scope,n=s[o]),n?i&&i.field&&wt(e,n.agg.params,i):(r={groupby:e.fieldRef(t,"key"),pulse:W(l.output)},i&&i.field&&wt(e,r,i),a=e.add(N(r)),n=e.add(J({pulse:W(a)})),n={agg:a,ref:W(n)},null!=o&&(s[o]=n)),n.ref},tuplesRef(){return W(this.values)},extentRef(e,t){return Wt(e,this,"extent","extent",t,!1)},domainRef(e,t){return Wt(e,this,"domain","values",t,!1)},valuesRef(e,t,i){return Wt(e,this,"vals","values",t,i||!0)},lookupRef(e,t){return Wt(e,this,"lookup","tupleindex",t,!1)},indataRef(e,t){return Wt(e,this,"indata","tupleindex",t,!0,!0)}};function Et(e,i){let n,a,r=He(e=t.isString(e)?{text:e}:e,i.config.title),l=e.encode||{},s=l.group||{},o=s.name||void 0,u=s.interactive,d=s.style,f=[];return n={},a=W(i.add(J(null,[n]))),f.push(function(e,t,i,n){const a={value:0},r=e.text,l={enter:{opacity:a},update:{opacity:{value:1}},exit:{opacity:a}};return c(l,{text:r,align:{signal:"item.mark.group.align"},angle:{signal:"item.mark.group.angle"},limit:{signal:"item.mark.group.limit"},baseline:"top",dx:t("dx"),dy:t("dy"),fill:t("color"),font:t("font"),fontSize:t("fontSize"),fontStyle:t("fontStyle"),fontWeight:t("fontWeight"),lineHeight:t("lineHeight")},{align:t("align"),angle:t("angle"),baseline:t("baseline")}),Ge({type:"text",role:"title-text",style:"group-title",from:n,encode:l},i)}(e,r,function(e){const i=e.encode;return i&&i.title||t.extend({name:e.name,interactive:e.interactive,style:e.style},i)}(e),a)),e.subtitle&&f.push(function(e,t,i,n){const a={value:0},r=e.subtitle,l={enter:{opacity:a},update:{opacity:{value:1}},exit:{opacity:a}};return c(l,{text:r,align:{signal:"item.mark.group.align"},angle:{signal:"item.mark.group.angle"},limit:{signal:"item.mark.group.limit"},baseline:"top",dx:t("dx"),dy:t("dy"),fill:t("subtitleColor"),font:t("subtitleFont"),fontSize:t("subtitleFontSize"),fontStyle:t("subtitleFontStyle"),fontWeight:t("subtitleFontWeight"),lineHeight:t("subtitleLineHeight")},{align:t("align"),angle:t("angle"),baseline:t("baseline")}),Ge({type:"text",role:"title-subtitle",style:"group-subtitle",from:n,encode:l},i)}(e,r,l.subtitle,a)),Dt(Me({role:"title",from:a,encode:_t(r,s),marks:f,aria:r("aria"),description:r("description"),zindex:r("zindex"),name:o,interactive:u,style:d}),i)}function _t(e,t){const i={enter:{},update:{}};return c(i,{orient:e("orient"),anchor:e("anchor"),align:{signal:Ye},angle:{signal:'item.orient==="left"?-90:item.orient==="right"?90:0'},limit:e("limit"),frame:e("frame"),offset:e("offset")||0,padding:e("subtitlePadding")}),f(i,t,Be)}function Lt(e,i){const n=[];e.transform&&e.transform.forEach(e=>{n.push(gt(e,i))}),e.on&&e.on.forEach((function(t){Pt(t,i,e.name)})),i.addDataPipeline(e.name,function(e,i,n){let a,r,l,s,o,u=[],d=null,c=!1,f=!1;e.values?_(e.values)||_(e.format)?(u.push(At(i,e)),u.push(d=Ft())):u.push(d=Ft({$ingest:e.values,$format:e.format})):e.url?_(e.url)||_(e.format)?(u.push(At(i,e)),u.push(d=Ft())):u.push(d=Ft({$request:e.url,$format:e.format})):e.source&&(d=a=t.array(e.source).map(e=>W(i.getData(e).output)),u.push(null));for(r=0,l=n.length;r<l;++r)s=n[r],o=s.metadata,d||o.source||u.push(d=Ft()),u.push(s),o.generates&&(f=!0),o.modifies&&!f&&(c=!0),o.source?d=s:o.changes&&(d=null);a&&(l=a.length-1,u[0]=me({derive:c,pulse:l?a:a[0]}),(c||l)&&u.splice(1,0,Ft()));d||u.push(Ft());return u.push(be({})),u}(e,i,n))}function Ft(e){const t=J({},e);return t.metadata={source:!0},t}function At(e,t){return le({url:t.url?e.property(t.url):void 0,async:t.async?e.property(t.async):void 0,values:t.values?e.property(t.values):void 0,format:e.objectProperty(t.format)})}const Tt=e=>"bottom"===e||e===Fe,Bt=(e,t,i)=>E(e)?Xt(e.signal,t,i):"left"===e||e===Fe?t:i,qt=(e,t,i)=>E(e)?Ht(e.signal,t,i):Tt(e)?t:i,Ut=(e,t,i)=>E(e)?It(e.signal,t,i):Tt(e)?i:t,Mt=(e,t,i)=>E(e)?Yt(e.signal,t,i):e===Fe?{value:t}:{value:i},Ht=(e,t,i)=>Gt(`${e} === 'top' || ${e} === 'bottom'`,t,i),It=(e,t,i)=>Gt(`${e} !== 'top' && ${e} !== 'bottom'`,t,i),Xt=(e,t,i)=>Jt(`${e} === 'left' || ${e} === 'top'`,t,i),Yt=(e,t,i)=>Jt(e+" === 'top'",t,i),Nt=(e,t,i)=>Jt(e+" === 'right'",t,i),Gt=(e,i,n)=>(i=null!=i?u(i):i,n=null!=n?u(n):n,Qt(i)&&Qt(n)?{signal:`${e} ? (${i=i?i.signal||t.stringValue(i.value):null}) : (${n=n?n.signal||t.stringValue(n.value):null})`}:[t.extend({test:e},i)].concat(n||[])),Qt=e=>null==e||1===Object.keys(e).length,Jt=(e,t,i)=>({signal:`${e} ? (${Kt(t)}) : (${Kt(i)})`}),Kt=e=>E(e)?e.signal:null==e?null:t.stringValue(e),Zt=(e,t)=>{const i=e.signal;return i&&i.endsWith("(null)")?{signal:i.slice(0,-6)+t.signal}:e};function ei(e,i,n,a){let r;if(i&&t.hasOwnProperty(i,e))return i[e];if(t.hasOwnProperty(n,e))return n[e];if(e.startsWith("title")){switch(e){case"titleColor":r="fill";break;case"titleFont":case"titleFontSize":case"titleFontWeight":r=e[5].toLowerCase()+e.slice(6)}return a["guide-title"][r]}if(e.startsWith("label")){switch(e){case"labelColor":r="fill";break;case"labelFont":case"labelFontSize":r=e[5].toLowerCase()+e.slice(6)}return a["guide-label"][r]}return null}function ti(e){const t={};for(const i of e)if(i)for(const e in i)t[e]=1;return Object.keys(t)}function ii(e,t){return{scale:e.scale,range:t}}function ni(e,i,n,a,r){let l,s,o,u,d,f,p,g,m=He(e,i),h=e.orient,y=e.gridScale,b=Bt(h,1,-1),x=function(e,i){if(1===i);else if(t.isObject(e)){let n=e=t.extend({},e);for(;null!=n.mult;){if(!t.isObject(n.mult))return n.mult=E(i)?{signal:`(${n.mult}) * (${i.signal})`}:n.mult*i,e;n=n.mult=t.extend({},n.mult)}n.mult=i}else e=E(i)?{signal:`(${i.signal}) * (${e||0})`}:i*(e||0);return e}(e.offset,b);return l={enter:s={opacity:qe},update:u={opacity:Ue},exit:o={opacity:qe}},c(l,{stroke:m("gridColor"),strokeCap:m("gridCap"),strokeDash:m("gridDash"),strokeDashOffset:m("gridDashOffset"),strokeOpacity:m("gridOpacity"),strokeWidth:m("gridWidth")}),d={scale:e.scale,field:Ae,band:r.band,extra:r.extra,offset:r.offset,round:m("tickRound")},g=qt(h,{signal:"height"},{signal:"width"}),f=y?{scale:y,range:0,mult:b,offset:x}:{value:0,offset:x},p=y?{scale:y,range:1,mult:b,offset:x}:t.extend(g,{mult:b,offset:x}),s.x=u.x=qt(h,d,f),s.y=u.y=Ut(h,d,f),s.x2=u.x2=Ut(h,p),s.y2=u.y2=qt(h,p),o.x=qt(h,d),o.y=Ut(h,d),Ge({type:"rule",role:"axis-grid",key:Ae,from:a,encode:l},n)}function ai(e,t,i,n,a){return{signal:'flush(range("'+e+'"), scale("'+e+'", datum.value), '+t+","+i+","+n+","+a+")"}}function ri(e,t,i,n,a,r){let l,s,o,d,f,p,g,m,h,y,b=He(e,t),x=e.orient,k=e.scale,v=Bt(x,-1,1),$=F(b("labelFlush")),S=F(b("labelFlushOffset")),O=0===$||!!$,R=b("labelAlign"),z=b("labelBaseline");return d=u(a),d.mult=v,d.offset=u(b("labelPadding")||0),d.offset.mult=v,f={scale:k,field:Ae,band:.5,offset:Ne(r.offset,b("labelOffset"))},p=qt(x,O?ai(k,$,'"left"','"right"','"center"'):{value:"center"},((e,t,i)=>E(e)?Nt(e.signal,t,i):"right"===e?{value:t}:{value:i})(x,"left","right")),g=qt(x,Mt(x,"bottom","top"),O?ai(k,$,'"top"','"bottom"','"middle"'):{value:"middle"}),y=ai(k,$,`-(${S})`,S,0),O=O&&S,s={opacity:qe,x:qt(x,f,d),y:Ut(x,f,d)},l={enter:s,update:o={opacity:Ue,text:{field:"label"},x:s.x,y:s.y,align:p,baseline:g},exit:{opacity:qe,x:s.x,y:s.y}},c(l,{dx:!R&&O?qt(x,y):null,dy:!z&&O?Ut(x,y):null}),c(l,{angle:b("labelAngle"),fill:b("labelColor"),fillOpacity:b("labelOpacity"),font:b("labelFont"),fontSize:b("labelFontSize"),fontWeight:b("labelFontWeight"),fontStyle:b("labelFontStyle"),limit:b("labelLimit"),lineHeight:b("labelLineHeight")},{align:R,baseline:z}),m=b("labelBound"),h=b("labelOverlap"),h=h||m?{separation:b("labelSeparation"),method:h,order:"datum.index",bound:m?{scale:k,orient:x,tolerance:m}:null}:void 0,o.align!==p&&(o.align=Zt(o.align,p)),o.baseline!==g&&(o.baseline=Zt(o.baseline,g)),Ge({type:"text",role:"axis-label",style:"guide-label",key:Ae,from:n,encode:l,overlap:h},i)}function li(e,i,n,a){let r,l,s,o,d=He(e,i),f=e.orient,g=Bt(f,-1,1);return r={enter:l={opacity:qe,anchor:u(d("titleAnchor",null)),align:{signal:Ye}},update:s=t.extend({},l,{opacity:Ue,text:u(e.title)}),exit:{opacity:qe}},o={signal:`lerp(range("${e.scale}"), ${Xe(0,1,.5)})`},s.x=qt(f,o),s.y=Ut(f,o),l.angle=qt(f,qe,((e,t)=>0===t?0:E(e)?{signal:`(${e.signal}) * ${t}`}:{value:e*t})(g,90)),l.baseline=qt(f,Mt(f,"bottom",Fe),{value:"bottom"}),s.angle=l.angle,s.baseline=l.baseline,c(r,{fill:d("titleColor"),fillOpacity:d("titleOpacity"),font:d("titleFont"),fontSize:d("titleFontSize"),fontStyle:d("titleFontStyle"),fontWeight:d("titleFontWeight"),limit:d("titleLimit"),lineHeight:d("titleLineHeight")},{align:d("titleAlign"),angle:d("titleAngle"),baseline:d("titleBaseline")}),function(e,t,i,n){const a=(e,t)=>null!=e?(i.update[t]=Zt(u(e),i.update[t]),!1):!p(t,n),r=a(e("titleX"),"x"),l=a(e("titleY"),"y");i.enter.auto=l===r?u(l):qt(t,u(l),u(r))}(d,f,r,n),r.update.align=Zt(r.update.align,l.align),r.update.angle=Zt(r.update.angle,l.angle),r.update.baseline=Zt(r.update.baseline,l.baseline),Ge({type:"text",role:"axis-title",style:"guide-title",from:a,encode:r},n)}function si(e,i){let n,a,r,l,s,o=function(e,i){var n,a,r,l,s,o,u,d,c=i.config,f=c.style,p=c.axis,g="band"===i.scaleType(e.scale)&&c.axisBand,m=e.orient;if(E(m)){const e=ti([c.axisX,c.axisY]),t=ti([c.axisTop,c.axisBottom,c.axisLeft,c.axisRight]);for(r of(n={},e))n[r]=qt(m,ei(r,c.axisX,p,f),ei(r,c.axisY,p,f));for(r of(a={},t))a[r]=(l=m.signal,s=ei(r,c.axisTop,p,f),o=ei(r,c.axisBottom,p,f),u=ei(r,c.axisLeft,p,f),d=ei(r,c.axisRight,p,f),{signal:(null!=u?`${l} === 'left' ? (${Kt(u)}) : `:"")+(null!=o?`${l} === 'bottom' ? (${Kt(o)}) : `:"")+(null!=d?`${l} === 'right' ? (${Kt(d)}) : `:"")+(null!=s?`${l} === 'top' ? (${Kt(s)}) : `:"")+"(null)"})}else n=m===Fe||"bottom"===m?c.axisX:c.axisY,a=c["axis"+m[0].toUpperCase()+m.slice(1)];return n||a||g?t.extend({},p,n,a,g):p}(e,i),d=e.encode||{},p=d.axis||{},g=p.name||void 0,m=p.interactive,h=p.style,y=He(e,o),b=function(e){let i,n,a=e("tickBand"),r=e("tickOffset");return a?a.signal?(i={signal:`(${a.signal}) === 'extent' ? 1 : 0.5`},n={signal:`(${a.signal}) === 'extent'`},t.isObject(r)||(r={signal:`(${a.signal}) === 'extent' ? 0 : ${r}`})):"extent"===a?(i=1,n=!0,r=0):(i=.5,n=!1):(i=e("bandPosition"),n=e("tickExtra")),{extra:n,band:i,offset:r}}(y);return n={scale:e.scale,ticks:!!y("ticks"),labels:!!y("labels"),grid:!!y("grid"),domain:!!y("domain"),title:null!=e.title},a=W(i.add(J({},[n]))),p=f(function(e,t){const i={enter:{},update:{}};return c(i,{orient:e("orient"),offset:e("offset")||0,position:L(t.position,0),titlePadding:e("titlePadding"),minExtent:e("minExtent"),maxExtent:e("maxExtent"),range:{signal:`abs(span(range("${t.scale}")))`},translate:e("translate"),format:t.format,formatType:t.formatType}),i}(y,e),p,Be),r=W(i.add(G({scale:i.scaleRef(e.scale),extra:i.property(b.extra),count:i.objectProperty(e.tickCount),values:i.objectProperty(e.values),minstep:i.property(e.tickMinStep),formatType:i.property(e.formatType),formatSpecifier:i.property(e.format)}))),s=[],n.grid&&s.push(ni(e,o,d.grid,r,b)),n.ticks&&(l=y("tickSize"),s.push(function(e,t,i,n,a,r){let l,s,o,d,f,p,g=He(e,t),m=e.orient,h=Bt(m,-1,1);return l={enter:s={opacity:qe},update:d={opacity:Ue},exit:o={opacity:qe}},c(l,{stroke:g("tickColor"),strokeCap:g("tickCap"),strokeDash:g("tickDash"),strokeDashOffset:g("tickDashOffset"),strokeOpacity:g("tickOpacity"),strokeWidth:g("tickWidth")}),f=u(a),f.mult=h,p={scale:e.scale,field:Ae,band:r.band,extra:r.extra,offset:r.offset,round:g("tickRound")},d.y=s.y=qt(m,qe,p),d.y2=s.y2=qt(m,f),o.x=qt(m,p),d.x=s.x=Ut(m,qe,p),d.x2=s.x2=Ut(m,f),o.y=Ut(m,p),Ge({type:"rule",role:"axis-tick",key:Ae,from:n,encode:l},i)}(e,o,d.ticks,r,l,b))),n.labels&&(l=n.ticks?l:0,s.push(ri(e,o,d.labels,r,l,b))),n.domain&&s.push(function(e,t,i,n){let a,r,l,s=He(e,t),o=e.orient;a={enter:r={opacity:qe},update:l={opacity:Ue},exit:{opacity:qe}},c(a,{stroke:s("domainColor"),strokeCap:s("domainCap"),strokeDash:s("domainDash"),strokeDashOffset:s("domainDashOffset"),strokeWidth:s("domainWidth"),strokeOpacity:s("domainOpacity")});const u=ii(e,0),d=ii(e,1);return r.x=l.x=qt(o,u,qe),r.x2=l.x2=qt(o,d),r.y=l.y=Ut(o,u,qe),r.y2=l.y2=Ut(o,d),Ge({type:"rule",role:"axis-domain",from:n,encode:a},i)}(e,o,d.domain,a)),n.title&&s.push(li(e,o,d.title,a)),Dt(Me({role:"axis",from:a,encode:p,marks:s,aria:y("aria"),description:y("description"),zindex:y("zindex"),name:g,interactive:m,style:h}),i)}function oi(e,i,n){const r=t.array(e.signals),l=t.array(e.scales);return n||r.forEach(e=>R(e,i)),t.array(e.projections).forEach(e=>function(e,t){const i=t.config.projection||{},n={};for(const i in e)"name"!==i&&(n[i]=Le(e[i],i,t));for(const e in i)null==n[e]&&(n[e]=Le(i[e],e,t));t.addProjection(e.name,n)}(e,i)),l.forEach(e=>function(e,i){const n=e.type||"linear";a.isValidScaleType(n)||t.error("Unrecognized scale type: "+t.stringValue(n)),i.addScale(e.name,{type:n,domain:void 0})}(e,i)),t.array(e.data).forEach(e=>Lt(e,i)),l.forEach(e=>Oe(e,i)),(n||r).forEach(e=>X(e,i)),t.array(e.axes).forEach(e=>si(e,i)),t.array(e.marks).forEach(e=>Dt(e,i)),t.array(e.legends).forEach(e=>Vt(e,i)),e.title&&Et(e.title,i),i.parseLambdas(),i}function ui(e,i){const n=i.config,a=W(i.root=i.add(w())),r=function(e,i){const n=t=>L(e[t],i[t]),a=[di("background",n("background")),di("autosize",l(n("autosize"))),di("padding",o(n("padding"))),di("width",n("width")||0),di("height",n("height")||0)],r=a.reduce((e,t)=>(e[t.name]=t,e),{}),s={};return t.array(e.signals).forEach(e=>{t.hasOwnProperty(r,e.name)?e=t.extend(r[e.name],e):a.push(e),s[e.name]=e}),t.array(i.signals).forEach(e=>{t.hasOwnProperty(s,e.name)||t.hasOwnProperty(r,e.name)||a.push(e)}),a}(e,n);r.forEach(e=>R(e,i)),i.description=e.description||n.description,i.eventConfig=n.events,i.legends=i.objectProperty(n.legend&&n.legend.layout),i.locale=n.locale;const s=i.add(J()),u=i.add(ee(k((e=>f({enter:{x:{value:0},y:{value:0}},update:{width:{signal:"width"},height:{signal:"height"}}},e))(e.encode),"group","frame",e.style,i,{pulse:W(s)}))),d=i.add(ke({layout:i.objectProperty(e.layout),legends:i.legends,autosize:i.signalRef("autosize"),mark:a,pulse:W(u)}));i.operators.pop(),i.pushState(W(u),W(d),null),oi(e,i,r),i.operators.push(d);let c=i.add(Q({mark:a,pulse:W(d)}));return c=i.add(he({pulse:W(c)})),c=i.add(be({pulse:W(c)})),i.addData("root",new zt(i,s,s,c)),i}function di(e,t){return t&&t.signal?{name:e,update:t.signal}:{name:e,value:t}}function ci(e,t){this.config=e||{},this.options=t||{},this.bindings=[],this.field={},this.signals={},this.lambdas={},this.scales={},this.events={},this.data={},this.streams=[],this.updates=[],this.operators=[],this.eventConfig=null,this.locale=null,this._id=0,this._subid=0,this._nextsub=[0],this._parent=[],this._encode=[],this._lookup=[],this._markpath=[]}function fi(e){this.config=e.config,this.options=e.options,this.legends=e.legends,this.field=Object.create(e.field),this.signals=Object.create(e.signals),this.lambdas=Object.create(e.lambdas),this.scales=Object.create(e.scales),this.events=Object.create(e.events),this.data=Object.create(e.data),this.streams=[],this.updates=[],this.operators=[],this._id=0,this._subid=++e._nextsub[0],this._nextsub=e._nextsub,this._parent=e._parent.slice(),this._encode=e._encode.slice(),this._lookup=e._lookup.slice(),this._markpath=e._markpath}function pi(e){return(t.isArray(e)?gi:mi)(e)}function gi(e){let i,n="[",a=0,r=e.length;for(;a<r;++a)i=e[a],n+=(a>0?",":"")+(t.isObject(i)?i.signal||pi(i):t.stringValue(i));return n+"]"}function mi(e){let i,n,a="{",r=0;for(i in e)n=e[i],a+=(++r>1?",":"")+t.stringValue(i)+":"+(t.isObject(n)?n.signal||pi(n):t.stringValue(n));return a+"}"}function hi(){return{description:"Vega visualization",padding:0,autosize:"pad",background:null,events:{defaults:{allow:["wheel"]}},group:null,mark:null,arc:{fill:"#4c78a8"},area:{fill:"#4c78a8"},image:null,line:{stroke:"#4c78a8",strokeWidth:2},path:{stroke:"#4c78a8"},rect:{fill:"#4c78a8"},rule:{stroke:"#000"},shape:{stroke:"#4c78a8"},symbol:{fill:"#4c78a8",size:64},text:{fill:"#000",font:"sans-serif",fontSize:11},trail:{fill:"#4c78a8",size:2},style:{"guide-label":{fill:"#000",font:"sans-serif",fontSize:10},"guide-title":{fill:"#000",font:"sans-serif",fontSize:11,fontWeight:"bold"},"group-title":{fill:"#000",font:"sans-serif",fontSize:13,fontWeight:"bold"},"group-subtitle":{fill:"#000",font:"sans-serif",fontSize:12},point:{size:30,strokeWidth:2,shape:"circle"},circle:{size:30,strokeWidth:2},square:{size:30,strokeWidth:2,shape:"square"},cell:{fill:"transparent",stroke:"#ddd"}},title:{orient:"top",anchor:"middle",offset:4,subtitlePadding:3},axis:{minExtent:0,maxExtent:200,bandPosition:.5,domain:!0,domainWidth:1,domainColor:"#888",grid:!1,gridWidth:1,gridColor:"#ddd",labels:!0,labelAngle:0,labelLimit:180,labelOffset:0,labelPadding:2,ticks:!0,tickColor:"#888",tickOffset:0,tickRound:!0,tickSize:5,tickWidth:1,titlePadding:4},axisBand:{tickOffset:-.5},projection:{type:"mercator"},legend:{orient:"right",padding:0,gridAlign:"each",columnPadding:10,rowPadding:2,symbolDirection:"vertical",gradientDirection:"vertical",gradientLength:200,gradientThickness:16,gradientStrokeColor:"#ddd",gradientStrokeWidth:0,gradientLabelOffset:2,labelAlign:"left",labelBaseline:"middle",labelLimit:160,labelOffset:4,labelOverlap:!0,symbolLimit:30,symbolType:"circle",symbolSize:100,symbolOffset:0,symbolStrokeWidth:1.5,symbolBaseFillColor:"transparent",symbolBaseStrokeColor:"#888",titleLimit:180,titleOrient:"top",titlePadding:5,layout:{offset:18,direction:"horizontal",left:{direction:"vertical"},right:{direction:"vertical"}}},range:{category:{scheme:"tableau10"},ordinal:{scheme:"blues"},heatmap:{scheme:"yellowgreenblue"},ramp:{scheme:"blues"},diverging:{scheme:"blueorange",extent:[1,0]},symbol:["circle","square","triangle-up","cross","diamond","triangle-right","triangle-down","triangle-left"]}}}ci.prototype=fi.prototype={parse(e){return oi(e,this)},fork(){return new fi(this)},isSubscope(){return this._subid>0},toRuntime(){return this.finish(),{description:this.description,operators:this.operators,streams:this.streams,updates:this.updates,bindings:this.bindings,eventConfig:this.eventConfig,locale:this.locale}},id(){return(this._subid?this._subid+":":0)+this._id++},add(e){return this.operators.push(e),e.id=this.id(),e.refs&&(e.refs.forEach((function(t){t.$ref=e.id})),e.refs=null),e},proxy(e){const t=e instanceof z?W(e):e;return this.add(ge({value:t}))},addStream(e){return this.streams.push(e),e.id=this.id(),e},addUpdate(e){return this.updates.push(e),e},finish(){let e,t;for(e in this.root&&(this.root.root=!0),this.signals)this.signals[e].signal=e;for(e in this.scales)this.scales[e].scale=e;function i(e,t,i){let n,a;e&&(n=e.data||(e.data={}),a=n[t]||(n[t]=[]),a.push(i))}for(e in this.data){t=this.data[e],i(t.input,e,"input"),i(t.output,e,"output"),i(t.values,e,"values");for(const n in t.index)i(t.index[n],e,"index:"+n)}return this},pushState(e,t,i){this._encode.push(W(this.add(be({pulse:e})))),this._parent.push(t),this._lookup.push(i?W(this.proxy(i)):null),this._markpath.push(-1)},popState(){this._encode.pop(),this._parent.pop(),this._lookup.pop(),this._markpath.pop()},parent(){return t.peek(this._parent)},encode(){return t.peek(this._encode)},lookup(){return t.peek(this._lookup)},markpath(){const e=this._markpath;return++e[e.length-1]},fieldRef(e,i){if(t.isString(e))return P(e,i);e.signal||t.error("Unsupported field reference: "+t.stringValue(e));let n=e.signal,a=this.field[n];if(!a){const e={name:this.signalRef(n)};i&&(e.as=i),this.field[n]=a=W(this.add(ne(e)))}return a},compareRef(e){let i=!1;const n=e=>E(e)?(i=!0,this.signalRef(e.signal)):function(e){return e&&e.expr}(e)?(i=!0,this.exprRef(e.expr)):e,a=t.array(e.field).map(n),r=t.array(e.order).map(n);return i?W(this.add(K({fields:a,orders:r}))):V(a,r)},keyRef(e,i){let n=!1;const a=this.signals;return e=t.array(e).map(e=>E(e)?(n=!0,W(a[e.signal])):e),n?W(this.add(ae({fields:e,flat:i}))):function(e,t){const i={$key:e};return t&&(i.$flat=!0),i}(e,i)},sortRef(e){if(!e)return e;const t=C(e.op,e.field),i=e.order||"ascending";return i.signal?W(this.add(K({fields:t,orders:this.signalRef(i.signal)}))):V(t,i)},event(e,t){const i=e+":"+t;if(!this.events[i]){const n=this.id();this.streams.push({id:n,source:e,type:t}),this.events[i]=n}return this.events[i]},hasOwnSignal(e){return t.hasOwnProperty(this.signals,e)},addSignal(e,i){this.hasOwnSignal(e)&&t.error("Duplicate signal name: "+t.stringValue(e));const n=i instanceof z?i:this.add(w(i));return this.signals[e]=n},getSignal(e){return this.signals[e]||t.error("Unrecognized signal name: "+t.stringValue(e)),this.signals[e]},signalRef(e){return this.signals[e]?W(this.signals[e]):(t.hasOwnProperty(this.lambdas,e)||(this.lambdas[e]=this.add(w(null))),W(this.lambdas[e]))},parseLambdas(){const e=Object.keys(this.lambdas);for(let t=0,n=e.length;t<n;++t){const n=e[t],a=i.parseExpression(n,this),r=this.lambdas[n];r.params=a.$params,r.update=a.$expr}},property(e){return e&&e.signal?this.signalRef(e.signal):e},objectProperty(e){return e&&t.isObject(e)?this.signalRef(e.signal||pi(e)):e},exprRef(e,t){const n={expr:i.parseExpression(e,this)};return t&&(n.expr.$name=t),W(this.add(te(n)))},addBinding(e,i){this.bindings||t.error("Nested signals do not support binding: "+t.stringValue(e)),this.bindings.push(t.extend({signal:e},i))},addScaleProj(e,i){t.hasOwnProperty(this.scales,e)&&t.error("Duplicate scale or projection name: "+t.stringValue(e)),this.scales[e]=this.add(i)},addScale(e,t){this.addScaleProj(e,ye(t))},addProjection(e,t){this.addScaleProj(e,pe(t))},getScale(e){return this.scales[e]||t.error("Unrecognized scale name: "+t.stringValue(e)),this.scales[e]},scaleRef(e){return W(this.getScale(e))},scaleType(e){return this.getScale(e).params.type},projectionRef(e){return this.scaleRef(e)},projectionType(e){return this.scaleType(e)},addData(e,i){return t.hasOwnProperty(this.data,e)&&t.error("Duplicate data set name: "+t.stringValue(e)),this.data[e]=i},getData(e){return this.data[e]||t.error("Undefined data set name: "+t.stringValue(e)),this.data[e]},addDataPipeline(e,i){return t.hasOwnProperty(this.data,e)&&t.error("Duplicate data set name: "+t.stringValue(e)),this.addData(e,zt.fromEntries(this,i))}},e.AxisDomainRole="axis-domain",e.AxisGridRole="axis-grid",e.AxisLabelRole="axis-label",e.AxisRole="axis",e.AxisTickRole="axis-tick",e.AxisTitleRole="axis-title",e.DataScope=zt,e.FrameRole="frame",e.LegendEntryRole="legend-entry",e.LegendLabelRole="legend-label",e.LegendRole="legend",e.LegendSymbolRole="legend-symbol",e.LegendTitleRole="legend-title",e.MarkRole="mark",e.Scope=ci,e.ScopeRole="scope",e.config=hi,e.parse=function(e,i,n){return t.isObject(e)||t.error("Input Vega specification must be an object."),ui(e,new ci(i=t.mergeConfig({description:"Vega visualization",padding:0,autosize:"pad",background:null,events:{defaults:{allow:["wheel"]}},group:null,mark:null,arc:{fill:"#4c78a8"},area:{fill:"#4c78a8"},image:null,line:{stroke:"#4c78a8",strokeWidth:2},path:{stroke:"#4c78a8"},rect:{fill:"#4c78a8"},rule:{stroke:"#000"},shape:{stroke:"#4c78a8"},symbol:{fill:"#4c78a8",size:64},text:{fill:"#000",font:"sans-serif",fontSize:11},trail:{fill:"#4c78a8",size:2},style:{"guide-label":{fill:"#000",font:"sans-serif",fontSize:10},"guide-title":{fill:"#000",font:"sans-serif",fontSize:11,fontWeight:"bold"},"group-title":{fill:"#000",font:"sans-serif",fontSize:13,fontWeight:"bold"},"group-subtitle":{fill:"#000",font:"sans-serif",fontSize:12},point:{size:30,strokeWidth:2,shape:"circle"},circle:{size:30,strokeWidth:2},square:{size:30,strokeWidth:2,shape:"square"},cell:{fill:"transparent",stroke:"#ddd"}},title:{orient:"top",anchor:"middle",offset:4,subtitlePadding:3},axis:{minExtent:0,maxExtent:200,bandPosition:.5,domain:!0,domainWidth:1,domainColor:"#888",grid:!1,gridWidth:1,gridColor:"#ddd",labels:!0,labelAngle:0,labelLimit:180,labelOffset:0,labelPadding:2,ticks:!0,tickColor:"#888",tickOffset:0,tickRound:!0,tickSize:5,tickWidth:1,titlePadding:4},axisBand:{tickOffset:-.5},projection:{type:"mercator"},legend:{orient:"right",padding:0,gridAlign:"each",columnPadding:10,rowPadding:2,symbolDirection:"vertical",gradientDirection:"vertical",gradientLength:200,gradientThickness:16,gradientStrokeColor:"#ddd",gradientStrokeWidth:0,gradientLabelOffset:2,labelAlign:"left",labelBaseline:"middle",labelLimit:160,labelOffset:4,labelOverlap:!0,symbolLimit:30,symbolType:"circle",symbolSize:100,symbolOffset:0,symbolStrokeWidth:1.5,symbolBaseFillColor:"transparent",symbolBaseStrokeColor:"#888",titleLimit:180,titleOrient:"top",titlePadding:5,layout:{offset:18,direction:"horizontal",left:{direction:"vertical"},right:{direction:"vertical"}}},range:{category:{scheme:"tableau10"},ordinal:{scheme:"blues"},heatmap:{scheme:"yellowgreenblue"},ramp:{scheme:"blues"},diverging:{scheme:"blueorange",extent:[1,0]},symbol:["circle","square","triangle-up","cross","diamond","triangle-right","triangle-down","triangle-left"]}},i,e.config),n)).toRuntime()},e.signal=R,e.signalUpdates=X,e.stream=A,Object.defineProperty(e,"__esModule",{value:!0})}));
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vega-util"),require("vega-functions"),require("vega-event-selector"),require("vega-scale"),require("vega-dataflow")):"function"==typeof define&&define.amd?define(["exports","vega-util","vega-functions","vega-event-selector","vega-scale","vega-dataflow"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).vega={},e.vega,e.vega,e.vega,e.vega,e.vega)}(this,(function(e,t,n,i,a,r){"use strict";function s(e){return t.isObject(e)?e:{type:e||"pad"}}const l=e=>+e||0;function o(e){return t.isObject(e)?e.signal?e:{top:l(e.top),bottom:l(e.bottom),left:l(e.left),right:l(e.right)}:{top:n=l(e),bottom:n,left:n,right:n};var n}const u=e=>t.isObject(e)&&!t.isArray(e)?t.extend({},e):{value:e};function c(e,n,i,a){if(null!=i){return t.isObject(i)&&!t.isArray(i)||t.isArray(i)&&i.length&&t.isObject(i[0])?e.update[n]=i:e[a||"enter"][n]={value:i},1}return 0}function d(e,t,n){for(const n in t)c(e,n,t[n]);for(const t in n)c(e,t,n[t],"update")}function p(e,n,i){for(const a in n)i&&t.hasOwnProperty(i,a)||(e[a]=t.extend(e[a]||{},n[a]));return e}function f(e,t){return t&&(t.enter&&t.enter[e]||t.update&&t.update[e])}const g="mark",m="frame",h="scope",y="axis",b="axis-domain",x="axis-grid",k="axis-label",v="axis-tick",$="axis-title",S="legend",O="legend-entry",R="legend-label",j="legend-symbol",w="legend-title",z="title-text",D="title-subtitle";function V(e,t,n){e[t]=n&&n.signal?{signal:n.signal}:{value:n}}const P=e=>t.isString(e)?t.stringValue(e):e.signal?`(${e.signal})`:W(e);function E(e){if(null!=e.gradient)return function(e){const n=[e.start,e.stop,e.count].map(e=>null==e?null:t.stringValue(e));for(;n.length&&null==t.peek(n);)n.pop();return n.unshift(P(e.gradient)),`gradient(${n.join(",")})`}(e);let n=e.signal?`(${e.signal})`:e.color?function(e){return e.c?_("hcl",e.h,e.c,e.l):e.h||e.s?_("hsl",e.h,e.s,e.l):e.l||e.a?_("lab",e.l,e.a,e.b):e.r||e.g||e.b?_("rgb",e.r,e.g,e.b):null}(e.color):null!=e.field?W(e.field):void 0!==e.value?t.stringValue(e.value):void 0;return null!=e.scale&&(n=function(e,t){const n=P(e.scale);null!=e.range?t=`lerp(_range(${n}), ${+e.range})`:(void 0!==t&&(t=`_scale(${n}, ${t})`),e.band&&(t=(t?t+"+":"")+`_bandwidth(${n})`+(1==+e.band?"":"*"+C(e.band)),e.extra&&(t=`(datum.extra ? _scale(${n}, datum.extra.value) : ${t})`)),null==t&&(t="0"));return t}(e,n)),void 0===n&&(n=null),null!=e.exponent&&(n=`pow(${n},${C(e.exponent)})`),null!=e.mult&&(n+="*"+C(e.mult)),null!=e.offset&&(n+="+"+C(e.offset)),e.round&&(n=`round(${n})`),n}const _=(e,t,n,i)=>`(${e}(${[t,n,i].map(E).join(",")})+'')`;function C(e){return t.isObject(e)?"("+E(e)+")":e}function W(e){return function e(n){let i,a,r;if(n.signal)i="datum",r=n.signal;else if(n.group||n.parent){for(a=Math.max(1,n.level||1),i="item";a-- >0;)i+=".mark.group";n.parent?(r=n.parent,i+=".datum"):r=n.group}else n.datum?(i="datum",r=n.datum):t.error("Invalid field reference: "+t.stringValue(n));n.signal||(r=t.isString(r)?t.splitAccessPath(r).map(t.stringValue).join("]["):e(r));return i+"["+r+"]"}(t.isObject(e)?e:{datum:e})}function L(e,n,i,a,r,s){const l={};(s=s||{}).encoders={$encode:l},e=function(e,n,i,a,r){const s={},l={};let o,u,c,d;for(u in u="lineBreak","text"!==n||null==r[u]||f(u,e)||V(s,u,r[u]),("legend"==i||String(i).startsWith("axis"))&&(i=null),d=i===m?r.group:i===g?t.extend({},r.mark,r[n]):null,d)c=f(u,e)||("fill"===u||"stroke"===u)&&(f("fill",e)||f("stroke",e)),c||V(s,u,d[u]);for(u in t.array(a).forEach(t=>{const n=r.style&&r.style[t];for(const t in n)f(t,e)||V(s,t,n[t])}),e=t.extend({},e),s)d=s[u],d.signal?(o=o||{})[u]=d:l[u]=d;return e.enter=t.extend(l,e.enter),o&&(e.update=t.extend(o,e.update)),e}(e,n,i,a,r.config);for(const t in e)l[t]=F(e[t],n,s,r);return s}function F(e,n,i,a){const r={},s={};for(const n in e)null!=e[n]&&(r[n]=A((l=e[n],t.isArray(l)?function(e){let n="";return e.forEach(e=>{const t=E(e);n+=e.test?`(${e.test})?${t}:`:t}),":"===t.peek(n)&&(n+="null"),n}(l):E(l)),a,i,s));var l;return{$expr:{marktype:n,channels:r},$fields:Object.keys(s),$output:Object.keys(e)}}function A(e,i,a,r){const s=n.parseExpression(e,i);return s.$fields.forEach(e=>r[e]=1),t.extend(a,s.$params),s.$expr}const T=["value","update","init","react","bind"];function B(e,n){t.error(e+' for "outer" push: '+t.stringValue(n))}function U(e,t){const n=e.name;if("outer"===e.push)t.signals[n]||B("No prior signal definition",n),T.forEach(t=>{void 0!==e[t]&&B("Invalid property ",t)});else{const i=t.addSignal(n,e.value);!1===e.react&&(i.react=!1),e.bind&&t.addBinding(n,e.bind)}}function M(e,t,n,i){this.id=-1,this.type=e,this.value=t,this.params=n,i&&(this.parent=i)}function q(e,t,n,i){return new M(e,t,n,i)}function H(e,t){return q("operator",e,t)}function I(e){const t={$ref:e.id};return e.id<0&&(e.refs=e.refs||[]).push(t),t}function X(e,t){return t?{$field:e,$name:t}:{$field:e}}const Y=X("key");function N(e,t){return{$compare:e,$order:t}}function G(e,t){return(e&&e.signal?"$"+e.signal:e||"")+(e&&t?"_":"")+(t&&t.signal?"$"+t.signal:t||"")}const Q="scope",J="view";function K(e){return e&&e.signal}function Z(e){if(K(e))return!0;if(t.isObject(e))for(const t in e)if(Z(e[t]))return!0;return!1}function ee(e,t){return null!=e?e:t}function te(e){return e&&e.signal||e}const ne="timer";function ie(e,n){return(e.merge?ae:e.stream?re:e.type?se:t.error("Invalid stream specification: "+t.stringValue(e)))(e,n)}function ae(e,t){const n=le({merge:e.merge.map(e=>ie(e,t))},e,t);return t.addStream(n).id}function re(e,t){const n=le({stream:ie(e.stream,t)},e,t);return t.addStream(n).id}function se(e,t){let n;var i;e.type===ne?(n=t.event(ne,e.throttle),e={between:e.between,filter:e.filter}):n=t.event((i=e.source)===Q?J:i||J,e.type);const a=le({stream:n},e,t);return 1===Object.keys(a).length?n:t.addStream(a).id}function le(e,i,a){let r=i.between;return r&&(2!==r.length&&t.error('Stream "between" parameter must have 2 entries: '+t.stringValue(i)),e.between=[ie(r[0],a),ie(r[1],a)]),r=i.filter?[].concat(i.filter):[],(i.marktype||i.markname||i.markrole)&&r.push(function(e,t,n){const i="event.item";return i+(e&&"*"!==e?"&&"+i+".mark.marktype==='"+e+"'":"")+(n?"&&"+i+".mark.role==='"+n+"'":"")+(t?"&&"+i+".mark.name==='"+t+"'":"")}(i.marktype,i.markname,i.markrole)),i.source===Q&&r.push("inScope(event.item)"),r.length&&(e.filter=n.parseExpression("("+r.join(")&&(")+")",a).$expr),null!=(r=i.throttle)&&(e.throttle=+r),null!=(r=i.debounce)&&(e.debounce=+r),i.consume&&(e.consume=!0),e}const oe={code:"_.$value",ast:{type:"Identifier",value:"value"}};function ue(e,a,r){const s=e.encode,l={target:r};let o=e.events,u=e.update,c=[];o||t.error("Signal update missing events specification."),t.isString(o)&&(o=i.selector(o,a.isSubscope()?Q:J)),o=t.array(o).filter(e=>e.signal||e.scale?(c.push(e),0):1),c.length>1&&(c=[ce(c)]),o.length&&c.push(o.length>1?{merge:o}:o[0]),null!=s&&(u&&t.error("Signal encode and update are mutually exclusive."),u="encode(item(),"+t.stringValue(s)+")"),l.update=t.isString(u)?n.parseExpression(u,a):null!=u.expr?n.parseExpression(u.expr,a):null!=u.value?u.value:null!=u.signal?{$expr:oe,$params:{$value:a.signalRef(u.signal)}}:t.error("Invalid signal update specification."),e.force&&(l.options={force:!0}),c.forEach(e=>a.addUpdate(t.extend(function(e,t){return{source:e.signal?t.signalRef(e.signal):e.scale?t.scaleRef(e.scale):ie(e,t)}}(e,a),l)))}function ce(e){return{signal:"["+e.map(e=>e.scale?'scale("'+e.scale+'")':e.signal)+"]"}}function de(e,i){const a=i.getSignal(e.name);let r=e.update;e.init&&(r?t.error("Signals can not include both init and update expressions."):(r=e.init,a.initonly=!0)),r&&(r=n.parseExpression(r,i),a.update=r.$expr,a.params=r.$params),e.on&&e.on.forEach(e=>ue(e,i,a.id))}const pe=e=>(t,n,i)=>q(e,n,t||void 0,i),fe=pe("aggregate"),ge=pe("axisticks"),me=pe("bound"),he=pe("collect"),ye=pe("compare"),be=pe("datajoin"),xe=pe("encode"),ke=pe("expression"),ve=pe("facet"),$e=pe("field"),Se=pe("key"),Oe=pe("legendentries"),Re=pe("load"),je=pe("mark"),we=pe("multiextent"),ze=pe("multivalues"),De=pe("overlap"),Ve=pe("params"),Pe=pe("prefacet"),Ee=pe("projection"),_e=pe("proxy"),Ce=pe("relay"),We=pe("render"),Le=pe("scale"),Fe=pe("sieve"),Ae=pe("sortitems"),Te=pe("viewlayout"),Be=pe("values");let Ue=0;const Me={min:"min",max:"max",count:"sum"};function qe(e,n){const i=n.getScale(e.name).params;let r;var s;for(r in i.domain=Ye(e.domain,e,n),null!=e.range&&(i.range=function e(n,i,r){const s=i.config.range;let l=n.range;if(l.signal)return i.signalRef(l.signal);if(t.isString(l)){if(s&&t.hasOwnProperty(s,l))return e(n=t.extend({},n,{range:s[l]}),i,r);"width"===l?l=[0,{signal:"width"}]:"height"===l?l=a.isDiscrete(n.type)?[0,{signal:"height"}]:[{signal:"height"},0]:t.error("Unrecognized scale range value: "+t.stringValue(l))}else{if(l.scheme)return r.scheme=t.isArray(l.scheme)?Ie(l.scheme,i):He(l.scheme,i),l.extent&&(r.schemeExtent=Ie(l.extent,i)),void(l.count&&(r.schemeCount=He(l.count,i)));if(l.step)return void(r.rangeStep=He(l.step,i));if(a.isDiscrete(n.type)&&!t.isArray(l))return Ye(l,n,i);t.isArray(l)||t.error("Unsupported range type: "+t.stringValue(l))}return l.map(e=>(t.isArray(e)?Ie:He)(e,i))}(e,n,i)),null!=e.interpolate&&function(e,t){t.interpolate=He(e.type||e),null!=e.gamma&&(t.interpolateGamma=He(e.gamma))}(e.interpolate,i),null!=e.nice&&(i.nice=(s=e.nice,t.isObject(s)?{interval:He(s.interval),step:He(s.step)}:He(s))),null!=e.bins&&(i.bins=function(e,n){return e.signal||t.isArray(e)?Ie(e,n):n.objectProperty(e)}(e.bins,n)),e)t.hasOwnProperty(i,r)||"name"===r||(i[r]=He(e[r],n))}function He(e,n){return t.isObject(e)?e.signal?n.signalRef(e.signal):t.error("Unsupported object: "+t.stringValue(e)):e}function Ie(e,t){return e.signal?t.signalRef(e.signal):e.map(e=>He(e,t))}function Xe(e){t.error("Can not find data set: "+t.stringValue(e))}function Ye(e,n,i){if(e)return e.signal?i.signalRef(e.signal):(t.isArray(e)?Ne:e.fields?Qe:Ge)(e,n,i);null==n.domainMin&&null==n.domainMax||t.error("No scale domain defined for domainMin/domainMax to override.")}function Ne(e,t,n){return e.map(e=>He(e,n))}function Ge(e,t,n){const i=n.getData(e.data);return i||Xe(e.data),a.isDiscrete(t.type)?i.valuesRef(n,e.field,Ke(e.sort,!1)):a.isQuantile(t.type)?i.domainRef(n,e.field):i.extentRef(n,e.field)}function Qe(e,n,i){const r=e.data,s=e.fields.reduce((e,n)=>(n=t.isString(n)?{data:r,field:n}:t.isArray(n)||n.signal?function(e,n){const i="_:vega:_"+Ue++,a=he({});if(t.isArray(e))a.value={$ingest:e};else if(e.signal){const r="setdata("+t.stringValue(i)+","+e.signal+")";a.params.input=n.signalRef(r)}return n.addDataPipeline(i,[a,Fe({})]),{data:i,field:"data"}}(n,i):n,e.push(n),e),[]);return(a.isDiscrete(n.type)?Je:a.isQuantile(n.type)?Ze:et)(e,i,s)}function Je(e,t,n){const i=Ke(e.sort,!0);let a,r;const s=n.map(e=>{const n=t.getData(e.data);return n||Xe(e.data),n.countsRef(t,e.field,i)}),l={groupby:Y,pulse:s};i&&(a=i.op||"count",r=i.field?G(a,i.field):"count",l.ops=[Me[a]],l.fields=[t.fieldRef(r)],l.as=[r]),a=t.add(fe(l));const o=t.add(he({pulse:I(a)}));return r=t.add(Be({field:Y,sort:t.sortRef(i),pulse:I(o)})),I(r)}function Ke(e,n){return e&&(e.field||e.op?e.field||"count"===e.op?n&&e.field&&e.op&&!Me[e.op]&&t.error("Multiple domain scales can not be sorted using "+e.op):t.error("No field provided for sort aggregate op: "+e.op):t.isObject(e)?e.field="key":e={field:"key"}),e}function Ze(e,t,n){const i=n.map(e=>{const n=t.getData(e.data);return n||Xe(e.data),n.domainRef(t,e.field)});return I(t.add(ze({values:i})))}function et(e,t,n){const i=n.map(e=>{const n=t.getData(e.data);return n||Xe(e.data),n.extentRef(t,e.field)});return I(t.add(we({extents:i})))}function tt(e,n,i){return t.isArray(e)?e.map(e=>tt(e,n,i)):t.isObject(e)?e.signal?i.signalRef(e.signal):"fit"===n?e:t.error("Unsupported parameter object: "+t.stringValue(e)):e}const nt="top",it="left",at="right",rt="bottom",st="center",lt="index",ot="label",ut="perc",ct="value",dt="guide-label",pt="guide-title",ft="group-title",gt="group-subtitle",mt="symbol",ht="gradient",yt="discrete",bt="size",xt=[bt,"shape","fill","stroke","strokeWidth","strokeDash","opacity"],kt={name:1,style:1,interactive:1},vt={value:0},$t={value:1},St="group",Ot="rect",Rt="rule",jt="text";function wt(e){return e.type=St,e.interactive=e.interactive||!1,e}function zt(e,t){const n=(n,i)=>ee(e[n],ee(t[n],i));return n.isVertical=n=>"vertical"===ee(e.direction,t.direction||(n?t.symbolDirection:t.gradientDirection)),n.gradientLength=()=>ee(e.gradientLength,t.gradientLength||t.gradientWidth),n.gradientThickness=()=>ee(e.gradientThickness,t.gradientThickness||t.gradientHeight),n.entryColumns=()=>ee(e.columns,ee(t.columns,+n.isVertical(!0))),n}function Dt(e,t){const n=t&&(t.update&&t.update[e]||t.enter&&t.enter[e]);return n&&n.signal?n:n?n.value:null}function Vt(e,t,n){return`item.anchor === 'start' ? ${e} : item.anchor === 'end' ? ${t} : ${n}`}const Pt=Vt(t.stringValue(it),t.stringValue(at),t.stringValue(st));function Et(e,n){return n?e?t.isObject(e)?Object.assign({},e,{offset:Et(e.offset,n)}):{value:e,offset:n}:n:e}function _t(e,t){return t?(e.name=t.name,e.style=t.style||e.style,e.interactive=!!t.interactive,e.encode=p(e.encode,t,kt)):e.interactive=!1,e}function Ct(e,n,i,a){const r=zt(e,i),s=r.isVertical(),l=r.gradientThickness(),o=r.gradientLength();let c,p,f,g,m;s?(p=[0,1],f=[0,0],g=l,m=o):(p=[0,0],f=[1,0],g=o,m=l);const h={enter:c={opacity:vt,x:vt,y:vt,width:u(g),height:u(m)},update:t.extend({},c,{opacity:$t,fill:{gradient:n,start:p,stop:f}}),exit:{opacity:vt}};return d(h,{stroke:r("gradientStrokeColor"),strokeWidth:r("gradientStrokeWidth")},{opacity:r("gradientOpacity")}),_t({type:Ot,role:"legend-gradient",encode:h},a)}function Wt(e,n,i,a,r){const s=zt(e,i),l=s.isVertical(),o=s.gradientThickness(),c=s.gradientLength();let p,f,g,m,h="";l?(p="y",g="y2",f="x",m="width",h="1-"):(p="x",g="x2",f="y",m="height");const y={opacity:vt,fill:{scale:n,field:ct}};y[p]={signal:h+"datum."+ut,mult:c},y[f]=vt,y[g]={signal:h+"datum.perc2",mult:c},y[m]=u(o);const b={enter:y,update:t.extend({},y,{opacity:$t}),exit:{opacity:vt}};return d(b,{stroke:s("gradientStrokeColor"),strokeWidth:s("gradientStrokeWidth")},{opacity:s("gradientOpacity")}),_t({type:Ot,role:"legend-band",key:ct,from:r,encode:b},a)}function Lt(e,t,n,i){const a=zt(e,t),r=a.isVertical(),s=u(a.gradientThickness()),l=a.gradientLength();let o,c,p,f,g=a("labelOverlap"),m="";const h={enter:o={opacity:vt},update:c={opacity:$t,text:{field:ot}},exit:{opacity:vt}};return d(h,{fill:a("labelColor"),fillOpacity:a("labelOpacity"),font:a("labelFont"),fontSize:a("labelFontSize"),fontStyle:a("labelFontStyle"),fontWeight:a("labelFontWeight"),limit:ee(e.labelLimit,t.gradientLabelLimit)}),r?(o.align={value:"left"},o.baseline=c.baseline={signal:'datum.perc<=0?"bottom":datum.perc>=1?"top":"middle"'},p="y",f="x",m="1-"):(o.align=c.align={signal:'datum.perc<=0?"left":datum.perc>=1?"right":"center"'},o.baseline={value:"top"},p="x",f="y"),o[p]=c[p]={signal:m+"datum."+ut,mult:l},o[f]=c[f]=s,s.offset=ee(e.labelOffset,t.gradientLabelOffset)||0,g=g?{separation:a("labelSeparation"),method:g,order:"datum.index"}:void 0,_t({type:jt,role:R,style:dt,key:ct,from:i,encode:h,overlap:g},n)}function Ft(e,t,n,i,a){const r=zt(e,t),s=n.entries,l=!(!s||!s.interactive),o=s?s.name:void 0,c=r("clipHeight"),f=r("symbolOffset"),g={data:"value"},m=`(${a}) ? datum.offset : datum.size`,y=c?u(c):{field:bt},b="datum.index",x=`max(1, ${a})`;let k,v,$,S,O;y.mult=.5,k={enter:v={opacity:vt,x:{signal:m,mult:.5,offset:f},y:y},update:$={opacity:$t,x:v.x,y:v.y},exit:{opacity:vt}};let w=null,z=null;e.fill||(w=t.symbolBaseFillColor,z=t.symbolBaseStrokeColor),d(k,{fill:r("symbolFillColor",w),shape:r("symbolType"),size:r("symbolSize"),stroke:r("symbolStrokeColor",z),strokeDash:r("symbolDash"),strokeDashOffset:r("symbolDashOffset"),strokeWidth:r("symbolStrokeWidth")},{opacity:r("symbolOpacity")}),xt.forEach(t=>{e[t]&&($[t]=v[t]={scale:e[t],field:ct})});const D=_t({type:"symbol",role:j,key:ct,from:g,clip:!!c||void 0,encode:k},n.symbols),V=u(f);V.offset=r("labelOffset"),k={enter:v={opacity:vt,x:{signal:m,offset:V},y:y},update:$={opacity:$t,text:{field:ot},x:v.x,y:v.y},exit:{opacity:vt}},d(k,{align:r("labelAlign"),baseline:r("labelBaseline"),fill:r("labelColor"),fillOpacity:r("labelOpacity"),font:r("labelFont"),fontSize:r("labelFontSize"),fontStyle:r("labelFontStyle"),fontWeight:r("labelFontWeight"),limit:r("labelLimit")});const P=_t({type:jt,role:R,style:dt,key:ct,from:g,encode:k},n.labels);return k={enter:{noBound:{value:!c},width:vt,height:c?u(c):vt,opacity:vt},exit:{opacity:vt},update:$={opacity:$t,row:{signal:null},column:{signal:null}}},r.isVertical(!0)?(S=`ceil(item.mark.items.length / ${x})`,$.row.signal=`${b}%${S}`,$.column.signal=`floor(${b} / ${S})`,O={field:["row",b]}):($.row.signal=`floor(${b} / ${x})`,$.column.signal=`${b} % ${x}`,O={field:b}),$.column.signal=`(${a})?${$.column.signal}:${b}`,wt({role:h,from:i={facet:{data:i,name:"value",groupby:lt}},encode:p(k,s,kt),marks:[D,P],name:o,interactive:l,sort:O})}const At='item.orient === "left"',Tt='item.orient === "right"',Bt=`(${At} || ${Tt})`,Ut="datum.vgrad && "+Bt,Mt=Vt('"top"','"bottom"','"middle"'),qt=`datum.vgrad && ${Tt} ? (${Vt('"right"','"left"','"center"')}) : (${Bt} && !(datum.vgrad && ${At})) ? "left" : ${Pt}`,Ht=`item._anchor || (${Bt} ? "middle" : "start")`,It=`${Ut} ? (${At} ? -90 : 90) : 0`,Xt=`${Bt} ? (datum.vgrad ? (${Tt} ? "bottom" : "top") : ${Mt}) : "top"`;function Yt(e,n){let i;return t.isObject(e)&&(e.signal?i=e.signal:e.path?i="pathShape("+Nt(e.path)+")":e.sphere&&(i="geoShape("+Nt(e.sphere)+', {type: "Sphere"})')),i?n.signalRef(i):!!e}function Nt(e){return t.isObject(e)&&e.signal?e.signal:t.stringValue(e)}function Gt(e){const t=e.role||"";return t.indexOf("axis")&&t.indexOf("legend")&&t.indexOf("title")?e.type===St?h:t||g:t}function Qt(e){return{marktype:e.type,name:e.name||void 0,role:e.role||Gt(e),zindex:+e.zindex||void 0,aria:e.aria,description:e.description}}function Jt(e,t){return e&&e.signal?t.signalRef(e.signal):!1!==e}function Kt(e,n){const i=r.definition(e.type);i||t.error("Unrecognized transform type: "+t.stringValue(e.type));const a=q(i.type.toLowerCase(),null,Zt(i,e,n));return e.signal&&n.addSignal(e.signal,n.proxy(a)),a.metadata=i.metadata||{},a}function Zt(e,t,n){const i={},a=e.params.length;for(let r=0;r<a;++r){const a=e.params[r];i[a.name]=en(a,t,n)}return i}function en(e,n,i){const a=e.type,r=n[e.name];return"index"===a?function(e,n,i){t.isString(n.from)||t.error('Lookup "from" parameter must be a string literal.');return i.getData(n.from).lookupRef(i,n.key)}(0,n,i):void 0!==r?"param"===a?function(e,n,i){const a=n[e.name];return e.array?(t.isArray(a)||t.error("Expected an array of sub-parameters. Instead: "+t.stringValue(a)),a.map(t=>nn(e,t,i))):nn(e,a,i)}(e,n,i):"projection"===a?i.projectionRef(n[e.name]):e.array&&!K(r)?r.map(t=>tn(e,t,i)):tn(e,r,i):void(e.required&&t.error("Missing required "+t.stringValue(n.type)+" parameter: "+t.stringValue(e.name)))}function tn(e,i,a){const r=e.type;if(K(i))return ln(r)?t.error("Expression references can not be signals."):on(r)?a.fieldRef(i):un(r)?a.compareRef(i):a.signalRef(i.signal);{const t=e.expr||on(r);return t&&an(i)?a.exprRef(i.expr,i.as):t&&rn(i)?X(i.field,i.as):ln(r)?n.parseExpression(i,a):sn(r)?I(a.getData(i).values):on(r)?X(i):un(r)?a.compareRef(i):i}}function nn(e,n,i){const a=e.params.length;let r;for(let t=0;t<a;++t){r=e.params[t];for(const e in r.key)if(r.key[e]!==n[e]){r=null;break}if(r)break}r||t.error("Unsupported parameter: "+t.stringValue(n));const s=t.extend(Zt(r,n,i),r.key);return I(i.add(Ve(s)))}const an=e=>e&&e.expr,rn=e=>e&&e.field,sn=e=>"data"===e,ln=e=>"expr"===e,on=e=>"field"===e,un=e=>"compare"===e;function cn(e,t){return e.$ref?e:e.data&&e.data.$ref?e.data:I(t.getData(e.data).output)}function dn(e,t,n,i,a){this.scope=e,this.input=t,this.output=n,this.values=i,this.aggregate=a,this.index={}}function pn(e){return t.isString(e)?e:null}function fn(e,t,n){const i=G(n.op,n.field);let a;if(t.ops){for(let e=0,n=t.as.length;e<n;++e)if(t.as[e]===i)return}else t.ops=["count"],t.fields=[null],t.as=["count"];n.op&&(t.ops.push((a=n.op.signal)?e.signalRef(a):n.op),t.fields.push(e.fieldRef(n.field)),t.as.push(i))}function gn(e,n,i,a,r,s,l){const o=n[i]||(n[i]={}),u=function(e){return t.isObject(e)?("descending"===e.order?"-":"+")+G(e.op,e.field):""}(s);let c,d,p=pn(r);if(null!=p&&(e=n.scope,p+=u?"|"+u:"",c=o[p]),!c){const t=s?{field:Y,pulse:n.countsRef(e,r,s)}:{field:e.fieldRef(r),pulse:I(n.output)};u&&(t.sort=e.sortRef(s)),d=e.add(q(a,void 0,t)),l&&(n.index[r]=d),c=I(d),null!=p&&(o[p]=c)}return c}function mn(e,t,i){const a=e.remove,r=e.insert,s=e.toggle,l=e.modify,o=e.values,u=t.add(H()),c="if("+e.trigger+',modify("'+i+'",'+[r,a,s,l,o].map(e=>null==e?"null":e).join(",")+"),0)",d=n.parseExpression(c,t);u.update=d.$expr,u.params=d.$params}function hn(e,n){const i=Gt(e),a=e.type===St,r=e.from&&e.from.facet,s=e.overlap;let l,o,u,c,d,p,f,y=e.layout||i===h||i===m;const b=i===g||y||r,x=function(e,n,i){let a,r,s,l,o;return e?(a=e.facet)&&(n||t.error("Only group marks can be faceted."),null!=a.field?l=o=cn(a,i):(e.data?o=I(i.getData(e.data).aggregate):(s=Kt(t.extend({type:"aggregate",groupby:t.array(a.groupby)},a.aggregate),i),s.params.key=i.keyRef(a.groupby),s.params.pulse=cn(a,i),l=o=I(i.add(s))),r=i.keyRef(a.groupby,!0))):l=I(i.add(he(null,[{}]))),l||(l=cn(e,i)),{key:r,pulse:l,parent:o}}(e.from,a,n);o=n.add(be({key:x.key||(e.key?X(e.key):void 0),pulse:x.pulse,clean:!a}));const k=I(o);o=u=n.add(he({pulse:k})),o=n.add(je({markdef:Qt(e),interactive:Jt(e.interactive,n),clip:Yt(e.clip,n),context:{$context:!0},groups:n.lookup(),parent:n.signals.parent?n.signalRef("parent"):null,index:n.markpath(),pulse:I(o)}));const v=I(o);o=c=n.add(xe(L(e.encode,e.type,i,e.style,n,{mod:!1,pulse:v}))),o.params.parent=n.encode(),e.transform&&e.transform.forEach(e=>{const i=Kt(e,n),a=i.metadata;(a.generates||a.changes)&&t.error("Mark transforms should not generate new data."),a.nomod||(c.params.mod=!0),i.params.pulse=I(o),n.add(o=i)}),e.sort&&(o=n.add(Ae({sort:n.compareRef(e.sort),pulse:I(o)})));const $=I(o);(r||y)&&(y=n.add(Te({layout:n.objectProperty(e.layout),legends:n.legends,mark:v,pulse:$})),p=I(y));const S=n.add(me({mark:v,pulse:p||$}));f=I(S),a&&(b&&(l=n.operators,l.pop(),y&&l.pop()),n.pushState($,p||f,k),r?function(e,n,i){const a=e.from.facet,r=a.name,s=cn(a,n);let l;a.name||t.error("Facet must have a name: "+t.stringValue(a)),a.data||t.error("Facet must reference a data set: "+t.stringValue(a)),a.field?l=n.add(Pe({field:n.fieldRef(a.field),pulse:s})):a.groupby?l=n.add(ve({key:n.keyRef(a.groupby),group:I(n.proxy(i.parent)),pulse:s})):t.error("Facet must specify groupby or field: "+t.stringValue(a));const o=n.fork(),u=o.add(he()),c=o.add(Fe({pulse:I(u)}));o.addData(r,new dn(o,u,u,c)),o.addSignal("parent",null),l.params.subflow={$subflow:o.parse(e).toRuntime()}}(e,n,x):b?function(e,t,n){const i=t.add(Pe({pulse:n.pulse})),a=t.fork();a.add(Fe()),a.addSignal("parent",null),i.params.subflow={$subflow:a.parse(e).toRuntime()}}(e,n,x):n.parse(e),n.popState(),b&&(y&&l.push(y),l.push(S))),s&&(f=function(e,t,n){const i=e.method,a=e.bound,r=e.separation,s={separation:K(r)?n.signalRef(r.signal):r,method:K(i)?n.signalRef(i.signal):i,pulse:t};e.order&&(s.sort=n.compareRef({field:e.order}));if(a){const e=a.tolerance;s.boundTolerance=K(e)?n.signalRef(e.signal):+e,s.boundScale=n.scaleRef(a.scale),s.boundOrient=a.orient}return I(n.add(De(s)))}(s,f,n));const O=n.add(We({pulse:f})),R=n.add(Fe({pulse:I(O)},void 0,n.parent()));null!=e.name&&(d=e.name,n.addData(d,new dn(n,u,O,R)),e.on&&e.on.forEach(e=>{(e.insert||e.remove||e.toggle)&&t.error("Marks only support modify triggers."),mn(e,n,d)}))}function yn(e,i){const r=i.config.legend,s=e.encode||{},l=zt(e,r),o=s.legend||{},u=o.name||void 0,c=o.interactive,f=o.style,g={};let m,h,y,b=0;xt.forEach(t=>e[t]?(g[t]=e[t],b=b||e[t]):0),b||t.error("Missing valid scale for legend.");const x=function(e,t){let n=e.type||mt;e.type||1!==function(e){return xt.reduce((t,n)=>t+(e[n]?1:0),0)}(e)||!e.fill&&!e.stroke||(n=a.isContinuous(t)?ht:a.isDiscretizing(t)?yt:mt);return n!==ht?n:a.isDiscretizing(t)?yt:ht}(e,i.scaleType(b)),k={title:null!=e.title,scales:g,type:x,vgrad:"symbol"!==x&&l.isVertical()},v=I(i.add(he(null,[k]))),$=I(i.add(Oe(h={type:x,scale:i.scaleRef(b),count:i.objectProperty(l("tickCount")),limit:i.property(l("symbolLimit")),values:i.objectProperty(e.values),minstep:i.property(e.tickMinStep),formatType:i.property(e.formatType),formatSpecifier:i.property(e.format)})));return x===ht?(y=[Ct(e,b,r,s.gradient),Lt(e,r,s.labels,$)],h.count=h.count||i.signalRef(`max(2,2*floor((${te(l.gradientLength())})/100))`)):x===yt?y=[Wt(e,b,r,s.gradient,$),Lt(e,r,s.labels,$)]:(m=function(e,t){const n=zt(e,t);return{align:n("gridAlign"),columns:n.entryColumns(),center:{row:!0,column:!1},padding:{row:n("rowPadding"),column:n("columnPadding")}}}(e,r),y=[Ft(e,r,s,$,te(m.columns))],h.size=function(e,t,i){const a=te(xn("size",e,i)),r=te(xn("strokeWidth",e,i)),s=te(function(e,t,n){return Dt("fontSize",e)||function(e,t,n){const i=t.config.style[n];return i&&i[e]}("fontSize",t,n)}(i[1].encode,t,dt));return n.parseExpression(`max(ceil(sqrt(${a})+${r}),${s})`,t)}(e,i,y[0].marks)),y=[wt({role:O,from:v,encode:{enter:{x:{value:0},y:{value:0}}},marks:y,layout:m,interactive:c})],k.title&&y.push(function(e,t,n,i){const a=zt(e,t),r={enter:{opacity:vt},update:{opacity:$t,x:{field:{group:"padding"}},y:{field:{group:"padding"}}},exit:{opacity:vt}};return d(r,{orient:a("titleOrient"),_anchor:a("titleAnchor"),anchor:{signal:Ht},angle:{signal:It},align:{signal:qt},baseline:{signal:Xt},text:e.title,fill:a("titleColor"),fillOpacity:a("titleOpacity"),font:a("titleFont"),fontSize:a("titleFontSize"),fontStyle:a("titleFontStyle"),fontWeight:a("titleFontWeight"),limit:a("titleLimit"),lineHeight:a("titleLineHeight")},{align:a("titleAlign"),baseline:a("titleBaseline")}),_t({type:jt,role:w,style:pt,from:i,encode:r},n)}(e,r,s.title,v)),hn(wt({role:S,from:v,encode:p(bn(l,e,r),o,kt),marks:y,aria:l("aria"),description:l("description"),zindex:l("zindex"),name:u,interactive:c,style:f}),i)}function bn(e,t,n){const i={enter:{},update:{}};return d(i,{orient:e("orient"),offset:e("offset"),padding:e("padding"),titlePadding:e("titlePadding"),cornerRadius:e("cornerRadius"),fill:e("fillColor"),stroke:e("strokeColor"),strokeWidth:n.strokeWidth,strokeDash:n.strokeDash,x:e("legendX"),y:e("legendY"),format:t.format,formatType:t.formatType}),i}function xn(e,t,n){return t[e]?`scale("${t[e]}",datum)`:Dt(e,n[0].encode)}dn.fromEntries=function(e,t){const n=t.length,i=t[n-1],a=t[n-2];let r=t[0],s=null,l=1;for(r&&"load"===r.type&&(r=t[1]),e.add(t[0]);l<n;++l)t[l].params.pulse=I(t[l-1]),e.add(t[l]),"aggregate"===t[l].type&&(s=t[l]);return new dn(e,r,a,i,s)},dn.prototype={countsRef(e,t,n){const i=this,a=i.counts||(i.counts={}),r=pn(t);let s,l,o;return null!=r&&(e=i.scope,s=a[r]),s?n&&n.field&&fn(e,s.agg.params,n):(o={groupby:e.fieldRef(t,"key"),pulse:I(i.output)},n&&n.field&&fn(e,o,n),l=e.add(fe(o)),s=e.add(he({pulse:I(l)})),s={agg:l,ref:I(s)},null!=r&&(a[r]=s)),s.ref},tuplesRef(){return I(this.values)},extentRef(e,t){return gn(e,this,"extent","extent",t,!1)},domainRef(e,t){return gn(e,this,"domain","values",t,!1)},valuesRef(e,t,n){return gn(e,this,"vals","values",t,n||!0)},lookupRef(e,t){return gn(e,this,"lookup","tupleindex",t,!1)},indataRef(e,t){return gn(e,this,"indata","tupleindex",t,!0,!0)}};function kn(e,n){const i=zt(e=t.isString(e)?{text:e}:e,n.config.title),a=e.encode||{},r=a.group||{},s=r.name||void 0,l=r.interactive,o=r.style,u=[],c=I(n.add(he(null,[{}])));return u.push(function(e,t,n,i){const a={value:0},r=e.text,s={enter:{opacity:a},update:{opacity:{value:1}},exit:{opacity:a}};return d(s,{text:r,align:{signal:"item.mark.group.align"},angle:{signal:"item.mark.group.angle"},limit:{signal:"item.mark.group.limit"},baseline:"top",dx:t("dx"),dy:t("dy"),fill:t("color"),font:t("font"),fontSize:t("fontSize"),fontStyle:t("fontStyle"),fontWeight:t("fontWeight"),lineHeight:t("lineHeight")},{align:t("align"),angle:t("angle"),baseline:t("baseline")}),_t({type:jt,role:z,style:ft,from:i,encode:s},n)}(e,i,function(e){const n=e.encode;return n&&n.title||t.extend({name:e.name,interactive:e.interactive,style:e.style},n)}(e),c)),e.subtitle&&u.push(function(e,t,n,i){const a={value:0},r=e.subtitle,s={enter:{opacity:a},update:{opacity:{value:1}},exit:{opacity:a}};return d(s,{text:r,align:{signal:"item.mark.group.align"},angle:{signal:"item.mark.group.angle"},limit:{signal:"item.mark.group.limit"},baseline:"top",dx:t("dx"),dy:t("dy"),fill:t("subtitleColor"),font:t("subtitleFont"),fontSize:t("subtitleFontSize"),fontStyle:t("subtitleFontStyle"),fontWeight:t("subtitleFontWeight"),lineHeight:t("subtitleLineHeight")},{align:t("align"),angle:t("angle"),baseline:t("baseline")}),_t({type:jt,role:D,style:gt,from:i,encode:s},n)}(e,i,a.subtitle,c)),hn(wt({role:"title",from:c,encode:vn(i,r),marks:u,aria:i("aria"),description:i("description"),zindex:i("zindex"),name:s,interactive:l,style:o}),n)}function vn(e,t){const n={enter:{},update:{}};return d(n,{orient:e("orient"),anchor:e("anchor"),align:{signal:Pt},angle:{signal:'item.orient==="left"?-90:item.orient==="right"?90:0'},limit:e("limit"),frame:e("frame"),offset:e("offset")||0,padding:e("subtitlePadding")}),p(n,t,kt)}function $n(e,n){const i=[];e.transform&&e.transform.forEach(e=>{i.push(Kt(e,n))}),e.on&&e.on.forEach(t=>{mn(t,n,e.name)}),n.addDataPipeline(e.name,function(e,n,i){const a=[];let r,s,l,o,u,c=null,d=!1,p=!1;e.values?Z(e.values)||Z(e.format)?(a.push(On(n,e)),a.push(c=Sn())):a.push(c=Sn({$ingest:e.values,$format:e.format})):e.url?Z(e.url)||Z(e.format)?(a.push(On(n,e)),a.push(c=Sn())):a.push(c=Sn({$request:e.url,$format:e.format})):e.source&&(c=r=t.array(e.source).map(e=>I(n.getData(e).output)),a.push(null));for(s=0,l=i.length;s<l;++s)o=i[s],u=o.metadata,c||u.source||a.push(c=Sn()),a.push(o),u.generates&&(p=!0),u.modifies&&!p&&(d=!0),u.source?c=o:u.changes&&(c=null);r&&(l=r.length-1,a[0]=Ce({derive:d,pulse:l?r:r[0]}),(d||l)&&a.splice(1,0,Sn()));c||a.push(Sn());return a.push(Fe({})),a}(e,n,i))}function Sn(e){const t=he({},e);return t.metadata={source:!0},t}function On(e,t){return Re({url:t.url?e.property(t.url):void 0,async:t.async?e.property(t.async):void 0,values:t.values?e.property(t.values):void 0,format:e.objectProperty(t.format)})}const Rn=e=>e===rt||e===nt,jn=(e,t,n)=>K(e)?En(e.signal,t,n):e===it||e===nt?t:n,wn=(e,t,n)=>K(e)?Vn(e.signal,t,n):Rn(e)?t:n,zn=(e,t,n)=>K(e)?Pn(e.signal,t,n):Rn(e)?n:t,Dn=(e,t,n)=>K(e)?_n(e.signal,t,n):e===nt?{value:t}:{value:n},Vn=(e,t,n)=>Wn(`${e} === 'top' || ${e} === 'bottom'`,t,n),Pn=(e,t,n)=>Wn(`${e} !== 'top' && ${e} !== 'bottom'`,t,n),En=(e,t,n)=>Fn(`${e} === 'left' || ${e} === 'top'`,t,n),_n=(e,t,n)=>Fn(e+" === 'top'",t,n),Cn=(e,t,n)=>Fn(e+" === 'right'",t,n),Wn=(e,n,i)=>(n=null!=n?u(n):n,i=null!=i?u(i):i,Ln(n)&&Ln(i)?{signal:`${e} ? (${n=n?n.signal||t.stringValue(n.value):null}) : (${i=i?i.signal||t.stringValue(i.value):null})`}:[t.extend({test:e},n)].concat(i||[])),Ln=e=>null==e||1===Object.keys(e).length,Fn=(e,t,n)=>({signal:`${e} ? (${An(t)}) : (${An(n)})`}),An=e=>K(e)?e.signal:null==e?null:t.stringValue(e),Tn=(e,t)=>{const n=e.signal;return n&&n.endsWith("(null)")?{signal:n.slice(0,-6)+t.signal}:e};function Bn(e,n,i,a){let r;if(n&&t.hasOwnProperty(n,e))return n[e];if(t.hasOwnProperty(i,e))return i[e];if(e.startsWith("title")){switch(e){case"titleColor":r="fill";break;case"titleFont":case"titleFontSize":case"titleFontWeight":r=e[5].toLowerCase()+e.slice(6)}return a["guide-title"][r]}if(e.startsWith("label")){switch(e){case"labelColor":r="fill";break;case"labelFont":case"labelFontSize":r=e[5].toLowerCase()+e.slice(6)}return a["guide-label"][r]}return null}function Un(e){const t={};for(const n of e)if(n)for(const e in n)t[e]=1;return Object.keys(t)}function Mn(e,t){return{scale:e.scale,range:t}}function qn(e,n,i,a,r){const s=zt(e,n),l=e.orient,o=e.gridScale,u=jn(l,1,-1),c=function(e,n){if(1===n);else if(t.isObject(e)){let i=e=t.extend({},e);for(;null!=i.mult;){if(!t.isObject(i.mult))return i.mult=K(n)?{signal:`(${i.mult}) * (${n.signal})`}:i.mult*n,e;i=i.mult=t.extend({},i.mult)}i.mult=n}else e=K(n)?{signal:`(${n.signal}) * (${e||0})`}:n*(e||0);return e}(e.offset,u);let p,f,g;const m={enter:p={opacity:vt},update:g={opacity:$t},exit:f={opacity:vt}};d(m,{stroke:s("gridColor"),strokeCap:s("gridCap"),strokeDash:s("gridDash"),strokeDashOffset:s("gridDashOffset"),strokeOpacity:s("gridOpacity"),strokeWidth:s("gridWidth")});const h={scale:e.scale,field:ct,band:r.band,extra:r.extra,offset:r.offset,round:s("tickRound")},y=wn(l,{signal:"height"},{signal:"width"}),b=o?{scale:o,range:0,mult:u,offset:c}:{value:0,offset:c},k=o?{scale:o,range:1,mult:u,offset:c}:t.extend(y,{mult:u,offset:c});return p.x=g.x=wn(l,h,b),p.y=g.y=zn(l,h,b),p.x2=g.x2=zn(l,k),p.y2=g.y2=wn(l,k),f.x=wn(l,h),f.y=zn(l,h),_t({type:Rt,role:x,key:ct,from:a,encode:m},i)}function Hn(e,t,n,i,a){return{signal:'flush(range("'+e+'"), scale("'+e+'", datum.value), '+t+","+n+","+i+","+a+")"}}function In(e,t,n,i,a,r){const s=zt(e,t),l=e.orient,o=e.scale,c=jn(l,-1,1),p=te(s("labelFlush")),f=te(s("labelFlushOffset")),g=s("labelAlign"),m=s("labelBaseline");let h,y=0===p||!!p;const b=u(a);b.mult=c,b.offset=u(s("labelPadding")||0),b.offset.mult=c;const x={scale:o,field:ct,band:.5,offset:Et(r.offset,s("labelOffset"))},v=wn(l,y?Hn(o,p,'"left"','"right"','"center"'):{value:"center"},((e,t,n)=>K(e)?Cn(e.signal,t,n):e===at?{value:t}:{value:n})(l,"left","right")),$=wn(l,Dn(l,"bottom","top"),y?Hn(o,p,'"top"','"bottom"','"middle"'):{value:"middle"}),S=Hn(o,p,`-(${f})`,f,0);y=y&&f;const O={opacity:vt,x:wn(l,x,b),y:zn(l,x,b)},R={enter:O,update:h={opacity:$t,text:{field:ot},x:O.x,y:O.y,align:v,baseline:$},exit:{opacity:vt,x:O.x,y:O.y}};d(R,{dx:!g&&y?wn(l,S):null,dy:!m&&y?zn(l,S):null}),d(R,{angle:s("labelAngle"),fill:s("labelColor"),fillOpacity:s("labelOpacity"),font:s("labelFont"),fontSize:s("labelFontSize"),fontWeight:s("labelFontWeight"),fontStyle:s("labelFontStyle"),limit:s("labelLimit"),lineHeight:s("labelLineHeight")},{align:g,baseline:m});const j=s("labelBound");let w=s("labelOverlap");return w=w||j?{separation:s("labelSeparation"),method:w,order:"datum.index",bound:j?{scale:o,orient:l,tolerance:j}:null}:void 0,h.align!==v&&(h.align=Tn(h.align,v)),h.baseline!==$&&(h.baseline=Tn(h.baseline,$)),_t({type:jt,role:k,style:dt,key:ct,from:i,encode:R,overlap:w},n)}function Xn(e,n,i,a){const r=zt(e,n),s=e.orient,l=jn(s,-1,1);let o,c;const p={enter:o={opacity:vt,anchor:u(r("titleAnchor",null)),align:{signal:Pt}},update:c=t.extend({},o,{opacity:$t,text:u(e.title)}),exit:{opacity:vt}},g={signal:`lerp(range("${e.scale}"), ${Vt(0,1,.5)})`};return c.x=wn(s,g),c.y=zn(s,g),o.angle=wn(s,vt,((e,t)=>0===t?0:K(e)?{signal:`(${e.signal}) * ${t}`}:{value:e*t})(l,90)),o.baseline=wn(s,Dn(s,rt,nt),{value:rt}),c.angle=o.angle,c.baseline=o.baseline,d(p,{fill:r("titleColor"),fillOpacity:r("titleOpacity"),font:r("titleFont"),fontSize:r("titleFontSize"),fontStyle:r("titleFontStyle"),fontWeight:r("titleFontWeight"),limit:r("titleLimit"),lineHeight:r("titleLineHeight")},{align:r("titleAlign"),angle:r("titleAngle"),baseline:r("titleBaseline")}),function(e,t,n,i){const a=(e,t)=>null!=e?(n.update[t]=Tn(u(e),n.update[t]),!1):!f(t,i),r=a(e("titleX"),"x"),s=a(e("titleY"),"y");n.enter.auto=s===r?u(s):wn(t,u(s),u(r))}(r,s,p,i),p.update.align=Tn(p.update.align,o.align),p.update.angle=Tn(p.update.angle,o.angle),p.update.baseline=Tn(p.update.baseline,o.baseline),_t({type:jt,role:$,style:pt,from:a,encode:p},i)}function Yn(e,n){const i=function(e,n){var i,a,r,s,l,o,u,c,d=n.config,p=d.style,f=d.axis,g="band"===n.scaleType(e.scale)&&d.axisBand,m=e.orient;if(K(m)){const e=Un([d.axisX,d.axisY]),t=Un([d.axisTop,d.axisBottom,d.axisLeft,d.axisRight]);for(r of(i={},e))i[r]=wn(m,Bn(r,d.axisX,f,p),Bn(r,d.axisY,f,p));for(r of(a={},t))a[r]=(s=m.signal,l=Bn(r,d.axisTop,f,p),o=Bn(r,d.axisBottom,f,p),u=Bn(r,d.axisLeft,f,p),c=Bn(r,d.axisRight,f,p),{signal:(null!=u?`${s} === 'left' ? (${An(u)}) : `:"")+(null!=o?`${s} === 'bottom' ? (${An(o)}) : `:"")+(null!=c?`${s} === 'right' ? (${An(c)}) : `:"")+(null!=l?`${s} === 'top' ? (${An(l)}) : `:"")+"(null)"})}else i=m===nt||m===rt?d.axisX:d.axisY,a=d["axis"+m[0].toUpperCase()+m.slice(1)];return i||a||g?t.extend({},f,i,a,g):f}(e,n),a=e.encode||{},r=a.axis||{},s=r.name||void 0,l=r.interactive,o=r.style,c=zt(e,i),f=function(e){const n=e("tickBand");let i,a,r=e("tickOffset");return n?n.signal?(i={signal:`(${n.signal}) === 'extent' ? 1 : 0.5`},a={signal:`(${n.signal}) === 'extent'`},t.isObject(r)||(r={signal:`(${n.signal}) === 'extent' ? 0 : ${r}`})):"extent"===n?(i=1,a=!0,r=0):(i=.5,a=!1):(i=e("bandPosition"),a=e("tickExtra")),{extra:a,band:i,offset:r}}(c),g={scale:e.scale,ticks:!!c("ticks"),labels:!!c("labels"),grid:!!c("grid"),domain:!!c("domain"),title:null!=e.title},m=I(n.add(he({},[g]))),h=I(n.add(ge({scale:n.scaleRef(e.scale),extra:n.property(f.extra),count:n.objectProperty(e.tickCount),values:n.objectProperty(e.values),minstep:n.property(e.tickMinStep),formatType:n.property(e.formatType),formatSpecifier:n.property(e.format)}))),x=[];let k;return g.grid&&x.push(qn(e,i,a.grid,h,f)),g.ticks&&(k=c("tickSize"),x.push(function(e,t,n,i,a,r){const s=zt(e,t),l=e.orient,o=jn(l,-1,1);let c,p,f;const g={enter:c={opacity:vt},update:f={opacity:$t},exit:p={opacity:vt}};d(g,{stroke:s("tickColor"),strokeCap:s("tickCap"),strokeDash:s("tickDash"),strokeDashOffset:s("tickDashOffset"),strokeOpacity:s("tickOpacity"),strokeWidth:s("tickWidth")});const m=u(a);m.mult=o;const h={scale:e.scale,field:ct,band:r.band,extra:r.extra,offset:r.offset,round:s("tickRound")};return f.y=c.y=wn(l,vt,h),f.y2=c.y2=wn(l,m),p.x=wn(l,h),f.x=c.x=zn(l,vt,h),f.x2=c.x2=zn(l,m),p.y=zn(l,h),_t({type:Rt,role:v,key:ct,from:i,encode:g},n)}(e,i,a.ticks,h,k,f))),g.labels&&(k=g.ticks?k:0,x.push(In(e,i,a.labels,h,k,f))),g.domain&&x.push(function(e,t,n,i){const a=zt(e,t),r=e.orient;let s,l;const o={enter:s={opacity:vt},update:l={opacity:$t},exit:{opacity:vt}};d(o,{stroke:a("domainColor"),strokeCap:a("domainCap"),strokeDash:a("domainDash"),strokeDashOffset:a("domainDashOffset"),strokeWidth:a("domainWidth"),strokeOpacity:a("domainOpacity")});const u=Mn(e,0),c=Mn(e,1);return s.x=l.x=wn(r,u,vt),s.x2=l.x2=wn(r,c),s.y=l.y=zn(r,u,vt),s.y2=l.y2=zn(r,c),_t({type:Rt,role:b,from:i,encode:o},n)}(e,i,a.domain,m)),g.title&&x.push(Xn(e,i,a.title,m)),hn(wt({role:y,from:m,encode:p(Nn(c,e),r,kt),marks:x,aria:c("aria"),description:c("description"),zindex:c("zindex"),name:s,interactive:l,style:o}),n)}function Nn(e,t){const n={enter:{},update:{}};return d(n,{orient:e("orient"),offset:e("offset")||0,position:ee(t.position,0),titlePadding:e("titlePadding"),minExtent:e("minExtent"),maxExtent:e("maxExtent"),range:{signal:`abs(span(range("${t.scale}")))`},translate:e("translate"),format:t.format,formatType:t.formatType}),n}function Gn(e,n,i){const r=t.array(e.signals),s=t.array(e.scales);return i||r.forEach(e=>U(e,n)),t.array(e.projections).forEach(e=>function(e,t){const n=t.config.projection||{},i={};for(const n in e)"name"!==n&&(i[n]=tt(e[n],n,t));for(const e in n)null==i[e]&&(i[e]=tt(n[e],e,t));t.addProjection(e.name,i)}(e,n)),s.forEach(e=>function(e,n){const i=e.type||"linear";a.isValidScaleType(i)||t.error("Unrecognized scale type: "+t.stringValue(i)),n.addScale(e.name,{type:i,domain:void 0})}(e,n)),t.array(e.data).forEach(e=>$n(e,n)),s.forEach(e=>qe(e,n)),(i||r).forEach(e=>de(e,n)),t.array(e.axes).forEach(e=>Yn(e,n)),t.array(e.marks).forEach(e=>hn(e,n)),t.array(e.legends).forEach(e=>yn(e,n)),e.title&&kn(e.title,n),n.parseLambdas(),n}function Qn(e,n){const i=n.config,a=I(n.root=n.add(H())),r=function(e,n){const i=t=>ee(e[t],n[t]),a=[Jn("background",i("background")),Jn("autosize",s(i("autosize"))),Jn("padding",o(i("padding"))),Jn("width",i("width")||0),Jn("height",i("height")||0)],r=a.reduce((e,t)=>(e[t.name]=t,e),{}),l={};return t.array(e.signals).forEach(e=>{t.hasOwnProperty(r,e.name)?e=t.extend(r[e.name],e):a.push(e),l[e.name]=e}),t.array(n.signals).forEach(e=>{t.hasOwnProperty(l,e.name)||t.hasOwnProperty(r,e.name)||a.push(e)}),a}(e,i);r.forEach(e=>U(e,n)),n.description=e.description||i.description,n.eventConfig=i.events,n.legends=n.objectProperty(i.legend&&i.legend.layout),n.locale=i.locale;const l=n.add(he()),u=n.add(xe(L((e=>p({enter:{x:{value:0},y:{value:0}},update:{width:{signal:"width"},height:{signal:"height"}}},e))(e.encode),St,m,e.style,n,{pulse:I(l)}))),c=n.add(Te({layout:n.objectProperty(e.layout),legends:n.legends,autosize:n.signalRef("autosize"),mark:a,pulse:I(u)}));n.operators.pop(),n.pushState(I(u),I(c),null),Gn(e,n,r),n.operators.push(c);let d=n.add(me({mark:a,pulse:I(c)}));return d=n.add(We({pulse:I(d)})),d=n.add(Fe({pulse:I(d)})),n.addData("root",new dn(n,l,l,d)),n}function Jn(e,t){return t&&t.signal?{name:e,update:t.signal}:{name:e,value:t}}function Kn(e,t){this.config=e||{},this.options=t||{},this.bindings=[],this.field={},this.signals={},this.lambdas={},this.scales={},this.events={},this.data={},this.streams=[],this.updates=[],this.operators=[],this.eventConfig=null,this.locale=null,this._id=0,this._subid=0,this._nextsub=[0],this._parent=[],this._encode=[],this._lookup=[],this._markpath=[]}function Zn(e){this.config=e.config,this.options=e.options,this.legends=e.legends,this.field=Object.create(e.field),this.signals=Object.create(e.signals),this.lambdas=Object.create(e.lambdas),this.scales=Object.create(e.scales),this.events=Object.create(e.events),this.data=Object.create(e.data),this.streams=[],this.updates=[],this.operators=[],this._id=0,this._subid=++e._nextsub[0],this._nextsub=e._nextsub,this._parent=e._parent.slice(),this._encode=e._encode.slice(),this._lookup=e._lookup.slice(),this._markpath=e._markpath}function ei(e){return(t.isArray(e)?ti:ni)(e)}function ti(e){const n=e.length;let i="[";for(let a=0;a<n;++a){const n=e[a];i+=(a>0?",":"")+(t.isObject(n)?n.signal||ei(n):t.stringValue(n))}return i+"]"}function ni(e){let n,i,a="{",r=0;for(n in e)i=e[n],a+=(++r>1?",":"")+t.stringValue(n)+":"+(t.isObject(i)?i.signal||ei(i):t.stringValue(i));return a+"}"}function ii(){const e="sans-serif",t="#4c78a8",n="#000",i="#888",a="#ddd";return{description:"Vega visualization",padding:0,autosize:"pad",background:null,events:{defaults:{allow:["wheel"]}},group:null,mark:null,arc:{fill:t},area:{fill:t},image:null,line:{stroke:t,strokeWidth:2},path:{stroke:t},rect:{fill:t},rule:{stroke:n},shape:{stroke:t},symbol:{fill:t,size:64},text:{fill:n,font:e,fontSize:11},trail:{fill:t,size:2},style:{"guide-label":{fill:n,font:e,fontSize:10},"guide-title":{fill:n,font:e,fontSize:11,fontWeight:"bold"},"group-title":{fill:n,font:e,fontSize:13,fontWeight:"bold"},"group-subtitle":{fill:n,font:e,fontSize:12},point:{size:30,strokeWidth:2,shape:"circle"},circle:{size:30,strokeWidth:2},square:{size:30,strokeWidth:2,shape:"square"},cell:{fill:"transparent",stroke:a}},title:{orient:"top",anchor:"middle",offset:4,subtitlePadding:3},axis:{minExtent:0,maxExtent:200,bandPosition:.5,domain:!0,domainWidth:1,domainColor:i,grid:!1,gridWidth:1,gridColor:a,labels:!0,labelAngle:0,labelLimit:180,labelOffset:0,labelPadding:2,ticks:!0,tickColor:i,tickOffset:0,tickRound:!0,tickSize:5,tickWidth:1,titlePadding:4},axisBand:{tickOffset:-.5},projection:{type:"mercator"},legend:{orient:"right",padding:0,gridAlign:"each",columnPadding:10,rowPadding:2,symbolDirection:"vertical",gradientDirection:"vertical",gradientLength:200,gradientThickness:16,gradientStrokeColor:a,gradientStrokeWidth:0,gradientLabelOffset:2,labelAlign:"left",labelBaseline:"middle",labelLimit:160,labelOffset:4,labelOverlap:!0,symbolLimit:30,symbolType:"circle",symbolSize:100,symbolOffset:0,symbolStrokeWidth:1.5,symbolBaseFillColor:"transparent",symbolBaseStrokeColor:i,titleLimit:180,titleOrient:"top",titlePadding:5,layout:{offset:18,direction:"horizontal",left:{direction:"vertical"},right:{direction:"vertical"}}},range:{category:{scheme:"tableau10"},ordinal:{scheme:"blues"},heatmap:{scheme:"yellowgreenblue"},ramp:{scheme:"blues"},diverging:{scheme:"blueorange",extent:[1,0]},symbol:["circle","square","triangle-up","cross","diamond","triangle-right","triangle-down","triangle-left"]}}}Kn.prototype=Zn.prototype={parse(e){return Gn(e,this)},fork(){return new Zn(this)},isSubscope(){return this._subid>0},toRuntime(){return this.finish(),{description:this.description,operators:this.operators,streams:this.streams,updates:this.updates,bindings:this.bindings,eventConfig:this.eventConfig,locale:this.locale}},id(){return(this._subid?this._subid+":":0)+this._id++},add(e){return this.operators.push(e),e.id=this.id(),e.refs&&(e.refs.forEach(t=>{t.$ref=e.id}),e.refs=null),e},proxy(e){const t=e instanceof M?I(e):e;return this.add(_e({value:t}))},addStream(e){return this.streams.push(e),e.id=this.id(),e},addUpdate(e){return this.updates.push(e),e},finish(){let e,t;for(e in this.root&&(this.root.root=!0),this.signals)this.signals[e].signal=e;for(e in this.scales)this.scales[e].scale=e;function n(e,t,n){let i,a;e&&(i=e.data||(e.data={}),a=i[t]||(i[t]=[]),a.push(n))}for(e in this.data){t=this.data[e],n(t.input,e,"input"),n(t.output,e,"output"),n(t.values,e,"values");for(const i in t.index)n(t.index[i],e,"index:"+i)}return this},pushState(e,t,n){this._encode.push(I(this.add(Fe({pulse:e})))),this._parent.push(t),this._lookup.push(n?I(this.proxy(n)):null),this._markpath.push(-1)},popState(){this._encode.pop(),this._parent.pop(),this._lookup.pop(),this._markpath.pop()},parent(){return t.peek(this._parent)},encode(){return t.peek(this._encode)},lookup(){return t.peek(this._lookup)},markpath(){const e=this._markpath;return++e[e.length-1]},fieldRef(e,n){if(t.isString(e))return X(e,n);e.signal||t.error("Unsupported field reference: "+t.stringValue(e));const i=e.signal;let a=this.field[i];if(!a){const e={name:this.signalRef(i)};n&&(e.as=n),this.field[i]=a=I(this.add($e(e)))}return a},compareRef(e){let n=!1;const i=e=>K(e)?(n=!0,this.signalRef(e.signal)):function(e){return e&&e.expr}(e)?(n=!0,this.exprRef(e.expr)):e,a=t.array(e.field).map(i),r=t.array(e.order).map(i);return n?I(this.add(ye({fields:a,orders:r}))):N(a,r)},keyRef(e,n){let i=!1;const a=this.signals;return e=t.array(e).map(e=>K(e)?(i=!0,I(a[e.signal])):e),i?I(this.add(Se({fields:e,flat:n}))):function(e,t){const n={$key:e};return t&&(n.$flat=!0),n}(e,n)},sortRef(e){if(!e)return e;const t=G(e.op,e.field),n=e.order||"ascending";return n.signal?I(this.add(ye({fields:t,orders:this.signalRef(n.signal)}))):N(t,n)},event(e,t){const n=e+":"+t;if(!this.events[n]){const i=this.id();this.streams.push({id:i,source:e,type:t}),this.events[n]=i}return this.events[n]},hasOwnSignal(e){return t.hasOwnProperty(this.signals,e)},addSignal(e,n){this.hasOwnSignal(e)&&t.error("Duplicate signal name: "+t.stringValue(e));const i=n instanceof M?n:this.add(H(n));return this.signals[e]=i},getSignal(e){return this.signals[e]||t.error("Unrecognized signal name: "+t.stringValue(e)),this.signals[e]},signalRef(e){return this.signals[e]?I(this.signals[e]):(t.hasOwnProperty(this.lambdas,e)||(this.lambdas[e]=this.add(H(null))),I(this.lambdas[e]))},parseLambdas(){const e=Object.keys(this.lambdas);for(let t=0,i=e.length;t<i;++t){const i=e[t],a=n.parseExpression(i,this),r=this.lambdas[i];r.params=a.$params,r.update=a.$expr}},property(e){return e&&e.signal?this.signalRef(e.signal):e},objectProperty(e){return e&&t.isObject(e)?this.signalRef(e.signal||ei(e)):e},exprRef(e,t){const i={expr:n.parseExpression(e,this)};return t&&(i.expr.$name=t),I(this.add(ke(i)))},addBinding(e,n){this.bindings||t.error("Nested signals do not support binding: "+t.stringValue(e)),this.bindings.push(t.extend({signal:e},n))},addScaleProj(e,n){t.hasOwnProperty(this.scales,e)&&t.error("Duplicate scale or projection name: "+t.stringValue(e)),this.scales[e]=this.add(n)},addScale(e,t){this.addScaleProj(e,Le(t))},addProjection(e,t){this.addScaleProj(e,Ee(t))},getScale(e){return this.scales[e]||t.error("Unrecognized scale name: "+t.stringValue(e)),this.scales[e]},scaleRef(e){return I(this.getScale(e))},scaleType(e){return this.getScale(e).params.type},projectionRef(e){return this.scaleRef(e)},projectionType(e){return this.scaleType(e)},addData(e,n){return t.hasOwnProperty(this.data,e)&&t.error("Duplicate data set name: "+t.stringValue(e)),this.data[e]=n},getData(e){return this.data[e]||t.error("Undefined data set name: "+t.stringValue(e)),this.data[e]},addDataPipeline(e,n){return t.hasOwnProperty(this.data,e)&&t.error("Duplicate data set name: "+t.stringValue(e)),this.addData(e,dn.fromEntries(this,n))}},e.AxisDomainRole=b,e.AxisGridRole=x,e.AxisLabelRole=k,e.AxisRole=y,e.AxisTickRole=v,e.AxisTitleRole=$,e.DataScope=dn,e.FrameRole=m,e.LegendEntryRole=O,e.LegendLabelRole=R,e.LegendRole=S,e.LegendSymbolRole=j,e.LegendTitleRole=w,e.MarkRole=g,e.Scope=Kn,e.ScopeRole=h,e.config=ii,e.parse=function(e,n,i){return t.isObject(e)||t.error("Input Vega specification must be an object."),Qn(e,new Kn(n=t.mergeConfig(ii(),n,e.config),i)).toRuntime()},e.signal=U,e.signalUpdates=de,e.stream=ie,Object.defineProperty(e,"__esModule",{value:!0})}));
{
"name": "vega-parser",
"version": "6.0.3",
"version": "6.0.4",
"description": "Parse Vega specifications to runtime dataflows.",

@@ -27,9 +27,9 @@ "keywords": [

"dependencies": {
"vega-dataflow": "^5.7.1",
"vega-event-selector": "^2.0.4",
"vega-functions": "^5.7.1",
"vega-scale": "^7.0.1",
"vega-util": "^1.15.0"
"vega-dataflow": "^5.7.2",
"vega-event-selector": "^2.0.5",
"vega-functions": "^5.7.2",
"vega-scale": "^7.1.0",
"vega-util": "^1.15.1"
},
"gitHead": "28db83352e43e321dfe55fc5cb6489b211e45662"
"gitHead": "8d6793f4ca7eaaf2d22186764e9ce2dae687cf52"
}

@@ -19,9 +19,10 @@ import {Aggregate, Collect} from './transforms';

DataScope.fromEntries = function(scope, entries) {
let n = entries.length,
i = 1,
input = entries[0],
values = entries[n-1],
output = entries[n-2],
aggr = null;
const n = entries.length,
values = entries[n-1],
output = entries[n-2];
let input = entries[0],
aggr = null,
i = 1;
if (input && input.type === 'load') {

@@ -47,7 +48,7 @@ input = entries[1];

function addSortField(scope, p, sort) {
let as = aggrField(sort.op, sort.field),
s;
const as = aggrField(sort.op, sort.field);
let s;
if (p.ops) {
for (let i=0, n=p.as.length; i<n; ++i) {
for (let i = 0, n = p.as.length; i < n; ++i) {
if (p.as[i] === as) return;

@@ -68,5 +69,6 @@ }

function cache(scope, ds, name, optype, field, counts, index) {
let cache = ds[name] || (ds[name] = {}),
sort = sortKey(counts),
k = fieldKey(field),
const cache = ds[name] || (ds[name] = {}),
sort = sortKey(counts);
let k = fieldKey(field),
v, op;

@@ -95,6 +97,8 @@

countsRef(scope, field, sort) {
let ds = this,
cache = ds.counts || (ds.counts = {}),
k = fieldKey(field), v, a, p;
const ds = this,
cache = ds.counts || (ds.counts = {}),
k = fieldKey(field);
let v, a, p;
if (k != null) {

@@ -101,0 +105,0 @@ scope = ds.scope;

@@ -17,14 +17,13 @@ import {addEncoders, extendEncode} from './encode/util';

export default function(spec, scope) {
let config = axisConfig(spec, scope),
encode = spec.encode || {},
axisEncode = encode.axis || {},
name = axisEncode.name || undefined,
interactive = axisEncode.interactive,
style = axisEncode.style,
_ = lookup(spec, config),
band = tickBand(_),
datum, dataRef, ticksRef, size, children;
const config = axisConfig(spec, scope),
encode = spec.encode || {},
axisEncode = encode.axis || {},
name = axisEncode.name || undefined,
interactive = axisEncode.interactive,
style = axisEncode.style,
_ = lookup(spec, config),
band = tickBand(_);
// single-element data source for axis group
datum = {
const datum = {
scale: spec.scale,

@@ -37,11 +36,6 @@ ticks: !!_('ticks'),

};
dataRef = ref(scope.add(Collect({}, [datum])));
const dataRef = ref(scope.add(Collect({}, [datum])));
// encoding properties for axis group item
axisEncode = extendEncode(
buildAxisEncode(_, spec), axisEncode, Skip
);
// data source for axis ticks
ticksRef = ref(scope.add(AxisTicks({
const ticksRef = ref(scope.add(AxisTicks({
scale: scope.scaleRef(spec.scale),

@@ -57,3 +51,4 @@ extra: scope.property(band.extra),

// generate axis marks
children = [];
const children = [];
let size;

@@ -92,3 +87,3 @@ // include axis gridlines if requested

from: dataRef,
encode: axisEncode,
encode: extendEncode(buildAxisEncode(_, spec), axisEncode, Skip),
marks: children,

@@ -95,0 +90,0 @@ aria: _('aria'),

@@ -17,3 +17,3 @@ import parseTransform from './transform';

if (data.on) {
data.on.forEach(function(on) {
data.on.forEach(on => {
parseTrigger(on, scope, data.name);

@@ -30,4 +30,4 @@ });

function analyze(data, scope, ops) {
let output = [],
source = null,
const output = [];
let source = null,
modify = false,

@@ -34,0 +34,0 @@ generate = false,

@@ -10,7 +10,7 @@ import {ifX, ifY} from './axis-util';

export default function(spec, config, userEncode, dataRef) {
let _ = lookup(spec, config),
orient = spec.orient,
encode, enter, update;
const _ = lookup(spec, config),
orient = spec.orient;
encode = {
let enter, update;
const encode = {
enter: enter = {opacity: zero},

@@ -17,0 +17,0 @@ update: update = {opacity: one},

@@ -12,11 +12,10 @@ import {getSign, ifX, ifY} from './axis-util';

export default function(spec, config, userEncode, dataRef, band) {
let _ = lookup(spec, config),
orient = spec.orient,
vscale = spec.gridScale,
sign = getSign(orient, 1, -1),
offset = offsetValue(spec.offset, sign),
encode, enter, exit, update,
tickPos, gridStart, gridEnd, sz;
const _ = lookup(spec, config),
orient = spec.orient,
vscale = spec.gridScale,
sign = getSign(orient, 1, -1),
offset = offsetValue(spec.offset, sign);
encode = {
let enter, exit, update;
const encode = {
enter: enter = {opacity: zero},

@@ -36,3 +35,3 @@ update: update = {opacity: one},

tickPos = {
const tickPos = {
scale: spec.scale,

@@ -46,9 +45,9 @@ field: Value,

sz = ifX(orient, {signal: 'height'}, {signal: 'width'});
const sz = ifX(orient, {signal: 'height'}, {signal: 'width'});
gridStart = vscale
const gridStart = vscale
? {scale: vscale, range: 0, mult: sign, offset: offset}
: {value: 0, offset: offset};
gridEnd = vscale
const gridEnd = vscale
? {scale: vscale, range: 1, mult: sign, offset: offset}

@@ -55,0 +54,0 @@ : extend(sz, {mult: sign, offset: offset});

@@ -19,15 +19,15 @@ import {getSign, ifRight, ifTop, ifX, ifY, patch} from './axis-util';

export default function(spec, config, userEncode, dataRef, size, band) {
let _ = lookup(spec, config),
orient = spec.orient,
scale = spec.scale,
sign = getSign(orient, -1, 1),
flush = deref(_('labelFlush')),
flushOffset = deref(_('labelFlushOffset')),
flushOn = flush === 0 || !!flush,
labelAlign = _('labelAlign'),
labelBaseline = _('labelBaseline'),
encode, enter, update, tickSize, tickPos,
align, baseline, bound, overlap, offsetExpr;
const _ = lookup(spec, config),
orient = spec.orient,
scale = spec.scale,
sign = getSign(orient, -1, 1),
flush = deref(_('labelFlush')),
flushOffset = deref(_('labelFlushOffset')),
labelAlign = _('labelAlign'),
labelBaseline = _('labelBaseline');
tickSize = encoder(size);
let flushOn = flush === 0 || !!flush,
update;
const tickSize = encoder(size);
tickSize.mult = sign;

@@ -37,3 +37,3 @@ tickSize.offset = encoder(_('labelPadding') || 0);

tickPos = {
const tickPos = {
scale: scale,

@@ -45,3 +45,3 @@ field: Value,

align = ifX(orient,
const align = ifX(orient,
flushOn

@@ -53,3 +53,3 @@ ? flushExpr(scale, flush, '"left"', '"right"', '"center"')

baseline = ifX(orient,
const baseline = ifX(orient,
ifTop(orient, 'bottom', 'top'),

@@ -61,6 +61,6 @@ flushOn

offsetExpr = flushExpr(scale, flush, `-(${flushOffset})`, flushOffset, 0);
const offsetExpr = flushExpr(scale, flush, `-(${flushOffset})`, flushOffset, 0);
flushOn = flushOn && flushOffset;
enter = {
const enter = {
opacity: zero,

@@ -71,3 +71,3 @@ x: ifX(orient, tickPos, tickSize),

encode = {
const encode = {
enter: enter,

@@ -109,4 +109,4 @@ update: update = {

bound = _('labelBound');
overlap = _('labelOverlap');
const bound = _('labelBound');
let overlap = _('labelOverlap');

@@ -113,0 +113,0 @@ // if overlap method or bound defined, request label overlap removal

@@ -10,8 +10,8 @@ import {getSign, ifX, ifY} from './axis-util';

export default function(spec, config, userEncode, dataRef, size, band) {
let _ = lookup(spec, config),
orient = spec.orient,
sign = getSign(orient, -1, 1),
encode, enter, exit, update, tickSize, tickPos;
const _ = lookup(spec, config),
orient = spec.orient,
sign = getSign(orient, -1, 1);
encode = {
let enter, exit, update;
const encode = {
enter: enter = {opacity: zero},

@@ -31,6 +31,6 @@ update: update = {opacity: one},

tickSize = encoder(size);
const tickSize = encoder(size);
tickSize.mult = sign;
tickPos = {
const tickPos = {
scale: spec.scale,

@@ -37,0 +37,0 @@ field: Value,

@@ -11,8 +11,8 @@ import {getSign, ifTop, ifX, ifY, mult, patch} from './axis-util';

export default function(spec, config, userEncode, dataRef) {
let _ = lookup(spec, config),
orient = spec.orient,
sign = getSign(orient, -1, 1),
encode, enter, update, titlePos;
const _ = lookup(spec, config),
orient = spec.orient,
sign = getSign(orient, -1, 1);
encode = {
let enter, update;
const encode = {
enter: enter = {

@@ -32,3 +32,3 @@ opacity: zero,

titlePos = {
const titlePos = {
signal: `lerp(range("${spec.scale}"), ${anchorExpr(0, 1, 0.5)})`

@@ -35,0 +35,0 @@ };

@@ -55,4 +55,4 @@ import {Center, End, Left, Right, Start, Vertical} from './constants';

export function tickBand(_) {
let v = _('tickBand'),
offset = _('tickOffset'),
const v = _('tickBand');
let offset = _('tickOffset'),
band, extra;

@@ -59,0 +59,0 @@

@@ -10,8 +10,9 @@ import {Perc, Perc2, Value, one, zero} from './constants';

export default function(spec, scale, config, userEncode, dataRef) {
let _ = lookup(spec, config),
vertical = _.isVertical(),
thickness = _.gradientThickness(),
length = _.gradientLength(),
encode, enter, u, v, uu, vv, adjust = '';
const _ = lookup(spec, config),
vertical = _.isVertical(),
thickness = _.gradientThickness(),
length = _.gradientLength();
let u, v, uu, vv, adjust = '';
vertical

@@ -21,3 +22,3 @@ ? (u = 'y', uu = 'y2', v = 'x', vv = 'width', adjust = '1-')

enter = {
const enter = {
opacity: zero,

@@ -31,3 +32,3 @@ fill: {scale: scale, field: Value}

encode = {
const encode = {
enter: enter,

@@ -34,0 +35,0 @@ update: extend({}, enter, {opacity: one}),

@@ -16,10 +16,11 @@ import {

export default function(spec, config, userEncode, dataRef) {
let _ = lookup(spec, config),
vertical = _.isVertical(),
thickness = encoder(_.gradientThickness()),
length = _.gradientLength(),
overlap = _('labelOverlap'),
encode, enter, update, u, v, adjust = '';
const _ = lookup(spec, config),
vertical = _.isVertical(),
thickness = encoder(_.gradientThickness()),
length = _.gradientLength();
encode = {
let overlap = _('labelOverlap'),
enter, update, u, v, adjust = '';
const encode = {
enter: enter = {

@@ -26,0 +27,0 @@ opacity: zero

@@ -10,8 +10,9 @@ import {one, zero} from './constants';

export default function(spec, scale, config, userEncode) {
let _ = lookup(spec, config),
vertical = _.isVertical(),
thickness = _.gradientThickness(),
length = _.gradientLength(),
encode, enter, start, stop, width, height;
const _ = lookup(spec, config),
vertical = _.isVertical(),
thickness = _.gradientThickness(),
length = _.gradientLength();
let enter, start, stop, width, height;
if (vertical) {

@@ -29,3 +30,3 @@ start = [0, 1];

encode = {
const encode = {
enter: enter = {

@@ -32,0 +33,0 @@ opacity: zero,

@@ -14,16 +14,16 @@ import {

export default function(spec, config, userEncode, dataRef, columns) {
let _ = lookup(spec, config),
entries = userEncode.entries,
interactive = !!(entries && entries.interactive),
name = entries ? entries.name : undefined,
height = _('clipHeight'),
symbolOffset = _('symbolOffset'),
valueRef = {data: 'value'},
encode = {},
xSignal = `(${columns}) ? datum.${Offset} : datum.${Size}`,
yEncode = height ? encoder(height) : {field: Size},
index = `datum.${Index}`,
ncols = `max(1, ${columns})`,
enter, update, labelOffset, symbols, labels, nrows, sort;
const _ = lookup(spec, config),
entries = userEncode.entries,
interactive = !!(entries && entries.interactive),
name = entries ? entries.name : undefined,
height = _('clipHeight'),
symbolOffset = _('symbolOffset'),
valueRef = {data: 'value'},
xSignal = `(${columns}) ? datum.${Offset} : datum.${Size}`,
yEncode = height ? encoder(height) : {field: Size},
index = `datum.${Index}`,
ncols = `max(1, ${columns})`;
let encode, enter, update, nrows, sort;
yEncode.mult = 0.5;

@@ -67,3 +67,3 @@

LegendScales.forEach(function(scale) {
LegendScales.forEach(scale => {
if (spec[scale]) {

@@ -74,3 +74,3 @@ update[scale] = enter[scale] = {scale: spec[scale], field: Value};

symbols = guideMark({
const symbols = guideMark({
type: SymbolMark,

@@ -85,3 +85,3 @@ role: LegendSymbolRole,

// -- LEGEND LABELS --
labelOffset = encoder(symbolOffset);
const labelOffset = encoder(symbolOffset);
labelOffset.offset = _('labelOffset');

@@ -118,3 +118,3 @@

labels = guideMark({
const labels = guideMark({
type: TextMark,

@@ -121,0 +121,0 @@ role: LegendLabelRole,

@@ -21,5 +21,5 @@ import {GuideTitleStyle, one, zero} from './constants';

export default function(spec, config, userEncode, dataRef) {
let _ = lookup(spec, config), encode;
const _ = lookup(spec, config);
encode = {
const encode = {
enter: {opacity: zero},

@@ -26,0 +26,0 @@ update: {

@@ -24,13 +24,13 @@ import {addEncoders, extendEncode} from './encode/util';

export default function(spec, scope) {
let config = scope.config.legend,
encode = spec.encode || {},
legendEncode = encode.legend || {},
name = legendEncode.name || undefined,
interactive = legendEncode.interactive,
style = legendEncode.style,
_ = lookup(spec, config),
scales = {}, scale = 0,
entryEncode, entryLayout, params, children,
type, datum, dataRef, entryRef;
const config = scope.config.legend,
encode = spec.encode || {},
_ = lookup(spec, config),
legendEncode = encode.legend || {},
name = legendEncode.name || undefined,
interactive = legendEncode.interactive,
style = legendEncode.style,
scales = {};
let scale = 0, entryLayout, params, children;
// resolve scales and 'canonical' scale name

@@ -43,6 +43,6 @@ LegendScales.forEach(s => spec[s]

// resolve legend type (symbol, gradient, or discrete gradient)
type = legendType(spec, scope.scaleType(scale));
const type = legendType(spec, scope.scaleType(scale));
// single-element data source for legend group
datum = {
const datum = {
title: spec.title != null,

@@ -53,14 +53,9 @@ scales: scales,

};
dataRef = ref(scope.add(Collect(null, [datum])));
const dataRef = ref(scope.add(Collect(null, [datum])));
// encoding properties for legend group
legendEncode = extendEncode(
buildLegendEncode(_, spec, config), legendEncode, Skip
);
// encoding properties for legend entry sub-group
entryEncode = {enter: {x: {value: 0}, y: {value: 0}}};
const entryEncode = {enter: {x: {value: 0}, y: {value: 0}}};
// data source for legend values
entryRef = ref(scope.add(LegendEntries(params = {
const entryRef = ref(scope.add(LegendEntries(params = {
type: type,

@@ -129,3 +124,3 @@ scale: scope.scaleRef(scale),

from: dataRef,
encode: legendEncode,
encode: extendEncode(buildLegendEncode(_, spec, config), legendEncode, Skip),
marks: children,

@@ -158,5 +153,3 @@ aria: _('aria'),

function scaleCount(spec) {
return LegendScales.reduce(function(count, type) {
return count + (spec[type] ? 1 : 0);
}, 0);
return LegendScales.reduce((count, type) => count + (spec[type] ? 1 : 0), 0);
}

@@ -163,0 +156,0 @@

@@ -19,13 +19,14 @@ import parseEncode from './encode';

export default function(spec, scope) {
let role = getRole(spec),
group = spec.type === GroupMark,
facet = spec.from && spec.from.facet,
layout = spec.layout || role === ScopeRole || role === FrameRole,
nested = role === MarkRole || layout || facet,
overlap = spec.overlap,
ops, op, input, store, enc, bound, render, sieve, name,
joinRef, markRef, encodeRef, layoutRef, boundRef;
const role = getRole(spec),
group = spec.type === GroupMark,
facet = spec.from && spec.from.facet,
overlap = spec.overlap;
let layout = spec.layout || role === ScopeRole || role === FrameRole,
ops, op, store, enc, name, layoutRef, boundRef;
const nested = role === MarkRole || layout || facet;
// resolve input data
input = parseData(spec.from, group, scope);
const input = parseData(spec.from, group, scope);

@@ -38,3 +39,3 @@ // data join to map tuples to visual items

}));
joinRef = ref(op);
const joinRef = ref(op);

@@ -55,3 +56,3 @@ // collect visual items

}));
markRef = ref(op);
const markRef = ref(op);

@@ -89,3 +90,3 @@ // add visual encoders

encodeRef = ref(op);
const encodeRef = ref(op);

@@ -104,3 +105,3 @@ // add view layout operator if needed

// compute bounding boxes
bound = scope.add(Bound({mark: markRef, pulse: layoutRef || encodeRef}));
const bound = scope.add(Bound({mark: markRef, pulse: layoutRef || encodeRef}));
boundRef = ref(bound);

@@ -128,4 +129,4 @@

// render / sieve items
render = scope.add(Render({pulse: boundRef}));
sieve = scope.add(Sieve({pulse: ref(render)}, undefined, scope.parent()));
const render = scope.add(Render({pulse: boundRef})),
sieve = scope.add(Sieve({pulse: ref(render)}, undefined, scope.parent()));

@@ -132,0 +133,0 @@ // if mark is named, make accessible as reactive geometry

@@ -8,6 +8,6 @@ import {getDataRef} from './data';

export default function(spec, scope, group) {
let facet = spec.from.facet,
name = facet.name,
data = getDataRef(facet, scope),
subscope, source, values, op;
const facet = spec.from.facet,
name = facet.name,
data = getDataRef(facet, scope);
let op;

@@ -37,5 +37,5 @@ if (!facet.name) {

// initialize facet subscope
subscope = scope.fork();
source = subscope.add(Collect());
values = subscope.add(Sieve({pulse: ref(source)}));
const subscope = scope.fork(),
source = subscope.add(Collect()),
values = subscope.add(Sieve({pulse: ref(source)}));
subscope.addData(name, new DataScope(subscope, source, source, values));

@@ -42,0 +42,0 @@ subscope.addSignal('parent', null);

@@ -29,4 +29,4 @@ import {

export function parseScale(spec, scope) {
let params = scope.getScale(spec.name).params,
key;
const params = scope.getScale(spec.name).params;
let key;

@@ -105,3 +105,3 @@ params.domain = parseScaleDomain(spec.domain, spec, scope);

const data = domain.data,
fields = domain.fields.reduce(function(dom, d) {
fields = domain.fields.reduce((dom, d) => {
d = isString(d) ? {data: data, field: d}

@@ -134,7 +134,7 @@ : (isArray(d) || d.signal) ? fieldRef(d, scope)

function ordinalMultipleDomain(domain, scope, fields) {
let sort = parseSort(domain.sort, true),
counts, p, a, c, v;
const sort = parseSort(domain.sort, true);
let a, v;
// get value counts for each domain field
counts = fields.map(f => {
const counts = fields.map(f => {
const data = scope.getData(f.data);

@@ -146,3 +146,3 @@ if (!data) dataLookupError(f.data);

// aggregate the results from each domain field
p = {groupby: keyFieldRef, pulse: counts};
const p = {groupby: keyFieldRef, pulse: counts};
if (sort) {

@@ -158,3 +158,3 @@ a = sort.op || 'count';

// collect aggregate output
c = scope.add(Collect({pulse: ref(a)}));
const c = scope.add(Collect({pulse: ref(a)}));

@@ -242,4 +242,4 @@ // extract values for combined domain

function parseScaleRange(spec, scope, params) {
let range = spec.range,
config = scope.config.range;
const config = scope.config.range;
let range = spec.range;

@@ -246,0 +246,0 @@ if (range.signal) {

@@ -6,4 +6,4 @@ import parseUpdate from './update';

export default function(signal, scope) {
let op = scope.getSignal(signal.name),
expr = signal.update;
const op = scope.getSignal(signal.name);
let expr = signal.update;

@@ -10,0 +10,0 @@ if (signal.init) {

@@ -33,4 +33,3 @@ import {Scope, View} from '../util';

function eventStream(stream, scope) {
let id, entry;
let id;
if (stream.type === Timer) {

@@ -43,3 +42,3 @@ id = scope.event(Timer, stream.throttle);

entry = streamParameters({stream: id}, stream, scope);
const entry = streamParameters({stream: id}, stream, scope);
return Object.keys(entry).length === 1

@@ -46,0 +45,0 @@ ? id

@@ -18,14 +18,13 @@ import {addEncoders, extendEncode} from './encode/util';

let _ = lookup(spec, scope.config.title),
encode = spec.encode || {},
userEncode = encode.group || {},
name = userEncode.name || undefined,
interactive = userEncode.interactive,
style = userEncode.style,
children = [],
datum, dataRef;
const _ = lookup(spec, scope.config.title),
encode = spec.encode || {},
userEncode = encode.group || {},
name = userEncode.name || undefined,
interactive = userEncode.interactive,
style = userEncode.style,
children = [];
// single-element data source for group title
datum = {};
dataRef = ref(scope.add(Collect(null, [datum])));
const datum = {},
dataRef = ref(scope.add(Collect(null, [datum])));

@@ -32,0 +31,0 @@ // include title text

@@ -25,5 +25,7 @@ import {Params} from '../transforms';

function parseParameters(def, spec, scope) {
let params = {}, pdef, i, n;
for (i=0, n=def.params.length; i<n; ++i) {
pdef = def.params[i];
const params = {},
n = def.params.length;
for (let i = 0; i < n; ++i) {
const pdef = def.params[i];
params[pdef.name] = parseParameter(pdef, spec, scope);

@@ -113,8 +115,9 @@ }

function parseSubParameter(def, value, scope) {
let params, pdef, k, i, n;
const n =def.params.length;
let pdef;
// loop over defs to find matching key
for (i=0, n=def.params.length; i<n; ++i) {
for (let i = 0; i < n; ++i) {
pdef = def.params[i];
for (k in pdef.key) {
for (const k in pdef.key) {
if (pdef.key[k] !== value[k]) { pdef = null; break; }

@@ -128,3 +131,3 @@ }

// parse params, create Params transform, return ref
params = extend(parseParameters(pdef, value, scope), pdef.key);
const params = extend(parseParameters(pdef, value, scope), pdef.key);
return ref(scope.add(Params(params)));

@@ -131,0 +134,0 @@ }

@@ -5,11 +5,10 @@ import {operator} from '../util';

export default function(spec, scope, name) {
let remove = spec.remove,
insert = spec.insert,
toggle = spec.toggle,
modify = spec.modify,
values = spec.values,
op = scope.add(operator()),
update, expr;
const remove = spec.remove,
insert = spec.insert,
toggle = spec.toggle,
modify = spec.modify,
values = spec.values,
op = scope.add(operator());
update = 'if(' + spec.trigger + ',modify("'
const update = 'if(' + spec.trigger + ',modify("'
+ name + '",'

@@ -21,5 +20,5 @@ + [insert, remove, toggle, modify, values]

expr = parseExpression(update, scope);
const expr = parseExpression(update, scope);
op.update = expr.$expr;
op.params = expr.$params;
}

@@ -14,7 +14,8 @@ import parseStream from './stream';

export default function(spec, scope, target) {
const encode = spec.encode,
entry = {target: target};
let events = spec.events,
update = spec.update,
encode = spec.encode,
sources = [],
entry = {target: target};
sources = [];

@@ -21,0 +22,0 @@ if (!events) {

@@ -109,3 +109,3 @@ import DataScope from './DataScope';

if (op.refs) {
op.refs.forEach(function(ref) { ref.$ref = op.id; });
op.refs.forEach(ref => { ref.$ref = op.id; });
op.refs = null;

@@ -212,4 +212,4 @@ }

let s = field.signal,
f = this.field[s];
const s = field.signal;
let f = this.field[s];

@@ -418,9 +418,7 @@ if (!f) {

function arrayLambda(array) {
let code = '[',
i = 0,
n = array.length,
value;
const n = array.length;
let code = '[';
for (; i<n; ++i) {
value = array[i];
for (let i = 0; i<n; ++i) {
const value = array[i];
code += (i > 0 ? ',' : '')

@@ -448,2 +446,2 @@ + (isObject(value)

return code + '}';
}
}

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc