import{hasOwnProperty as on,isNumber as U,isString as N,writeConfig as jf,splitAccessPath as an,stringValue as A,isObject as z,isBoolean as Un,isArray as E,array as V,logger as Uf,Warn as Bf,isFunction as Wf,mergeConfig as ta,identity as Hf}from"/-/vega-util@v1.17.2-LUfkDhormMyfWqy3Ts6U/dist=es2020,mode=imports,min/optimized/vega-util.js";import{isObject as zr,writeConfig as qf,isArray as na,isString as Si}from"/-/vega@v5.30.0-fYDVG3pUN16BiGmbVNdw/dist=es2020,mode=imports,min/optimized/vega.js";import{parseSelector as cn}from"/-/vega-event-selector@v3.0.1-UgiEAWJA4WQL4DTKnV4R/dist=es2020,mode=imports,min/optimized/vega-event-selector.js";import{parseExpression as Gf}from"/-/vega-expression@v5.1.1-K4clrYr2THuj5KncykTn/dist=es2020,mode=imports,min/optimized/vega-expression.js";const Vf="vega-lite",Xf='Dominik Moritz, Kanit "Ham" Wongsuphasawat, Arvind Satyanarayan, Jeffrey Heer',Yf="5.19.0",Kf=["Kanit Wongsuphasawat (http://kanitw.yellowpigz.com)","Dominik Moritz (https://www.domoritz.de)","Arvind Satyanarayan (https://arvindsatya.com)","Jeffrey Heer (https://jheer.org)"],Qf="https://vega.github.io/vega-lite/",Zf="Vega-Lite is a concise high-level language for interactive visualization.",Jf=["vega","chart","visualization"],ed="build/vega-lite.js",td="build/vega-lite.min.js",nd="build/vega-lite.min.js",id="build/src/index",rd="build/src/index.d.ts",sd={vl2pdf:"./bin/vl2pdf",vl2png:"./bin/vl2png",vl2svg:"./bin/vl2svg",vl2vg:"./bin/vl2vg"},od=["bin","build","src","vega-lite*","tsconfig.json"],ad={changelog:"conventional-changelog -p angular -r 2",prebuild:"yarn clean:build",build:"yarn build:only","build:only":"tsc -p tsconfig.build.json && rollup -c","prebuild:examples":"yarn build:only","build:examples":"yarn data && TZ=America/Los_Angeles scripts/build-examples.sh","prebuild:examples-full":"yarn build:only","build:examples-full":"TZ=America/Los_Angeles scripts/build-examples.sh 1","build:example":"TZ=America/Los_Angeles scripts/build-example.sh","build:toc":"yarn build:jekyll && scripts/generate-toc","build:site":"rollup -c site/rollup.config.mjs","build:jekyll":"pushd site && bundle exec jekyll build -q && popd","build:versions":"scripts/update-version.sh",clean:"yarn clean:build && del-cli 'site/data/*' 'examples/compiled/*.png' && find site/examples ! -name 'index.md' ! -name 'data' -type f -delete","clean:build":"del-cli 'build/*' !build/vega-lite-schema.json",data:"rsync -r node_modules/vega-datasets/data/* site/data","build-editor-preview":"scripts/build-editor-preview.sh",schema:"mkdir -p build && ts-json-schema-generator -f tsconfig.json -p src/index.ts -t TopLevelSpec --no-type-check --no-ref-encode > build/vega-lite-schema.json && yarn renameschema && cp build/vega-lite-schema.json site/_data/",renameschema:"scripts/rename-schema.sh",presite:"yarn data && yarn schema && yarn build:site && yarn build:versions && scripts/create-example-pages.sh",site:"yarn site:only","site:only":"pushd site && bundle exec jekyll serve -I -l && popd",prettierbase:"prettier '**/*.{md,css,yml}'",format:"eslint . --fix && yarn prettierbase --write",lint:"eslint . && yarn prettierbase --check",test:"yarn jest test/ && yarn lint && yarn schema && yarn jest examples/ && yarn test:runtime","test:cover":"yarn jest --collectCoverage test/","test:inspect":"node --inspect-brk ./node_modules/.bin/jest --runInBand test","test:runtime":"TZ=America/Los_Angeles npx jest test-runtime/ --config test-runtime/jest-config.json","test:runtime:generate":"yarn build:only && del-cli test-runtime/resources && VL_GENERATE_TESTS=true yarn test:runtime",watch:"tsc -p tsconfig.build.json -w","watch:site":"yarn build:site -w","watch:test":"yarn jest --watch test/","watch:test:runtime":"TZ=America/Los_Angeles npx jest --watch test-runtime/ --config test-runtime/jest-config.json",release:"release-it"},cd={type:"git",url:"https://github.com/vega/vega-lite.git"},ud="BSD-3-Clause",ld={url:"https://github.com/vega/vega-lite/issues"},fd={"@babel/core":"^7.24.7","@babel/preset-env":"^7.24.7","@babel/preset-typescript":"^7.24.7","@release-it/conventional-changelog":"^8.0.1","@rollup/plugin-alias":"^5.1.0","@rollup/plugin-babel":"^6.0.4","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-json":"^6.1.0","@rollup/plugin-node-resolve":"^15.2.3","@rollup/plugin-terser":"^0.4.4","@types/d3":"^7.4.3","@types/jest":"^29.5.12","@types/pako":"^2.0.3","@typescript-eslint/eslint-plugin":"^7.13.0","@typescript-eslint/parser":"^7.13.0",ajv:"^8.16.0","ajv-formats":"^2.1.1",cheerio:"^1.0.0-rc.12","conventional-changelog-cli":"^4.1.0",d3:"^7.9.0","del-cli":"^5.1.0",eslint:"^8.57.0","eslint-config-prettier":"^9.1.0","eslint-plugin-jest":"^27.9.0","eslint-plugin-prettier":"^5.1.3","fast-json-stable-stringify":"~2.1.0","highlight.js":"^11.9.0",jest:"^29.7.0","jest-dev-server":"^10.0.0",mkdirp:"^3.0.1",pako:"^2.1.0",prettier:"^3.3.2",puppeteer:"^15.0.0","release-it":"17.2.1",rollup:"^4.18.0","rollup-plugin-bundle-size":"^1.0.3",serve:"^14.2.3",terser:"^5.31.1","ts-jest":"^29.1.4","ts-json-schema-generator":"^1.5.0",typescript:"~5.4.5","vega-cli":"^5.28.0","vega-datasets":"^2.8.1","vega-embed":"^6.25.0","vega-tooltip":"^0.34.0","yaml-front-matter":"^4.1.1"},dd={"json-stringify-pretty-compact":"~3.0.0",tslib:"~2.6.3","vega-event-selector":"~3.0.1","vega-expression":"~5.1.0","vega-util":"~1.17.2",yargs:"~17.7.2"},pd={vega:"^5.24.0"},gd={node:">=18"},hd="yarn@1.22.19";var md={name:Vf,author:Xf,version:Yf,collaborators:Kf,homepage:Qf,description:Zf,keywords:Jf,main:ed,unpkg:td,jsdelivr:nd,module:id,types:rd,bin:sd,files:od,scripts:ad,repository:cd,license:ud,bugs:ld,devDependencies:fd,dependencies:dd,peerDependencies:pd,engines:gd,packageManager:hd};function Rr(e){return!!e.or}function Ir(e){return!!e.and}function Lr(e){return!!e.not}function vi(e,t){if(Lr(e))vi(e.not,t);else if(Ir(e))for(const n of e.and)vi(n,t);else if(Rr(e))for(const n of e.or)vi(n,t);else t(e)}function un(e,t){return Lr(e)?{not:un(e.not,t)}:Ir(e)?{and:e.and.map(n=>un(n,t))}:Rr(e)?{or:e.or.map(n=>un(n,t))}:t(e)}const C=structuredClone;function ia(e){throw new Error(e)}function ln(e,t){const n={};for(const i of t)on(e,i)&&(n[i]=e[i]);return n}function pe(e,t){const n={...e};for(const i of t)delete n[i];return n}Set.prototype.toJSON=function(){return`Set(${[...this].map(e=>D(e)).join(",")})`};function P(e){if(U(e))return e;const t=N(e)?e:D(e);if(t.length<250)return t;let n=0;for(let i=0;ia===0?o:`[${o}]`),s=r.map((o,a)=>r.slice(0,a+1).join(""));for(const o of s)t.add(o)}return t}function Br(e,t){return e===void 0||t===void 0?!0:jr(Ur(e),Ur(t))}function M(e){return b(e).length===0}const b=Object.keys,ie=Object.values,bt=Object.entries;function Bn(e){return e===!0||e===!1}function W(e){const t=e.replace(/\W/g,"_");return(e.match(/^\d+/)?"_":"")+t}function Wn(e,t){return Lr(e)?`!(${Wn(e.not,t)})`:Ir(e)?`(${e.and.map(n=>Wn(n,t)).join(") && (")})`:Rr(e)?`(${e.or.map(n=>Wn(n,t)).join(") || (")})`:t(e)}function wi(e,t){if(t.length===0)return!0;const n=t.shift();return n in e&&wi(e[n],t)&&delete e[n],M(e)}function Hn(e){return e.charAt(0).toUpperCase()+e.substr(1)}function Wr(e,t="datum"){const n=an(e),i=[];for(let r=1;r<=n.length;r++){const s=`[${n.slice(0,r).map(A).join("][")}]`;i.push(`${t}${s}`)}return i.join(" && ")}function oa(e,t="datum"){return`${t}[${A(an(e).join("."))}]`}function xd(e){return e.replace(/(\[|\]|\.|'|")/g,"\\$1")}function we(e){return`${an(e).map(xd).join("\\.")}`}function Lt(e,t,n){return e.replace(new RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"g"),n)}function dn(e){return`${an(e).join(".")}`}function pn(e){return e?an(e).length:0}function X(...e){for(const t of e)if(t!==void 0)return t;return}let aa=42;function ca(e){const t=++aa;return e?String(e)+t:t}function Sd(){aa=42}function ua(e){return la(e)?e:`__${e}`}function la(e){return e.startsWith("__")}function qn(e){return e===void 0?void 0:(e%360+360)%360}function $i(e){return U(e)?!0:!isNaN(e)&&!isNaN(parseFloat(e))}const fa=Object.getPrototypeOf(structuredClone({}));function be(e,t){if(e===t)return!0;if(e&&t&&typeof e=="object"&&typeof t=="object"){if(e.constructor.name!==t.constructor.name)return!1;let n,i;if(Array.isArray(e)){if(n=e.length,n!=t.length)return!1;for(i=n;i--!==0;)if(!be(e[i],t[i]))return!1;return!0}if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(i of e.entries())if(!t.has(i[0]))return!1;for(i of e.entries())if(!be(i[1],t.get(i[0])))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(i of e.entries())if(!t.has(i[0]))return!1;return!0}if(ArrayBuffer.isView(e)&&ArrayBuffer.isView(t)){if(n=e.length,n!=t.length)return!1;for(i=n;i--!==0;)if(e[i]!==t[i])return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf&&e.valueOf!==fa.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString&&e.toString!==fa.toString)return e.toString()===t.toString();const r=Object.keys(e);if(n=r.length,n!==Object.keys(t).length)return!1;for(i=n;i--!==0;)if(!Object.prototype.hasOwnProperty.call(t,r[i]))return!1;for(i=n;i--!==0;){const s=r[i];if(!be(e[s],t[s]))return!1}return!0}return e!==e&&t!==t}function D(e){const t=[];return function n(i){if(i&&i.toJSON&&typeof i.toJSON=="function"&&(i=i.toJSON()),i===void 0)return;if(typeof i=="number")return isFinite(i)?""+i:"null";if(typeof i!="object")return JSON.stringify(i);let r,s;if(Array.isArray(i)){for(s="[",r=0;rOi(e[t])?W(`_${t}_${bt(e[t])}`):W(`_${t}_${e[t]}`)).join("")}function j(e){return e===!0||Ut(e)&&!e.binned}function re(e){return e==="binned"||Ut(e)&&e.binned===!0}function Ut(e){return z(e)}function Oi(e){return e?.param}function _a(e){switch(e){case tt:case nt:case st:case ge:case Be:case We:case wt:case ot:case St:case vt:case he:return 6;case $t:return 4;default:return 10}}function Yn(e){return!!e?.expr}function oe(e,{level:t}={level:0}){const n=b(e||{}),i={};for(const r of n)i[r]=t===0?xe(e[r]):oe(e[r],{level:t-1});return i}function ka(e){const{anchor:t,frame:n,offset:i,orient:r,angle:s,limit:o,color:a,subtitleColor:c,subtitleFont:u,subtitleFontSize:l,subtitleFontStyle:f,subtitleFontWeight:d,subtitleLineHeight:p,subtitlePadding:h,...g}=e,m={...g,...a?{fill:a}:{}},y={...t?{anchor:t}:{},...n?{frame:n}:{},...i?{offset:i}:{},...r?{orient:r}:{},...s!==void 0?{angle:s}:{},...o!==void 0?{limit:o}:{}},v={...c?{subtitleColor:c}:{},...u?{subtitleFont:u}:{},...l?{subtitleFontSize:l}:{},...f?{subtitleFontStyle:f}:{},...d?{subtitleFontWeight:d}:{},...p?{subtitleLineHeight:p}:{},...h?{subtitlePadding:h}:{}},k=ln(e,["align","baseline","dx","dy","limit"]);return{titleMarkConfig:m,subtitleMarkConfig:k,nonMarkTitleProperties:y,subtitle:v}}function kt(e){return N(e)||E(e)&&N(e[0])}function $(e){return!!e?.signal}function Ct(e){return!!e.step}function Hd(e){return E(e)?!1:"fields"in e&&!("data"in e)}function qd(e){return E(e)?!1:"fields"in e&&"data"in e}function ut(e){return E(e)?!1:"field"in e&&"data"in e}const Gd={aria:1,description:1,ariaRole:1,ariaRoleDescription:1,blend:1,opacity:1,fill:1,fillOpacity:1,stroke:1,strokeCap:1,strokeWidth:1,strokeOpacity:1,strokeDash:1,strokeDashOffset:1,strokeJoin:1,strokeOffset:1,strokeMiterLimit:1,startAngle:1,endAngle:1,padAngle:1,innerRadius:1,outerRadius:1,size:1,shape:1,interpolate:1,tension:1,orient:1,align:1,baseline:1,text:1,dir:1,dx:1,dy:1,ellipsis:1,limit:1,radius:1,theta:1,angle:1,font:1,fontSize:1,fontWeight:1,fontStyle:1,lineBreak:1,lineHeight:1,cursor:1,href:1,tooltip:1,cornerRadius:1,cornerRadiusTopLeft:1,cornerRadiusTopRight:1,cornerRadiusBottomLeft:1,cornerRadiusBottomRight:1,aspect:1,width:1,height:1,url:1,smooth:1},Vd=b(Gd),Xd={arc:1,area:1,group:1,image:1,line:1,path:1,rect:1,rule:1,shape:1,symbol:1,text:1,trail:1},es=["cornerRadius","cornerRadiusTopLeft","cornerRadiusTopRight","cornerRadiusBottomLeft","cornerRadiusBottomRight"];function Ca(e){const t=E(e.condition)?e.condition.map(Fa):Fa(e.condition);return{...xe(e),condition:t}}function xe(e){if(Yn(e)){const{expr:t,...n}=e;return{signal:t,...n}}return e}function Fa(e){if(Yn(e)){const{expr:t,...n}=e;return{signal:t,...n}}return e}function B(e){if(Yn(e)){const{expr:t,...n}=e;return{signal:t,...n}}return $(e)?e:e!==void 0?{value:e}:void 0}function Yd(e){return $(e)?e.signal:A(e)}function Na(e){return $(e)?e.signal:A(e.value)}function Ae(e){return $(e)?e.signal:e==null?null:A(e)}function Kd(e,t,n){for(const i of n){const r=Ge(i,t.markDef,t.config);r!==void 0&&(e[i]=B(r))}return e}function Ta(e){return[].concat(e.type,e.style??[])}function R(e,t,n,i={}){const{vgChannel:r,ignoreVgConfig:s}=i;return r&&t[r]!==void 0?t[r]:t[e]!==void 0?t[e]:s&&(!r||r===e)?void 0:Ge(e,t,n,i)}function Ge(e,t,n,{vgChannel:i}={}){return X(i?Ai(e,t,n.style):void 0,Ai(e,t,n.style),i?n[t.type][i]:void 0,n[t.type][e],i?n.mark[i]:n.mark[e])}function Ai(e,t,n){return Oa(e,Ta(t),n)}function Oa(e,t,n){t=V(t);let i;for(const r of t){const s=n[r];s&&s[e]!==void 0&&(i=s[e])}return i}function Aa(e,t){return V(e).reduce((n,i)=>(n.field.push(w(i,t)),n.order.push(i.sort??"ascending"),n),{field:[],order:[]})}function Pa(e,t){const n=[...e];return t.forEach(i=>{for(const r of n)if(be(r,i))return;n.push(i)}),n}function za(e,t){return be(e,t)||!t?e:e?[...V(e),...V(t)].join(", "):t}function Ra(e,t){const n=e.value,i=t.value;if(n==null||i===null)return{explicit:e.explicit,value:null};if((kt(n)||$(n))&&(kt(i)||$(i)))return{explicit:e.explicit,value:za(n,i)};if(kt(n)||$(n))return{explicit:e.explicit,value:n};if(kt(i)||$(i))return{explicit:e.explicit,value:i};if(!kt(n)&&!$(n)&&!kt(i)&&!$(i))return{explicit:e.explicit,value:Pa(n,i)};throw new Error("It should never reach here")}function ts(e){return`Invalid specification ${D(e)}. Make sure the specification includes at least one of the following properties: "mark", "layer", "facet", "hconcat", "vconcat", "concat", or "repeat".`}const Qd='Autosize "fit" only works for single views and layered views.';function Ia(e){const t=e=="width"?"Width":"Height";return`${t} "container" only works for single views and layered views.`}function La(e){const t=e=="width"?"Width":"Height",n=e=="width"?"x":"y";return`${t} "container" only works well with autosize "fit" or "fit-${n}".`}function Ma(e){return e?`Dropping "fit-${e}" because spec has discrete ${me(e)}.`:'Dropping "fit" because spec has discrete size.'}function ns(e){return`Unknown field for ${e}. Cannot calculate view size.`}function Da(e){return`Cannot project a selection on encoding channel "${e}", which has no field.`}function Zd(e,t){return`Cannot project a selection on encoding channel "${e}" as it uses an aggregate function ("${t}").`}function Jd(e){return`The "nearest" transform is not supported for ${e} marks.`}function ja(e){return`Selection not supported for ${e} yet.`}function ep(e){return`Cannot find a selection named "${e}".`}const tp="Scale bindings are currently only supported for scales with unbinned, continuous domains.",np="Sequntial scales are deprecated. The available quantitative scale type values are linear, log, pow, sqrt, symlog, time and utc",ip="Legend bindings are only supported for selections over an individual field or encoding channel.";function rp(e){return`Lookups can only be performed on selection parameters. "${e}" is a variable parameter.`}function sp(e){return`Cannot define and lookup the "${e}" selection in the same view. Try moving the lookup into a second, layered view?`}const op="The same selection must be used to override scale domains in a layered view.",ap='Interval selections should be initialized using "x", "y", "longitude", or "latitude" keys.';function cp(e){return`Unknown repeated value "${e}".`}function Ua(e){return`The "columns" property cannot be used when "${e}" has nested row/column.`}const up="Axes cannot be shared in concatenated or repeated views yet (https://github.com/vega/vega-lite/issues/2415).";function lp(e){return`Unrecognized parse "${e}".`}function Ba(e,t,n){return`An ancestor parsed field "${e}" as ${n} but a child wants to parse the field as ${t}.`}const fp="Attempt to add the same child twice.";function dp(e){return`Ignoring an invalid transform: ${D(e)}.`}const pp='If "from.fields" is not specified, "as" has to be a string that specifies the key to be used for the data from the secondary source.';function Wa(e){return`Config.customFormatTypes is not true, thus custom format type and format for channel ${e} are dropped.`}function gp(e){const{parentProjection:t,projection:n}=e;return`Layer's shared projection ${D(t)} is overridden by a child projection ${D(n)}.`}const hp="Arc marks uses theta channel rather than angle, replacing angle with theta.";function mp(e){return`${e}Offset dropped because ${e} is continuous`}function yp(e,t,n){return`Channel ${e} is a ${t}. Converted to {value: ${D(n)}}.`}function Ha(e){return`Invalid field type "${e}".`}function bp(e,t){return`Invalid field type "${e}" for aggregate: "${t}", using "quantitative" instead.`}function xp(e){return`Invalid aggregation operator "${e}".`}function qa(e,t){const{fill:n,stroke:i}=t;return`Dropping color ${e} as the plot also has ${n&&i?"fill and stroke":n?"fill":"stroke"}.`}function Sp(e){return`Position range does not support relative band size for ${e}.`}function is(e,t){return`Dropping ${D(e)} from channel "${t}" since it does not contain any data field, datum, value, or signal.`}const vp="Line marks cannot encode size with a non-groupby field. You may want to use trail marks instead.";function Pi(e,t,n){return`${e} dropped as it is incompatible with "${t}"${n?` when ${n}`:""}.`}function wp(e){return`${e}-encoding is dropped as ${e} is not a valid encoding channel.`}function $p(e){return`${e} encoding should be discrete (ordinal / nominal / binned).`}function Ep(e){return`${e} encoding should be discrete (ordinal / nominal / binned) or use a discretizing scale (e.g. threshold).`}function _p(e){return`Facet encoding dropped as ${e.join(" and ")} ${e.length>1?"are":"is"} also specified.`}function rs(e,t){return`Using discrete channel "${e}" to encode "${t}" field can be misleading as it does not encode ${t==="ordinal"?"order":"magnitude"}.`}function kp(e){return`The ${e} for range marks cannot be an expression`}function Cp(e,t){const n=e&&t?"x2 and y2":e?"x2":"y2";return`Line mark is for continuous lines and thus cannot be used with ${n}. We will use the rule mark (line segments) instead.`}function Fp(e,t){return`Specified orient "${e}" overridden with "${t}".`}function Np(e){return`Cannot use the scale property "${e}" with non-color channel.`}function Tp(e){return`Cannot use the relative band size with ${e} scale.`}function Op(e){return`Using unaggregated domain with raw field has no effect (${D(e)}).`}function Ap(e){return`Unaggregated domain not applicable for "${e}" since it produces values outside the origin domain of the source data.`}function Pp(e){return`Unaggregated domain is currently unsupported for log scale (${D(e)}).`}function zp(e){return`Cannot apply size to non-oriented mark "${e}".`}function Rp(e,t,n){return`Channel "${e}" does not work with "${t}" scale. We are using "${n}" scale instead.`}function Ip(e,t){return`FieldDef does not work with "${e}" scale. We are using "${t}" scale instead.`}function Ga(e,t,n){return`${n}-scale's "${t}" is dropped as it does not work with ${e} scale.`}function Va(e){return`The step for "${e}" is dropped because the ${e==="width"?"x":"y"} is continuous.`}function Lp(e,t,n,i){return`Conflicting ${t.toString()} property "${e.toString()}" (${D(n)} and ${D(i)}). Using ${D(n)}.`}function Mp(e,t,n,i){return`Conflicting ${t.toString()} property "${e.toString()}" (${D(n)} and ${D(i)}). Using the union of the two domains.`}function Dp(e){return`Setting the scale to be independent for "${e}" means we also have to set the guide (axis or legend) to be independent.`}function jp(e){return`Dropping sort property ${D(e)} as unioned domains only support boolean or op "count", "min", and "max".`}const Xa="Domains that should be unioned has conflicting sort properties. Sort will be set to true.",Up="Detected faceted independent scales that union domain of multiple fields from different data sources. We will use the first field. The result view size may be incorrect.",Bp="Detected faceted independent scales that union domain of the same fields from different source. We will assume that this is the same field from a different fork of the same data source. However, if this is not the case, the result view size may be incorrect.",Wp="Detected faceted independent scales that union domain of multiple fields from the same data source. We will use the first field. The result view size may be incorrect.";function Hp(e){return`Cannot stack "${e}" if there is already "${e}2".`}function qp(e){return`Stack is applied to a non-linear scale (${e}).`}function Gp(e){return`Stacking is applied even though the aggregate function is non-summative ("${e}").`}function zi(e,t){return`Invalid ${e}: ${D(t)}.`}function Vp(e){return`Dropping day from datetime ${D(e)} as day cannot be combined with other units.`}function Xp(e,t){return`${t?"extent ":""}${t&&e?"and ":""}${e?"center ":""}${t&&e?"are ":"is "}not needed when data are aggregated.`}function Yp(e,t,n){return`${e} is not usually used with ${t} for ${n}.`}function Kp(e,t){return`Continuous axis should not have customized aggregation function ${e}; ${t} already agregates the axis.`}function Ya(e){return`1D error band does not support ${e}.`}function Ka(e){return`Channel ${e} is required for "binned" bin.`}function Qp(e){return`Channel ${e} should not be used with "binned" bin.`}function Zp(e){return`Domain for ${e} is required for threshold scale.`}var $v=function(e,t,n,i,r){if(i==="m")throw new TypeError("Private method is not writable");if(i==="a"&&!r)throw new TypeError("Private accessor was defined without a setter");if(typeof t=="function"?e!==t||!r:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return i==="a"?r.call(e,n):r?r.value=n:t.set(e,n),n},Ev=function(e,t,n,i){if(n==="a"&&!i)throw new TypeError("Private accessor was defined without a getter");if(typeof t=="function"?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return n==="m"?i:n==="a"?i.call(e):i?i.value:t.get(e)};const Qa=Uf(Bf);let yn=Qa;function Jp(e){return yn=e,yn}function eg(){return yn=Qa,yn}function x(...e){yn.warn(...e)}function tg(...e){yn.debug(...e)}function Bt(e){if(e&&z(e)){for(const t of os)if(t in e)return!0}return!1}const Za=["january","february","march","april","may","june","july","august","september","october","november","december"],ng=Za.map(e=>e.substr(0,3)),Ja=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],ig=Ja.map(e=>e.substr(0,3));function rg(e){if($i(e)&&(e=+e),U(e))return e>4&&x(zi("quarter",e)),e-1;throw new Error(zi("quarter",e))}function sg(e){if($i(e)&&(e=+e),U(e))return e-1;{const t=e.toLowerCase(),n=Za.indexOf(t);if(n!==-1)return n;const i=t.substr(0,3),r=ng.indexOf(i);if(r!==-1)return r;throw new Error(zi("month",e))}}function og(e){if($i(e)&&(e=+e),U(e))return e%7;{const t=e.toLowerCase(),n=Ja.indexOf(t);if(n!==-1)return n;const i=t.substr(0,3),r=ig.indexOf(i);if(r!==-1)return r;throw new Error(zi("day",e))}}function ss(e,t){const n=[];if(t&&e.day!==void 0&&(b(e).length>1&&(x(Vp(e)),e=C(e),delete e.day)),e.year!==void 0?n.push(e.year):n.push(2012),e.month!==void 0){const i=t?sg(e.month):e.month;n.push(i)}else if(e.quarter!==void 0){const i=t?rg(e.quarter):e.quarter;n.push(U(i)?i*3:`${i}*3`)}else n.push(0);if(e.date!==void 0)n.push(e.date);else if(e.day!==void 0){const i=t?og(e.day):e.day;n.push(U(i)?i+1:`${i}+1`)}else n.push(1);for(const i of["hours","minutes","seconds","milliseconds"]){const r=e[i];n.push(typeof r=="undefined"?0:r)}return n}function Wt(e){const t=ss(e,!0),n=t.join(", ");return e.utc?`utc(${n})`:`datetime(${n})`}function ag(e){const t=ss(e,!1),n=t.join(", ");return e.utc?`utc(${n})`:`datetime(${n})`}function cg(e){const t=ss(e,!0);return e.utc?+new Date(Date.UTC(...t)):+new Date(...t)}const ec={year:1,quarter:1,month:1,week:1,day:1,dayofyear:1,date:1,hours:1,minutes:1,seconds:1,milliseconds:1},os=b(ec);function ug(e){return!!ec[e]}function Ht(e){return z(e)?e.binned:tc(e)}function tc(e){return e&&e.startsWith("binned")}function as(e){return e.startsWith("utc")}function lg(e){return e.substring(3)}const fg={"year-month":"%b %Y ","year-month-date":"%b %d, %Y "};function Ri(e){return os.filter(t=>ic(e,t))}function nc(e){const t=Ri(e);return t[t.length-1]}function ic(e,t){const n=e.indexOf(t);return n<0||(n>0&&t==="seconds"&&e.charAt(n-1)==="i"||e.length>n+3&&t==="day"&&e.charAt(n+3)==="o")?!1:!(n>0&&t==="year"&&e.charAt(n-1)==="f")}function dg(e,t,{end:n}={end:!1}){const i=Wr(t),r=as(e)?"utc":"";function s(c){return c==="quarter"?`(${r}quarter(${i})-1)`:`${r}${c}(${i})`}let o;const a={};for(const c of os)ic(e,c)&&(a[c]=s(c),o=c);return n&&(a[o]+="+1"),ag(a)}function rc(e){if(!e)return;const t=Ri(e);return`timeUnitSpecifier(${D(t)}, ${D(fg)})`}function pg(e,t,n){if(!e)return;const i=rc(e),r=n||as(e);return`${r?"utc":"time"}Format(${t}, ${i})`}function Z(e){if(!e)return;let t;return N(e)?tc(e)?t={unit:e.substring(6),binned:!0}:t={unit:e}:z(e)&&(t={...e,...e.unit?{unit:e.unit}:{}}),as(t.unit)&&(t.utc=!0,t.unit=lg(t.unit)),t}function gg(e){const{utc:t,...n}=Z(e);return n.unit?(t?"utc":"")+b(n).map(i=>W(`${i==="unit"?"":`_${i}_`}${n[i]}`)).join(""):(t?"utc":"")+"timeunit"+b(n).map(i=>W(`_${i}_${n[i]}`)).join("")}function sc(e,t=n=>n){const n=Z(e),i=nc(n.unit);if(i&&i!=="day"){const r={year:2001,month:1,date:1,hours:0,minutes:0,seconds:0,milliseconds:0},{step:s,part:o}=oc(i,n.step),a={...r,[o]:+r[o]+s};return`${t(Wt(a))} - ${t(Wt(r))}`}return}const hg={year:1,month:1,date:1,hours:1,minutes:1,seconds:1,milliseconds:1};function mg(e){return!!hg[e]}function oc(e,t=1){if(mg(e))return{part:e,step:t};switch(e){case"day":case"dayofyear":return{part:"date",step:t};case"quarter":return{part:"month",step:t*3};case"week":return{part:"date",step:t*7}}}function yg(e){return e?.param}function cs(e){return!!e?.field&&e.equal!==void 0}function us(e){return!!e?.field&&e.lt!==void 0}function ls(e){return!!e?.field&&e.lte!==void 0}function fs(e){return!!e?.field&&e.gt!==void 0}function ds(e){return!!e?.field&&e.gte!==void 0}function ps(e){if(e?.field){if(E(e.range)&&e.range.length===2)return!0;if($(e.range))return!0}return!1}function gs(e){return!!e?.field&&(E(e.oneOf)||E(e.in))}function bg(e){return!!e?.field&&e.valid!==void 0}function ac(e){return gs(e)||cs(e)||ps(e)||us(e)||fs(e)||ls(e)||ds(e)}function Ve(e,t){return Zi(e,{timeUnit:t,wrapTime:!0})}function xg(e,t){return e.map(n=>Ve(n,t))}function cc(e,t=!0){const{field:n}=e,i=Z(e.timeUnit),{unit:r,binned:s}=i||{},o=w(e,{expr:"datum"}),a=r?`time(${s?o:dg(r,n)})`:o;if(cs(e))return`${a}===${Ve(e.equal,r)}`;if(us(e)){const c=e.lt;return`${a}<${Ve(c,r)}`}else if(fs(e)){const c=e.gt;return`${a}>${Ve(c,r)}`}else if(ls(e)){const c=e.lte;return`${a}<=${Ve(c,r)}`}else if(ds(e)){const c=e.gte;return`${a}>=${Ve(c,r)}`}else{if(gs(e))return`indexof([${xg(e.oneOf,r).join(",")}], ${a}) !== -1`;if(bg(e))return Ii(a,e.valid);if(ps(e)){const{range:c}=e,u=$(c)?{signal:`${c.signal}[0]`}:c[0],l=$(c)?{signal:`${c.signal}[1]`}:c[1];if(u!==null&&l!==null&&t)return"inrange("+a+", ["+Ve(u,r)+", "+Ve(l,r)+"])";const f=[];return u!==null&&f.push(`${a} >= ${Ve(u,r)}`),l!==null&&f.push(`${a} <= ${Ve(l,r)}`),f.length>0?f.join(" && "):"true"}}throw new Error(`Invalid field predicate: ${D(e)}`)}function Ii(e,t=!0){return t?`isValid(${e}) && isFinite(+${e})`:`!isValid(${e}) || !isFinite(+${e})`}function Sg(e){return ac(e)&&e.timeUnit?{...e,timeUnit:Z(e.timeUnit)}:e}const Kn={quantitative:"quantitative",ordinal:"ordinal",temporal:"temporal",nominal:"nominal",geojson:"geojson"};function vg(e){return e==="quantitative"||e==="temporal"}function uc(e){return e==="ordinal"||e==="nominal"}const qt=Kn.quantitative,hs=Kn.ordinal,bn=Kn.temporal,ms=Kn.nominal,xn=Kn.geojson;function wg(e){if(e){e=e.toLowerCase();switch(e){case"q":case qt:return"quantitative";case"t":case bn:return"temporal";case"o":case hs:return"ordinal";case"n":case ms:return"nominal";case xn:return"geojson"}}return}const se={LINEAR:"linear",LOG:"log",POW:"pow",SQRT:"sqrt",SYMLOG:"symlog",IDENTITY:"identity",SEQUENTIAL:"sequential",TIME:"time",UTC:"utc",QUANTILE:"quantile",QUANTIZE:"quantize",THRESHOLD:"threshold",BIN_ORDINAL:"bin-ordinal",ORDINAL:"ordinal",POINT:"point",BAND:"band"},ys={linear:"numeric",log:"numeric",pow:"numeric",sqrt:"numeric",symlog:"numeric",identity:"numeric",sequential:"numeric",time:"time",utc:"time",ordinal:"ordinal","bin-ordinal":"bin-ordinal",point:"ordinal-position",band:"ordinal-position",quantile:"discretizing",quantize:"discretizing",threshold:"discretizing"};function $g(e,t){const n=ys[e],i=ys[t];return n===i||n==="ordinal-position"&&i==="time"||i==="ordinal-position"&&n==="time"}const Eg={linear:0,log:1,pow:1,sqrt:1,symlog:1,identity:1,sequential:1,time:0,utc:0,point:10,band:11,ordinal:0,"bin-ordinal":0,quantile:0,quantize:0,threshold:0};function lc(e){return Eg[e]}const fc=new Set(["linear","log","pow","sqrt","symlog"]),dc=new Set([...fc,"time","utc"]);function pc(e){return fc.has(e)}const gc=new Set(["quantile","quantize","threshold"]),_g=new Set([...dc,...gc,"sequential","identity"]),kg=new Set(["ordinal","bin-ordinal","point","band"]);function J(e){return kg.has(e)}function Pe(e){return _g.has(e)}function Xe(e){return dc.has(e)}function Sn(e){return gc.has(e)}const Cg={pointPadding:.5,barBandPaddingInner:.1,rectBandPaddingInner:0,bandWithNestedOffsetPaddingInner:.2,bandWithNestedOffsetPaddingOuter:.2,minBandSize:2,minFontSize:8,maxFontSize:40,minOpacity:.3,maxOpacity:.8,minSize:4,minStrokeWidth:1,maxStrokeWidth:4,quantileCount:4,quantizeCount:4,zero:!0};function Fg(e){return!N(e)&&!!e.name}function hc(e){return e?.param}function Ng(e){return e?.unionWith}function Tg(e){return zr(e)&&"field"in e}const Og={type:1,domain:1,domainMax:1,domainMin:1,domainMid:1,domainRaw:1,align:1,range:1,rangeMax:1,rangeMin:1,scheme:1,bins:1,reverse:1,round:1,clamp:1,nice:1,base:1,exponent:1,constant:1,interpolate:1,zero:1,padding:1,paddingInner:1,paddingOuter:1},{type:_v,domain:kv,range:Cv,rangeMax:Fv,rangeMin:Nv,scheme:Tv,...Ag}=Og,Pg=b(Ag);function bs(e,t){switch(t){case"type":case"domain":case"reverse":case"range":return!0;case"scheme":case"interpolate":return!["point","band","identity"].includes(e);case"bins":return!["point","band","identity","ordinal"].includes(e);case"round":return Xe(e)||e==="band"||e==="point";case"padding":case"rangeMin":case"rangeMax":return Xe(e)||["point","band"].includes(e);case"paddingOuter":case"align":return["point","band"].includes(e);case"paddingInner":return e==="band";case"domainMax":case"domainMid":case"domainMin":case"domainRaw":case"clamp":return Xe(e);case"nice":return Xe(e)||e==="quantize"||e==="threshold";case"exponent":return e==="pow";case"base":return e==="log";case"constant":return e==="symlog";case"zero":return Pe(e)&&!O(["log","time","utc","threshold","quantile"],e)}}function mc(e,t){switch(t){case"interpolate":case"scheme":case"domainMid":return mn(e)?void 0:Np(t);case"align":case"type":case"bins":case"domain":case"domainMax":case"domainMin":case"domainRaw":case"range":case"base":case"exponent":case"constant":case"nice":case"padding":case"paddingInner":case"paddingOuter":case"rangeMax":case"rangeMin":case"reverse":case"round":case"clamp":case"zero":return}}function zg(e,t){return O([hs,ms],t)?e===void 0||J(e):t===bn?O([se.TIME,se.UTC,void 0],e):t===qt?pc(e)||Sn(e)||e===void 0:!0}function Rg(e,t,n=!1){if(!qe(e))return!1;switch(e){case H:case Q:case xt:case gn:case $e:case Fe:return Xe(t)||t==="band"?!0:t==="point"?!n:!1;case st:case wt:case ot:case St:case vt:case Mt:return Xe(t)||Sn(t)||O(["band","point","ordinal"],t);case ge:case Be:case We:return t!=="band";case $t:case he:return t==="ordinal"||Sn(t)}}function Ig(e){return z(e)&&"value"in e}const le={arc:"arc",area:"area",bar:"bar",image:"image",line:"line",point:"point",rect:"rect",rule:"rule",text:"text",tick:"tick",trail:"trail",circle:"circle",square:"square",geoshape:"geoshape"},yc=le.arc,Li=le.area,Mi=le.bar,Lg=le.image,Di=le.line,ji=le.point,Mg=le.rect,Ui=le.rule,bc=le.text,xs=le.tick,Dg=le.trail,Ss=le.circle,vs=le.square,xc=le.geoshape;function Ft(e){return["line","area","trail"].includes(e)}function Qn(e){return["rect","bar","image","arc"].includes(e)}const jg=new Set(b(le));function Ye(e){return e.type}const Ug=["stroke","strokeWidth","strokeDash","strokeDashOffset","strokeOpacity","strokeJoin","strokeMiterLimit"],Bg=["fill","fillOpacity"],Wg=[...Ug,...Bg],Hg={color:1,filled:1,invalid:1,order:1,radius2:1,theta2:1,timeUnitBandSize:1,timeUnitBandPosition:1},Sc=b(Hg),qg={area:["line","point"],bar:["binSpacing","continuousBandSize","discreteBandSize","minBandSize"],rect:["binSpacing","continuousBandSize","discreteBandSize","minBandSize"],line:["point"],tick:["bandSize","thickness"]},Gg={color:"#4c78a8",invalid:"break-paths-show-path-domains",timeUnitBandSize:1},Vg={mark:1,arc:1,area:1,bar:1,circle:1,image:1,line:1,point:1,rect:1,rule:1,square:1,text:1,tick:1,trail:1,geoshape:1},vc=b(Vg);function Gt(e){return e&&e.band!=null}const Xg={horizontal:["cornerRadiusTopRight","cornerRadiusBottomRight"],vertical:["cornerRadiusTopLeft","cornerRadiusTopRight"]},wc=5,Yg={binSpacing:1,continuousBandSize:wc,minBandSize:.25,timeUnitBandPosition:.5},Kg={binSpacing:0,continuousBandSize:wc,minBandSize:.25,timeUnitBandPosition:.5},Qg={thickness:1};function Zg(e){return Ye(e)?e.type:e}function $c(e,{isPath:t}){return e===void 0||e==="break-paths-show-path-domains"?t?"break-paths-show-domains":"filter":e===null?"show":e}function ws({markDef:e,config:t,scaleChannel:n,scaleType:i,isCountAggregate:r}){if(!i||!Pe(i)||r)return"always-valid";const s=$c(R("invalid",e,t),{isPath:Ft(e.type)}),o=t.scale?.invalid?.[n];return o!==void 0?"show":s}function Jg(e){return e==="break-paths-filter-domains"||e==="break-paths-show-domains"}function Ec({scaleName:e,scale:t,mode:n}){const i=`domain('${e}')`;if(!t||!e)return;const r=`${i}[0]`,s=`peek(${i})`,o=t.domainHasZero();if(o==="definitely")return{scale:e,value:0};if(o==="maybe"){const a=n==="zeroOrMin"?r:s;return{signal:`scale('${e}', inrange(0, ${i}) ? 0 : ${a})`}}else return{signal:`scale('${e}', ${n==="zeroOrMin"?r:s})`}}function _c({scaleChannel:e,channelDef:t,scale:n,scaleName:i,markDef:r,config:s}){const o=n?.get("type"),a=Ie(t),c=Ti(a?.aggregate),u=ws({scaleChannel:e,markDef:r,config:s,scaleType:o,isCountAggregate:c});if(a&&u==="show"){const l=s.scale.invalid?.[e]??"zero-or-min";return{test:Ii(w(a,{expr:"datum"}),!1),...eh(l,n,i)}}return}function eh(e,t,n){if(Ig(e)){const{value:i}=e;return $(i)?{signal:i.signal}:{value:i}}return Ec({scale:t,scaleName:n,mode:"zeroOrMin"})}function $s(e){const{channel:t,channelDef:n,markDef:i,scale:r,scaleName:s,config:o}=e,a=jt(t),c=Es(e),u=_c({scaleChannel:a,channelDef:n,scale:r,scaleName:s,markDef:i,config:o});return u!==void 0?[u,c]:c}function th(e){const{datum:t}=e;return Bt(t)?Wt(t):`${D(t)}`}function Vt(e,t,n,i){const r={};if(t&&(r.scale=t),Ke(e)){const{datum:s}=e;Bt(s)?r.signal=Wt(s):$(s)?r.signal=s.signal:Yn(s)?r.signal=s.expr:r.value=s}else r.field=w(e,n);if(i){const{offset:s,band:o}=i;s&&(r.offset=s),o&&(r.band=o)}return r}function Bi({scaleName:e,fieldOrDatumDef:t,fieldOrDatumDef2:n,offset:i,startSuffix:r,endSuffix:s="end",bandPosition:o=.5}){const a=!$(o)&&0{switch(t.fieldTitle){case"plain":return e.field;case"functional":return mh(e);default:return hh(e,t)}};let Bc=Uc;function Wc(e){Bc=e}function yh(){Wc(Uc)}function $n(e,t,{allowDisabling:n,includeDefault:i=!0}){const r=Ns(e)?.title;if(!S(e))return r??e.title;const s=e,o=i?Ts(s,t):void 0;return n?X(r,s.title,o):r??s.title??o}function Ns(e){return wn(e)&&e.axis?e.axis:Dc(e)&&e.legend?e.legend:Cs(e)&&e.header?e.header:void 0}function Ts(e,t){return Bc(e,t)}function Yi(e){if(jc(e)){const{format:t,formatType:n}=e;return{format:t,formatType:n}}else{const t=Ns(e)??{},{format:n,formatType:i}=t;return{format:n,formatType:i}}}function bh(e,t){switch(t){case"latitude":case"longitude":return"quantitative";case"row":case"column":case"facet":case"shape":case"strokeDash":return"nominal";case"order":return"ordinal"}if(Fs(e)&&E(e.sort))return"ordinal";const{aggregate:n,bin:i,timeUnit:r}=e;if(r)return"temporal";if(i||n&&!_t(n)&&!ct(n))return"quantitative";if(Yt(e)&&e.scale?.type)switch(ys[e.scale.type]){case"numeric":case"discretizing":return"quantitative";case"time":return"temporal"}return"nominal"}function Ie(e){return S(e)?e:Gi(e)?e.condition:void 0}function K(e){return F(e)?e:ti(e)?e.condition:void 0}function Hc(e,t,n,i={}){if(N(e)||U(e)||Un(e)){const r=N(e)?"string":U(e)?"number":"boolean";return x(yp(t,r,e)),{value:e}}return F(e)?Ki(e,t,n,i):ti(e)?{...e,condition:Ki(e.condition,t,n,i)}:e}function Ki(e,t,n,i){if(jc(e)){const{format:r,formatType:s,...o}=e;if(Xt(s)&&!n.customFormatTypes)return x(Wa(t)),Ki(o,t,n,i)}else{const r=wn(e)?"axis":Dc(e)?"legend":Cs(e)?"header":null;if(r&&e[r]){const{format:s,formatType:o,...a}=e[r];if(Xt(o)&&!n.customFormatTypes)return x(Wa(t)),Ki({...e,[r]:a},t,n,i)}}return S(e)?Os(e,t,i):xh(e)}function xh(e){let t=e.type;if(t)return e;const{datum:n}=e;return t=U(n)?"quantitative":N(n)?"nominal":Bt(n)?"temporal":void 0,{...e,type:t}}function Os(e,t,{compositeMark:n=!1}={}){const{aggregate:i,timeUnit:r,bin:s,field:o}=e,a={...e};if(!n&&i&&!Jr(i)&&!_t(i)&&!ct(i)&&(x(xp(i)),delete a.aggregate),r&&(a.timeUnit=Z(r)),o&&(a.field=`${o}`),j(s)&&(a.bin=Qi(s,t)),re(s)&&!Y(t)&&x(Qp(t)),fe(a)){const{type:c}=a,u=wg(c);c!==u&&(a.type=u),c!=="quantitative"&&(Ti(i)&&(x(bp(c,i)),a.type="quantitative"))}else if(!ba(t)){const c=bh(a,t);a.type=c}if(fe(a)){const{compatible:c,warning:u}=Sh(a,t)||{};c===!1&&x(u)}if(Fs(a)&&N(a.sort)){const{sort:c}=a;if(Ac(c))return{...a,sort:{encoding:c}};const u=c.substr(1);if(c.charAt(0)==="-"&&Ac(u))return{...a,sort:{encoding:u,order:"descending"}}}if(Cs(a)){const{header:c}=a;if(c){const{orient:u,...l}=c;if(u)return{...a,header:{...l,labelOrient:c.labelOrient||u,titleOrient:c.titleOrient||u}}}}return a}function Qi(e,t){return Un(e)?{maxbins:_a(t)}:e==="binned"?{binned:!0}:!e.maxbins&&!e.step?{...e,maxbins:_a(t)}:e}const En={compatible:!0};function Sh(e,t){const n=e.type;if(n==="geojson"&&t!=="shape")return{compatible:!1,warning:`Channel ${t} should not be used with a geojson data.`};switch(t){case tt:case nt:case Ei:return Xi(e)?En:{compatible:!1,warning:$p(t)};case H:case Q:case xt:case gn:case ge:case Be:case We:case Gn:case Vn:case _i:case Dt:case ki:case Ci:case Mt:case $e:case Fe:case Fi:return En;case Te:case Ee:case Ne:case Oe:return n!==qt?{compatible:!1,warning:`Channel ${t} should be used with a quantitative field only, not ${e.type} field.`}:En;case ot:case St:case vt:case wt:case st:case rt:case it:case Ce:case Ue:return n==="nominal"&&!e.sort?{compatible:!1,warning:`Channel ${t} should not be used with an unsorted discrete field.`}:En;case he:case $t:return!Xi(e)&&!ph(e)?{compatible:!1,warning:Ep(t)}:En;case hn:return e.type==="nominal"&&!("sort"in e)?{compatible:!1,warning:"Channel order is inappropriate for nominal field, which has no inherent order."}:En}}function _n(e){const{formatType:t}=Yi(e);return t==="time"||!t&&vh(e)}function vh(e){return e&&(e.type==="temporal"||S(e)&&!!e.timeUnit)}function Zi(e,{timeUnit:t,type:n,wrapTime:i,undefinedIfExprNotRequired:r}){const s=t&&Z(t)?.unit;let o=s||n==="temporal",a;return Yn(e)?a=e.expr:$(e)?a=e.signal:Bt(e)?(o=!0,a=Wt(e)):(N(e)||U(e))&&(o&&(a=`datetime(${D(e)})`,ug(s)&&((U(e)&&e<1e4||N(e)&&isNaN(Date.parse(e)))&&(a=Wt({[s]:e}))))),a?i&&o?`time(${a})`:a:r?void 0:D(e)}function qc(e,t){const{type:n}=e;return t.map(i=>{const r=S(e)&&!Ht(e.timeUnit)?e.timeUnit:void 0,s=Zi(i,{timeUnit:r,type:n,undefinedIfExprNotRequired:!0});return s!==void 0?{signal:s}:i})}function ni(e,t){return j(e.bin)?qe(t)&&["ordinal","nominal"].includes(e.type):(console.warn("Only call this method for binned field defs."),!1)}const Gc={labelAlign:{part:"labels",vgProp:"align"},labelBaseline:{part:"labels",vgProp:"baseline"},labelColor:{part:"labels",vgProp:"fill"},labelFont:{part:"labels",vgProp:"font"},labelFontSize:{part:"labels",vgProp:"fontSize"},labelFontStyle:{part:"labels",vgProp:"fontStyle"},labelFontWeight:{part:"labels",vgProp:"fontWeight"},labelOpacity:{part:"labels",vgProp:"opacity"},labelOffset:null,labelPadding:null,gridColor:{part:"grid",vgProp:"stroke"},gridDash:{part:"grid",vgProp:"strokeDash"},gridDashOffset:{part:"grid",vgProp:"strokeDashOffset"},gridOpacity:{part:"grid",vgProp:"opacity"},gridWidth:{part:"grid",vgProp:"strokeWidth"},tickColor:{part:"ticks",vgProp:"stroke"},tickDash:{part:"ticks",vgProp:"strokeDash"},tickDashOffset:{part:"ticks",vgProp:"strokeDashOffset"},tickOpacity:{part:"ticks",vgProp:"opacity"},tickSize:null,tickWidth:{part:"ticks",vgProp:"strokeWidth"}};function ii(e){return e?.condition}const Vc=["domain","grid","labels","ticks","title"],wh={grid:"grid",gridCap:"grid",gridColor:"grid",gridDash:"grid",gridDashOffset:"grid",gridOpacity:"grid",gridScale:"grid",gridWidth:"grid",orient:"main",bandPosition:"both",aria:"main",description:"main",domain:"main",domainCap:"main",domainColor:"main",domainDash:"main",domainDashOffset:"main",domainOpacity:"main",domainWidth:"main",format:"main",formatType:"main",labelAlign:"main",labelAngle:"main",labelBaseline:"main",labelBound:"main",labelColor:"main",labelFlush:"main",labelFlushOffset:"main",labelFont:"main",labelFontSize:"main",labelFontStyle:"main",labelFontWeight:"main",labelLimit:"main",labelLineHeight:"main",labelOffset:"main",labelOpacity:"main",labelOverlap:"main",labelPadding:"main",labels:"main",labelSeparation:"main",maxExtent:"main",minExtent:"main",offset:"both",position:"main",tickCap:"main",tickColor:"main",tickDash:"main",tickDashOffset:"main",tickMinStep:"both",tickOffset:"both",tickOpacity:"main",tickRound:"both",ticks:"main",tickSize:"main",tickWidth:"both",title:"main",titleAlign:"main",titleAnchor:"main",titleAngle:"main",titleBaseline:"main",titleColor:"main",titleFont:"main",titleFontSize:"main",titleFontStyle:"main",titleFontWeight:"main",titleLimit:"main",titleLineHeight:"main",titleOpacity:"main",titlePadding:"main",titleX:"main",titleY:"main",encode:"both",scale:"both",tickBand:"both",tickCount:"both",tickExtra:"both",translate:"both",values:"both",zindex:"both"},Xc={orient:1,aria:1,bandPosition:1,description:1,domain:1,domainCap:1,domainColor:1,domainDash:1,domainDashOffset:1,domainOpacity:1,domainWidth:1,format:1,formatType:1,grid:1,gridCap:1,gridColor:1,gridDash:1,gridDashOffset:1,gridOpacity:1,gridWidth:1,labelAlign:1,labelAngle:1,labelBaseline:1,labelBound:1,labelColor:1,labelFlush:1,labelFlushOffset:1,labelFont:1,labelFontSize:1,labelFontStyle:1,labelFontWeight:1,labelLimit:1,labelLineHeight:1,labelOffset:1,labelOpacity:1,labelOverlap:1,labelPadding:1,labels:1,labelSeparation:1,maxExtent:1,minExtent:1,offset:1,position:1,tickBand:1,tickCap:1,tickColor:1,tickCount:1,tickDash:1,tickDashOffset:1,tickExtra:1,tickMinStep:1,tickOffset:1,tickOpacity:1,tickRound:1,ticks:1,tickSize:1,tickWidth:1,title:1,titleAlign:1,titleAnchor:1,titleAngle:1,titleBaseline:1,titleColor:1,titleFont:1,titleFontSize:1,titleFontStyle:1,titleFontWeight:1,titleLimit:1,titleLineHeight:1,titleOpacity:1,titlePadding:1,titleX:1,titleY:1,translate:1,values:1,zindex:1},$h={...Xc,style:1,labelExpr:1,encoding:1};function Yc(e){return!!$h[e]}const Eh={axis:1,axisBand:1,axisBottom:1,axisDiscrete:1,axisLeft:1,axisPoint:1,axisQuantitative:1,axisRight:1,axisTemporal:1,axisTop:1,axisX:1,axisXBand:1,axisXDiscrete:1,axisXPoint:1,axisXQuantitative:1,axisXTemporal:1,axisY:1,axisYBand:1,axisYDiscrete:1,axisYPoint:1,axisYQuantitative:1,axisYTemporal:1},Kc=b(Eh);function ft(e){return"mark"in e}class Ji{constructor(t,n){this.name=t,this.run=n}hasMatchingType(t){return ft(t)?Zg(t.mark)===this.name:!1}}function Kt(e,t){const n=e&&e[t];return n?E(n)?fn(n,i=>!!i.field):S(n)||Gi(n):!1}function Qc(e,t){const n=e&&e[t];return n?E(n)?fn(n,i=>!!i.field):S(n)||Ke(n)||ti(n):!1}function Zc(e,t){if(Y(t)){const n=e[t];if((S(n)||Ke(n))&&(uc(n.type)||S(n)&&n.timeUnit)){const i=Vr(t);return Qc(e,i)}}return!1}function Jc(e){return fn($d,t=>{if(Kt(e,t)){const n=e[t];if(E(n))return fn(n,i=>!!i.aggregate);{const i=Ie(n);return i&&!!i.aggregate}}return!1})}function eu(e,t){const n=[],i=[],r=[],s=[],o={};return As(e,(a,c)=>{if(S(a)){const{field:u,aggregate:l,bin:f,timeUnit:d,...p}=a;if(l||d||f){const h=Ns(a),g=h?.title;let m=w(a,{forAs:!0});const y={...g?[]:{title:$n(a,t,{allowDisabling:!0})},...p,field:m};if(l){let v;if(_t(l)?(v="argmax",m=w({op:"argmax",field:l.argmax},{forAs:!0}),y.field=`${m}.${u}`):ct(l)?(v="argmin",m=w({op:"argmin",field:l.argmin},{forAs:!0}),y.field=`${m}.${u}`):l!=="boxplot"&&l!=="errorbar"&&l!=="errorband"&&(v=l),v){const k={op:v,as:m};u&&(k.field=u),s.push(k)}}else if(n.push(m),fe(a)&&j(f)){if(i.push({bin:f,field:u,as:m}),n.push(w(a,{binSuffix:"end"})),ni(a,c)&&n.push(w(a,{binSuffix:"range"})),Y(c)){const v={field:`${m}_end`};o[`${c}2`]=v}y.bin="binned",ba(c)||(y.type=qt)}else if(d&&!Ht(d)){r.push({timeUnit:d,field:u,as:m});const v=fe(a)&&a.type!==bn&&"time";v&&(c===Gn||c===Dt?y.formatType=v:Pd(c)?y.legend={formatType:v,...y.legend}:Y(c)&&(y.axis={formatType:v,...y.axis}))}o[c]=y}else n.push(u),o[c]=e[c]}else o[c]=e[c]}),{bins:i,timeUnits:r,aggregate:s,groupby:n,encoding:o}}function _h(e,t,n){const i=Rd(t,n);if(i){if(i==="binned"){const r=e[t===Ce?H:Q];return!!(S(r)&&S(e[t])&&re(r.bin))}}else return!1;return!0}function kh(e,t,n,i){const r={};for(const s of b(e))ya(s)||x(wp(s));for(let s of Nd){if(!e[s])continue;const o=e[s];if(Xn(s)){const a=Fd(s),c=r[a];if(S(c)&&(vg(c.type)&&(S(o)&&!c.timeUnit))){x(mp(a));continue}}if(s==="angle"&&t==="arc"&&!e.theta&&(x(hp),s=$e),!_h(e,s,t)){x(Pi(s,t));continue}if(s===st&&t==="line"){const a=Ie(e[s]);if(a?.aggregate){x(vp);continue}}if(s===ge&&(n?"fill"in e:"stroke"in e)){x(qa("encoding",{fill:"fill"in e,stroke:"stroke"in e}));continue}if(s===Vn||s===hn&&!E(o)&&!Re(o)||s===Dt&&E(o)){if(o){if(s===hn){const a=e[s];if(Lc(a)){r[s]=a;continue}}r[s]=V(o).reduce((a,c)=>(S(c)?a.push(Os(c,s)):x(is(c,s)),a),[])}}else{if(s===Dt&&o===null)r[s]=null;else if(!S(o)&&!Ke(o)&&!Re(o)&&!qi(o)&&!$(o)){x(is(o,s));continue}r[s]=Hc(o,s,i)}}return r}function er(e,t){const n={};for(const i of b(e)){const r=Hc(e[i],i,t,{compositeMark:!0});n[i]=r}return n}function Ch(e){const t=[];for(const n of b(e))if(Kt(e,n)){const i=e[n],r=V(i);for(const s of r)S(s)?t.push(s):Gi(s)&&t.push(s.condition)}return t}function As(e,t,n){if(!e)return;for(const i of b(e)){const r=e[i];if(E(r))for(const s of r)t.call(n,s,i);else t.call(n,r,i)}}function Fh(e,t,n,i){return e?b(e).reduce((r,s)=>{const o=e[s];return E(o)?o.reduce((a,c)=>t.call(i,a,c,s),r):t.call(i,r,o,s)},n):n}function tu(e,t){return b(t).reduce((n,i)=>{switch(i){case H:case Q:case ki:case Fi:case Ci:case Ce:case Ue:case xt:case gn:case $e:case rt:case Fe:case it:case Ne:case Te:case Oe:case Ee:case Gn:case he:case Mt:case Dt:return n;case hn:if(e==="line"||e==="trail")return n;case Vn:case _i:{const r=t[i];if(E(r)||S(r))for(const s of V(r))s.aggregate||n.push(w(s,{}));return n}case st:if(e==="trail")return n;case ge:case Be:case We:case ot:case St:case vt:case $t:case wt:{const r=Ie(t[i]);return r&&!r.aggregate&&n.push(w(r,{})),n}}},[])}function Nh(e){const{tooltip:t,...n}=e;if(!t)return{filteredEncoding:n};let i,r;if(E(t)){for(const s of t)s.aggregate?(i||(i=[]),i.push(s)):(r||(r=[]),r.push(s));i&&(n.tooltip=i)}else t.aggregate?n.tooltip=t:r=t;return E(r)&&r.length===1&&(r=r[0]),{customTooltipWithoutAggregatedField:r,filteredEncoding:n}}function Ps(e,t,n,i=!0){if("tooltip"in n)return{tooltip:n.tooltip};const r=e.map(({fieldPrefix:o,titlePrefix:a})=>{const c=i?` of ${zs(t)}`:"";return{field:o+t.field,type:t.type,title:$(a)?{signal:`${a}"${escape(c)}"`}:a+c}}),s=Ch(n).map(fh);return{tooltip:[...r,...je(s,P)]}}function zs(e){const{title:t,field:n}=e;return X(t,n)}function Rs(e,t,n,i,r){const{scale:s,axis:o}=n;return({partName:a,mark:c,positionPrefix:u,endPositionPrefix:l=void 0,extraEncoding:f={}})=>{const d=zs(n);return nu(e,a,r,{mark:c,encoding:{[t]:{field:`${u}_${n.field}`,type:n.type,...d!==void 0?{title:d}:{},...s!==void 0?{scale:s}:{},...o!==void 0?{axis:o}:{}},...N(l)?{[`${t}2`]:{field:`${l}_${n.field}`}}:{},...i,...f}})}}function nu(e,t,n,i){const{clip:r,color:s,opacity:o}=e,a=e.type;return e[t]||e[t]===void 0&&n[t]?[{...i,mark:{...n[t],...r?{clip:r}:{},...s?{color:s}:{},...o?{opacity:o}:{},...Ye(i.mark)?i.mark:{type:i.mark},style:`${a}-${String(t)}`,...Un(e[t])?{}:e[t]}}]:[]}function iu(e,t,n){const{encoding:i}=e,r=t==="vertical"?"y":"x",s=i[r],o=i[`${r}2`],a=i[`${r}Error`],c=i[`${r}Error2`];return{continuousAxisChannelDef:tr(s,n),continuousAxisChannelDef2:tr(o,n),continuousAxisChannelDefError:tr(a,n),continuousAxisChannelDefError2:tr(c,n),continuousAxis:r}}function tr(e,t){if(e?.aggregate){const{aggregate:n,...i}=e;return n!==t&&x(Kp(n,t)),i}else return e}function ru(e,t){const{mark:n,encoding:i}=e,{x:r,y:s}=i;if(Ye(n)&&n.orient)return n.orient;if(Tt(r)){if(Tt(s)){const o=S(r)&&r.aggregate,a=S(s)&&s.aggregate;if(!o&&a===t)return"vertical";if(!a&&o===t)return"horizontal";if(o===t&&a===t)throw new Error("Both x and y cannot have aggregate");return _n(s)&&!_n(r)?"horizontal":"vertical"}return"horizontal"}else{if(Tt(s))return"vertical";throw new Error(`Need a valid continuous axis for ${t}s`)}}const nr="boxplot",Th=["box","median","outliers","rule","ticks"],Oh=new Ji(nr,ou);function su(e){return U(e)?"tukey":e}function ou(e,{config:t}){e={...e,encoding:er(e.encoding,t)};const{mark:n,encoding:i,params:r,projection:s,...o}=e,a=Ye(n)?n:{type:n};r&&x(ja("boxplot"));const c=a.extent??t.boxplot.extent,u=R("size",a,t),l=a.invalid,f=su(c),{bins:d,timeUnits:p,transform:h,continuousAxisChannelDef:g,continuousAxis:m,groupby:y,aggregate:v,encodingWithoutContinuousAxis:k,ticksOrient:_,boxOrient:T,customTooltipWithoutAggregatedField:L}=Ah(e,c,t),ue=dn(g.field),{color:ne,size:mt,...de}=k,yt=Df=>Rs(a,m,g,Df,t.boxplot),sn=yt(de),gi=yt(k),hi=(z(t.boxplot.box)?t.boxplot.box.color:t.mark.color)||"#4c78a8",mi=yt({...de,...mt?{size:mt}:{},color:{condition:{test:`datum['lower_box_${g.field}'] >= datum['upper_box_${g.field}']`,...ne||{value:hi}}}}),jn=Ps([{fieldPrefix:f==="min-max"?"upper_whisker_":"max_",titlePrefix:"Max"},{fieldPrefix:"upper_box_",titlePrefix:"Q3"},{fieldPrefix:"mid_box_",titlePrefix:"Median"},{fieldPrefix:"lower_box_",titlePrefix:"Q1"},{fieldPrefix:f==="min-max"?"lower_whisker_":"min_",titlePrefix:"Min"}],g,k),Uo={type:"tick",color:"black",opacity:1,orient:_,invalid:l,aria:!1},yi=f==="min-max"?jn:Ps([{fieldPrefix:"upper_whisker_",titlePrefix:"Upper Whisker"},{fieldPrefix:"lower_whisker_",titlePrefix:"Lower Whisker"}],g,k),Bo=[...sn({partName:"rule",mark:{type:"rule",invalid:l,aria:!1},positionPrefix:"lower_whisker",endPositionPrefix:"lower_box",extraEncoding:yi}),...sn({partName:"rule",mark:{type:"rule",invalid:l,aria:!1},positionPrefix:"upper_box",endPositionPrefix:"upper_whisker",extraEncoding:yi}),...sn({partName:"ticks",mark:Uo,positionPrefix:"lower_whisker",extraEncoding:yi}),...sn({partName:"ticks",mark:Uo,positionPrefix:"upper_whisker",extraEncoding:yi})],Wo=[...f!=="tukey"?Bo:[],...gi({partName:"box",mark:{type:"bar",...u?{size:u}:{},orient:T,invalid:l,ariaRoleDescription:"box"},positionPrefix:"lower_box",endPositionPrefix:"upper_box",extraEncoding:jn}),...mi({partName:"median",mark:{type:"tick",invalid:l,...z(t.boxplot.median)&&t.boxplot.median.color?{color:t.boxplot.median.color}:{},...u?{size:u}:{},orient:_,aria:!1},positionPrefix:"mid_box",extraEncoding:jn})];if(f==="min-max")return{...o,transform:(o.transform??[]).concat(h),layer:Wo};const Ho=`datum["lower_box_${g.field}"]`,qo=`datum["upper_box_${g.field}"]`,Go=`(${qo} - ${Ho})`,Vo=`${Ho} - ${c} * ${Go}`,Xo=`${qo} + ${c} * ${Go}`,bi=`datum["${g.field}"]`,If={joinaggregate:au(g.field),groupby:y},Yo={transform:[{filter:`(${Vo} <= ${bi}) && (${bi} <= ${Xo})`},{aggregate:[{op:"min",field:g.field,as:`lower_whisker_${ue}`},{op:"max",field:g.field,as:`upper_whisker_${ue}`},{op:"min",field:`lower_box_${g.field}`,as:`lower_box_${ue}`},{op:"max",field:`upper_box_${g.field}`,as:`upper_box_${ue}`},...v],groupby:y}],layer:Bo},{tooltip:WS,...Lf}=de,{scale:Ko,axis:Mf}=g,Qo=zs(g),Zo=pe(Mf,["title"]),Jo=nu(a,"outliers",t.boxplot,{transform:[{filter:`(${bi} < ${Vo}) || (${bi} > ${Xo})`}],mark:"point",encoding:{[m]:{field:g.field,type:g.type,...Qo!==void 0?{title:Qo}:{},...Ko!==void 0?{scale:Ko}:{},...M(Zo)?{}:{axis:Zo}},...Lf,...ne?{color:ne}:{},...L?{tooltip:L}:{}}})[0];let xi;const ea=[...d,...p,If];return Jo?xi={transform:ea,layer:[Jo,Yo]}:(xi=Yo,xi.transform.unshift(...ea)),{...o,layer:[xi,{transform:h,layer:Wo}]}}function au(e){const t=dn(e);return[{op:"q1",field:e,as:`lower_box_${t}`},{op:"q3",field:e,as:`upper_box_${t}`}]}function Ah(e,t,n){const i=ru(e,nr),{continuousAxisChannelDef:r,continuousAxis:s}=iu(e,i,nr),o=r.field,a=dn(o),c=su(t),u=[...au(o),{op:"median",field:o,as:`mid_box_${a}`},{op:"min",field:o,as:(c==="min-max"?"lower_whisker_":"min_")+a},{op:"max",field:o,as:(c==="min-max"?"upper_whisker_":"max_")+a}],l=c==="min-max"||c==="tukey"?[]:[{calculate:`datum["upper_box_${a}"] - datum["lower_box_${a}"]`,as:`iqr_${a}`},{calculate:`min(datum["upper_box_${a}"] + datum["iqr_${a}"] * ${t}, datum["max_${a}"])`,as:`upper_whisker_${a}`},{calculate:`max(datum["lower_box_${a}"] - datum["iqr_${a}"] * ${t}, datum["min_${a}"])`,as:`lower_whisker_${a}`}],{[s]:f,...d}=e.encoding,{customTooltipWithoutAggregatedField:p,filteredEncoding:h}=Nh(d),{bins:g,timeUnits:m,aggregate:y,groupby:v,encoding:k}=eu(h,n),_=i==="vertical"?"horizontal":"vertical",T=i,L=[...g,...m,{aggregate:[...y,...u],groupby:v},...l];return{bins:g,timeUnits:m,transform:L,groupby:v,aggregate:y,continuousAxisChannelDef:r,continuousAxis:s,encodingWithoutContinuousAxis:k,ticksOrient:_,boxOrient:T,customTooltipWithoutAggregatedField:p}}const Is="errorbar",Ph=["ticks","rule"],zh=new Ji(Is,cu);function cu(e,{config:t}){e={...e,encoding:er(e.encoding,t)};const{transform:n,continuousAxisChannelDef:i,continuousAxis:r,encodingWithoutContinuousAxis:s,ticksOrient:o,markDef:a,outerSpec:c,tooltipEncoding:u}=uu(e,Is,t);delete s.size;const l=Rs(a,r,i,s,t.errorbar),f=a.thickness,d=a.size,p={type:"tick",orient:o,aria:!1,...f!==void 0?{thickness:f}:{},...d!==void 0?{size:d}:{}},h=[...l({partName:"ticks",mark:p,positionPrefix:"lower",extraEncoding:u}),...l({partName:"ticks",mark:p,positionPrefix:"upper",extraEncoding:u}),...l({partName:"rule",mark:{type:"rule",ariaRoleDescription:"errorbar",...f!==void 0?{size:f}:{}},positionPrefix:"lower",endPositionPrefix:"upper",extraEncoding:u})];return{...c,transform:n,...h.length>1?{layer:h}:{...h[0]}}}function Rh(e,t){const{encoding:n}=e;if(Ih(n))return{orient:ru(e,t),inputType:"raw"};const i=Lh(n),r=Mh(n),s=n.x,o=n.y;if(i){if(r)throw new Error(`${t} cannot be both type aggregated-upper-lower and aggregated-error`);const a=n.x2,c=n.y2;if(F(a)&&F(c))throw new Error(`${t} cannot have both x2 and y2`);if(F(a)){if(Tt(s))return{orient:"horizontal",inputType:"aggregated-upper-lower"};throw new Error(`Both x and x2 have to be quantitative in ${t}`)}else if(F(c)){if(Tt(o))return{orient:"vertical",inputType:"aggregated-upper-lower"};throw new Error(`Both y and y2 have to be quantitative in ${t}`)}throw new Error("No ranged axis")}else{const a=n.xError,c=n.xError2,u=n.yError,l=n.yError2;if(F(c)&&!F(a))throw new Error(`${t} cannot have xError2 without xError`);if(F(l)&&!F(u))throw new Error(`${t} cannot have yError2 without yError`);if(F(a)&&F(u))throw new Error(`${t} cannot have both xError and yError with both are quantiative`);if(F(a)){if(Tt(s))return{orient:"horizontal",inputType:"aggregated-error"};throw new Error("All x, xError, and xError2 (if exist) have to be quantitative")}else if(F(u)){if(Tt(o))return{orient:"vertical",inputType:"aggregated-error"};throw new Error("All y, yError, and yError2 (if exist) have to be quantitative")}throw new Error("No ranged axis")}}function Ih(e){return(F(e.x)||F(e.y))&&!F(e.x2)&&!F(e.y2)&&!F(e.xError)&&!F(e.xError2)&&!F(e.yError)&&!F(e.yError2)}function Lh(e){return F(e.x2)||F(e.y2)}function Mh(e){return F(e.xError)||F(e.xError2)||F(e.yError)||F(e.yError2)}function uu(e,t,n){const{mark:i,encoding:r,params:s,projection:o,...a}=e,c=Ye(i)?i:{type:i};s&&x(ja(t));const{orient:u,inputType:l}=Rh(e,t),{continuousAxisChannelDef:f,continuousAxisChannelDef2:d,continuousAxisChannelDefError:p,continuousAxisChannelDefError2:h,continuousAxis:g}=iu(e,u,t),{errorBarSpecificAggregate:m,postAggregateCalculates:y,tooltipSummary:v,tooltipTitleWithFieldName:k}=Dh(c,f,d,p,h,l,t,n),{[g]:_,[g==="x"?"x2":"y2"]:T,[g==="x"?"xError":"yError"]:L,[g==="x"?"xError2":"yError2"]:ue,...ne}=r,{bins:mt,timeUnits:de,aggregate:yt,groupby:sn,encoding:gi}=eu(ne,n),hi=[...yt,...m],mi=l!=="raw"?[]:sn,jn=Ps(v,f,gi,k);return{transform:[...a.transform??[],...mt,...de,...hi.length===0?[]:[{aggregate:hi,groupby:mi}],...y],groupby:mi,continuousAxisChannelDef:f,continuousAxis:g,encodingWithoutContinuousAxis:gi,ticksOrient:u==="vertical"?"horizontal":"vertical",markDef:c,outerSpec:a,tooltipEncoding:jn}}function Dh(e,t,n,i,r,s,o,a){let c=[],u=[];const l=t.field;let f,d=!1;if(s==="raw"){const p=e.center?e.center:e.extent?e.extent==="iqr"?"median":"mean":a.errorbar.center,h=e.extent?e.extent:p==="mean"?"stderr":"iqr";if(p==="median"!==(h==="iqr")&&x(Yp(p,h,o)),h==="stderr"||h==="stdev")c=[{op:h,field:l,as:`extent_${l}`},{op:p,field:l,as:`center_${l}`}],u=[{calculate:`datum["center_${l}"] + datum["extent_${l}"]`,as:`upper_${l}`},{calculate:`datum["center_${l}"] - datum["extent_${l}"]`,as:`lower_${l}`}],f=[{fieldPrefix:"center_",titlePrefix:Hn(p)},{fieldPrefix:"upper_",titlePrefix:lu(p,h,"+")},{fieldPrefix:"lower_",titlePrefix:lu(p,h,"-")}],d=!0;else{let g,m,y;h==="ci"?(g="mean",m="ci0",y="ci1"):(g="median",m="q1",y="q3"),c=[{op:m,field:l,as:`lower_${l}`},{op:y,field:l,as:`upper_${l}`},{op:g,field:l,as:`center_${l}`}],f=[{fieldPrefix:"upper_",titlePrefix:$n({field:l,aggregate:y,type:"quantitative"},a,{allowDisabling:!1})},{fieldPrefix:"lower_",titlePrefix:$n({field:l,aggregate:m,type:"quantitative"},a,{allowDisabling:!1})},{fieldPrefix:"center_",titlePrefix:$n({field:l,aggregate:g,type:"quantitative"},a,{allowDisabling:!1})}]}}else{(e.center||e.extent)&&x(Xp(e.center,e.extent)),s==="aggregated-upper-lower"?(f=[],u=[{calculate:`datum["${n.field}"]`,as:`upper_${l}`},{calculate:`datum["${l}"]`,as:`lower_${l}`}]):s==="aggregated-error"&&(f=[{fieldPrefix:"",titlePrefix:l}],u=[{calculate:`datum["${l}"] + datum["${i.field}"]`,as:`upper_${l}`}],r?u.push({calculate:`datum["${l}"] + datum["${r.field}"]`,as:`lower_${l}`}):u.push({calculate:`datum["${l}"] - datum["${i.field}"]`,as:`lower_${l}`}));for(const p of u)f.push({fieldPrefix:p.as.substring(0,6),titlePrefix:Lt(Lt(p.calculate,'datum["',""),'"]',"")})}return{postAggregateCalculates:u,errorBarSpecificAggregate:c,tooltipSummary:f,tooltipTitleWithFieldName:d}}function lu(e,t,n){return`${Hn(e)} ${n} ${t}`}const Ls="errorband",jh=["band","borders"],Uh=new Ji(Ls,fu);function fu(e,{config:t}){e={...e,encoding:er(e.encoding,t)};const{transform:n,continuousAxisChannelDef:i,continuousAxis:r,encodingWithoutContinuousAxis:s,markDef:o,outerSpec:a,tooltipEncoding:c}=uu(e,Ls,t),u=o,l=Rs(u,r,i,s,t.errorband),f=e.encoding.x!==void 0&&e.encoding.y!==void 0;let d={type:f?"area":"rect"},p={type:f?"line":"rule"};const h={...u.interpolate?{interpolate:u.interpolate}:{},...u.tension&&u.interpolate?{tension:u.tension}:{}};return f?(d={...d,...h,ariaRoleDescription:"errorband"},p={...p,...h,aria:!1}):u.interpolate?x(Ya("interpolate")):u.tension&&x(Ya("tension")),{...a,transform:n,layer:[...l({partName:"band",mark:d,positionPrefix:"lower",endPositionPrefix:"upper",extraEncoding:c}),...l({partName:"borders",mark:p,positionPrefix:"lower",extraEncoding:c}),...l({partName:"borders",mark:p,positionPrefix:"upper",extraEncoding:c})]}}const du={};function Ms(e,t,n){const i=new Ji(e,t);du[e]={normalizer:i,parts:n}}function Bh(){return b(du)}Ms(nr,ou,Th),Ms(Is,cu,Ph),Ms(Ls,fu,jh);const Wh=["gradientHorizontalMaxLength","gradientHorizontalMinLength","gradientVerticalMaxLength","gradientVerticalMinLength","unselectedOpacity"],pu={titleAlign:"align",titleAnchor:"anchor",titleAngle:"angle",titleBaseline:"baseline",titleColor:"color",titleFont:"font",titleFontSize:"fontSize",titleFontStyle:"fontStyle",titleFontWeight:"fontWeight",titleLimit:"limit",titleLineHeight:"lineHeight",titleOrient:"orient",titlePadding:"offset"},gu={labelAlign:"align",labelAnchor:"anchor",labelAngle:"angle",labelBaseline:"baseline",labelColor:"color",labelFont:"font",labelFontSize:"fontSize",labelFontStyle:"fontStyle",labelFontWeight:"fontWeight",labelLimit:"limit",labelLineHeight:"lineHeight",labelOrient:"orient",labelPadding:"offset"},Hh=b(pu),qh=b(gu),Gh={header:1,headerRow:1,headerColumn:1,headerFacet:1},hu=b(Gh),mu=["size","shape","fill","stroke","strokeDash","strokeWidth","opacity"],Vh={gradientHorizontalMaxLength:200,gradientHorizontalMinLength:100,gradientVerticalMaxLength:200,gradientVerticalMinLength:64,unselectedOpacity:.35},Xh={aria:1,clipHeight:1,columnPadding:1,columns:1,cornerRadius:1,description:1,direction:1,fillColor:1,format:1,formatType:1,gradientLength:1,gradientOpacity:1,gradientStrokeColor:1,gradientStrokeWidth:1,gradientThickness:1,gridAlign:1,labelAlign:1,labelBaseline:1,labelColor:1,labelFont:1,labelFontSize:1,labelFontStyle:1,labelFontWeight:1,labelLimit:1,labelOffset:1,labelOpacity:1,labelOverlap:1,labelPadding:1,labelSeparation:1,legendX:1,legendY:1,offset:1,orient:1,padding:1,rowPadding:1,strokeColor:1,symbolDash:1,symbolDashOffset:1,symbolFillColor:1,symbolLimit:1,symbolOffset:1,symbolOpacity:1,symbolSize:1,symbolStrokeColor:1,symbolStrokeWidth:1,symbolType:1,tickCount:1,tickMinStep:1,title:1,titleAlign:1,titleAnchor:1,titleBaseline:1,titleColor:1,titleFont:1,titleFontSize:1,titleFontStyle:1,titleFontWeight:1,titleLimit:1,titleLineHeight:1,titleOpacity:1,titleOrient:1,titlePadding:1,type:1,values:1,zindex:1},Le="_vgsid_",Yh={point:{on:"click",fields:[Le],toggle:"event.shiftKey",resolve:"global",clear:"dblclick"},interval:{on:"[pointerdown, window:pointerup] > window:pointermove!",encodings:["x","y"],translate:"[pointerdown, window:pointerup] > window:pointermove!",zoom:"wheel!",mark:{fill:"#333",fillOpacity:.125,stroke:"white"},resolve:"global",clear:"dblclick"}};function Ds(e){return e==="legend"||!!e?.legend}function js(e){return Ds(e)&&z(e)}function Us(e){return!!e?.select}function yu(e){const t=[];for(const n of e||[]){if(Us(n))continue;const{expr:i,bind:r,...s}=n;if(r&&i){const o={...s,bind:r,init:i};t.push(o)}else{const o={...s,...i?{update:i}:{},...r?{bind:r}:{}};t.push(o)}}return t}function Kh(e){return ir(e)||Ws(e)||Bs(e)}function Bs(e){return"concat"in e}function ir(e){return"vconcat"in e}function Ws(e){return"hconcat"in e}function bu({step:e,offsetIsDiscrete:t}){return t?e.for??"offset":"position"}function Qe(e){return z(e)&&e.step!==void 0}function xu(e){return e.view||e.width||e.height}const Su=20,Qh={align:1,bounds:1,center:1,columns:1,spacing:1},Zh=b(Qh);function Jh(e,t,n){const i=n[t],r={},{spacing:s,columns:o}=i;s!==void 0&&(r.spacing=s),o!==void 0&&((Hi(e)&&!ei(e.facet)||Bs(e))&&(r.columns=o)),ir(e)&&(r.columns=1);for(const a of Zh)if(e[a]!==void 0)if(a==="spacing"){const c=e[a];r[a]=U(c)?c:{row:c.row??s,column:c.column??s}}else r[a]=e[a];return r}function Hs(e,t){return e[t]??e[t==="width"?"continuousWidth":"continuousHeight"]}function rr(e,t){const n=sr(e,t);return Qe(n)?n.step:vu}function sr(e,t){const n=e[t]??e[t==="width"?"discreteWidth":"discreteHeight"];return X(n,{step:e.step})}const vu=20,em={continuousWidth:200,continuousHeight:200,step:vu},tm={background:"white",padding:5,timeFormat:"%b %d, %Y",countTitle:"Count of Records",view:em,mark:Gg,arc:{},area:{},bar:Yg,circle:{},geoshape:{},image:{},line:{},point:{},rect:Kg,rule:{color:"black"},square:{},text:{color:"black"},tick:Qg,trail:{},boxplot:{size:14,extent:1.5,box:{},median:{color:"white"},outliers:{},rule:{},ticks:null},errorbar:{center:"mean",rule:!0,ticks:!1},errorband:{band:{opacity:.3},borders:!1},scale:Cg,projection:{},legend:Vh,header:{titlePadding:10,labelPadding:10},headerColumn:{},headerRow:{},headerFacet:{},selection:Yh,style:{},title:{},facet:{spacing:Su},concat:{spacing:Su},normalizedNumberFormat:".0%"},dt=["#4c78a8","#f58518","#e45756","#72b7b2","#54a24b","#eeca3b","#b279a2","#ff9da6","#9d755d","#bab0ac"],wu={text:11,guideLabel:10,guideTitle:11,groupTitle:13,groupSubtitle:12},$u={blue:dt[0],orange:dt[1],red:dt[2],teal:dt[3],green:dt[4],yellow:dt[5],purple:dt[6],pink:dt[7],brown:dt[8],gray0:"#000",gray1:"#111",gray2:"#222",gray3:"#333",gray4:"#444",gray5:"#555",gray6:"#666",gray7:"#777",gray8:"#888",gray9:"#999",gray10:"#aaa",gray11:"#bbb",gray12:"#ccc",gray13:"#ddd",gray14:"#eee",gray15:"#fff"};function nm(e={}){return{signals:[{name:"color",value:z(e)?{...$u,...e}:$u}],mark:{color:{signal:"color.blue"}},rule:{color:{signal:"color.gray0"}},text:{color:{signal:"color.gray0"}},style:{"guide-label":{fill:{signal:"color.gray0"}},"guide-title":{fill:{signal:"color.gray0"}},"group-title":{fill:{signal:"color.gray0"}},"group-subtitle":{fill:{signal:"color.gray0"}},cell:{stroke:{signal:"color.gray8"}}},axis:{domainColor:{signal:"color.gray13"},gridColor:{signal:"color.gray8"},tickColor:{signal:"color.gray13"}},range:{category:[{signal:"color.blue"},{signal:"color.orange"},{signal:"color.red"},{signal:"color.teal"},{signal:"color.green"},{signal:"color.yellow"},{signal:"color.purple"},{signal:"color.pink"},{signal:"color.brown"},{signal:"color.grey8"}]}}}function im(e){return{signals:[{name:"fontSize",value:z(e)?{...wu,...e}:wu}],text:{fontSize:{signal:"fontSize.text"}},style:{"guide-label":{fontSize:{signal:"fontSize.guideLabel"}},"guide-title":{fontSize:{signal:"fontSize.guideTitle"}},"group-title":{fontSize:{signal:"fontSize.groupTitle"}},"group-subtitle":{fontSize:{signal:"fontSize.groupSubtitle"}}}}}function rm(e){return{text:{font:e},style:{"guide-label":{font:e},"guide-title":{font:e},"group-title":{font:e},"group-subtitle":{font:e}}}}function Eu(e){const t=b(e||{}),n={};for(const i of t){const r=e[i];n[i]=ii(r)?Ca(r):xe(r)}return n}function sm(e){const t=b(e),n={};for(const i of t)n[i]=Eu(e[i]);return n}const om=[...vc,...Kc,...hu,"background","padding","legend","lineBreak","scale","style","title","view"];function _u(e={}){const{color:t,font:n,fontSize:i,selection:r,...s}=e,o=ta({},C(tm),n?rm(n):{},t?nm(t):{},i?im(i):{},s||{});r&&qf(o,"selection",r,!0);const a=pe(o,om);for(const c of["background","lineBreak","padding"])o[c]&&(a[c]=xe(o[c]));for(const c of vc)o[c]&&(a[c]=oe(o[c]));for(const c of Kc)o[c]&&(a[c]=Eu(o[c]));for(const c of hu)o[c]&&(a[c]=oe(o[c]));if(o.legend&&(a.legend=oe(o.legend)),o.scale){const{invalid:c,...u}=o.scale,l=oe(c,{level:1});a.scale={...oe(u),...b(l).length>0?{invalid:l}:{}}}return o.style&&(a.style=sm(o.style)),o.title&&(a.title=oe(o.title)),o.view&&(a.view=oe(o.view)),a}const am=new Set(["view",...jg]),cm=["color","fontSize","background","padding","facet","concat","numberFormat","numberFormatType","normalizedNumberFormat","normalizedNumberFormatType","timeFormat","countTitle","header","axisQuantitative","axisTemporal","axisDiscrete","axisPoint","axisXBand","axisXPoint","axisXDiscrete","axisXQuantitative","axisXTemporal","axisYBand","axisYPoint","axisYDiscrete","axisYQuantitative","axisYTemporal","scale","selection","overlay"],um={view:["continuousWidth","continuousHeight","discreteWidth","discreteHeight","step"],...qg};function lm(e){e=C(e);for(const t of cm)delete e[t];if(e.axis)for(const t in e.axis)ii(e.axis[t])&&delete e.axis[t];if(e.legend)for(const t of Wh)delete e.legend[t];if(e.mark){for(const t of Sc)delete e.mark[t];e.mark.tooltip&&z(e.mark.tooltip)&&delete e.mark.tooltip}e.params&&(e.signals=(e.signals||[]).concat(yu(e.params)),delete e.params);for(const t of am){for(const i of Sc)delete e[t][i];const n=um[t];if(n)for(const i of n)delete e[t][i];dm(e,t)}for(const t of Bh())delete e[t];fm(e);for(const t in e)z(e[t])&&M(e[t])&&delete e[t];return M(e)?void 0:e}function fm(e){const{titleMarkConfig:t,subtitleMarkConfig:n,subtitle:i}=ka(e.title);M(t)||(e.style["group-title"]={...e.style["group-title"],...t}),M(n)||(e.style["group-subtitle"]={...e.style["group-subtitle"],...n}),M(i)?delete e.title:e.title=i}function dm(e,t,n,i){const r=i?e[t][i]:e[t];t==="view"&&(n="cell");const s={...r,...e.style[n??t]};M(s)||(e.style[n??t]=s),i||delete e[t]}function or(e){return"layer"in e}function pm(e){return"repeat"in e}function gm(e){return!E(e.repeat)&&e.repeat.layer}class qs{map(t,n){return Hi(t)?this.mapFacet(t,n):pm(t)?this.mapRepeat(t,n):Ws(t)?this.mapHConcat(t,n):ir(t)?this.mapVConcat(t,n):Bs(t)?this.mapConcat(t,n):this.mapLayerOrUnit(t,n)}mapLayerOrUnit(t,n){if(or(t))return this.mapLayer(t,n);if(ft(t))return this.mapUnit(t,n);throw new Error(ts(t))}mapLayer(t,n){return{...t,layer:t.layer.map(i=>this.mapLayerOrUnit(i,n))}}mapHConcat(t,n){return{...t,hconcat:t.hconcat.map(i=>this.map(i,n))}}mapVConcat(t,n){return{...t,vconcat:t.vconcat.map(i=>this.map(i,n))}}mapConcat(t,n){const{concat:i,...r}=t;return{...r,concat:i.map(s=>this.map(s,n))}}mapFacet(t,n){return{...t,spec:this.map(t.spec,n)}}mapRepeat(t,n){return{...t,spec:this.map(t.spec,n)}}}const hm={zero:1,center:1,normalize:1};function mm(e){return e in hm}const ym=new Set([yc,Mi,Li,Ui,ji,Ss,vs,Di,bc,xs]),bm=new Set([Mi,Li,yc]);function kn(e){return S(e)&&vn(e)==="quantitative"&&!e.bin}function ku(e,t,{orient:n,type:i}){const r=t==="x"?"y":"radius",s=t==="x"&&["bar","area"].includes(i),o=e[t],a=e[r];if(S(o)&&S(a))if(kn(o)&&kn(a)){if(o.stack)return t;if(a.stack)return r;const c=S(o)&&!!o.aggregate,u=S(a)&&!!a.aggregate;if(c!==u)return c?t:r;if(s){if(n==="vertical")return r;if(n==="horizontal")return t}}else{if(kn(o))return t;if(kn(a))return r}else{if(kn(o))return s&&n==="vertical"?void 0:t;if(kn(a))return s&&n==="horizontal"?void 0:r}return}function xm(e){switch(e){case"x":return"y";case"y":return"x";case"theta":return"radius";case"radius":return"theta"}}function Cu(e,t){const n=Ye(e)?e:{type:e},i=n.type;if(!ym.has(i))return null;const r=ku(t,"x",n)||ku(t,"theta",n);if(!r)return null;const s=t[r],o=S(s)?w(s,{}):void 0,a=xm(r),c=[],u=new Set;if(t[a]){const g=t[a],m=S(g)?w(g,{}):void 0;m&&m!==o&&(c.push(a),u.add(m))}const l=a==="x"?"xOffset":"yOffset",f=t[l],d=S(f)?w(f,{}):void 0;d&&d!==o&&(c.push(l),u.add(d));const p=Td.reduce((g,m)=>{if(m!=="tooltip"&&Kt(t,m)){const y=t[m];for(const v of V(y)){const k=Ie(v);if(k.aggregate)continue;const _=w(k,{});(!_||!u.has(_))&&g.push({channel:m,fieldDef:k})}}return g},[]);let h;return s.stack!==void 0?Un(s.stack)?h=s.stack?"zero":null:h=s.stack:bm.has(i)&&(h="zero"),!h||!mm(h)||Jc(t)&&p.length===0?null:(s?.scale?.type&&s?.scale?.type!==se.LINEAR&&(s?.stack&&x(qp(s.scale.type))),F(t[He(r)])?(s.stack!==void 0&&x(Hp(r)),null):(S(s)&&s.aggregate&&!Bd.has(s.aggregate)&&x(Gp(s.aggregate)),{groupbyChannels:c,groupbyFields:u,fieldChannel:r,impute:s.impute===null?!1:Ft(i),stackBy:p,offset:h}))}function Fu(e,t,n){const i=oe(e),r=R("orient",i,n);if(i.orient=$m(i.type,t,r),r!==void 0&&r!==i.orient&&x(Fp(i.orient,r)),i.type==="bar"&&i.orient){const c=R("cornerRadiusEnd",i,n);if(c!==void 0){const u=i.orient==="horizontal"&&t.x2||i.orient==="vertical"&&t.y2?["cornerRadius"]:Xg[i.orient];for(const l of u)i[l]=c;i.cornerRadiusEnd!==void 0&&delete i.cornerRadiusEnd}}const s=R("opacity",i,n),o=R("fillOpacity",i,n);s===void 0&&o===void 0&&(i.opacity=vm(i.type,t));const a=R("cursor",i,n);return a===void 0&&(i.cursor=Sm(i,t,n)),i}function Sm(e,t,n){return t.href||e.href||R("href",e,n)?"pointer":e.cursor}function vm(e,t){return O([ji,xs,Ss,vs],e)&&!Jc(t)?.7:void 0}function wm(e,t,{graticule:n}){if(n)return!1;const i=Ge("filled",e,t),r=e.type;return X(i,r!==ji&&r!==Di&&r!==Ui)}function $m(e,t,n){switch(e){case ji:case Ss:case vs:case bc:case Mg:case Lg:return}const{x:i,y:r,x2:s,y2:o}=t;switch(e){case Mi:if(S(i)&&(re(i.bin)||S(r)&&r.aggregate&&!i.aggregate))return"vertical";if(S(r)&&(re(r.bin)||S(i)&&i.aggregate&&!r.aggregate))return"horizontal";if(o||s){if(n)return n;if(!s)return(S(i)&&i.type===qt&&!j(i.bin)||Vi(i))&&(S(r)&&re(r.bin))?"horizontal":"vertical";if(!o)return(S(r)&&r.type===qt&&!j(r.bin)||Vi(r))&&(S(i)&&re(i.bin))?"vertical":"horizontal"}case Ui:if(s&&!(S(i)&&re(i.bin))&&o&&!(S(r)&&re(r.bin)))return;case Li:if(o)return S(r)&&re(r.bin)?"horizontal":"vertical";if(s)return S(i)&&re(i.bin)?"vertical":"horizontal";if(e===Ui){if(i&&!r)return"vertical";if(r&&!i)return"horizontal"}case Di:case xs:{const a=Mc(i),c=Mc(r);if(n)return n;if(a&&!c)return e!=="tick"?"horizontal":"vertical";if(!a&&c)return e!=="tick"?"vertical":"horizontal";if(a&&c)return"vertical";{const u=fe(i)&&i.type===bn,l=fe(r)&&r.type===bn;if(u&&!l)return"vertical";if(!u&&l)return"horizontal"}return}}return"vertical"}function Em(e){const{point:t,line:n,...i}=e;return b(i).length>1?i:i.type}function _m(e){for(const t of["line","area","rule","trail"])e[t]&&(e={...e,[t]:pe(e[t],["point","line"])});return e}function Gs(e,t={},n){return e.point==="transparent"?{opacity:0}:e.point?z(e.point)?e.point:{}:e.point!==void 0?null:t.point||n.shape?z(t.point)?t.point:{}:void 0}function Nu(e,t={}){return e.line?e.line===!0?{}:e.line:e.line!==void 0?null:t.line?t.line===!0?{}:t.line:void 0}class km{constructor(){this.name="path-overlay"}hasMatchingType(t,n){if(ft(t)){const{mark:i,encoding:r}=t,s=Ye(i)?i:{type:i};switch(s.type){case"line":case"rule":case"trail":return!!Gs(s,n[s.type],r);case"area":return!!Gs(s,n[s.type],r)||!!Nu(s,n[s.type])}}return!1}run(t,n,i){const{config:r}=n,{params:s,projection:o,mark:a,name:c,encoding:u,...l}=t,f=er(u,r),d=Ye(a)?a:{type:a},p=Gs(d,r[d.type],f),h=d.type==="area"&&Nu(d,r[d.type]),g=[{name:c,...s?{params:s}:{},mark:Em({...d.type==="area"&&d.opacity===void 0&&d.fillOpacity===void 0?{opacity:.7}:{},...d}),encoding:pe(f,["shape"])}],m=Cu(Fu(d,f,r),f);let y=f;if(m){const{fieldChannel:v,offset:k}=m;y={...f,[v]:{...f[v],...k?{stack:k}:{}}}}return y=pe(y,["y2","x2"]),h&&g.push({...o?{projection:o}:{},mark:{type:"line",...ln(d,["clip","interpolate","tension","tooltip"]),...h},encoding:y}),p&&g.push({...o?{projection:o}:{},mark:{type:"point",opacity:1,filled:!0,...ln(d,["clip","tooltip"]),...p},encoding:y}),i({...l,layer:g},{...n,config:_m(r)})}}function Cm(e,t){return t?ei(e)?Pu(e,t):Tu(e,t):e}function Vs(e,t){return t?Pu(e,t):e}function Xs(e,t,n){const i=t[e];if(uh(i)){if(i.repeat in n)return{...t,[e]:n[i.repeat]};x(cp(i.repeat));return}return t}function Tu(e,t){if(e=Xs("field",e,t),e===void 0)return;if(e===null)return null;if(Fs(e)&<(e.sort)){const n=Xs("field",e.sort,t);e={...e,...n?{sort:n}:{}}}return e}function Ou(e,t){if(S(e))return Tu(e,t);{const n=Xs("datum",e,t);return n!==e&&!n.type&&(n.type="nominal"),n}}function Au(e,t){if(F(e)){const n=Ou(e,t);if(n)return n;if(qi(e))return{condition:e.condition}}else{if(ti(e)){const n=Ou(e.condition,t);if(n)return{...e,condition:n};{const{condition:i,...r}=e;return r}}return e}return}function Pu(e,t){const n={};for(const i in e)if(on(e,i)){const r=e[i];if(E(r))n[i]=r.map(s=>Au(s,t)).filter(s=>s);else{const s=Au(r,t);s!==void 0&&(n[i]=s)}}return n}class Fm{constructor(){this.name="RuleForRangedLine"}hasMatchingType(t){if(ft(t)){const{encoding:n,mark:i}=t;if(i==="line"||Ye(i)&&i.type==="line")for(const r of Cd){const s=jt(r),o=n[s];if(n[r]&&(S(o)&&!re(o.bin)||Ke(o)))return!0}}return!1}run(t,n,i){const{encoding:r,mark:s}=t;return x(Cp(!!r.x2,!!r.y2)),i({...t,mark:z(s)?{...s,type:"rule"}:"rule"},n)}}class Nm extends qs{constructor(){super(...arguments);this.nonFacetUnitNormalizers=[Oh,zh,Uh,new km,new Fm]}map(t,n){if(ft(t)){const i=Kt(t.encoding,tt),r=Kt(t.encoding,nt),s=Kt(t.encoding,Ei);if(i||r||s)return this.mapFacetedUnit(t,n)}return super.map(t,n)}mapUnit(t,n){const{parentEncoding:i,parentProjection:r}=n,s=Vs(t.encoding,n.repeater),o={...t,...t.name?{name:[n.repeaterPrefix,t.name].filter(c=>c).join("_")}:{},...s?{encoding:s}:{}};if(i||r)return this.mapUnitWithParentEncodingOrProjection(o,n);const a=this.mapLayerOrUnit.bind(this);for(const c of this.nonFacetUnitNormalizers)if(c.hasMatchingType(o,n.config))return c.run(o,n,a);return o}mapRepeat(t,n){return gm(t)?this.mapLayerRepeat(t,n):this.mapNonLayerRepeat(t,n)}mapLayerRepeat(t,n){const{repeat:i,spec:r,...s}=t,{row:o,column:a,layer:c}=i,{repeater:u={},repeaterPrefix:l=""}=n;return o||a?this.mapRepeat({...t,repeat:{...o?{row:o}:{},...a?{column:a}:{}},spec:{repeat:{layer:c},spec:r}},n):{...s,layer:c.map(f=>{const d={...u,layer:f},p=`${(r.name?`${r.name}_`:"")+l}child__layer_${W(f)}`,h=this.mapLayerOrUnit(r,{...n,repeater:d,repeaterPrefix:p});return h.name=p,h})}}mapNonLayerRepeat(t,n){const{repeat:i,spec:r,data:s,...o}=t;!E(i)&&t.columns&&(t=pe(t,["columns"]),x(Ua("repeat")));const a=[],{repeater:c={},repeaterPrefix:u=""}=n,l=!E(i)&&i.row||[c?c.row:null],f=!E(i)&&i.column||[c?c.column:null],d=E(i)&&i||[c?c.repeat:null];for(const h of d)for(const g of l)for(const m of f){const y={repeat:h,row:g,column:m,layer:c.layer},v=(r.name?`${r.name}_`:"")+u+"child__"+(E(i)?`${W(h)}`:(i.row?`row_${W(g)}`:"")+(i.column?`column_${W(m)}`:"")),k=this.map(r,{...n,repeater:y,repeaterPrefix:v});k.name=v,a.push(pe(k,["data"]))}const p=E(i)?t.columns:i.column?i.column.length:1;return{data:r.data??s,align:"all",...o,columns:p,concat:a}}mapFacet(t,n){const{facet:i}=t;return ei(i)&&t.columns&&(t=pe(t,["columns"]),x(Ua("facet"))),super.mapFacet(t,n)}mapUnitWithParentEncodingOrProjection(t,n){const{encoding:i,projection:r}=t,{parentEncoding:s,parentProjection:o,config:a}=n,c=Ru({parentProjection:o,projection:r}),u=zu({parentEncoding:s,encoding:Vs(i,n.repeater)});return this.mapUnit({...t,...c?{projection:c}:{},...u?{encoding:u}:{}},{config:a})}mapFacetedUnit(t,n){const{row:i,column:r,facet:s,...o}=t.encoding,{mark:a,width:c,projection:u,height:l,view:f,params:d,encoding:p,...h}=t,{facetMapping:g,layout:m}=this.getFacetMappingAndLayout({row:i,column:r,facet:s},n),y=Vs(o,n.repeater);return this.mapFacet({...h,...m,facet:g,spec:{...c?{width:c}:{},...l?{height:l}:{},...f?{view:f}:{},...u?{projection:u}:{},mark:a,encoding:y,...d?{params:d}:{}}},n)}getFacetMappingAndLayout(t,n){const{row:i,column:r,facet:s}=t;if(i||r){s&&x(_p([...i?[tt]:[],...r?[nt]:[]]));const o={},a={};for(const c of[tt,nt]){const u=t[c];if(u){const{align:l,center:f,spacing:d,columns:p,...h}=u;o[c]=h;for(const g of["align","center","spacing"])u[g]!==void 0&&(a[g]??(a[g]={}),a[g][c]=u[g])}}return{facetMapping:o,layout:a}}else{const{align:o,center:a,spacing:c,columns:u,...l}=s;return{facetMapping:Cm(l,n.repeater),layout:{...o?{align:o}:{},...a?{center:a}:{},...c?{spacing:c}:{},...u?{columns:u}:{}}}}}mapLayer(t,{parentEncoding:n,parentProjection:i,...r}){const{encoding:s,projection:o,...a}=t,c={...r,parentEncoding:zu({parentEncoding:n,encoding:s,layer:!0}),parentProjection:Ru({parentProjection:i,projection:o})};return super.mapLayer({...a,...t.name?{name:[c.repeaterPrefix,t.name].filter(u=>u).join("_")}:{}},c)}}function zu({parentEncoding:e,encoding:t={},layer:n}){let i={};if(e){const r=new Set([...b(e),...b(t)]);for(const s of r){const o=t[s],a=e[s];if(F(o)){const c={...a,...o};i[s]=c}else ti(o)?i[s]={...o,condition:{...a,...o.condition}}:o||o===null?i[s]=o:(n||Re(a)||$(a)||F(a)||E(a))&&(i[s]=a)}}else i=t;return!i||M(i)?void 0:i}function Ru(e){const{parentProjection:t,projection:n}=e;return t&&n&&x(gp({parentProjection:t,projection:n})),n??t}function Ys(e){return"filter"in e}function Tm(e){return e?.stop!==void 0}function Iu(e){return"lookup"in e}function Om(e){return"data"in e}function Am(e){return"param"in e}function Pm(e){return"pivot"in e}function zm(e){return"density"in e}function Rm(e){return"quantile"in e}function Im(e){return"regression"in e}function Lm(e){return"loess"in e}function Mm(e){return"sample"in e}function Dm(e){return"window"in e}function jm(e){return"joinaggregate"in e}function Um(e){return"flatten"in e}function Bm(e){return"calculate"in e}function Lu(e){return"bin"in e}function Wm(e){return"impute"in e}function Hm(e){return"timeUnit"in e}function qm(e){return"aggregate"in e}function Gm(e){return"stack"in e}function Vm(e){return"fold"in e}function Xm(e){return"extent"in e&&!("density"in e)&&!("regression"in e)}function Ym(e){return e.map(t=>Ys(t)?{filter:un(t.filter,Sg)}:t)}class Km extends qs{map(t,n){return n.emptySelections??(n.emptySelections={}),n.selectionPredicates??(n.selectionPredicates={}),t=Mu(t,n),super.map(t,n)}mapLayerOrUnit(t,n){if(t=Mu(t,n),t.encoding){const i={};for(const[r,s]of bt(t.encoding))i[r]=Du(s,n);t={...t,encoding:i}}return super.mapLayerOrUnit(t,n)}mapUnit(t,n){const{selection:i,...r}=t;return i?{...r,params:bt(i).map(([s,o])=>{const{init:a,bind:c,empty:u,...l}=o;l.type==="single"?(l.type="point",l.toggle=!1):l.type==="multi"&&(l.type="point"),n.emptySelections[s]=u!=="none";for(const f of ie(n.selectionPredicates[s]??{}))f.empty=u!=="none";return{name:s,value:a,select:l,bind:c}})}:t}}function Mu(e,t){const{transform:n,...i}=e;if(n){const r=n.map(s=>{if(Ys(s))return{filter:Ks(s,t)};if(Lu(s)&&Ut(s.bin))return{...s,bin:ju(s.bin)};if(Iu(s)){const{selection:o,...a}=s.from;return o?{...s,from:{param:o,...a}}:s}return s});return{...i,transform:r}}return e}function Du(e,t){const n=C(e);if(S(n)&&Ut(n.bin)&&(n.bin=ju(n.bin)),Yt(n)&&n.scale?.domain?.selection){const{selection:i,...r}=n.scale.domain;n.scale.domain={...r,...i?{param:i}:{}}}if(qi(n))if(na(n.condition))n.condition=n.condition.map(i=>{const{selection:r,param:s,test:o,...a}=i;return s?i:{...a,test:Ks(i,t)}});else{const{selection:i,param:r,test:s,...o}=Du(n.condition,t);n.condition=r?n.condition:{...o,test:Ks(n.condition,t)}}return n}function ju(e){const t=e.extent;if(t?.selection){const{selection:n,...i}=t;return{...e,extent:{...i,param:n}}}return e}function Ks(e,t){const n=i=>un(i,r=>{var s;const o=t.emptySelections[r]??!0,a={param:r,empty:o};return(s=t.selectionPredicates)[r]??(s[r]=[]),t.selectionPredicates[r].push(a),a});return e.selection?n(e.selection):un(e.test||e.filter,i=>i.selection?n(i.selection):i)}class Qs extends qs{map(t,n){const i=n.selections??[];if(t.params&&!ft(t)){const r=[];for(const s of t.params)Us(s)?i.push(s):r.push(s);t.params=r}return n.selections=i,super.map(t,n)}mapUnit(t,n){const i=n.selections;if(!i||!i.length)return t;const r=(n.path??[]).concat(t.name),s=[];for(const o of i)if(!o.views||!o.views.length)s.push(o);else for(const a of o.views)(Si(a)&&(a===t.name||r.includes(a))||na(a)&&a.map(c=>r.indexOf(c)).every((c,u,l)=>c!==-1&&(u===0||c>l[u-1])))&&s.push(o);return s.length&&(t.params=s),t}}for(const e of["mapFacet","mapRepeat","mapHConcat","mapVConcat","mapLayer"]){const t=Qs.prototype[e];Qs.prototype[e]=function(n,i){return t.call(this,n,Qm(n,i))}}function Qm(e,t){return e.name?{...t,path:(t.path??[]).concat(e.name)}:t}function Uu(e,t){t===void 0&&(t=_u(e.config));const n=ty(e,t),{width:i,height:r}=e,s=ny(n,{width:i,height:r,autosize:e.autosize},t);return{...n,...s?{autosize:s}:{}}}const Zm=new Nm,Jm=new Km,ey=new Qs;function ty(e,t={}){const n={config:t};return ey.map(Zm.map(Jm.map(e,n),n),n)}function Bu(e){return N(e)?{type:e}:e??{}}function ny(e,t,n){let{width:i,height:r}=t;const s=ft(e)||or(e),o={};s?i=="container"&&r=="container"?(o.type="fit",o.contains="padding"):i=="container"?(o.type="fit-x",o.contains="padding"):r=="container"&&(o.type="fit-y",o.contains="padding"):(i=="container"&&(x(Ia("width")),i=void 0),r=="container"&&(x(Ia("height")),r=void 0));const a={type:"pad",...o,...n?Bu(n.autosize):{},...Bu(e.autosize)};return a.type==="fit"&&!s&&(x(Qd),a.type="pad"),i=="container"&&!(a.type=="fit"||a.type=="fit-x")&&x(La("width")),r=="container"&&!(a.type=="fit"||a.type=="fit-y")&&x(La("height")),be(a,{type:"pad"})?void 0:a}function iy(e){return e==="fit"||e==="fit-x"||e==="fit-y"}function ry(e){return e?`fit-${Ni(e)}`:"fit"}const sy=["background","padding"];function Wu(e,t){const n={};for(const i of sy)e&&e[i]!==void 0&&(n[i]=xe(e[i]));return t&&(n.params=e.params),n}class pt{constructor(t={},n={}){this.explicit=t,this.implicit=n}clone(){return new pt(C(this.explicit),C(this.implicit))}combine(){return{...this.explicit,...this.implicit}}get(t){return X(this.explicit[t],this.implicit[t])}getWithExplicit(t){return this.explicit[t]!==void 0?{explicit:!0,value:this.explicit[t]}:this.implicit[t]!==void 0?{explicit:!1,value:this.implicit[t]}:{explicit:!1,value:void 0}}setWithExplicit(t,{value:n,explicit:i}){n!==void 0&&this.set(t,n,i)}set(t,n,i){return delete this[i?"implicit":"explicit"][t],this[i?"explicit":"implicit"][t]=n,this}copyKeyFromSplit(t,{explicit:n,implicit:i}){n[t]!==void 0?this.set(t,n[t],!0):i[t]!==void 0&&this.set(t,i[t],!1)}copyKeyFromObject(t,n){n[t]!==void 0&&this.set(t,n[t],!0)}copyAll(t){for(const n of b(t.combine())){const i=t.getWithExplicit(n);this.setWithExplicit(n,i)}}}function Ze(e){return{explicit:!0,value:e}}function Se(e){return{explicit:!1,value:e}}function Hu(e){return(t,n,i,r)=>{const s=e(t.value,n.value);return s>0?t:s<0?n:ar(t,n,i,r)}}function ar(e,t,n,i){return e.explicit&&t.explicit&&x(Lp(n,i,e.value,t.value)),e}function Ot(e,t,n,i,r=ar){return e===void 0||e.value===void 0?t:e.explicit&&!t.explicit?e:t.explicit&&!e.explicit?t:be(e.value,t.value)?e:r(e,t,n,i)}class oy extends pt{constructor(t={},n={},i=!1){super(t,n);this.explicit=t,this.implicit=n,this.parseNothing=i}clone(){const t=super.clone();return t.parseNothing=this.parseNothing,t}}function Cn(e){return"url"in e}function ri(e){return"values"in e}function qu(e){return"name"in e&&!Cn(e)&&!ri(e)&&!At(e)}function At(e){return e&&(Gu(e)||Vu(e)||Zs(e))}function Gu(e){return"sequence"in e}function Vu(e){return"sphere"in e}function Zs(e){return"graticule"in e}var G;(function(e){e[e.Raw=0]="Raw",e[e.Main=1]="Main",e[e.Row=2]="Row",e[e.Column=3]="Column",e[e.Lookup=4]="Lookup",e[e.PreFilterInvalid=5]="PreFilterInvalid",e[e.PostFilterInvalid=6]="PostFilterInvalid"})(G||(G={}));function Xu({invalid:e,isPath:t}){const n=$c(e,{isPath:t});switch(n){case"filter":return{marks:"exclude-invalid-values",scales:"exclude-invalid-values"};case"break-paths-show-domains":return{marks:t?"include-invalid-values":"exclude-invalid-values",scales:"include-invalid-values"};case"break-paths-filter-domains":return{marks:t?"include-invalid-values":"exclude-invalid-values",scales:"exclude-invalid-values"};case"show":return{marks:"include-invalid-values",scales:"include-invalid-values"}}}function ay(e){const{marks:t,scales:n}=Xu(e);return t===n?G.Main:n==="include-invalid-values"?G.PreFilterInvalid:G.PostFilterInvalid}function Yu(e){const{signals:t,hasLegend:n,index:i,...r}=e;return r.field=we(r.field),r}function Qt(e,t=!0,n=Hf){if(E(e)){const i=e.map(r=>Qt(r,t,n));return t?`[${i.join(", ")}]`:i}else if(Bt(e))return n(t?Wt(e):cg(e));return t?n(D(e)):e}function cy(e,t){for(const n of ie(e.component.selection??{})){const i=n.name;let r=`${i}${zt}, ${n.resolve==="global"?"true":`{unit: ${Jt(e)}}`}`;for(const s of gr){if(!s.defined(n))continue;s.signals&&(t=s.signals(e,n,t)),s.modifyExpr&&(r=s.modifyExpr(e,n,r))}t.push({name:i+My,on:[{events:{signal:n.name+zt},update:`modify(${A(n.name+Zt)}, ${r})`}]})}return Js(t)}function uy(e,t){if(e.component.selection&&b(e.component.selection).length){const n=A(e.getName("cell"));t.unshift({name:"facet",value:{},on:[{events:cn("pointermove","scope"),update:`isTuple(facet) ? facet : group(${n}).datum`}]})}return Js(t)}function ly(e,t){let n=!1;for(const i of ie(e.component.selection??{})){const r=i.name,s=A(r+Zt),o=t.filter(a=>a.name===r);if(o.length===0){const a=i.resolve==="global"?"union":i.resolve,c=i.type==="point"?", true, true)":")";t.push({name:i.name,update:`${El}(${s}, ${A(a)}${c}`})}n=!0;for(const a of gr)a.defined(i)&&a.topLevelSignals&&(t=a.topLevelSignals(e,i,t))}if(n){const i=t.filter(r=>r.name==="unit");i.length===0&&t.unshift({name:"unit",value:{},on:[{events:"pointermove",update:"isTuple(group()) ? group() : unit"}]})}return Js(t)}function fy(e,t){const n=[...t],i=Jt(e,{escape:!1});for(const r of ie(e.component.selection??{})){const s={name:r.name+Zt};if(r.project.hasSelectionId&&(s.transform=[{type:"collect",sort:{field:Le}}]),r.init){const a=r.project.items.map(Yu);s.values=r.project.hasSelectionId?r.init.map(c=>({unit:i,[Le]:Qt(c,!1)[0]})):r.init.map(c=>({unit:i,fields:a,values:Qt(c,!1)}))}const o=n.filter(a=>a.name===r.name+Zt);o.length||n.push(s)}return n}function Ku(e,t){for(const n of ie(e.component.selection??{}))for(const i of gr)i.defined(n)&&i.marks&&(t=i.marks(e,n,t));return t}function dy(e,t){for(const n of e.children)q(n)&&(t=Ku(n,t));return t}function py(e,t,n,i){const r=Nl(e,t.param,t);return{signal:Pe(n.get("type"))&&E(i)&&i[0]>i[1]?`isValid(${r}) && reverse(${r})`:r}}function Js(e){return e.map(t=>(t.on&&!t.on.length&&delete t.on,t))}class I{constructor(t,n){this.debugName=n,this._children=[],this._parent=null,t&&(this.parent=t)}clone(){throw new Error("Cannot clone node")}get parent(){return this._parent}set parent(t){this._parent=t,t&&t.addChild(this)}get children(){return this._children}numChildren(){return this._children.length}addChild(t,n){if(this._children.includes(t)){x(fp);return}n!==void 0?this._children.splice(n,0,t):this._children.push(t)}removeChild(t){const n=this._children.indexOf(t);return this._children.splice(n,1),n}remove(){let t=this._parent.removeChild(this);for(const n of this._children)n._parent=this._parent,this._parent.addChild(n,t++)}insertAsParentOf(t){const n=t.parent;n.removeChild(this),this.parent=n,t.parent=this}swapWithParent(){const t=this._parent,n=t.parent;for(const r of this._children)r.parent=t;this._children=[],t.removeChild(this);const i=t.parent.removeChild(t);this._parent=n,n.addChild(this,i),t.parent=this}}class ye extends I{clone(){const t=new this.constructor;return t.debugName=`clone_${this.debugName}`,t._source=this._source,t._name=`clone_${this._name}`,t.type=this.type,t.refCounts=this.refCounts,t.refCounts[t._name]=0,t}constructor(t,n,i,r){super(t,n);this.type=i,this.refCounts=r,this._source=this._name=n,this.refCounts&&!(this._name in this.refCounts)&&(this.refCounts[this._name]=0)}dependentFields(){return new Set}producedFields(){return new Set}hash(){return this._hash===void 0&&(this._hash=`Output ${ca()}`),this._hash}getSource(){return this.refCounts[this._name]++,this._source}isRequired(){return!!this.refCounts[this._name]}setSource(t){this._source=t}}function eo(e){return e.as!==void 0}function Qu(e){return`${e}_end`}class Je extends I{clone(){return new Je(null,C(this.timeUnits))}constructor(t,n){super(t);this.timeUnits=n}static makeFromEncoding(t,n){const i=n.reduceFieldDef((r,s,o)=>{const{field:a,timeUnit:c}=s;if(c){let u;if(Ht(c)){if(q(n)){const{mark:l,markDef:f,config:d}=n,p=Nt({fieldDef:s,markDef:f,config:d});(Qn(l)||!!p)&&(u={timeUnit:Z(c),field:a})}}else u={as:w(s,{forAs:!0}),field:a,timeUnit:c};if(q(n)){const{mark:l,markDef:f,config:d}=n,p=Nt({fieldDef:s,markDef:f,config:d});Qn(l)&&Y(o)&&p!==.5&&(u.rectBandPosition=p)}u&&(r[P(u)]=u)}return r},{});return M(i)?null:new Je(t,i)}static makeFromTransform(t,n){const{timeUnit:i,...r}={...n},s=Z(i),o={...r,timeUnit:s};return new Je(t,{[P(o)]:o})}merge(t){this.timeUnits={...this.timeUnits};for(const n in t.timeUnits)this.timeUnits[n]||(this.timeUnits[n]=t.timeUnits[n]);for(const n of t.children)t.removeChild(n),n.parent=this;t.remove()}removeFormulas(t){const n={};for(const[i,r]of bt(this.timeUnits)){const s=eo(r)?r.as:`${r.field}_end`;t.has(s)||(n[i]=r)}this.timeUnits=n}producedFields(){return new Set(ie(this.timeUnits).map(t=>eo(t)?t.as:Qu(t.field)))}dependentFields(){return new Set(ie(this.timeUnits).map(t=>t.field))}hash(){return`TimeUnit ${P(this.timeUnits)}`}assemble(){const t=[];for(const n of ie(this.timeUnits)){const{rectBandPosition:i}=n,r=Z(n.timeUnit);if(eo(n)){const{field:s,as:o}=n,{unit:a,utc:c,...u}=r,l=[o,`${o}_end`];t.push({field:we(s),type:"timeunit",...a?{units:Ri(a)}:{},...c?{timezone:"utc"}:{},...u,as:l}),t.push(...Ju(l,i,r))}else if(n){const{field:s}=n,o=s.replaceAll("\\.","."),a=Zu({timeUnit:r,field:o}),c=Qu(o);t.push({type:"formula",expr:a,as:c}),t.push(...Ju([o,c],i,r))}}return t}}const cr="offsetted_rect_start",ur="offsetted_rect_end";function Zu({timeUnit:e,field:t,reverse:n}){const{unit:i,utc:r}=e,s=nc(i),{part:o,step:a}=oc(s,e.step),c=r?"utcOffset":"timeOffset",u=`${c}('${o}', datum['${t}'], ${n?-a:a})`;return u}function Ju([e,t],n,i){if(n!==void 0&&n!==.5){const r=`datum['${e}']`,s=`datum['${t}']`;return[{type:"formula",expr:el([Zu({timeUnit:i,field:e,reverse:!0}),r],n+.5),as:`${e}_${cr}`},{type:"formula",expr:el([r,s],n+.5),as:`${e}_${ur}`}]}return[]}function el([e,t],n){return`${1-n} * ${e} + ${n} * ${t}`}const si="_tuple_fields";class gy{constructor(...t){this.items=t,this.hasChannel={},this.hasField={},this.hasSelectionId=!1}}const hy={defined:()=>!0,parse:(e,t,n)=>{const i=t.name,r=t.project??(t.project=new gy),s={},o={},a=new Set,c=(h,g)=>{const m=g==="visual"?h.channel:h.field;let y=W(`${i}_${m}`);for(let v=1;a.has(y);v++)y=W(`${i}_${m}_${v}`);return a.add(y),{[g]:y}},u=t.type,l=e.config.selection[u],f=n.value!==void 0?V(n.value):null;let{fields:d,encodings:p}=z(n.select)?n.select:{};if(!d&&!p&&f)for(const h of f){if(!z(h))continue;for(const g of b(h))kd(g)?(p||(p=[])).push(g):u==="interval"?(x(ap),p=l.encodings):(d??(d=[])).push(g)}!d&&!p&&(p=l.encodings,"fields"in l&&(d=l.fields));for(const h of p??[]){const g=e.fieldDef(h);if(g){let m=g.field;if(g.aggregate){x(Zd(h,g.aggregate));continue}else if(!m){x(Da(h));continue}if(g.timeUnit&&!Ht(g.timeUnit)){m=e.vgField(h);const y={timeUnit:g.timeUnit,as:m,field:g.field};o[P(y)]=y}if(!s[m]){const y=u==="interval"&&qe(h)&&Pe(e.getScaleComponent(h).get("type"))?"R":g.bin?"R-RE":"E",v={field:m,channel:h,type:y,index:r.items.length};v.signals={...c(v,"data"),...c(v,"visual")},r.items.push(s[m]=v),r.hasField[m]=s[m],r.hasSelectionId=r.hasSelectionId||m===Le,ha(h)?(v.geoChannel=h,v.channel=ga(h),r.hasChannel[v.channel]=s[m]):r.hasChannel[h]=s[m]}}else x(Da(h))}for(const h of d??[]){if(r.hasField[h])continue;const g={type:"E",field:h,index:r.items.length};g.signals={...c(g,"data")},r.items.push(g),r.hasField[h]=g,r.hasSelectionId=r.hasSelectionId||h===Le}f&&(t.init=f.map(h=>r.items.map(g=>z(h)?h[g.geoChannel||g.channel]!==void 0?h[g.geoChannel||g.channel]:h[g.field]:h))),M(o)||(r.timeUnit=new Je(null,o))},signals:(e,t,n)=>{const i=t.name+si,r=n.filter(s=>s.name===i);return r.length>0||t.project.hasSelectionId?n:n.concat({name:i,value:t.project.items.map(Yu)})}},gt={defined:e=>e.type==="interval"&&e.resolve==="global"&&e.bind&&e.bind==="scales",parse:(e,t)=>{const n=t.scales=[];for(const i of t.project.items){const r=i.channel;if(!qe(r))continue;const s=e.getScaleComponent(r),o=s?s.get("type"):void 0;if(o=="sequential"&&x(np),!s||!Pe(o)){x(tp);continue}s.set("selectionExtent",{param:t.name,field:i.field},!0),n.push(i)}},topLevelSignals:(e,t,n)=>{const i=t.scales.filter(o=>n.filter(a=>a.name===o.signals.data).length===0);if(!e.parent||no(e)||i.length===0)return n;const r=n.filter(o=>o.name===t.name)[0];let s=r.update;if(s.indexOf(El)>=0)r.update=`{${i.map(o=>`${A(we(o.field))}: ${o.signals.data}`).join(", ")}}`;else{for(const o of i){const a=`${A(we(o.field))}: ${o.signals.data}`;s.includes(a)||(s=`${s.substring(0,s.length-1)}, ${a}}`)}r.update=s}return n.concat(i.map(o=>({name:o.signals.data})))},signals:(e,t,n)=>{if(e.parent&&!no(e))for(const i of t.scales){const r=n.find(s=>s.name===i.signals.data);r.push="outer",delete r.value,delete r.update}return n}};function to(e,t){const n=A(e.scaleName(t));return`domain(${n})`}function no(e){return e.parent&&Mn(e.parent)&&(!e.parent.parent??no(e.parent.parent))}const Fn="_brush",tl="_scale_trigger",oi="geo_interval_init_tick",nl="_init",my="_center",yy={defined:e=>e.type==="interval",parse:(e,t,n)=>{var i;if(e.hasProjection){const r={...zr(n.select)?n.select:{}};r.fields=[Le],r.encodings||(r.encodings=n.value?b(n.value):[Te,Ne]),n.select={type:"interval",...r}}if(t.translate&&!gt.defined(t)){const r=`!event.item || event.item.mark.name !== ${A(t.name+Fn)}`;for(const s of t.events){if(!s.between){x(`${s} is not an ordered event stream for interval selections.`);continue}const o=V((i=s.between[0]).filter??(i.filter=[]));o.indexOf(r)<0&&o.push(r)}}},signals:(e,t,n)=>{const i=t.name,r=i+zt,s=ie(t.project.hasChannel).filter(a=>a.channel===H||a.channel===Q),o=t.init?t.init[0]:null;if(n.push(...s.reduce((a,c)=>a.concat(by(e,t,c,o&&o[c.index])),[])),e.hasProjection){const a=A(e.projectionName()),c=e.projectionName()+my,{x:u,y:l}=t.project.hasChannel,f=u&&u.signals.visual,d=l&&l.signals.visual,p=u?o&&o[u.index]:`${c}[0]`,h=l?o&&o[l.index]:`${c}[1]`,g=T=>e.getSizeSignalRef(T).signal,m=`[[${f?f+"[0]":"0"}, ${d?d+"[0]":"0"}],[${f?f+"[1]":g("width")}, ${d?d+"[1]":g("height")}]]`;if(o&&(n.unshift({name:i+nl,init:`[scale(${a}, [${u?p[0]:p}, ${l?h[0]:h}]), scale(${a}, [${u?p[1]:p}, ${l?h[1]:h}])]`}),!u||!l)){const T=n.find(L=>L.name===c);T||n.unshift({name:c,update:`invert(${a}, [${g("width")}/2, ${g("height")}/2])`})}const y=`intersect(${m}, {markname: ${A(e.getName("marks"))}}, unit.mark)`,v=`{unit: ${Jt(e)}}`,k=`vlSelectionTuples(${y}, ${v})`,_=s.map(T=>T.signals.visual);return n.concat({name:r,on:[{events:[..._.length?[{signal:_.join(" || ")}]:[],...o?[{signal:oi}]:[]],update:k}]})}else{if(!gt.defined(t)){const u=i+tl,l=s.map(f=>{const d=f.channel,{data:p,visual:h}=f.signals,g=A(e.scaleName(d)),m=e.getScaleComponent(d).get("type"),y=Pe(m)?"+":"";return`(!isArray(${p}) || (${y}invert(${g}, ${h})[0] === ${y}${p}[0] && ${y}invert(${g}, ${h})[1] === ${y}${p}[1]))`});l.length&&n.push({name:u,value:{},on:[{events:s.map(f=>({scale:e.scaleName(f.channel)})),update:l.join(" && ")+` ? ${u} : {}`}]})}const a=s.map(u=>u.signals.data),c=`unit: ${Jt(e)}, fields: ${i+si}, values`;return n.concat({name:r,...o?{init:`{${c}: ${Qt(o)}}`}:{},...a.length?{on:[{events:[{signal:a.join(" || ")}],update:`${a.join(" && ")} ? {${c}: [${a}]} : null`}]}:{}})}},topLevelSignals:(e,t,n)=>{if(q(e)&&e.hasProjection&&t.init){const i=n.filter(r=>r.name===oi);i.length||n.unshift({name:oi,value:null,on:[{events:"timer{1}",update:`${oi} === null ? {} : ${oi}`}]})}return n},marks:(e,t,n)=>{const i=t.name,{x:r,y:s}=t.project.hasChannel,o=r?.signals.visual,a=s?.signals.visual,c=`data(${A(t.name+Zt)})`;if(gt.defined(t)||!r&&!s)return n;const u={x:r!==void 0?{signal:`${o}[0]`}:{value:0},y:s!==void 0?{signal:`${a}[0]`}:{value:0},x2:r!==void 0?{signal:`${o}[1]`}:{field:{group:"width"}},y2:s!==void 0?{signal:`${a}[1]`}:{field:{group:"height"}}};if(t.resolve==="global")for(const m of b(u))u[m]=[{test:`${c}.length && ${c}[0].unit === ${Jt(e)}`,...u[m]},{value:0}];const{fill:l,fillOpacity:f,cursor:d,...p}=t.mark,h=b(p).reduce((m,y)=>(m[y]=[{test:[r!==void 0&&`${o}[0] !== ${o}[1]`,s!==void 0&&`${a}[0] !== ${a}[1]`].filter(v=>v).join(" && "),value:p[y]},{value:null}],m),{}),g=d??(t.translate?"move":null);return[{name:`${i+Fn}_bg`,type:"rect",clip:!0,encode:{enter:{fill:{value:l},fillOpacity:{value:f}},update:u}},...n,{name:i+Fn,type:"rect",clip:!0,encode:{enter:{...g?{cursor:{value:g}}:{},fill:{value:"transparent"}},update:{...u,...h}}}]}};function by(e,t,n,i){const r=!e.hasProjection,s=n.channel,o=n.signals.visual,a=A(r?e.scaleName(s):e.projectionName()),c=d=>`scale(${a}, ${d})`,u=e.getSizeSignalRef(s===H?"width":"height").signal,l=`${s}(unit)`,f=t.events.reduce((d,p)=>[...d,{events:p.between[0],update:`[${l}, ${l}]`},{events:p,update:`[${o}[0], clamp(${l}, 0, ${u})]`}],[]);if(r){const d=n.signals.data,p=gt.defined(t),h=e.getScaleComponent(s),g=h?h.get("type"):void 0,m=i?{init:Qt(i,!0,c)}:{value:[]};return f.push({events:{signal:t.name+tl},update:Pe(g)?`[${c(`${d}[0]`)}, ${c(`${d}[1]`)}]`:"[0, 0]"}),p?[{name:d,on:[]}]:[{name:o,...m,on:f},{name:d,...i?{init:Qt(i)}:{},on:[{events:{signal:o},update:`${o}[0] === ${o}[1] ? null : invert(${a}, ${o})`}]}]}else{const d=s===H?0:1,p=t.name+nl,h=i?{init:`[${p}[0][${d}], ${p}[1][${d}]]`}:{value:[]};return[{name:o,...h,on:f}]}}const xy={defined:e=>e.type==="point",signals:(e,t,n)=>{const i=t.name,r=i+si,s=t.project,o="(item().isVoronoi ? datum.datum : datum)",a=ie(e.component.selection??{}).reduce((f,d)=>d.type==="interval"?f.concat(d.name+Fn):f,[]).map(f=>`indexof(item().mark.name, '${f}') < 0`).join(" && "),c=`datum && item().mark.marktype !== 'group' && indexof(item().mark.role, 'legend') < 0${a?` && ${a}`:""}`;let u=`unit: ${Jt(e)}, `;if(t.project.hasSelectionId)u+=`${Le}: ${o}[${A(Le)}]`;else{const f=s.items.map(d=>{const p=e.fieldDef(d.channel);return p?.bin?`[${o}[${A(e.vgField(d.channel,{}))}], ${o}[${A(e.vgField(d.channel,{binSuffix:"end"}))}]]`:`${o}[${A(d.field)}]`}).join(", ");u+=`fields: ${r}, values: [${f}]`}const l=t.events;return n.concat([{name:i+zt,on:l?[{events:l,update:`${c} ? {${u}} : null`,force:!0}]:[]}])}};function Nn({model:e,channelDef:t,vgChannel:n,invalidValueRef:i,mainRefFn:r}){const s=qi(t)&&t.condition;let o=[];if(s){const c=V(s);o=c.map(u=>{const l=r(u);if(ch(u)){const{param:f,empty:d}=u,p=Fl(e,{param:f,empty:d});return{test:p,...l}}else{const f=hr(e,u.test);return{test:f,...l}}})}i!==void 0&&o.push(i);const a=r(t);return a!==void 0&&o.push(a),o.length>1||o.length===1&&Boolean(o[0].test)?{[n]:o}:o.length===1?{[n]:o[0]}:{}}function io(e,t="text"){const n=e.encoding[t];return Nn({model:e,channelDef:n,vgChannel:t,mainRefFn:i=>lr(i,e.config),invalidValueRef:void 0})}function lr(e,t,n="datum"){if(e){if(Re(e))return B(e.value);if(F(e)){const{format:i,formatType:r}=Yi(e);return _s({fieldOrDatumDef:e,format:i,formatType:r,expr:n,config:t})}}return}function il(e,t={}){const{encoding:n,markDef:i,config:r,stack:s}=e,o=n.tooltip;if(E(o))return{tooltip:sl({tooltip:o},s,r,t)};{const a=t.reactiveGeom?"datum.datum":"datum",c=u=>{const l=lr(u,r,a);if(l)return l;if(u===null)return;let f=R("tooltip",i,r);return f===!0&&(f={content:"encoding"}),N(f)?{value:f}:z(f)?$(f)?f:f.content==="encoding"?sl(n,s,r,t):{signal:a}:void 0};return Nn({model:e,channelDef:o,vgChannel:"tooltip",mainRefFn:c,invalidValueRef:void 0})}}function rl(e,t,n,{reactiveGeom:i}={}){const r={...n,...n.tooltipFormat},s={},o=i?"datum.datum":"datum",a=[];function c(l,f){const d=jt(f),p=fe(l)?l:{...l,type:e[d].type},h=p.title||Ts(p,r),g=V(h).join(", ").replaceAll(/"/g,'\\"');let m;if(Y(f)){const y=f==="x"?"x2":"y2",v=Ie(e[y]);if(re(p.bin)&&v){const k=w(p,{expr:o}),_=w(v,{expr:o}),{format:T,formatType:L}=Yi(p);m=Jn(k,_,T,L,r),s[y]=!0}}if((Y(f)||f===$e||f===Fe)&&t&&t.fieldChannel===f&&t.offset==="normalize"){const{format:y,formatType:v}=Yi(p);m=_s({fieldOrDatumDef:p,format:y,formatType:v,expr:o,config:r,normalizeStack:!0}).signal}m??(m=lr(p,r,o).signal),a.push({channel:f,key:g,value:m})}As(e,(l,f)=>{S(l)?c(l,f):Gi(l)&&c(l.condition,f)});const u={};for(const{channel:l,key:f,value:d}of a)!s[l]&&!u[f]&&(u[f]=d);return u}function sl(e,t,n,{reactiveGeom:i}={}){const r=rl(e,t,n,{reactiveGeom:i}),s=bt(r).map(([o,a])=>`"${o}": ${a}`);return s.length>0?{signal:`{${s.join(", ")}}`}:void 0}function Sy(e){const{markDef:t,config:n}=e,i=R("aria",t,n);return i===!1?{}:{...i?{aria:i}:{},...vy(e),...wy(e)}}function vy(e){const{mark:t,markDef:n,config:i}=e;if(i.aria===!1)return{};const r=R("ariaRoleDescription",n,i);return r!=null?{ariaRoleDescription:{value:r}}:t in Xd?{}:{ariaRoleDescription:{value:t}}}function wy(e){const{encoding:t,markDef:n,config:i,stack:r}=e,s=t.description;if(s)return Nn({model:e,channelDef:s,vgChannel:"description",mainRefFn:c=>lr(c,e.config),invalidValueRef:void 0});const o=R("description",n,i);if(o!=null)return{description:B(o)};if(i.aria===!1)return{};const a=rl(t,r,i);return M(a)?void 0:{description:{signal:bt(a).map(([c,u],l)=>`"${l>0?"; ":""}${c}: " + (${u})`).join(" + ")}}}function ee(e,t,n={}){const{markDef:i,encoding:r,config:s}=t,{vgChannel:o}=n;let{defaultRef:a,defaultValue:c}=n;a===void 0&&(c??(c=R(e,i,s,{vgChannel:o,ignoreVgConfig:!0})),c!==void 0&&(a=B(c)));const u=r[e],l={markDef:i,config:s,scaleName:t.scaleName(e),scale:t.getScaleComponent(e)},f=_c({...l,scaleChannel:e,channelDef:u}),d=p=>Es({...l,channel:e,channelDef:p,stack:null,defaultRef:a});return Nn({model:t,channelDef:u,vgChannel:o??e,invalidValueRef:f,mainRefFn:d})}function ol(e,t={filled:void 0}){const{markDef:n,encoding:i,config:r}=e,{type:s}=n,o=t.filled??R("filled",n,r),a=O(["bar","point","circle","square","geoshape"],s)?"transparent":void 0,c=R(o===!0?"color":void 0,n,r,{vgChannel:"fill"})??r.mark[o===!0&&"color"]??a,u=R(o===!1?"color":void 0,n,r,{vgChannel:"stroke"})??r.mark[o===!1&&"color"],l=o?"fill":"stroke",f={...c?{fill:B(c)}:{},...u?{stroke:B(u)}:{}};return n.color&&(o?n.fill:n.stroke)&&x(qa("property",{fill:"fill"in n,stroke:"stroke"in n})),{...f,...ee("color",e,{vgChannel:l,defaultValue:o?c:u}),...ee("fill",e,{defaultValue:i.fill?c:void 0}),...ee("stroke",e,{defaultValue:i.stroke?u:void 0})}}function $y(e){const{encoding:t,mark:n}=e,i=t.order;return!Ft(n)&&Re(i)?Nn({model:e,channelDef:i,vgChannel:"zindex",mainRefFn:r=>B(r.value),invalidValueRef:void 0}):{}}function Tn({channel:e,markDef:t,encoding:n={},model:i,bandPosition:r}){const s=`${e}Offset`,o=t[s],a=n[s];if((s==="xOffset"||s==="yOffset")&&a){const u=Es({channel:s,channelDef:a,markDef:t,config:i?.config,scaleName:i.scaleName(s),scale:i.getScaleComponent(s),stack:null,defaultRef:B(o),bandPosition:r});return{offsetType:"encoding",offset:u}}const c=t[s];return c?{offsetType:"visual",offset:c}:{}}function ae(e,t,{defaultPos:n,vgChannel:i}){const{encoding:r,markDef:s,config:o,stack:a}=t,c=r[e],u=r[He(e)],l=t.scaleName(e),f=t.getScaleComponent(e),{offset:d,offsetType:p}=Tn({channel:e,markDef:s,encoding:r,model:t,bandPosition:.5}),h=ro({model:t,defaultPos:n,channel:e,scaleName:l,scale:f}),g=!c&&Y(e)&&(r.latitude||r.longitude)?{field:t.getName(e)}:Ey({channel:e,channelDef:c,channel2Def:u,markDef:s,config:o,scaleName:l,scale:f,stack:a,offset:d,defaultRef:h,bandPosition:p==="encoding"?0:void 0});return g?{[i||e]:g}:void 0}function Ey(e){const{channel:t,channelDef:n,scaleName:i,stack:r,offset:s,markDef:o}=e;if(F(n)&&r&&t===r.fieldChannel){if(S(n)){let a=n.bandPosition;if(a===void 0&&o.type==="text"&&(t==="radius"||t==="theta")&&(a=.5),a!==void 0)return Bi({scaleName:i,fieldOrDatumDef:n,startSuffix:"start",bandPosition:a,offset:s})}return Vt(n,i,{suffix:"end"},{offset:s})}return $s(e)}function ro({model:e,defaultPos:t,channel:n,scaleName:i,scale:r}){const{markDef:s,config:o}=e;return()=>{const a=jt(n),c=Et(n),u=R(n,s,o,{vgChannel:c});if(u!==void 0)return Zn(n,u);switch(t){case"zeroOrMin":return al({scaleName:i,scale:r,mode:"zeroOrMin",mainChannel:a,config:o});case"zeroOrMax":return al({scaleName:i,scale:r,mode:{zeroOrMax:{widthSignal:e.width.signal,heightSignal:e.height.signal}},mainChannel:a,config:o});case"mid":{const l=e[me(n)];return{...l,mult:.5}}}return}}function al({mainChannel:e,config:t,...n}){const i=Ec(n),{mode:r}=n;if(i)return i;switch(e){case"radius":{if(r==="zeroOrMin")return{value:0};const{widthSignal:s,heightSignal:o}=r.zeroOrMax;return{signal:`min(${s},${o})/2`}}case"theta":return r==="zeroOrMin"?{value:0}:{signal:"2*PI"};case"x":return r==="zeroOrMin"?{value:0}:{field:{group:"width"}};case"y":return r==="zeroOrMin"?{field:{group:"height"}}:{value:0}}}const _y={left:"x",center:"xc",right:"x2"},ky={top:"y",middle:"yc",bottom:"y2"};function cl(e,t,n,i="middle"){if(e==="radius"||e==="theta")return Et(e);const r=e==="x"?"align":"baseline",s=R(r,t,n);let o;return $(s)?(x(kp(r)),o=void 0):o=s,e==="x"?_y[o||(i==="top"?"left":"center")]:ky[o||i]}function fr(e,t,{defaultPos:n,defaultPos2:i,range:r}){return r?ul(e,t,{defaultPos:n,defaultPos2:i}):ae(e,t,{defaultPos:n})}function ul(e,t,{defaultPos:n,defaultPos2:i}){const{markDef:r,config:s}=t,o=He(e),a=me(e),c=Cy(t,i,o),u=c[a]?cl(e,r,s):Et(e);return{...ae(e,t,{defaultPos:n,vgChannel:u}),...c}}function Cy(e,t,n){const{encoding:i,mark:r,markDef:s,stack:o,config:a}=e,c=jt(n),u=me(n),l=Et(n),f=i[c],d=e.scaleName(c),p=e.getScaleComponent(c),{offset:h}=n in i||n in s?Tn({channel:n,markDef:s,encoding:i,model:e}):Tn({channel:c,markDef:s,encoding:i,model:e});if(!f&&(n==="x2"||n==="y2")&&(i.latitude||i.longitude)){const m=me(n),y=e.markDef[m];return y!=null?{[m]:{value:y}}:{[l]:{field:e.getName(n)}}}const g=Fy({channel:n,channelDef:f,channel2Def:i[n],markDef:s,config:a,scaleName:d,scale:p,stack:o,offset:h,defaultRef:void 0});return g!==void 0?{[l]:g}:dr(n,s)||dr(n,{[n]:Ai(n,s,a.style),[u]:Ai(u,s,a.style)})||dr(n,a[r])||dr(n,a.mark)||{[l]:ro({model:e,defaultPos:t,channel:n,scaleName:d,scale:p})()}}function Fy({channel:e,channelDef:t,channel2Def:n,markDef:i,config:r,scaleName:s,scale:o,stack:a,offset:c,defaultRef:u}){return F(t)&&a&&e.charAt(0)===a.fieldChannel.charAt(0)?Vt(t,s,{suffix:"start"},{offset:c}):$s({channel:e,channelDef:n,scaleName:s,scale:o,stack:a,markDef:i,config:r,offset:c,defaultRef:u})}function dr(e,t){const n=me(e),i=Et(e);if(t[i]!==void 0)return{[i]:Zn(e,t[i])};if(t[e]!==void 0)return{[i]:Zn(e,t[e])};if(t[n]){const r=t[n];if(Gt(r))x(Sp(n));else return{[n]:Zn(e,r)}}return}function Pt(e,t){const{config:n,encoding:i,markDef:r}=e,s=r.type,o=He(t),a=me(t),c=i[t],u=i[o],l=e.getScaleComponent(t),f=l?l.get("type"):void 0,d=r.orient,p=i[a]??i.size??R("size",r,n,{vgChannel:a}),h=xa(t),g=s==="bar"&&(t==="x"?d==="vertical":d==="horizontal");return S(c)&&(j(c.bin)||re(c.bin)||c.timeUnit&&!u)&&!(p&&!Gt(p))&&!i[h]&&!J(f)?Oy({fieldDef:c,fieldDef2:u,channel:t,model:e}):(F(c)&&J(f)||g)&&!u?Ty(c,t,e):ul(t,e,{defaultPos:"zeroOrMax",defaultPos2:"zeroOrMin"})}function Ny(e,t,n,i,r,s,o){if(Gt(r))if(n){const c=n.get("type");if(c==="band"){let u=`bandwidth('${t}')`;r.band!==1&&(u=`${r.band} * ${u}`);const l=Ge("minBandSize",{type:o},i);return{signal:l?`max(${Ae(l)}, ${u})`:u}}else r.band!==1&&(x(Tp(c)),r=void 0)}else return{mult:r.band,field:{group:e}};else{if($(r))return r;if(r)return{value:r}}if(n){const c=n.get("range");if(Ct(c)&&U(c.step))return{value:c.step-2}}if(!s){const{bandPaddingInner:c,barBandPaddingInner:u,rectBandPaddingInner:l}=i.scale,f=X(c,o==="bar"?u:l);if($(f))return{signal:`(1 - (${f.signal})) * ${e}`};if(U(f))return{signal:`${1-f} * ${e}`}}const a=rr(i.view,e);return{value:a-2}}function Ty(e,t,n){const{markDef:i,encoding:r,config:s,stack:o}=n,a=i.orient,c=n.scaleName(t),u=n.getScaleComponent(t),l=me(t),f=He(t),d=xa(t),p=n.scaleName(d),h=n.getScaleComponent(Vr(t)),g=a==="horizontal"&&t==="y"||a==="vertical"&&t==="x";let m;(r.size||i.size)&&(g?m=ee("size",n,{vgChannel:l,defaultRef:B(i.size)}):x(zp(i.type)));const y=!!m,v=Rc({channel:t,fieldDef:e,markDef:i,config:s,scaleType:(u||h)?.get("type"),useVlSizeChannel:g});m=m||{[l]:Ny(l,p||c,h||u,s,v,!!e,i.type)};const k=(u||h)?.get("type")==="band"&&Gt(v)&&!y?"top":"middle",_=cl(t,i,s,k),T=_==="xc"||_==="yc",{offset:L,offsetType:ue}=Tn({channel:t,markDef:i,encoding:r,model:n,bandPosition:T?.5:0}),ne=$s({channel:t,channelDef:e,markDef:i,config:s,scaleName:c,scale:u,stack:o,offset:L,defaultRef:ro({model:n,defaultPos:"mid",channel:t,scaleName:c,scale:u}),bandPosition:T?ue==="encoding"?0:.5:$(v)?{signal:`(1-${v})/2`}:Gt(v)?(1-v.band)/2:0});if(l)return{[_]:ne,...m};{const mt=Et(f),de=m[l],yt=L?{...de,offset:L}:de;return{[_]:ne,[mt]:E(ne)?[ne[0],{...ne[1],offset:yt}]:{...ne,offset:yt}}}}function ll(e,t,n,i,r,s,o){if(pa(e))return 0;const a=e==="x"||e==="y2",c=a?-t/2:t/2;if($(n)||$(r)||$(i)||s){const u=Ae(n),l=Ae(r),f=Ae(i),d=Ae(s),p=a?"":"-",h=s?`(${o} < ${d} ? ${p}0.5 * (${d} - (${o})) : ${c})`:c,g=f?`${f} + `:"",m=u?`(${u} ? -1 : 1) * `:"",y=l?`(${l} + ${h})`:h;return{signal:g+m+y}}else return r=r||0,i+(n?-r-c:+r+c)}function Oy({fieldDef:e,fieldDef2:t,channel:n,model:i}){const{config:r,markDef:s,encoding:o}=i,a=i.getScaleComponent(n),c=i.scaleName(n),u=a?a.get("type"):void 0,l=a.get("reverse"),f=Rc({channel:n,fieldDef:e,markDef:s,config:r,scaleType:u}),d=i.component.axes[n]?.[0],p=d?.get("translate")??.5,h=Y(n)?R("binSpacing",s,r)??0:0,g=He(n),m=Et(n),y=Et(g),v=Ge("minBandSize",s,r),{offset:k}=Tn({channel:n,markDef:s,encoding:o,model:i,bandPosition:0}),{offset:_}=Tn({channel:g,markDef:s,encoding:o,model:i,bandPosition:0}),T=nh({fieldDef:e,scaleName:c}),L=ll(n,h,l,p,k,v,T),ue=ll(g,h,l,p,_??k,v,T),ne=$(f)?{signal:`(1-${f.signal})/2`}:Gt(f)?(1-f.band)/2:.5,mt=Nt({fieldDef:e,fieldDef2:t,markDef:s,config:r});if(j(e.bin)||e.timeUnit){const de=e.timeUnit&&mt!==.5;return{[y]:fl({fieldDef:e,scaleName:c,bandPosition:ne,offset:ue,useRectOffsetField:de}),[m]:fl({fieldDef:e,scaleName:c,bandPosition:$(ne)?{signal:`1-${ne.signal}`}:1-ne,offset:L,useRectOffsetField:de})}}else if(re(e.bin)){const de=Vt(e,c,{},{offset:ue});if(S(t))return{[y]:de,[m]:Vt(t,c,{},{offset:L})};if(Ut(e.bin)&&e.bin.step)return{[y]:de,[m]:{signal:`scale("${c}", ${w(e,{expr:"datum"})} + ${e.bin.step})`,offset:L}}}x(Ka(g));return}function fl({fieldDef:e,scaleName:t,bandPosition:n,offset:i,useRectOffsetField:r}){return Bi({scaleName:t,fieldOrDatumDef:e,bandPosition:n,offset:i,...r?{startSuffix:cr,endSuffix:ur}:{}})}const Ay=new Set(["aria","width","height"]);function ke(e,t){const{fill:n=void 0,stroke:i=void 0}=t.color==="include"?ol(e):{};return{...Py(e.markDef,t),...dl("fill",n),...dl("stroke",i),...ee("opacity",e),...ee("fillOpacity",e),...ee("strokeOpacity",e),...ee("strokeWidth",e),...ee("strokeDash",e),...$y(e),...il(e),...io(e,"href"),...Sy(e)}}function dl(e,t){return t?{[e]:t}:{}}function Py(e,t){return Vd.reduce((n,i)=>(!Ay.has(i)&&e[i]!==void 0&&t[i]!=="ignore"&&(n[i]=B(e[i])),n),{})}function so(e){const{config:t,markDef:n}=e,i=new Set;if(e.forEachFieldDef((r,s)=>{let o;if(!qe(s)||!(o=e.getScaleType(s)))return;const a=Ti(r.aggregate),c=ws({scaleChannel:s,markDef:n,config:t,scaleType:o,isCountAggregate:a});if(Jg(c)){const u=e.vgField(s,{expr:"datum",binSuffix:e.stack?.impute?"mid":void 0});u&&i.add(u)}}),i.size>0){const r=[...i].map(s=>Ii(s,!0)).join(" && ");return{defined:{signal:r}}}return}function pl(e,t){return t!==void 0?{[e]:B(t)}:void 0}const oo="voronoi",gl={defined:e=>e.type==="point"&&e.nearest,parse:(e,t)=>{if(t.events)for(const n of t.events)n.markname=e.getName(oo)},marks:(e,t,n)=>{const{x:i,y:r}=t.project.hasChannel,s=e.mark;if(Ft(s))return x(Jd(s)),n;const o={name:e.getName(oo),type:"path",interactive:!0,from:{data:e.getName("marks")},encode:{update:{fill:{value:"transparent"},strokeWidth:{value:.35},stroke:{value:"transparent"},isVoronoi:{value:!0},...il(e,{reactiveGeom:!0})}},transform:[{type:"voronoi",x:{expr:i||!r?"datum.datum.x || 0":"0"},y:{expr:r||!i?"datum.datum.y || 0":"0"},size:[e.getSizeSignalRef("width"),e.getSizeSignalRef("height")]}]};let a=0,c=!1;return n.forEach((u,l)=>{const f=u.name??"";f===e.component.mark[0].name?a=l:f.indexOf(oo)>=0&&(c=!0)}),c||n.splice(a+1,0,o),n}},hl={defined:e=>e.type==="point"&&e.resolve==="global"&&e.bind&&e.bind!=="scales"&&!Ds(e.bind),parse:(e,t,n)=>_l(t,n),topLevelSignals:(e,t,n)=>{const i=t.name,r=t.project,s=t.bind,o=t.init&&t.init[0],a=gl.defined(t)?"(item().isVoronoi ? datum.datum : datum)":"datum";return r.items.forEach((c,u)=>{const l=W(`${i}_${c.field}`),f=n.filter(d=>d.name===l);f.length||n.unshift({name:l,...o?{init:Qt(o[u])}:{value:null},on:t.events?[{events:t.events,update:`datum && item().mark.marktype !== 'group' ? ${a}[${A(c.field)}] : null`}]:[],bind:s[c.field]??s[c.channel]??s})}),n},signals:(e,t,n)=>{const i=t.name,r=t.project,s=n.filter(u=>u.name===i+zt)[0],o=i+si,a=r.items.map(u=>W(`${i}_${u.field}`)),c=a.map(u=>`${u} !== null`).join(" && ");return a.length&&(s.update=`${c} ? {fields: ${o}, values: [${a.join(", ")}]} : null`),delete s.value,delete s.on,n}},pr="_toggle",ml={defined:e=>e.type==="point"&&!!e.toggle,signals:(e,t,n)=>n.concat({name:t.name+pr,value:!1,on:[{events:t.events,update:t.toggle}]}),modifyExpr:(e,t)=>{const n=t.name+zt,i=t.name+pr;return`${i} ? null : ${n}, `+(t.resolve==="global"?`${i} ? null : true, `:`${i} ? null : {unit: ${Jt(e)}}, `)+`${i} ? ${n} : null`}},zy={defined:e=>e.clear!==void 0&&e.clear!==!1,parse:(e,t)=>{t.clear&&(t.clear=N(t.clear)?cn(t.clear,"view"):t.clear)},topLevelSignals:(e,t,n)=>{if(hl.defined(t))for(const i of t.project.items){const r=n.findIndex(s=>s.name===W(`${t.name}_${i.field}`));r!==-1&&n[r].on.push({events:t.clear,update:"null"})}return n},signals:(e,t,n)=>{function i(r,s){r!==-1&&n[r].on&&n[r].on.push({events:t.clear,update:s})}if(t.type==="interval")for(const r of t.project.items){const s=n.findIndex(o=>o.name===r.signals.visual);if(i(s,"[0, 0]"),s===-1){const o=n.findIndex(a=>a.name===r.signals.data);i(o,"null")}}else{let r=n.findIndex(s=>s.name===t.name+zt);i(r,"null"),ml.defined(t)&&(r=n.findIndex(s=>s.name===t.name+pr),i(r,"false"))}return n}},yl={defined:e=>{const t=e.resolve==="global"&&e.bind&&Ds(e.bind),n=e.project.items.length===1&&e.project.items[0].field!==Le;return t&&!n&&x(ip),t&&n},parse:(e,t,n)=>{const i=C(n);if(i.select=N(i.select)?{type:i.select,toggle:t.toggle}:{...i.select,toggle:t.toggle},_l(t,i),zr(n.select)&&(n.select.on||n.select.clear)){const o='event.item && indexof(event.item.mark.role, "legend") < 0';for(const a of t.events)a.filter=V(a.filter??[]),a.filter.includes(o)||a.filter.push(o)}const r=js(t.bind)?t.bind.legend:"click",s=N(r)?cn(r,"view"):V(r);t.bind={legend:{merge:s}}},topLevelSignals:(e,t,n)=>{const i=t.name,r=js(t.bind)&&t.bind.legend,s=o=>a=>{const c=C(a);return c.markname=o,c};for(const o of t.project.items){if(!o.hasLegend)continue;const a=`${W(o.field)}_legend`,c=`${i}_${a}`,u=n.filter(l=>l.name===c);if(u.length===0){const l=r.merge.map(s(`${a}_symbols`)).concat(r.merge.map(s(`${a}_labels`))).concat(r.merge.map(s(`${a}_entries`)));n.unshift({name:c,...t.init?{}:{value:null},on:[{events:l,update:"isDefined(datum.value) ? datum.value : item().items[0].items[0].datum.value",force:!0},{events:r.merge,update:`!event.item || !datum ? null : ${c}`,force:!0}]})}}return n},signals:(e,t,n)=>{const i=t.name,r=t.project,s=n.find(d=>d.name===i+zt),o=i+si,a=r.items.filter(d=>d.hasLegend).map(d=>W(`${i}_${W(d.field)}_legend`)),c=a.map(d=>`${d} !== null`).join(" && "),u=`${c} ? {fields: ${o}, values: [${a.join(", ")}]} : null`;t.events&&a.length>0?s.on.push({events:a.map(d=>({signal:d})),update:u}):a.length>0&&(s.update=u,delete s.value,delete s.on);const l=n.find(d=>d.name===i+pr),f=js(t.bind)&&t.bind.legend;return l&&(t.events?l.on.push({...l.on[0],events:f}):l.on[0].events=f),n}};function Ry(e,t,n){const i=e.fieldDef(t)?.field;for(const r of ie(e.component.selection??{})){const s=r.project.hasField[i]??r.project.hasChannel[t];if(s&&yl.defined(r)){const o=n.get("selections")??[];o.push(r.name),n.set("selections",o,!1),s.hasLegend=!0}}}const bl="_translate_anchor",xl="_translate_delta",Iy={defined:e=>e.type==="interval"&&e.translate,signals:(e,t,n)=>{const i=t.name,r=gt.defined(t),s=i+bl,{x:o,y:a}=t.project.hasChannel;let c=cn(t.translate,"scope");return r||(c=c.map(u=>(u.between[0].markname=i+Fn,u))),n.push({name:s,value:{},on:[{events:c.map(u=>u.between[0]),update:"{x: x(unit), y: y(unit)"+(o!==void 0?`, extent_x: ${r?to(e,H):`slice(${o.signals.visual})`}`:"")+(a!==void 0?`, extent_y: ${r?to(e,Q):`slice(${a.signals.visual})`}`:"")+"}"}]},{name:i+xl,value:{},on:[{events:c,update:`{x: ${s}.x - x(unit), y: ${s}.y - y(unit)}`}]}),o!==void 0&&Sl(e,t,o,"width",n),a!==void 0&&Sl(e,t,a,"height",n),n}};function Sl(e,t,n,i,r){const s=t.name,o=s+bl,a=s+xl,c=n.channel,u=gt.defined(t),l=r.filter(T=>T.name===n.signals[u?"data":"visual"])[0],f=e.getSizeSignalRef(i).signal,d=e.getScaleComponent(c),p=d&&d.get("type"),h=d&&d.get("reverse"),g=u?c===H?h?"":"-":h?"-":"":"",m=`${o}.extent_${c}`,y=`${g}${a}.${c} / ${u?`${f}`:`span(${m})`}`,v=!u||!d?"panLinear":p==="log"?"panLog":p==="symlog"?"panSymlog":p==="pow"?"panPow":"panLinear",k=u?p==="pow"?`, ${d.get("exponent")??1}`:p==="symlog"?`, ${d.get("constant")??1}`:"":"",_=`${v}(${m}, ${y}${k})`;l.on.push({events:{signal:a},update:u?_:`clampRange(${_}, 0, ${f})`})}const vl="_zoom_anchor",wl="_zoom_delta",Ly={defined:e=>e.type==="interval"&&e.zoom,signals:(e,t,n)=>{const i=t.name,r=gt.defined(t),s=i+wl,{x:o,y:a}=t.project.hasChannel,c=A(e.scaleName(H)),u=A(e.scaleName(Q));let l=cn(t.zoom,"scope");return r||(l=l.map(f=>(f.markname=i+Fn,f))),n.push({name:i+vl,on:[{events:l,update:r?"{"+[c?`x: invert(${c}, x(unit))`:"",u?`y: invert(${u}, y(unit))`:""].filter(f=>f).join(", ")+"}":"{x: x(unit), y: y(unit)}"}]},{name:s,on:[{events:l,force:!0,update:"pow(1.001, event.deltaY * pow(16, event.deltaMode))"}]}),o!==void 0&&$l(e,t,o,"width",n),a!==void 0&&$l(e,t,a,"height",n),n}};function $l(e,t,n,i,r){const s=t.name,o=n.channel,a=gt.defined(t),c=r.filter(v=>v.name===n.signals[a?"data":"visual"])[0],u=e.getSizeSignalRef(i).signal,l=e.getScaleComponent(o),f=l&&l.get("type"),d=a?to(e,o):c.name,p=s+wl,h=`${s}${vl}.${o}`,g=!a||!l?"zoomLinear":f==="log"?"zoomLog":f==="symlog"?"zoomSymlog":f==="pow"?"zoomPow":"zoomLinear",m=a?f==="pow"?`, ${l.get("exponent")??1}`:f==="symlog"?`, ${l.get("constant")??1}`:"":"",y=`${g}(${d}, ${h}, ${p}${m})`;c.on.push({events:{signal:p},update:a?y:`clampRange(${y}, 0, ${u})`})}const Zt="_store",zt="_tuple",My="_modify",El="vlSelectionResolve",gr=[xy,yy,hy,ml,hl,gt,yl,zy,Iy,Ly,gl];function Dy(e){let t=e.parent;for(;t&&!ve(t);)t=t.parent;return t}function Jt(e,{escape:t}={escape:!0}){let n=t?A(e.name):e.name;const i=Dy(e);if(i){const{facet:r}=i;for(const s of _e)r[s]&&(n+=` + '__facet_${s}_' + (facet[${A(i.vgField(s))}])`)}return n}function ao(e){return ie(e.component.selection??{}).reduce((t,n)=>t||n.project.hasSelectionId,!1)}function _l(e,t){(Si(t.select)||!t.select.on)&&delete e.events,(Si(t.select)||!t.select.clear)&&delete e.clear,(Si(t.select)||!t.select.toggle)&&delete e.toggle}function co(e){const t=[];return e.type==="Identifier"?[e.name]:e.type==="Literal"?[e.value]:(e.type==="MemberExpression"&&(t.push(...co(e.object)),t.push(...co(e.property))),t)}function kl(e){return e.object.type==="MemberExpression"?kl(e.object):e.object.name==="datum"}function Cl(e){const t=Gf(e),n=new Set;return t.visit(i=>{i.type==="MemberExpression"&&kl(i)&&n.add(co(i).slice(1).join("."))}),n}class On extends I{clone(){return new On(null,this.model,C(this.filter))}constructor(t,n,i){super(t);this.model=n,this.filter=i,this.expr=hr(this.model,this.filter,this),this._dependentFields=Cl(this.expr)}dependentFields(){return this._dependentFields}producedFields(){return new Set}assemble(){return{type:"filter",expr:this.expr}}hash(){return`Filter ${this.expr}`}}function jy(e,t){const n={},i=e.config.selection;if(!t||!t.length)return n;for(const r of t){const s=W(r.name),o=r.select,a=N(o)?o:o.type,c=z(o)?C(o):{type:a},u=i[a];for(const d in u){if(d==="fields"||d==="encodings")continue;d==="mark"&&(c[d]={...u[d],...c[d]}),(c[d]===void 0||c[d]===!0)&&(c[d]=C(u[d]??c[d]))}const l=n[s]={...c,name:s,type:a,init:r.value,bind:r.bind,events:N(c.on)?cn(c.on,"scope"):V(C(c.on))},f=C(r);for(const d of gr)d.defined(l)&&d.parse&&d.parse(e,l,f)}return n}function Fl(e,t,n,i="datum"){const r=N(t)?t:t.param,s=W(r),o=A(s+Zt);let a;try{a=e.getSelectionComponent(s,r)}catch(d){return`!!${s}`}if(a.project.timeUnit){const d=n??e.component.data.raw,p=a.project.timeUnit.clone();d.parent?p.insertAsParentOf(d):d.parent=p}const c=a.project.hasSelectionId?"vlSelectionIdTest(":"vlSelectionTest(",u=a.resolve==="global"?")":`, ${A(a.resolve)})`,l=`${c}${o}, ${i}${u}`,f=`length(data(${o}))`;return t.empty===!1?`${f} && ${l}`:`!${f} || ${l}`}function Nl(e,t,n){const i=W(t),r=n.encoding;let s=n.field,o;try{o=e.getSelectionComponent(i,t)}catch(a){return i}if(!r&&!s)s=o.project.items[0].field,o.project.items.length>1&&x(`A "field" or "encoding" must be specified when using a selection as a scale domain. Using "field": ${A(s)}.`);else if(r&&!s){const a=o.project.items.filter(c=>c.channel===r);!a.length||a.length>1?(s=o.project.items[0].field,x((a.length?"Multiple ":"No ")+`matching ${A(r)} encoding found for selection ${A(n.param)}. Using "field": ${A(s)}.`)):s=a[0].field}return`${o.name}[${A(we(s))}]`}function Uy(e,t){for(const[n,i]of bt(e.component.selection??{})){const r=e.getName(`lookup_${n}`);e.component.data.outputNodes[r]=i.materialized=new ye(new On(t,e,{param:n}),r,G.Lookup,e.component.data.outputNodeRefCounts)}}function hr(e,t,n){return Wn(t,i=>N(i)?i:yg(i)?Fl(e,i,n):cc(i))}function By(e,t){return e?E(e)&&!kt(e)?e.map(n=>Ts(n,t)).join(", "):e:void 0}function uo(e,t,n,i){var r,s;e.encode??(e.encode={}),(r=e.encode)[t]??(r[t]={}),(s=e.encode[t]).update??(s.update={}),e.encode[t].update[n]=i}function ai(e,t,n,i={header:!1}){const{disable:r,orient:s,scale:o,labelExpr:a,title:c,zindex:u,...l}=e.combine();if(r)return;for(const f in l){const d=wh[f],p=l[f];if(d&&d!==t&&d!=="both")delete l[f];else if(ii(p)){const{condition:h,...g}=p,m=V(h),y=Gc[f];if(y){const{vgProp:v,part:k}=y,_=[...m.map(T=>{const{test:L,...ue}=T;return{test:hr(null,L),...ue}}),g];uo(l,k,v,_),delete l[f]}else if(y===null){const v={signal:m.map(k=>{const{test:_,...T}=k;return`${hr(null,_)} ? ${Na(T)} : `}).join("")+Na(g)};l[f]=v}}else if($(p)){const h=Gc[f];if(h){const{vgProp:g,part:m}=h;uo(l,m,g,p),delete l[f]}}O(["labelAlign","labelBaseline"],f)&&l[f]===null&&delete l[f]}if(t==="grid"){if(!l.grid)return;if(l.encode){const{grid:f}=l.encode;l.encode={...f?{grid:f}:{}},M(l.encode)&&delete l.encode}return{scale:o,orient:s,...l,domain:!1,labels:!1,aria:!1,maxExtent:0,minExtent:0,ticks:!1,zindex:X(u,0)}}else{if(!i.header&&e.mainExtracted)return;if(a!==void 0){let d=a;l.encode?.labels?.update&&$(l.encode.labels.update.text)&&(d=Lt(a,"datum.label",l.encode.labels.update.text.signal)),uo(l,"labels","text",{signal:d})}if(l.labelAlign===null&&delete l.labelAlign,l.encode){for(const d of Vc)e.hasAxisPart(d)||delete l.encode[d];M(l.encode)&&delete l.encode}const f=By(c,n);return{scale:o,orient:s,grid:!1,...f?{title:f}:{},...l,...n.aria===!1?{aria:!1}:{},zindex:X(u,0)}}}function Tl(e){const{axes:t}=e.component,n=[];for(const i of at)if(t[i]){for(const r of t[i])if(!r.get("disable")&&!r.get("gridScale")){const s=i==="x"?"height":"width",o=e.getSizeSignalRef(s).signal;s!==o&&n.push({name:s,update:o})}}return n}function Wy(e,t){const{x:n=[],y:i=[]}=e;return[...n.map(r=>ai(r,"grid",t)),...i.map(r=>ai(r,"grid",t)),...n.map(r=>ai(r,"main",t)),...i.map(r=>ai(r,"main",t))].filter(r=>r)}function Ol(e,t,n,i){return Object.assign.apply(null,[{},...e.map(r=>{if(r==="axisOrient"){const s=n==="x"?"bottom":"left",o=t[n==="x"?"axisBottom":"axisLeft"]||{},a=t[n==="x"?"axisTop":"axisRight"]||{},c=new Set([...b(o),...b(a)]),u={};for(const l of c.values())u[l]={signal:`${i.signal} === "${s}" ? ${Ae(o[l])} : ${Ae(a[l])}`};return u}return t[r]})])}function Hy(e,t,n,i){const r=t==="band"?["axisDiscrete","axisBand"]:t==="point"?["axisDiscrete","axisPoint"]:pc(t)?["axisQuantitative"]:t==="time"||t==="utc"?["axisTemporal"]:[],s=e==="x"?"axisX":"axisY",o=$(n)?"axisOrient":`axis${Hn(n)}`,a=[...r,...r.map(u=>s+u.substr(4))],c=["axis",o,s];return{vlOnlyAxisConfig:Ol(a,i,e,n),vgAxisConfig:Ol(c,i,e,n),axisConfigStyle:qy([...c,...a],i)}}function qy(e,t){const n=[{}];for(const i of e){let r=t[i]?.style;if(r){r=V(r);for(const s of r)n.push(t.style[s])}}return Object.assign.apply(null,n)}function lo(e,t,n,i={}){const r=Oa(e,n,t);if(r!==void 0)return{configFrom:"style",configValue:r};for(const s of["vlOnlyAxisConfig","vgAxisConfig","axisConfigStyle"])if(i[s]?.[e]!==void 0)return{configFrom:s,configValue:i[s][e]};return{}}const Al={scale:({model:e,channel:t})=>e.scaleName(t),format:({format:e})=>e,formatType:({formatType:e})=>e,grid:({fieldOrDatumDef:e,axis:t,scaleType:n})=>t.grid??Gy(n,e),gridScale:({model:e,channel:t})=>Vy(e,t),labelAlign:({axis:e,labelAngle:t,orient:n,channel:i})=>e.labelAlign||zl(t,n,i),labelAngle:({labelAngle:e})=>e,labelBaseline:({axis:e,labelAngle:t,orient:n,channel:i})=>e.labelBaseline||Pl(t,n,i),labelFlush:({axis:e,fieldOrDatumDef:t,channel:n})=>e.labelFlush??Yy(t.type,n),labelOverlap:({axis:e,fieldOrDatumDef:t,scaleType:n})=>e.labelOverlap??Ky(t.type,n,S(t)&&!!t.timeUnit,S(t)?t.sort:void 0),orient:({orient:e})=>e,tickCount:({channel:e,model:t,axis:n,fieldOrDatumDef:i,scaleType:r})=>{const s=e==="x"?"width":e==="y"?"height":void 0,o=s?t.getSizeSignalRef(s):void 0;return n.tickCount??Zy({fieldOrDatumDef:i,scaleType:r,size:o,values:n.values})},tickMinStep:Jy,title:({axis:e,model:t,channel:n})=>{if(e.title!==void 0)return e.title;const i=Rl(t,n);if(i!==void 0)return i;const r=t.typedFieldDef(n),s=n==="x"?"x2":"y2",o=t.fieldDef(s);return Pa(r?[zc(r)]:[],S(o)?[zc(o)]:[])},values:({axis:e,fieldOrDatumDef:t})=>eb(e,t),zindex:({axis:e,fieldOrDatumDef:t,mark:n})=>e.zindex??tb(n,t)};function Gy(e,t){return!J(e)&&S(t)&&!j(t?.bin)&&!re(t?.bin)}function Vy(e,t){const n=t==="x"?"y":"x";return e.getScaleComponent(n)?e.scaleName(n):void 0}function Xy(e,t,n,i,r){const s=t?.labelAngle;if(s!==void 0)return $(s)?s:qn(s);{const{configValue:o}=lo("labelAngle",i,t?.style,r);return o!==void 0?qn(o):n===H&&O([ms,hs],e.type)&&!(S(e)&&e.timeUnit)?270:void 0}}function fo(e){return`(((${e.signal} % 360) + 360) % 360)`}function Pl(e,t,n,i){if(e!==void 0)if(n==="x"){if($(e)){const r=fo(e),s=$(t)?`(${t.signal} === "top")`:t==="top";return{signal:`(45 < ${r} && ${r} < 135) || (225 < ${r} && ${r} < 315) ? "middle" :(${r} <= 45 || 315 <= ${r}) === ${s} ? "bottom" : "top"`}}if(45{if(!Yt(i))return;if(Pc(i.sort)){const{field:s,timeUnit:o}=i,a=i.sort,c=a.map((u,l)=>`${cc({field:s,timeUnit:o,equal:u})} ? ${l} : `).join("")+a.length;t=new An(t,{calculate:c,as:Pn(i,r,{forAs:!0})})}}),t}producedFields(){return new Set([this.transform.as])}dependentFields(){return this._dependentFields}assemble(){return{type:"formula",expr:this.transform.calculate,as:this.transform.as}}hash(){return`Calculate ${P(this.transform)}`}}function Pn(e,t,n){return w(e,{prefix:t,suffix:"sort_index",...n})}function mr(e,t){return O(["top","bottom"],t)?"column":O(["left","right"],t)||e==="row"?"row":"column"}function zn(e,t,n,i){const r=i==="row"?n.headerRow:i==="column"?n.headerColumn:n.headerFacet;return X((t||{})[e],r[e],n.header[e])}function yr(e,t,n,i){const r={};for(const s of e){const o=zn(s,t||{},n,i);o!==void 0&&(r[s]=o)}return r}const po=["row","column"],go=["header","footer"];function nb(e,t){const n=e.component.layoutHeaders[t].title,i=e.config?e.config:void 0,r=e.component.layoutHeaders[t].facetFieldDef?e.component.layoutHeaders[t].facetFieldDef:void 0,{titleAnchor:s,titleAngle:o,titleOrient:a}=yr(["titleAnchor","titleAngle","titleOrient"],r.header,i,t),c=mr(t,a),u=qn(o);return{name:`${t}-title`,type:"group",role:`${c}-title`,title:{text:n,...t==="row"?{orient:"left"}:{},style:"guide-title",...Ll(u,c),...Il(c,u,s),...Ml(i,r,t,Hh,pu)}}}function Il(e,t,n="middle"){switch(n){case"start":return{align:"left"};case"end":return{align:"right"}}const i=zl(t,e==="row"?"left":"top",e==="row"?"y":"x");return i?{align:i}:{}}function Ll(e,t){const n=Pl(e,t==="row"?"left":"top",t==="row"?"y":"x",!0);return n?{baseline:n}:{}}function ib(e,t){const n=e.component.layoutHeaders[t],i=[];for(const r of go)if(n[r])for(const s of n[r]){const o=sb(e,t,r,n,s);o!=null&&i.push(o)}return i}function rb(e,t){const{sort:n}=e;return lt(n)?{field:w(n,{expr:"datum"}),order:n.order??"ascending"}:E(n)?{field:Pn(e,t,{expr:"datum"}),order:"ascending"}:{field:w(e,{expr:"datum"}),order:n??"ascending"}}function ho(e,t,n){const{format:i,formatType:r,labelAngle:s,labelAnchor:o,labelOrient:a,labelExpr:c}=yr(["format","formatType","labelAngle","labelAnchor","labelOrient","labelExpr"],e.header,n,t),u=_s({fieldOrDatumDef:e,format:i,formatType:r,expr:"parent",config:n}).signal,l=mr(t,a);return{text:{signal:c?Lt(Lt(c,"datum.label",u),"datum.value",w(e,{expr:"parent"})):u},...t==="row"?{orient:"left"}:{},style:"guide-label",frame:"group",...Ll(s,l),...Il(l,s,o),...Ml(n,e,t,qh,gu)}}function sb(e,t,n,i,r){if(r){let s=null;const{facetFieldDef:o}=i,a=e.config?e.config:void 0;if(o&&r.labels){const{labelOrient:f}=yr(["labelOrient"],o.header,a,t);(t==="row"&&!O(["top","bottom"],f)||t==="column"&&!O(["left","right"],f))&&(s=ho(o,t,a))}const c=ve(e)&&!ei(e.facet),u=r.axes,l=u?.length>0;if(s||l){const f=t==="row"?"height":"width";return{name:e.getName(`${t}_${n}`),type:"group",role:`${t}-${n}`,...i.facetFieldDef?{from:{data:e.getName(`${t}_domain`)},sort:rb(o,t)}:{},...l&&c?{from:{data:e.getName(`facet_domain_${t}`)}}:{},...s?{title:s}:{},...r.sizeSignal?{encode:{update:{[f]:r.sizeSignal}}}:{},...l?{axes:u}:{}}}}return null}const ob={column:{start:0,end:1},row:{start:1,end:0}};function ab(e,t){return ob[t][e]}function cb(e,t){const n={};for(const i of _e){const r=e[i];if(r?.facetFieldDef){const{titleAnchor:s,titleOrient:o}=yr(["titleAnchor","titleOrient"],r.facetFieldDef.header,t,i),a=mr(i,o),c=ab(s,a);c!==void 0&&(n[a]=c)}}return M(n)?void 0:n}function Ml(e,t,n,i,r){const s={};for(const o of i){if(!r[o])continue;const a=zn(o,t?.header,e,n);a!==void 0&&(s[r[o]]=a)}return s}function mo(e){return[...br(e,"width"),...br(e,"height"),...br(e,"childWidth"),...br(e,"childHeight")]}function br(e,t){const n=t==="width"?"x":"y",i=e.component.layoutSize.get(t);if(!i||i==="merged")return[];const r=e.getSizeSignalRef(t).signal;if(i==="step"){const s=e.getScaleComponent(n);if(s){const o=s.get("type"),a=s.get("range");if(J(o)&&Ct(a)){const c=e.scaleName(n);if(ve(e.parent)){const u=e.parent.component.resolve;if(u.scale[n]==="independent")return[Dl(c,a)]}return[Dl(c,a),{name:r,update:jl(c,s,`domain('${c}').length`)}]}}throw new Error("layout size is step although width/height is not step.")}else if(i=="container"){const s=r.endsWith("width"),o=s?"containerSize()[0]":"containerSize()[1]",a=Hs(e.config.view,s?"width":"height"),c=`isFinite(${o}) ? ${o} : ${a}`;return[{name:r,init:c,on:[{update:c,events:"window:resize"}]}]}else return[{name:r,value:i}]}function Dl(e,t){const n=`${e}_step`;return $(t.step)?{name:n,update:t.step.signal}:{name:n,value:t.step}}function jl(e,t,n){const i=t.get("type"),r=t.get("padding"),s=X(t.get("paddingOuter"),r);let o=t.get("paddingInner");return o=i==="band"?o!==void 0?o:r:1,`bandspace(${n}, ${Ae(o)}, ${Ae(s)}) * ${e}_step`}function Ul(e){return e==="childWidth"?"width":e==="childHeight"?"height":e}function Bl(e,t){return b(e).reduce((n,i)=>({...n,...Nn({model:t,channelDef:e[i],vgChannel:i,mainRefFn:r=>B(r.value),invalidValueRef:void 0})}),{})}function Wl(e,t){if(ve(t))return e==="theta"?"independent":"shared";if(Mn(t))return"shared";if(Ao(t))return Y(e)||e==="theta"||e==="radius"?"independent":"shared";throw new Error("invalid model type for resolve")}function yo(e,t){const n=e.scale[t],i=Y(t)?"axis":"legend";return n==="independent"?(e[i][t]==="shared"&&x(Dp(t)),"independent"):e[i][t]||"shared"}const ub={...Xh,disable:1,labelExpr:1,selections:1,opacity:1,shape:1,stroke:1,fill:1,size:1,strokeWidth:1,strokeDash:1,encode:1},Hl=b(ub);class lb extends pt{}const ql={symbols:fb,gradient:db,labels:pb,entries:gb};function fb(e,{fieldOrDatumDef:t,model:n,channel:i,legendCmpt:r,legendType:s}){if(s!=="symbol")return;const{markDef:o,encoding:a,config:c,mark:u}=n,l=o.filled&&u!=="trail";let f={...Kd({},n,Wg),...ol(n,{filled:l})};const d=r.get("symbolOpacity")??c.legend.symbolOpacity,p=r.get("symbolFillColor")??c.legend.symbolFillColor,h=r.get("symbolStrokeColor")??c.legend.symbolStrokeColor,g=d===void 0?Gl(a.opacity)??o.opacity:void 0;if(f.fill){if(i==="fill"||l&&i===ge)delete f.fill;else if(f.fill.field)p?delete f.fill:(f.fill=B(c.legend.symbolBaseFillColor??"black"),f.fillOpacity=B(g??1));else if(E(f.fill)){const m=bo(a.fill??a.color)??o.fill??(l&&o.color);m&&(f.fill=B(m))}}if(f.stroke){if(i==="stroke"||!l&&i===ge)delete f.stroke;else if(f.stroke.field||h)delete f.stroke;else if(E(f.stroke)){const m=X(bo(a.stroke||a.color),o.stroke,l?o.color:void 0);m&&(f.stroke={value:m})}}if(i!==ot){const m=S(t)&&Xl(n,r,t);m?f.opacity=[{test:m,...B(g??1)},B(c.legend.unselectedOpacity)]:g&&(f.opacity=B(g))}return f={...f,...e},M(f)?void 0:f}function db(e,{model:t,legendType:n,legendCmpt:i}){if(n!=="gradient")return;const{config:r,markDef:s,encoding:o}=t;let a={};const c=i.get("gradientOpacity")??r.legend.gradientOpacity,u=c===void 0?Gl(o.opacity)||s.opacity:void 0;return u&&(a.opacity=B(u)),a={...a,...e},M(a)?void 0:a}function pb(e,{fieldOrDatumDef:t,model:n,channel:i,legendCmpt:r}){const s=n.legend(i)||{},o=n.config,a=S(t)?Xl(n,r,t):void 0,c=a?[{test:a,value:1},{value:o.legend.unselectedOpacity}]:void 0,{format:u,formatType:l}=s;let f;Xt(l)?f=ze({fieldOrDatumDef:t,field:"datum.value",format:u,formatType:l,config:o}):u===void 0&&l===void 0&&o.customFormatTypes&&(t.type==="quantitative"&&o.numberFormatType?f=ze({fieldOrDatumDef:t,field:"datum.value",format:o.numberFormat,formatType:o.numberFormatType,config:o}):t.type==="temporal"&&o.timeFormatType&&S(t)&&t.timeUnit===void 0&&(f=ze({fieldOrDatumDef:t,field:"datum.value",format:o.timeFormat,formatType:o.timeFormatType,config:o})));const d={...c?{opacity:c}:{},...f?{text:f}:{},...e};return M(d)?void 0:d}function gb(e,{legendCmpt:t}){const n=t.get("selections");return n?.length?{...e,fill:{value:"transparent"}}:e}function Gl(e){return Vl(e,(t,n)=>Math.max(t,n.value))}function bo(e){return Vl(e,(t,n)=>X(t,n.value))}function Vl(e,t){return lh(e)?V(e.condition).reduce(t,e.value):Re(e)?e.value:void 0}function Xl(e,t,n){const i=t.get("selections");if(!i?.length)return;const r=A(n.field);return i.map(s=>{const o=A(W(s)+Zt);return`(!length(data(${o})) || (${s}[${r}] && indexof(${s}[${r}], datum.value) >= 0))`}).join(" || ")}const Yl={direction:({direction:e})=>e,format:({fieldOrDatumDef:e,legend:t,config:n})=>{const{format:i,formatType:r}=t;return Fc(e,e.type,i,r,n,!1)},formatType:({legend:e,fieldOrDatumDef:t,scaleType:n})=>{const{formatType:i}=e;return Nc(i,t,n)},gradientLength:e=>{const{legend:t,legendConfig:n}=e;return t.gradientLength??n.gradientLength??vb(e)},labelOverlap:({legend:e,legendConfig:t,scaleType:n})=>e.labelOverlap??t.labelOverlap??wb(n),symbolType:({legend:e,markDef:t,channel:n,encoding:i})=>e.symbolType??mb(t.type,n,i.shape,t.shape),title:({fieldOrDatumDef:e,config:t})=>$n(e,t,{allowDisabling:!0}),type:({legendType:e,scaleType:t,channel:n})=>{if(mn(n)&&Xe(t)){if(e==="gradient")return}else if(e==="symbol")return;return e},values:({fieldOrDatumDef:e,legend:t})=>hb(t,e)};function hb(e,t){const n=e.values;return E(n)?qc(t,n):$(n)?n:void 0}function mb(e,t,n,i){if(t!=="shape"){const r=bo(n)??i;if(r)return r}switch(e){case"bar":case"rect":case"image":case"square":return"square";case"line":case"trail":case"rule":return"stroke";case"arc":case"point":case"circle":case"tick":case"geoshape":case"area":case"text":return"circle"}}function yb(e){const{legend:t}=e;return X(t.type,bb(e))}function bb({channel:e,timeUnit:t,scaleType:n}){if(mn(e)){if(O(["quarter","month","day"],t))return"symbol";if(Xe(n))return"gradient"}return"symbol"}function xb({legendConfig:e,legendType:t,orient:n,legend:i}){return i.direction??e[t?"gradientDirection":"symbolDirection"]??Sb(n,t)}function Sb(e,t){switch(e){case"top":case"bottom":return"horizontal";case"left":case"right":case"none":case void 0:return;default:return t==="gradient"?"horizontal":void 0}}function vb({legendConfig:e,model:t,direction:n,orient:i,scaleType:r}){const{gradientHorizontalMaxLength:s,gradientHorizontalMinLength:o,gradientVerticalMaxLength:a,gradientVerticalMinLength:c}=e;return Xe(r)?n==="horizontal"?i==="top"||i==="bottom"?Kl(t,"width",o,s):o:Kl(t,"height",c,a):void 0}function Kl(e,t,n,i){const r=e.getSizeSignalRef(t).signal;return{signal:`clamp(${r}, ${n}, ${i})`}}function wb(e){return O(["quantile","threshold","log","symlog"],e)?"greedy":void 0}function Ql(e){const t=q(e)?$b(e):Cb(e);return e.component.legends=t,t}function $b(e){const{encoding:t}=e,n={};for(const i of[ge,...mu]){const r=K(t[i]);if(!r||!e.getScaleComponent(i))continue;if(i===he&&S(r)&&r.type===xn)continue;n[i]=kb(e,i)}return n}function Eb(e,t){const n=e.scaleName(t);if(e.mark==="trail"){if(t==="color")return{stroke:n};if(t==="size")return{strokeWidth:n}}return t==="color"?e.markDef.filled?{fill:n}:{stroke:n}:{[t]:n}}function _b(e,t,n,i){switch(t){case"disable":return n!==void 0;case"values":return!!n?.values;case"title":if(t==="title"&&e===i?.title)return!0}return e===(n||{})[t]}function kb(e,t){let n=e.legend(t);const{markDef:i,encoding:r,config:s}=e,o=s.legend,a=new lb({},Eb(e,t));Ry(e,t,a);const c=n!==void 0?!n:o.disable;if(a.set("disable",c,n!==void 0),c)return a;n=n||{};const u=e.getScaleComponent(t).get("type"),l=K(r[t]),f=S(l)?Z(l.timeUnit)?.unit:void 0,d=n.orient||s.legend.orient||"right",p=yb({legend:n,channel:t,timeUnit:f,scaleType:u}),h=xb({legend:n,legendType:p,orient:d,legendConfig:o}),g={legend:n,channel:t,model:e,markDef:i,encoding:r,fieldOrDatumDef:l,legendConfig:o,config:s,scaleType:u,orient:d,legendType:p,direction:h};for(const _ of Hl){if(p==="gradient"&&_.startsWith("symbol")||p==="symbol"&&_.startsWith("gradient"))continue;const T=_ in Yl?Yl[_](g):n[_];if(T!==void 0){const L=_b(T,_,n,e.fieldDef(t));(L||s.legend[_]===void 0)&&a.set(_,T,L)}}const m=n?.encoding??{},y=a.get("selections"),v={},k={fieldOrDatumDef:l,model:e,channel:t,legendCmpt:a,legendType:p};for(const _ of["labels","legend","title","symbols","gradient","entries"]){const T=Bl(m[_]??{},e),L=_ in ql?ql[_](T,k):T;L!==void 0&&!M(L)&&(v[_]={...y?.length&&S(l)?{name:`${W(l.field)}_legend_${_}`}:{},...y?.length?{interactive:!!y}:{},update:L})}return M(v)||a.set("encode",v,!!n?.encoding),a}function Cb(e){const{legends:t,resolve:n}=e.component;for(const i of e.children){Ql(i);for(const r of b(i.component.legends))n.legend[r]=yo(e.component.resolve,r),n.legend[r]==="shared"&&(t[r]=Zl(t[r],i.component.legends[r]),t[r]||(n.legend[r]="independent",delete t[r]))}for(const i of b(t))for(const r of e.children){if(!r.component.legends[i])continue;n.legend[i]==="shared"&&delete r.component.legends[i]}return t}function Zl(e,t){if(!e)return t.clone();const n=e.getWithExplicit("orient"),i=t.getWithExplicit("orient");if(n.explicit&&i.explicit&&n.value!==i.value)return;let r=!1;for(const s of Hl){const o=Ot(e.getWithExplicit(s),t.getWithExplicit(s),s,"legend",(a,c)=>{switch(s){case"symbolType":return Fb(a,c);case"title":return Ra(a,c);case"type":return r=!0,Se("symbol")}return ar(a,c,s,"legend")});e.setWithExplicit(s,o)}return r&&(e.implicit?.encode?.gradient&&wi(e.implicit,["encode","gradient"]),e.explicit?.encode?.gradient&&wi(e.explicit,["encode","gradient"])),e}function Fb(e,t){return t.value==="circle"?t:e}function Nb(e,t,n,i){var r,s;e.encode??(e.encode={}),(r=e.encode)[t]??(r[t]={}),(s=e.encode[t]).update??(s.update={}),e.encode[t].update[n]=i}function Jl(e){const t=e.component.legends,n={};for(const r of b(t)){const s=e.getScaleComponent(r),o=D(s.get("domains"));if(n[o])for(const a of n[o]){const c=Zl(a,t[r]);c||n[o].push(t[r])}else n[o]=[t[r].clone()]}const i=ie(n).flat().map(r=>Tb(r,e.config)).filter(r=>r!==void 0);return i}function Tb(e,t){const{disable:n,labelExpr:i,selections:r,...s}=e.combine();if(n)return;if(t.aria===!1&&s.aria==null&&(s.aria=!1),s.encode?.symbols){const o=s.encode.symbols.update;o.fill&&o.fill.value!=="transparent"&&!o.stroke&&!s.stroke&&(o.stroke={value:"transparent"});for(const a of mu)s[a]&&delete o[a]}if(s.title||delete s.title,i!==void 0){let o=i;s.encode?.labels?.update&&$(s.encode.labels.update.text)&&(o=Lt(i,"datum.label",s.encode.labels.update.text.signal)),Nb(s,"labels","text",{signal:o})}return s}function Ob(e){return Mn(e)||Ao(e)?Ab(e):ef(e)}function Ab(e){return e.children.reduce((t,n)=>t.concat(n.assembleProjections()),ef(e))}function ef(e){const t=e.component.projection;if(!t||t.merged)return[];const n=t.combine(),{name:i}=n;if(t.data){const r={signal:`[${t.size.map(o=>o.signal).join(", ")}]`},s=t.data.reduce((o,a)=>{const c=$(a)?a.signal:`data('${e.lookupDataSource(a)}')`;return O(o,c)||o.push(c),o},[]);if(s.length<=0)throw new Error("Projection's fit didn't find any data sources");return[{name:i,size:r,fit:{signal:s.length>1?`[${s.join(", ")}]`:s[0]},...n}]}else return[{name:i,translate:{signal:"[width / 2, height / 2]"},...n}]}const Pb=["type","clipAngle","clipExtent","center","rotate","precision","reflectX","reflectY","coefficient","distance","fraction","lobes","parallel","radius","ratio","spacing","tilt"];class tf extends pt{constructor(t,n,i,r){super({...n},{name:t});this.specifiedProjection=n,this.size=i,this.data=r,this.merged=!1}get isFit(){return!!this.data}}function nf(e){e.component.projection=q(e)?zb(e):Lb(e)}function zb(e){if(e.hasProjection){const t=oe(e.specifiedProjection),n=!(t&&(t.scale!=null||t.translate!=null)),i=n?[e.getSizeSignalRef("width"),e.getSizeSignalRef("height")]:void 0,r=n?Rb(e):void 0,s=new tf(e.projectionName(!0),{...oe(e.config.projection),...t},i,r);return s.get("type")||s.set("type","equalEarth",!1),s}return}function Rb(e){const t=[],{encoding:n}=e;for(const i of[[Te,Ne],[Ee,Oe]])(K(n[i[0]])||K(n[i[1]]))&&t.push({signal:e.getName(`geojson_${t.length}`)});return e.channelHasField(he)&&e.typedFieldDef(he).type===xn&&t.push({signal:e.getName(`geojson_${t.length}`)}),t.length===0&&t.push(e.requestDataName(G.Main)),t}function Ib(e,t){const n=Dr(Pb,r=>!on(e.explicit,r)&&!on(t.explicit,r)?!0:!!(on(e.explicit,r)&&on(t.explicit,r)&&be(e.get(r),t.get(r)))),i=be(e.size,t.size);if(i){if(n)return e;if(be(e.explicit,{}))return t;if(be(t.explicit,{}))return e}return null}function Lb(e){if(e.children.length===0)return;let t;for(const i of e.children)nf(i);const n=Dr(e.children,i=>{const r=i.component.projection;if(r)if(t){const s=Ib(t,r);return s&&(t=s),!!s}else return t=r,!0;else return!0});if(t&&n){const i=e.projectionName(!0),r=new tf(i,t.specifiedProjection,t.size,C(t.data));for(const s of e.children){const o=s.component.projection;o&&(o.isFit&&r.data.push(...s.component.projection.data),s.renameProjection(o.get("name"),i),o.merged=!0)}return r}return}function Mb(e,t,n,i){if(ni(t,n)){const r=q(e)?e.axis(n)??e.legend(n)??{}:{},s=w(t,{expr:"datum"}),o=w(t,{expr:"datum",binSuffix:"end"});return{formulaAs:w(t,{binSuffix:"range",forAs:!0}),formula:Jn(s,o,r.format,r.formatType,i)}}return{}}function rf(e,t){return`${Ea(e)}_${t}`}function Db(e,t){return{signal:e.getName(`${t}_bins`),extentSignal:e.getName(`${t}_extent`)}}function xo(e,t,n){const i=Qi(n,void 0)??{},r=rf(i,t);return e.getName(`${r}_bins`)}function jb(e){return"as"in e}function sf(e,t,n){let i,r;jb(e)?i=N(e.as)?[e.as,`${e.as}_end`]:[e.as[0],e.as[1]]:i=[w(e,{forAs:!0}),w(e,{binSuffix:"end",forAs:!0})];const s={...Qi(t,void 0)},o=rf(s,e.field),{signal:a,extentSignal:c}=Db(n,o);if(Oi(s.extent)){const l=s.extent;r=Nl(n,l.param,l),delete s.extent}const u={bin:s,field:e.field,as:[i],...a?{signal:a}:{},...c?{extentSignal:c}:{},...r?{span:r}:{}};return{key:o,binComponent:u}}class et extends I{clone(){return new et(null,C(this.bins))}constructor(t,n){super(t);this.bins=n}static makeFromEncoding(t,n){const i=n.reduceFieldDef((r,s,o)=>{if(fe(s)&&j(s.bin)){const{key:a,binComponent:c}=sf(s,s.bin,n);r[a]={...c,...r[a],...Mb(n,s,o,n.config)}}return r},{});return M(i)?null:new et(t,i)}static makeFromTransform(t,n,i){const{key:r,binComponent:s}=sf(n,n.bin,i);return new et(t,{[r]:s})}merge(t,n){for(const i of b(t.bins))i in this.bins?(n(t.bins[i].signal,this.bins[i].signal),this.bins[i].as=je([...this.bins[i].as,...t.bins[i].as],P)):this.bins[i]=t.bins[i];for(const i of t.children)t.removeChild(i),i.parent=this;t.remove()}producedFields(){return new Set(ie(this.bins).map(t=>t.as).flat(2))}dependentFields(){return new Set(ie(this.bins).map(t=>t.field))}hash(){return`Bin ${P(this.bins)}`}assemble(){return ie(this.bins).flatMap(t=>{const n=[],[i,...r]=t.as,{extent:s,...o}=t.bin,a={type:"bin",field:we(t.field),as:i,signal:t.signal,...Oi(s)?{extent:null}:{extent:s},...t.span?{span:{signal:`span(${t.span})`}}:{},...o};!s&&t.extentSignal&&(n.push({type:"extent",field:we(t.field),signal:t.extentSignal}),a.extent={signal:t.extentSignal}),n.push(a);for(const c of r)for(let u=0;u<2;u++)n.push({type:"formula",expr:w({field:i[u]},{expr:"datum"}),as:c[u]});return t.formula&&n.push({type:"formula",expr:t.formula,as:t.formulaAs}),n})}}function Ub(e,t,n,i){const r=q(i)?i.encoding[He(t)]:void 0;if(fe(n)&&q(i)&&Ic(n,r,i.markDef,i.config)){e.add(w(n,{})),e.add(w(n,{suffix:"end"}));const{mark:s,markDef:o,config:a}=i,c=Nt({fieldDef:n,markDef:o,config:a});Qn(s)&&c!==.5&&Y(t)&&(e.add(w(n,{suffix:cr})),e.add(w(n,{suffix:ur}))),n.bin&&ni(n,t)&&e.add(w(n,{binSuffix:"range"}))}else if(ha(t)){const s=ga(t);e.add(i.getName(s))}else e.add(w(n));return Yt(n)&&Tg(n.scale?.range)&&e.add(n.scale.range.field),e}function Bb(e,t){for(const n of b(t)){const i=t[n];for(const r of b(i))n in e?e[n][r]=new Set([...e[n][r]??[],...i[r]]):e[n]={[r]:i[r]}}}class Me extends I{clone(){return new Me(null,new Set(this.dimensions),C(this.measures))}constructor(t,n,i){super(t);this.dimensions=n,this.measures=i}get groupBy(){return this.dimensions}static makeFromEncoding(t,n){let i=!1;n.forEachFieldDef(o=>{o.aggregate&&(i=!0)});const r={},s=new Set;return i?(n.forEachFieldDef((o,a)=>{const{aggregate:c,field:u}=o;if(c)if(c==="count")r["*"]??(r["*"]={}),r["*"].count=new Set([w(o,{forAs:!0})]);else{if(ct(c)||_t(c)){const l=ct(c)?"argmin":"argmax",f=c[l];r[f]??(r[f]={}),r[f][l]=new Set([w({op:l,field:f},{forAs:!0})])}else r[u]??(r[u]={}),r[u][c]=new Set([w(o,{forAs:!0})]);qe(a)&&n.scaleDomain(a)==="unaggregated"&&(r[u]??(r[u]={}),r[u].min=new Set([w({field:u,aggregate:"min"},{forAs:!0})]),r[u].max=new Set([w({field:u,aggregate:"max"},{forAs:!0})]))}else Ub(s,a,o,n)}),s.size+b(r).length===0?null:new Me(t,s,r)):null}static makeFromTransform(t,n){const i=new Set,r={};for(const s of n.aggregate){const{op:o,field:a,as:c}=s;o&&(o==="count"?(r["*"]??(r["*"]={}),r["*"].count=new Set([c||w(s,{forAs:!0})])):(r[a]??(r[a]={}),r[a][o]=new Set([c||w(s,{forAs:!0})])))}for(const s of n.groupby??[])i.add(s);return i.size+b(r).length===0?null:new Me(t,i,r)}merge(t){return sa(this.dimensions,t.dimensions)?(Bb(this.measures,t.measures),!0):(tg("different dimensions, cannot merge"),!1)}addDimensions(t){t.forEach(this.dimensions.add,this.dimensions)}dependentFields(){return new Set([...this.dimensions,...b(this.measures)])}producedFields(){const t=new Set;for(const n of b(this.measures))for(const i of b(this.measures[n])){const r=this.measures[n][i];r.size===0?t.add(`${i}_${n}`):r.forEach(t.add,t)}return t}hash(){return`Aggregate ${P({dimensions:this.dimensions,measures:this.measures})}`}assemble(){const t=[],n=[],i=[];for(const s of b(this.measures))for(const o of b(this.measures[s]))for(const a of this.measures[s][o])i.push(a),t.push(o),n.push(s==="*"?null:we(s));const r={type:"aggregate",groupby:[...this.dimensions].map(we),ops:t,fields:n,as:i};return r}}class Rn extends I{constructor(t,n,i,r){super(t);this.model=n,this.name=i,this.data=r;for(const s of _e){const o=n.facet[s];if(o){const{bin:a,sort:c}=o;this[s]={name:n.getName(`${s}_domain`),fields:[w(o),...j(a)?[w(o,{binSuffix:"end"})]:[]],...lt(c)?{sortField:c}:E(c)?{sortIndexField:Pn(o,s)}:{}}}}this.childModel=n.child}hash(){let t="Facet";for(const n of _e)this[n]&&(t+=` ${n.charAt(0)}:${P(this[n])}`);return t}get fields(){const t=[];for(const n of _e)this[n]?.fields&&t.push(...this[n].fields);return t}dependentFields(){const t=new Set(this.fields);for(const n of _e)this[n]&&(this[n].sortField&&t.add(this[n].sortField.field),this[n].sortIndexField&&t.add(this[n].sortIndexField));return t}producedFields(){return new Set}getSource(){return this.name}getChildIndependentFieldsWithStep(){const t={};for(const n of at){const i=this.childModel.component.scales[n];if(i&&!i.merged){const r=i.get("type"),s=i.get("range");if(J(r)&&Ct(s)){const o=Sr(this.childModel,n),a=To(o);a?t[n]=a:x(ns(n))}}}return t}assembleRowColumnHeaderData(t,n,i){const r={row:"y",column:"x",facet:void 0}[t],s=[],o=[],a=[];r&&i&&i[r]&&(n?(s.push(`distinct_${i[r]}`),o.push("max")):(s.push(i[r]),o.push("distinct")),a.push(`distinct_${i[r]}`));const{sortField:c,sortIndexField:u}=this[t];if(c){const{op:l=Wi,field:f}=c;s.push(f),o.push(l),a.push(w(c,{forAs:!0}))}else u&&(s.push(u),o.push("max"),a.push(u));return{name:this[t].name,source:n??this.data,transform:[{type:"aggregate",groupby:this[t].fields,...s.length?{fields:s,ops:o,as:a}:{}}]}}assembleFacetHeaderData(t){const{columns:n}=this.model.layout,{layoutHeaders:i}=this.model.component,r=[],s={};for(const c of po){for(const u of go){const l=(i[c]&&i[c][u])??[];for(const f of l)if(f.axes?.length>0){s[c]=!0;break}}if(s[c]){const u=`length(data("${this.facet.name}"))`,l=c==="row"?n?{signal:`ceil(${u} / ${n})`}:1:n?{signal:`min(${u}, ${n})`}:{signal:u};r.push({name:`${this.facet.name}_${c}`,transform:[{type:"sequence",start:0,stop:l}]})}}const{row:o,column:a}=s;return(o||a)&&r.unshift(this.assembleRowColumnHeaderData("facet",null,t)),r}assemble(){const t=[];let n=null;const i=this.getChildIndependentFieldsWithStep(),{column:r,row:s,facet:o}=this;if(r&&s&&(i.x||i.y)){n=`cross_${this.column.name}_${this.row.name}`;const a=[].concat(i.x??[],i.y??[]),c=a.map(()=>"distinct");t.push({name:n,source:this.data,transform:[{type:"aggregate",groupby:this.fields,fields:a,ops:c}]})}for(const a of[nt,tt])this[a]&&t.push(this.assembleRowColumnHeaderData(a,n,i));if(o){const a=this.assembleFacetHeaderData(i);a&&t.push(...a)}return t}}function of(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')?e.slice(1,-1):e}function Wb(e,t){const n=Wr(e);if(t==="number")return`toNumber(${n})`;if(t==="boolean")return`toBoolean(${n})`;if(t==="string")return`toString(${n})`;if(t==="date")return`toDate(${n})`;if(t==="flatten")return n;if(t.startsWith("date:")){const i=of(t.slice(5,t.length));return`timeParse(${n},'${i}')`}else if(t.startsWith("utc:")){const i=of(t.slice(4,t.length));return`utcParse(${n},'${i}')`}else return x(lp(t)),null}function Hb(e){const t={};return vi(e.filter,n=>{if(ac(n)){let i=null;cs(n)?i=xe(n.equal):ls(n)?i=xe(n.lte):us(n)?i=xe(n.lt):fs(n)?i=xe(n.gt):ds(n)?i=xe(n.gte):ps(n)?i=n.range[0]:gs(n)&&(i=(n.oneOf??n.in)[0]),i&&(Bt(i)?t[n.field]="date":U(i)?t[n.field]="number":N(i)&&(t[n.field]="string")),n.timeUnit&&(t[n.field]="date")}}),t}function qb(e){const t={};function n(i){_n(i)?t[i.field]="date":i.type==="quantitative"&&Ud(i.aggregate)?t[i.field]="number":pn(i.field)>1?i.field in t||(t[i.field]="flatten"):Yt(i)&<(i.sort)&&pn(i.sort.field)>1&&(i.sort.field in t||(t[i.sort.field]="flatten"))}if((q(e)||ve(e))&&e.forEachFieldDef((i,r)=>{if(fe(i))n(i);else{const s=jt(r),o=e.fieldDef(s);n({...i,type:o.type})}}),q(e)){const{mark:i,markDef:r,encoding:s}=e;if(Ft(i)&&!e.encoding.order){const o=r.orient==="horizontal"?"y":"x",a=s[o];S(a)&&a.type==="quantitative"&&!(a.field in t)&&(t[a.field]="number")}}return t}function Gb(e){const t={};if(q(e)&&e.component.selection)for(const n of b(e.component.selection)){const i=e.component.selection[n];for(const r of i.project.items)!r.channel&&pn(r.field)>1&&(t[r.field]="flatten")}return t}class ce extends I{clone(){return new ce(null,C(this._parse))}constructor(t,n){super(t);this._parse=n}hash(){return`Parse ${P(this._parse)}`}static makeExplicit(t,n,i){let r={};const s=n.data;return!At(s)&&s?.format?.parse&&(r=s.format.parse),this.makeWithAncestors(t,r,{},i)}static makeWithAncestors(t,n,i,r){for(const a of b(i)){const c=r.getWithExplicit(a);c.value!==void 0&&(c.explicit||c.value===i[a]||c.value==="derived"||i[a]==="flatten"?delete i[a]:x(Ba(a,i[a],c.value)))}for(const a of b(n)){const c=r.get(a);c!==void 0&&(c===n[a]?delete n[a]:x(Ba(a,n[a],c)))}const s=new pt(n,i);r.copyAll(s);const o={};for(const a of b(s.combine())){const c=s.get(a);c!==null&&(o[a]=c)}return b(o).length===0||r.parseNothing?null:new ce(t,o)}get parse(){return this._parse}merge(t){this._parse={...this._parse,...t.parse},t.remove()}assembleFormatParse(){const t={};for(const n of b(this._parse)){const i=this._parse[n];pn(n)===1&&(t[n]=i)}return t}producedFields(){return new Set(b(this._parse))}dependentFields(){return new Set(b(this._parse))}assembleTransforms(t=!1){return b(this._parse).filter(n=>t?pn(n)>1:!0).map(n=>{const i=Wb(n,this._parse[n]);if(!i)return null;const r={type:"formula",expr:i,as:dn(n)};return r}).filter(n=>n!==null)}}class Rt extends I{clone(){return new Rt(null)}constructor(t){super(t)}dependentFields(){return new Set}producedFields(){return new Set([Le])}hash(){return"Identifier"}assemble(){return{type:"identifier",as:Le}}}class ci extends I{clone(){return new ci(null,this.params)}constructor(t,n){super(t);this.params=n}dependentFields(){return new Set}producedFields(){return}hash(){return`Graticule ${P(this.params)}`}assemble(){return{type:"graticule",...this.params===!0?{}:this.params}}}class ui extends I{clone(){return new ui(null,this.params)}constructor(t,n){super(t);this.params=n}dependentFields(){return new Set}producedFields(){return new Set([this.params.as??"data"])}hash(){return`Hash ${P(this.params)}`}assemble(){return{type:"sequence",...this.params}}}class en extends I{constructor(t){super(null);t??(t={name:"source"});let n;if(At(t)||(n=t.format?{...pe(t.format,["parse"])}:{}),ri(t))this._data={values:t.values};else if(Cn(t)){if(this._data={url:t.url},!n.type){let i=/(?:\.([^.]+))?$/.exec(t.url)[1];O(["json","csv","tsv","dsv","topojson"],i)||(i="json"),n.type=i}}else Vu(t)?this._data={values:[{type:"Sphere"}]}:(qu(t)||At(t))&&(this._data={});this._generator=At(t),t.name&&(this._name=t.name),n&&!M(n)&&(this._data.format=n)}dependentFields(){return new Set}producedFields(){return}get data(){return this._data}hasName(){return!!this._name}get isGenerator(){return this._generator}get dataName(){return this._name}set dataName(t){this._name=t}set parent(t){throw new Error("Source nodes have to be roots.")}remove(){throw new Error("Source nodes are roots and cannot be removed.")}hash(){throw new Error("Cannot hash sources")}assemble(){return{name:this._name,...this._data,transform:[]}}}var af=function(e,t,n,i,r){if(i==="m")throw new TypeError("Private method is not writable");if(i==="a"&&!r)throw new TypeError("Private accessor was defined without a setter");if(typeof t=="function"?e!==t||!r:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return i==="a"?r.call(e,n):r?r.value=n:t.set(e,n),n},Vb=function(e,t,n,i){if(n==="a"&&!i)throw new TypeError("Private accessor was defined without a getter");if(typeof t=="function"?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return n==="m"?i:n==="a"?i.call(e):i?i.value:t.get(e)},li;function So(e){return e instanceof en||e instanceof ci||e instanceof ui}class vo{constructor(){li.set(this,void 0),af(this,li,!1,"f")}setModified(){af(this,li,!0,"f")}get modifiedFlag(){return Vb(this,li,"f")}}li=new WeakMap;class tn extends vo{getNodeDepths(t,n,i){i.set(t,n);for(const r of t.children)this.getNodeDepths(r,n+1,i);return i}optimize(t){const n=this.getNodeDepths(t,0,new Map),i=[...n.entries()].sort((r,s)=>s[1]-r[1]);for(const r of i)this.run(r[0]);return this.modifiedFlag}}class wo extends vo{optimize(t){this.run(t);for(const n of t.children)this.optimize(n);return this.modifiedFlag}}class Xb extends wo{mergeNodes(t,n){const i=n.shift();for(const r of n)t.removeChild(r),r.parent=i,r.remove()}run(t){const n=t.children.map(r=>r.hash()),i={};for(let r=0;r1&&(this.setModified(),this.mergeNodes(t,i[r]))}}class Yb extends wo{constructor(t){super();this.requiresSelectionId=t&&ao(t)}run(t){t instanceof Rt&&(this.requiresSelectionId&&(So(t.parent)||t.parent instanceof Me||t.parent instanceof ce)||(this.setModified(),t.remove()))}}class Kb extends vo{optimize(t){return this.run(t,new Set),this.modifiedFlag}run(t,n){let i=new Set;t instanceof Je&&(i=t.producedFields(),jr(i,n)&&(this.setModified(),t.removeFormulas(n),t.producedFields.length===0&&t.remove()));for(const r of t.children)this.run(r,new Set([...n,...i]))}}class Qb extends wo{constructor(){super()}run(t){t instanceof ye&&!t.isRequired()&&(this.setModified(),t.remove())}}class Zb extends tn{run(t){if(So(t))return;if(t.numChildren()>1)return;for(const n of t.children)if(n instanceof ce)if(t instanceof ce)this.setModified(),t.merge(n);else{if(Br(t.producedFields(),n.dependentFields()))continue;this.setModified(),n.swapWithParent()}return}}class Jb extends tn{run(t){const n=[...t.children],i=t.children.filter(r=>r instanceof ce);if(t.numChildren()>1&&i.length>=1){const r={},s=new Set;for(const o of i){const a=o.parse;for(const c of b(a))c in r?r[c]!==a[c]&&s.add(c):r[c]=a[c]}for(const o of s)delete r[o];if(!M(r)){this.setModified();const o=new ce(t,r);for(const a of n){if(a instanceof ce)for(const c of b(r))delete a.parse[c];t.removeChild(a),a.parent=o,a instanceof ce&&b(a.parse).length===0&&a.remove()}}}}}class ex extends tn{run(t){t instanceof ye||t.numChildren()>0||t instanceof Rn||(t instanceof en||(this.setModified(),t.remove()))}}class tx extends tn{run(t){const n=t.children.filter(r=>r instanceof Je),i=n.pop();for(const r of n)this.setModified(),i.merge(r)}}class nx extends tn{run(t){const n=t.children.filter(r=>r instanceof Me),i={};for(const r of n){const s=P(r.groupBy);s in i||(i[s]=[]),i[s].push(r)}for(const r of b(i)){const s=i[r];if(s.length>1){const o=s.pop();for(const a of s)o.merge(a)&&(t.removeChild(a),a.parent=o,a.remove(),this.setModified())}}}}class ix extends tn{constructor(t){super();this.model=t}run(t){const n=!(So(t)||t instanceof On||t instanceof ce||t instanceof Rt),i=[],r=[];for(const s of t.children)s instanceof et&&(n&&!Br(t.producedFields(),s.dependentFields())?i.push(s):r.push(s));if(i.length>0){const s=i.pop();for(const o of i)s.merge(o,this.model.renameSignal.bind(this.model));this.setModified(),t instanceof et?t.merge(s,this.model.renameSignal.bind(this.model)):s.swapWithParent()}if(r.length>1){const s=r.pop();for(const o of r)s.merge(o,this.model.renameSignal.bind(this.model));this.setModified()}}}class rx extends tn{run(t){const n=[...t.children],i=fn(n,o=>o instanceof ye);if(!i||t.numChildren()<=1)return;const r=[];let s;for(const o of n)if(o instanceof ye){let a=o;for(;a.numChildren()===1;){const[c]=a.children;if(c instanceof ye)a=c;else break}r.push(...a.children),s?(t.removeChild(o),o.parent=s.parent,s.parent.removeChild(s),s.parent=a,this.setModified()):s=a}else r.push(o);if(r.length){this.setModified();for(const o of r)o.parent.removeChild(o),o.parent=s}}}class nn extends I{clone(){return new nn(null,C(this.transform))}constructor(t,n){super(t);this.transform=n}addDimensions(t){this.transform.groupby=je(this.transform.groupby.concat(t),n=>n)}dependentFields(){const t=new Set;return this.transform.groupby&&this.transform.groupby.forEach(t.add,t),this.transform.joinaggregate.map(n=>n.field).filter(n=>n!==void 0).forEach(t.add,t),t}producedFields(){return new Set(this.transform.joinaggregate.map(this.getDefaultName))}getDefaultName(t){return t.as??w(t)}hash(){return`JoinAggregateTransform ${P(this.transform)}`}assemble(){const t=[],n=[],i=[];for(const s of this.transform.joinaggregate)n.push(s.op),i.push(this.getDefaultName(s)),t.push(s.field===void 0?null:s.field);const r=this.transform.groupby;return{type:"joinaggregate",as:i,ops:n,fields:t,...r!==void 0?{groupby:r}:{}}}}class In extends I{clone(){return new In(null,{...this.filter})}constructor(t,n){super(t);this.filter=n}static make(t,n,i){const{config:r,markDef:s}=n,{marks:o,scales:a}=i;if(o==="include-invalid-values"&&a==="include-invalid-values")return null;const c=n.reduceFieldDef((u,l,f)=>{const d=qe(f)&&n.getScaleComponent(f);if(d){const p=d.get("type"),{aggregate:h}=l,g=ws({scaleChannel:f,markDef:s,config:r,scaleType:p,isCountAggregate:Ti(h)});g!=="show"&&g!=="always-valid"&&(u[l.field]=l)}return u},{});return b(c).length?new In(t,c):null}dependentFields(){return new Set(b(this.filter))}producedFields(){return new Set}hash(){return`FilterInvalid ${P(this.filter)}`}assemble(){const t=b(this.filter).reduce((n,i)=>{const r=this.filter[i],s=w(r,{expr:"datum"});return r!==null&&(r.type==="temporal"?n.push(`(isDate(${s}) || (${$o(s)}))`):r.type==="quantitative"&&n.push($o(s))),n},[]);return t.length>0?{type:"filter",expr:t.join(" && ")}:null}}function $o(e){return`isValid(${e}) && isFinite(+${e})`}function sx(e){return e.stack.stackBy.reduce((t,n)=>{const i=n.fieldDef,r=w(i);return r&&t.push(r),t},[])}function ox(e){return E(e)&&e.every(t=>N(t))&&e.length>1}class ht extends I{clone(){return new ht(null,C(this._stack))}constructor(t,n){super(t);this._stack=n}static makeFromTransform(t,n){const{stack:i,groupby:r,as:s,offset:o="zero"}=n,a=[],c=[];if(n.sort!==void 0)for(const f of n.sort)a.push(f.field),c.push(X(f.order,"ascending"));const u={field:a,order:c};let l;return ox(s)?l=s:N(s)?l=[s,`${s}_end`]:l=[`${n.stack}_start`,`${n.stack}_end`],new ht(t,{dimensionFieldDefs:[],stackField:i,groupby:r,offset:o,sort:u,facetby:[],as:l})}static makeFromEncoding(t,n){const i=n.stack,{encoding:r}=n;if(!i)return null;const{groupbyChannels:s,fieldChannel:o,offset:a,impute:c}=i,u=s.map(p=>{const h=r[p];return Ie(h)}).filter(p=>!!p),l=sx(n),f=n.encoding.order;let d;if(E(f)||S(f))d=Aa(f);else{const p=Lc(f)?f.sort:o==="y"?"descending":"ascending";d=l.reduce((h,g)=>(h.field.includes(g)||(h.field.push(g),h.order.push(p)),h),{field:[],order:[]})}return new ht(t,{dimensionFieldDefs:u,stackField:n.vgField(o),facetby:[],stackby:l,sort:d,offset:a,impute:c,as:[n.vgField(o,{suffix:"start",forAs:!0}),n.vgField(o,{suffix:"end",forAs:!0})]})}get stack(){return this._stack}addDimensions(t){this._stack.facetby.push(...t)}dependentFields(){const t=new Set;return t.add(this._stack.stackField),this.getGroupbyFields().forEach(t.add,t),this._stack.facetby.forEach(t.add,t),this._stack.sort.field.forEach(t.add,t),t}producedFields(){return new Set(this._stack.as)}hash(){return`Stack ${P(this._stack)}`}getGroupbyFields(){const{dimensionFieldDefs:t,impute:n,groupby:i}=this._stack;return t.length>0?t.map(r=>r.bin?n?[w(r,{binSuffix:"mid"})]:[w(r,{}),w(r,{binSuffix:"end"})]:[w(r)]).flat():i??[]}assemble(){const t=[],{facetby:n,dimensionFieldDefs:i,stackField:r,stackby:s,sort:o,offset:a,impute:c,as:u}=this._stack;if(c)for(const l of i){const{bandPosition:f=.5,bin:d}=l;if(d){const p=w(l,{expr:"datum"}),h=w(l,{expr:"datum",binSuffix:"end"});t.push({type:"formula",expr:`${$o(p)} ? ${f}*${p}+${1-f}*${h} : ${p}`,as:w(l,{binSuffix:"mid",forAs:!0})})}t.push({type:"impute",field:r,groupby:[...s,...n],key:w(l,{binSuffix:"mid"}),method:"value",value:0})}return t.push({type:"stack",groupby:[...this.getGroupbyFields(),...n],field:r,sort:o,as:u,offset:a}),t}}class Ln extends I{clone(){return new Ln(null,C(this.transform))}constructor(t,n){super(t);this.transform=n}addDimensions(t){this.transform.groupby=je(this.transform.groupby.concat(t),n=>n)}dependentFields(){const t=new Set;return(this.transform.groupby??[]).forEach(t.add,t),(this.transform.sort??[]).forEach(n=>t.add(n.field)),this.transform.window.map(n=>n.field).filter(n=>n!==void 0).forEach(t.add,t),t}producedFields(){return new Set(this.transform.window.map(this.getDefaultName))}getDefaultName(t){return t.as??w(t)}hash(){return`WindowTransform ${P(this.transform)}`}assemble(){const t=[],n=[],i=[],r=[];for(const f of this.transform.window)n.push(f.op),i.push(this.getDefaultName(f)),r.push(f.param===void 0?null:f.param),t.push(f.field===void 0?null:f.field);const s=this.transform.frame,o=this.transform.groupby;if(s&&s[0]===null&&s[1]===null&&n.every(f=>Jr(f)))return{type:"joinaggregate",as:i,ops:n,fields:t,...o!==void 0?{groupby:o}:{}};const a=[],c=[];if(this.transform.sort!==void 0)for(const f of this.transform.sort)a.push(f.field),c.push(f.order??"ascending");const u={field:a,order:c},l=this.transform.ignorePeers;return{type:"window",params:r,as:i,ops:n,fields:t,sort:u,...l!==void 0?{ignorePeers:l}:{},...o!==void 0?{groupby:o}:{},...s!==void 0?{frame:s}:{}}}}function ax(e){function t(n){if(!(n instanceof Rn)){const i=n.clone();if(i instanceof ye){const r=_o+i.getSource();i.setSource(r),e.model.component.data.outputNodes[r]=i}else(i instanceof Me||i instanceof ht||i instanceof Ln||i instanceof nn)&&i.addDimensions(e.fields);for(const r of n.children.flatMap(t))r.parent=i;return[i]}return n.children.flatMap(t)}return t}function Eo(e){if(e instanceof Rn)if(e.numChildren()===1&&!(e.children[0]instanceof ye)){const t=e.children[0];(t instanceof Me||t instanceof ht||t instanceof Ln||t instanceof nn)&&t.addDimensions(e.fields),t.swapWithParent(),Eo(e)}else{const t=e.model.component.data.main;cf(t);const n=ax(e),i=e.children.map(n).flat();for(const r of i)r.parent=t}else e.children.map(Eo)}function cf(e){if(e instanceof ye&&e.type===G.Main&&e.numChildren()===1){const t=e.children[0];t instanceof Rn||(t.swapWithParent(),cf(e))}}const _o="scale_",xr=5;function ko(e){for(const t of e){for(const n of t.children)if(n.parent!==t)return!1;if(!ko(t.children))return!1}return!0}function De(e,t){let n=!1;for(const i of t)n=e.optimize(i)||n;return n}function uf(e,t,n){let i=e.sources,r=!1;return r=De(new Qb,i)||r,r=De(new Yb(t),i)||r,i=i.filter(s=>s.numChildren()>0),r=De(new ex,i)||r,i=i.filter(s=>s.numChildren()>0),n||(r=De(new Zb,i)||r,r=De(new ix(t),i)||r,r=De(new Kb,i)||r,r=De(new Jb,i)||r,r=De(new nx,i)||r,r=De(new tx,i)||r,r=De(new Xb,i)||r,r=De(new rx,i)||r),e.sources=i,r}function cx(e,t){ko(e.sources);let n=0,i=0;for(let r=0;rt(n))}}function lf(e){q(e)?ux(e):lx(e)}function ux(e){const t=e.component.scales;for(const n of b(t)){const i=dx(e,n),r=t[n];if(r.setWithExplicit("domains",i),gx(e,n),e.component.data.isFaceted){let s=e;for(;!ve(s)&&s.parent;)s=s.parent;const o=s.component.resolve.scale[n];if(o==="shared")for(const a of i.value)ut(a)&&(a.data=_o+a.data.replace(_o,""))}}}function lx(e){for(const n of e.children)lf(n);const t=e.component.scales;for(const n of b(t)){let i,r=null;for(const s of e.children){const o=s.component.scales[n];if(o){i===void 0?i=o.getWithExplicit("domains"):i=Ot(i,o.getWithExplicit("domains"),"domains","scale",No);const a=o.get("selectionExtent");r&&a&&r.param!==a.param&&x(op),r=a}}t[n].setWithExplicit("domains",i),r&&t[n].set("selectionExtent",r,!0)}}function fx(e,t,n,i){if(e==="unaggregated"){const{valid:r,reason:s}=ff(t,n);if(!r){x(s);return}}else if(e===void 0&&i.useUnaggregatedDomain){const{valid:r}=ff(t,n);if(r)return"unaggregated"}return e}function dx(e,t){const n=e.getScaleComponent(t).get("type"),{encoding:i}=e,r=fx(e.scaleDomain(t),e.typedFieldDef(t),n,e.config.scale);return r!==e.scaleDomain(t)&&(e.specifiedScales[t]={...e.specifiedScales[t],domain:r}),t==="x"&&K(i.x2)?K(i.x)?Ot(It(n,r,e,"x"),It(n,r,e,"x2"),"domain","scale",No):It(n,r,e,"x2"):t==="y"&&K(i.y2)?K(i.y)?Ot(It(n,r,e,"y"),It(n,r,e,"y2"),"domain","scale",No):It(n,r,e,"y2"):It(n,r,e,t)}function px(e,t,n){return e.map(i=>{const r=Zi(i,{timeUnit:n,type:t});return{signal:`{data: ${r}}`}})}function Co(e,t,n){const i=Z(n)?.unit;return t==="temporal"||i?px(e,t,i):[e]}function It(e,t,n,i){const{encoding:r,markDef:s,mark:o,config:a,stack:c}=n,u=K(r[i]),{type:l}=u,f=u.timeUnit,d=ay({invalid:Ge("invalid",s,a),isPath:Ft(o)});if(Ng(t)){const g=It(e,void 0,n,i),m=Co(t.unionWith,l,f);return Ze([...m,...g.value])}else{if($(t))return Ze([t]);if(t&&t!=="unaggregated"&&!hc(t))return Ze(Co(t,l,f))}if(c&&i===c.fieldChannel){if(c.offset==="normalize")return Se([[0,1]]);const g=n.requestDataName(d);return Se([{data:g,field:n.vgField(i,{suffix:"start"})},{data:g,field:n.vgField(i,{suffix:"end"})}])}const p=qe(i)&&S(u)?hx(n,i,e):void 0;if(Ke(u)){const g=Co([u.datum],l,f);return Se(g)}const h=u;if(t==="unaggregated"){const{field:g}=u;return Se([{data:n.requestDataName(d),field:w({field:g,aggregate:"min"})},{data:n.requestDataName(d),field:w({field:g,aggregate:"max"})}])}else if(j(h.bin)){if(J(e))return e==="bin-ordinal"?Se([]):Se([{data:Bn(p)?n.requestDataName(d):n.requestDataName(G.Raw),field:n.vgField(i,ni(h,i)?{binSuffix:"range"}:{}),sort:p===!0||!z(p)?{field:n.vgField(i,{}),op:"min"}:p}]);{const{bin:g}=h;if(j(g)){const m=xo(n,h.field,g);return Se([new te(()=>{const y=n.getSignalName(m);return`[${y}.start, ${y}.stop]`})])}else return Se([{data:n.requestDataName(d),field:n.vgField(i,{})}])}}else if(h.timeUnit&&O(["time","utc"],e)){const g=r[He(i)];if(Ic(h,g,s,a)){const m=n.requestDataName(d),y=Nt({fieldDef:h,fieldDef2:g,markDef:s,config:a}),v=Qn(o)&&y!==.5&&Y(i);return Se([{data:m,field:n.vgField(i,v?{suffix:cr}:{})},{data:m,field:n.vgField(i,{suffix:v?ur:"end"})}])}}return Se(p?[{data:Bn(p)?n.requestDataName(d):n.requestDataName(G.Raw),field:n.vgField(i),sort:p}]:[{data:n.requestDataName(d),field:n.vgField(i)}])}function Fo(e,t){const{op:n,field:i,order:r}=e;return{op:n??(t?"sum":Wi),...i?{field:we(i)}:{},...r?{order:r}:{}}}function gx(e,t){const n=e.component.scales[t],i=e.specifiedScales[t].domain,r=e.fieldDef(t)?.bin,s=hc(i)&&i,o=Ut(r)&&Oi(r.extent)&&r.extent;(s||o)&&n.set("selectionExtent",s??o,!0)}function hx(e,t,n){if(!J(n))return;const i=e.fieldDef(t),r=i.sort;if(Pc(r))return{op:"min",field:Pn(i,t),order:"ascending"};const{stack:s}=e,o=s?new Set([...s.groupbyFields,...s.stackBy.map(a=>a.fieldDef.field)]):void 0;if(lt(r)){const a=s&&!o.has(r.field);return Fo(r,a)}else if(ah(r)){const{encoding:a,order:c}=r,u=e.fieldDef(a),{aggregate:l,field:f}=u,d=s&&!o.has(f);if(ct(l)||_t(l))return Fo({field:w(u),order:c},d);if(Jr(l)||!l)return Fo({op:l,field:f,order:c},d)}else{if(r==="descending")return{op:"min",field:e.vgField(t),order:"descending"};if(O(["ascending",void 0],r))return!0}return}function ff(e,t){const{aggregate:n,type:i}=e;return n?N(n)&&!Wd.has(n)?{valid:!1,reason:Ap(n)}:i==="quantitative"&&t==="log"?{valid:!1,reason:Pp(e)}:{valid:!0}:{valid:!1,reason:Op(e)}}function No(e,t,n,i){return e.explicit&&t.explicit&&x(Mp(n,i,e.value,t.value)),{explicit:e.explicit,value:[...e.value,...t.value]}}function mx(e){const t=je(e.map(o=>{if(ut(o)){const{sort:a,...c}=o;return c}return o}),P),n=je(e.map(o=>{if(ut(o)){const a=o.sort;return a!==void 0&&!Bn(a)&&("op"in a&&a.op==="count"&&delete a.field,a.order==="ascending"&&delete a.order),a}return}).filter(o=>o!==void 0),P);if(t.length===0)return;if(t.length===1){const o=e[0];if(ut(o)&&n.length>0){let a=n[0];if(n.length>1){x(Xa);const c=n.filter(u=>z(u)&&"op"in u&&u.op!=="min");n.every(u=>z(u)&&"op"in u)&&c.length===1?a=c[0]:a=!0}else if(z(a)&&"field"in a){const c=a.field;o.field===c&&(a=a.order?{order:a.order}:!0)}return{...o,sort:a}}return o}const i=je(n.map(o=>Bn(o)||!("op"in o)||N(o.op)&&o.op in Dd?o:(x(jp(o)),!0)),P);let r;i.length===1?r=i[0]:i.length>1&&(x(Xa),r=!0);const s=je(e.map(o=>ut(o)?o.data:null),o=>o);if(s.length===1&&s[0]!==null){const o={data:s[0],fields:t.map(a=>a.field),...r?{sort:r}:{}};return o}return{fields:t,...r?{sort:r}:{}}}function To(e){if(ut(e)&&N(e.field))return e.field;if(Hd(e)){let t;for(const n of e.fields)if(ut(n)&&N(n.field)){if(!t)t=n.field;else if(t!==n.field)return x(Up),t}return x(Bp),t}else if(qd(e)){x(Wp);const t=e.fields[0];return N(t)?t:void 0}return}function Sr(e,t){const n=e.component.scales[t],i=n.get("domains").map(r=>(ut(r)&&(r.data=e.lookupDataSource(r.data)),r));return mx(i)}function df(e){return Mn(e)||Ao(e)?e.children.reduce((t,n)=>t.concat(df(n)),pf(e)):pf(e)}function pf(e){return b(e.component.scales).reduce((t,n)=>{const i=e.component.scales[n];if(i.merged)return t;const r=i.combine(),{name:s,type:o,selectionExtent:a,domains:c,range:u,reverse:l,...f}=r,d=yx(r.range,s,n,e),p=Sr(e,n),h=a?py(e,a,i,p):null;return t.push({name:s,type:o,...p?{domain:p}:{},...h?{domainRaw:h}:{},range:d,...l!==void 0?{reverse:l}:{},...f}),t},[])}function yx(e,t,n,i){if(Y(n)){if(Ct(e))return{step:{signal:`${t}_step`}}}else if(z(e)&&ut(e))return{...e,data:i.lookupDataSource(e.data)};return e}class gf extends pt{constructor(t,n){super({},{name:t});this.merged=!1,this.setWithExplicit("type",n)}domainHasZero(){const t=this.get("type");if(O([se.LOG,se.TIME,se.UTC],t))return"definitely-not";const n=this.get("zero");if(n===!0||n===void 0&&O([se.LINEAR,se.SQRT,se.POW],t))return"definitely";const i=this.get("domains");if(i.length>0){let r=!1,s=!1,o=!1;for(const a of i){if(E(a)){const c=a[0],u=a[a.length-1];if(U(c)&&U(u))if(c<=0&&u>=0){r=!0;continue}else{s=!0;continue}}o=!0}if(r)return"definitely";if(s&&!o)return"definitely-not"}return"maybe"}}const bx=["range","scheme"];function xx(e){const t=e.component.scales;for(const n of Qr){const i=t[n];if(!i)continue;const r=Sx(n,e);i.setWithExplicit("range",r)}}function hf(e,t){const n=e.fieldDef(t);if(n?.bin){const{bin:i,field:r}=n,s=me(t),o=e.getName(s);if(z(i)&&i.binned&&i.step!==void 0)return new te(()=>{const a=e.scaleName(t),c=`(domain("${a}")[1] - domain("${a}")[0]) / ${i.step}`;return`${e.getSignalName(o)} / (${c})`});if(j(i)){const a=xo(e,r,i);return new te(()=>{const c=e.getSignalName(a),u=`(${c}.stop - ${c}.start) / ${c}.step`;return`${e.getSignalName(o)} / (${u})`})}}return}function Sx(e,t){const n=t.specifiedScales[e],{size:i}=t,r=t.getScaleComponent(e),s=r.get("type");for(const f of bx)if(n[f]!==void 0){const d=bs(s,f),p=mc(e,f);if(!d)x(Ga(s,f,e));else if(p)x(p);else switch(f){case"range":{const h=n.range;if(E(h)){if(Y(e))return Ze(h.map(g=>{if(g==="width"||g==="height"){const m=t.getName(g),y=t.getSignalName.bind(t);return te.fromName(y,m)}return g}))}else if(z(h))return Ze({data:t.requestDataName(G.Main),field:h.field,sort:{op:"min",field:t.vgField(e)}});return Ze(h)}case"scheme":return Ze(vx(n[f]))}}const o=e===H||e==="xOffset"?"width":"height",a=i[o];if(Qe(a)){if(Y(e))if(J(s)){const f=yf(a,t,e);if(f)return Ze({step:f})}else x(Va(o));else if(Xn(e)){const f=e===xt?"x":"y",d=t.getScaleComponent(f),p=d.get("type");if(p==="band"){const h=bf(a,s);if(h)return Ze(h)}}}const{rangeMin:c,rangeMax:u}=n,l=wx(e,t);return(c!==void 0||u!==void 0)&&bs(s,"rangeMin")&&E(l)&&l.length===2?Ze([c??l[0],u??l[1]]):Se(l)}function vx(e){return Fg(e)?{scheme:e.name,...pe(e,["name"])}:{scheme:e}}function mf(e,t,n,{center:i}={}){const r=me(e),s=t.getName(r),o=t.getSignalName.bind(t);return e===Q&&Pe(n)?i?[te.fromName(a=>`${o(a)}/2`,s),te.fromName(a=>`-${o(a)}/2`,s)]:[te.fromName(o,s),0]:i?[te.fromName(a=>`-${o(a)}/2`,s),te.fromName(a=>`${o(a)}/2`,s)]:[0,te.fromName(o,s)]}function wx(e,t){const{size:n,config:i,mark:r,encoding:s}=t,{type:o}=K(s[e]),a=t.getScaleComponent(e),c=a.get("type"),{domain:u,domainMid:l}=t.specifiedScales[e];switch(e){case H:case Q:{if(O(["point","band"],c)){const f=xf(e,n,i.view);if(Qe(f)){const d=yf(f,t,e);return{step:d}}}return mf(e,t,c)}case xt:case gn:return $x(e,t,c);case st:{const f=kx(r,i),d=Cx(r,n,t,i);return Sn(c)?_x(f,d,Ex(c,i,u,e)):[f,d]}case $e:return[0,Math.PI*2];case Mt:return[0,360];case Fe:return[0,new te(()=>{const f=t.getSignalName(ve(t.parent)?"child_width":"width"),d=t.getSignalName(ve(t.parent)?"child_height":"height");return`min(${f},${d})/2`})];case wt:return[i.scale.minStrokeWidth,i.scale.maxStrokeWidth];case $t:return[[1,0],[4,2],[2,1],[1,1],[1,2,4,2]];case he:return"symbol";case ge:case Be:case We:return c==="ordinal"?o==="nominal"?"category":"ordinal":l!==void 0?"diverging":r==="rect"||r==="geoshape"?"heatmap":"ramp";case ot:case St:case vt:return[i.scale.minOpacity,i.scale.maxOpacity]}}function yf(e,t,n){const{encoding:i}=t,r=t.getScaleComponent(n),s=Vr(n),o=i[s],a=bu({step:e,offsetIsDiscrete:F(o)&&uc(o.type)});if(a==="offset"&&Qc(i,s)){const c=t.getScaleComponent(s),u=t.scaleName(s);let l=`domain('${u}').length`;if(c.get("type")==="band"){const d=c.get("paddingInner")??c.get("padding")??0,p=c.get("paddingOuter")??c.get("padding")??0;l=`bandspace(${l}, ${d}, ${p})`}const f=r.get("paddingInner")??r.get("padding");return{signal:`${e.step} * ${l} / (1-${Yd(f)})`}}else return e.step}function bf(e,t){const n=bu({step:e,offsetIsDiscrete:J(t)});return n==="offset"?{step:e.step}:void 0}function $x(e,t,n){const i=e===xt?"x":"y",r=t.getScaleComponent(i);if(!r)return mf(i,t,n,{center:!0});const s=r.get("type"),o=t.scaleName(i),{markDef:a,config:c}=t;if(s==="band"){const u=xf(i,t.size,t.config.view);if(Qe(u)){const l=bf(u,n);if(l)return l}return[0,{signal:`bandwidth('${o}')`}]}else{const u=t.encoding[i];if(S(u)&&u.timeUnit){const l=sc(u.timeUnit,h=>`scale('${o}', ${h})`),f=t.config.scale.bandWithNestedOffsetPaddingInner,d=Nt({fieldDef:u,markDef:a,config:c})-.5,p=d!==0?` + ${d}`:"";if(f){const h=$(f)?`${f.signal}/2`+p:`${f/2+d}`,g=$(f)?`(1 - ${f.signal}/2)`+p:`${1-f/2+d}`;return[{signal:`${h} * (${l})`},{signal:`${g} * (${l})`}]}return[0,{signal:l}]}return ia(`Cannot use ${e} scale if ${i} scale is not discrete.`)}}function xf(e,t,n){const i=e===H?"width":"height",r=t[i];return r||sr(n,i)}function Ex(e,t,n,i){switch(e){case"quantile":return t.scale.quantileCount;case"quantize":return t.scale.quantizeCount;case"threshold":return n!==void 0&&E(n)?n.length+1:(x(Zp(i)),3)}}function _x(e,t,n){const i=()=>{const r=Ae(t),s=Ae(e),o=`(${r} - ${s}) / (${n} - 1)`;return`sequence(${s}, ${r} + ${o}, ${o})`};return $(t)?new te(i):{signal:i()}}function kx(e,t){switch(e){case"bar":case"tick":return t.scale.minBandSize;case"line":case"trail":case"rule":return t.scale.minStrokeWidth;case"text":return t.scale.minFontSize;case"point":case"square":case"circle":return t.scale.minSize}throw new Error(Pi("size",e))}const Sf=.95;function Cx(e,t,n,i){const r={x:hf(n,"x"),y:hf(n,"y")};switch(e){case"bar":case"tick":{if(i.scale.maxBandSize!==void 0)return i.scale.maxBandSize;const s=vf(t,r,i.view);return U(s)?s-1:new te(()=>`${s.signal} - 1`)}case"line":case"trail":case"rule":return i.scale.maxStrokeWidth;case"text":return i.scale.maxFontSize;case"point":case"square":case"circle":{if(i.scale.maxSize)return i.scale.maxSize;const s=vf(t,r,i.view);return U(s)?Math.pow(Sf*s,2):new te(()=>`pow(${Sf} * ${s.signal}, 2)`)}}throw new Error(Pi("size",e))}function vf(e,t,n){const i=Qe(e.width)?e.width.step:rr(n,"width"),r=Qe(e.height)?e.height.step:rr(n,"height");return t.x||t.y?new te(()=>{const s=[t.x?t.x.signal:i,t.y?t.y.signal:r];return`min(${s.join(", ")})`}):Math.min(i,r)}function wf(e,t){q(e)?Fx(e,t):_f(e,t)}function Fx(e,t){const n=e.component.scales,{config:i,encoding:r,markDef:s,specifiedScales:o}=e;for(const a of b(n)){const c=o[a],u=n[a],l=e.getScaleComponent(a),f=K(r[a]),d=c[t],p=l.get("type"),h=l.get("padding"),g=l.get("paddingInner"),m=bs(p,t),y=mc(a,t);if(d!==void 0&&(m?y&&x(y):x(Ga(p,t,a))),m&&y===void 0)if(d!==void 0){const v=f.timeUnit,k=f.type;switch(t){case"domainMax":case"domainMin":Bt(c[t])||k==="temporal"||v?u.set(t,{signal:Zi(c[t],{type:k,timeUnit:v})},!0):u.set(t,c[t],!0);break;default:u.copyKeyFromObject(t,c)}}else{const v=t in $f?$f[t]({model:e,channel:a,fieldOrDatumDef:f,scaleType:p,scalePadding:h,scalePaddingInner:g,domain:c.domain,domainMin:c.domainMin,domainMax:c.domainMax,markDef:s,config:i,hasNestedOffsetScale:Zc(r,a),hasSecondaryRangeChannel:!!r[He(a)]}):i.scale[t];v!==void 0&&u.set(t,v,!1)}}}const $f={bins:({model:e,fieldOrDatumDef:t})=>S(t)?Nx(e,t):void 0,interpolate:({channel:e,fieldOrDatumDef:t})=>Tx(e,t.type),nice:({scaleType:e,channel:t,domain:n,domainMin:i,domainMax:r,fieldOrDatumDef:s})=>Ox(e,t,n,i,r,s),padding:({channel:e,scaleType:t,fieldOrDatumDef:n,markDef:i,config:r})=>Ax(e,t,r.scale,n,i,r.bar),paddingInner:({scalePadding:e,channel:t,markDef:n,scaleType:i,config:r,hasNestedOffsetScale:s})=>Px(e,t,n.type,i,r.scale,s),paddingOuter:({scalePadding:e,channel:t,scaleType:n,scalePaddingInner:i,config:r,hasNestedOffsetScale:s})=>zx(e,t,n,i,r.scale,s),reverse:({fieldOrDatumDef:e,scaleType:t,channel:n,config:i})=>{const r=S(e)?e.sort:void 0;return Rx(t,r,n,i.scale)},zero:({channel:e,fieldOrDatumDef:t,domain:n,markDef:i,scaleType:r,config:s,hasSecondaryRangeChannel:o})=>Ix(e,t,n,i,r,s.scale,o)};function Ef(e){q(e)?xx(e):_f(e,"range")}function _f(e,t){const n=e.component.scales;for(const i of e.children)t==="range"?Ef(i):wf(i,t);for(const i of b(n)){let r;for(const s of e.children){const o=s.component.scales[i];if(o){const a=o.getWithExplicit(t);r=Ot(r,a,t,"scale",Hu((c,u)=>{switch(t){case"range":return c.step&&u.step?c.step-u.step:0}return 0}))}}n[i].setWithExplicit(t,r)}}function Nx(e,t){const n=t.bin;if(j(n)){const i=xo(e,t.field,n);return new te(()=>e.getSignalName(i))}else if(re(n)&&Ut(n)&&n.step!==void 0)return{step:n.step};return}function Tx(e,t){return O([ge,Be,We],e)&&t!=="nominal"?"hcl":void 0}function Ox(e,t,n,i,r,s){return Ie(s)?.bin||E(n)||r!=null||i!=null||O([se.TIME,se.UTC],e)?void 0:Y(t)?!0:void 0}function Ax(e,t,n,i,r,s){if(Y(e)){if(Xe(t)){if(n.continuousPadding!==void 0)return n.continuousPadding;const{type:o,orient:a}=r;if(o==="bar"&&!(S(i)&&(i.bin||i.timeUnit))&&(a==="vertical"&&e==="x"||a==="horizontal"&&e==="y"))return s.continuousBandSize}if(t===se.POINT)return n.pointPadding}return}function Px(e,t,n,i,r,s=!1){if(e!==void 0)return;if(Y(t)){const{bandPaddingInner:o,barBandPaddingInner:a,rectBandPaddingInner:c,bandWithNestedOffsetPaddingInner:u}=r;return s?u:X(o,n==="bar"?a:c)}else if(Xn(t)&&i===se.BAND)return r.offsetBandPaddingInner;return}function zx(e,t,n,i,r,s=!1){if(e!==void 0)return;if(Y(t)){const{bandPaddingOuter:o,bandWithNestedOffsetPaddingOuter:a}=r;if(s)return a;if(n===se.BAND)return X(o,$(i)?{signal:`${i.signal}/2`}:i/2)}else if(Xn(t)){if(n===se.POINT)return .5;if(n===se.BAND)return r.offsetBandPaddingOuter}return}function Rx(e,t,n,i){return n==="x"&&i.xReverse!==void 0?Pe(e)&&t==="descending"?$(i.xReverse)?{signal:`!${i.xReverse.signal}`}:!i.xReverse:i.xReverse:Pe(e)&&t==="descending"?!0:void 0}function Ix(e,t,n,i,r,s,o){const a=!!n&&n!=="unaggregated";if(a&&Pe(r)){if(E(n)){const c=n[0],u=n[n.length-1];if(U(c)&&c<=0&&U(u)&&u>=0)return!0}return!1}if(e==="size"&&t.type==="quantitative"&&!Sn(r))return!0;if(!(S(t)&&t.bin)&&O([...at,...Od],e)){const{orient:c,type:u}=i;return O(["bar","area","line","trail"],u)&&(c==="horizontal"&&e==="y"||c==="vertical"&&e==="x")?!1:O(["bar","area"],u)&&!o?!0:s?.zero}return!1}function Lx(e,t,n,i,r=!1){const s=Mx(t,n,i,r),{type:o}=e;return qe(t)?o!==void 0?Rg(t,o)?S(n)&&!zg(o,n.type)?(x(Ip(o,s)),s):o:(x(Rp(t,o,s)),s):s:null}function Mx(e,t,n,i){switch(t.type){case"nominal":case"ordinal":{if(mn(e)||Zr(e)==="discrete")return e==="shape"&&t.type==="ordinal"&&x(rs(e,"ordinal")),"ordinal";if(Y(e)||Xn(e)){if(O(["rect","bar","image","rule"],n.type))return"band";if(i)return"band"}else if(n.type==="arc"&&e in Kr)return"band";const r=n[me(e)];return Gt(r)||wn(t)&&t.axis?.tickBand?"band":"point"}case"temporal":return mn(e)?"time":Zr(e)==="discrete"?(x(rs(e,"temporal")),"ordinal"):S(t)&&t.timeUnit&&Z(t.timeUnit).utc?"utc":"time";case"quantitative":return mn(e)?S(t)&&j(t.bin)?"bin-ordinal":"linear":Zr(e)==="discrete"?(x(rs(e,"quantitative")),"ordinal"):"linear";case"geojson":return}throw new Error(Ha(t.type))}function Dx(e,{ignoreRange:t}={}){kf(e),lf(e);for(const n of Pg)wf(e,n);t||Ef(e)}function kf(e){q(e)?e.component.scales=jx(e):e.component.scales=Bx(e)}function jx(e){const{encoding:t,mark:n,markDef:i}=e,r={};for(const s of Qr){const o=K(t[s]);if(o&&n===xc&&s===he&&o.type===xn)continue;let a=o&&o.scale;if(o&&a!==null&&a!==!1){a??(a={});const c=Zc(t,s),u=Lx(a,s,o,i,c);r[s]=new gf(e.scaleName(`${s}`,!0),{value:u,explicit:a.type===u})}}return r}const Ux=Hu((e,t)=>lc(e)-lc(t));function Bx(e){var t;const n=e.component.scales={},i={},r=e.component.resolve;for(const s of e.children){kf(s);for(const o of b(s.component.scales))if((t=r.scale)[o]??(t[o]=Wl(o,e)),r.scale[o]==="shared"){const a=i[o],c=s.component.scales[o].getWithExplicit("type");a?$g(a.value,c.value)?i[o]=Ot(a,c,"type","scale",Ux):(r.scale[o]="independent",delete i[o]):i[o]=c}}for(const s of b(i)){const o=e.scaleName(s,!0),a=i[s];n[s]=new gf(o,a);for(const c of e.children){const u=c.component.scales[s];u&&(c.renameScale(u.get("name"),o),u.merged=!0)}}return n}class Oo{constructor(){this.nameMap={}}rename(t,n){this.nameMap[t]=n}has(t){return this.nameMap[t]!==void 0}get(t){for(;this.nameMap[t]&&t!==this.nameMap[t];)t=this.nameMap[t];return t}}function q(e){return e?.type==="unit"}function ve(e){return e?.type==="facet"}function Ao(e){return e?.type==="concat"}function Mn(e){return e?.type==="layer"}class Po{constructor(t,n,i,r,s,o,a){this.type=n,this.parent=i,this.config=s,this.correctDataNames=c=>(c.from?.data&&(c.from.data=this.lookupDataSource(c.from.data)),c.from?.facet?.data&&(c.from.facet.data=this.lookupDataSource(c.from.facet.data)),c),this.parent=i,this.config=s,this.view=oe(a),this.name=t.name??r,this.title=kt(t.title)?{text:t.title}:t.title?oe(t.title):void 0,this.scaleNameMap=i?i.scaleNameMap:new Oo,this.projectionNameMap=i?i.projectionNameMap:new Oo,this.signalNameMap=i?i.signalNameMap:new Oo,this.data=t.data,this.description=t.description,this.transforms=Ym(t.transform??[]),this.layout=n==="layer"||n==="unit"?{}:Jh(t,n,s),this.component={data:{sources:i?i.component.data.sources:[],outputNodes:i?i.component.data.outputNodes:{},outputNodeRefCounts:i?i.component.data.outputNodeRefCounts:{},isFaceted:Hi(t)||i?.component.data.isFaceted&&t.data===void 0},layoutSize:new pt,layoutHeaders:{row:{},column:{},facet:{}},mark:null,resolve:{scale:{},axis:{},legend:{},...o?C(o):{}},selection:null,scales:null,projection:null,axes:{},legends:{}}}get width(){return this.getSizeSignalRef("width")}get height(){return this.getSizeSignalRef("height")}parse(){this.parseScale(),this.parseLayoutSize(),this.renameTopLevelLayoutSizeSignal(),this.parseSelections(),this.parseProjection(),this.parseData(),this.parseAxesAndHeaders(),this.parseLegends(),this.parseMarkGroup()}parseScale(){Dx(this)}parseProjection(){nf(this)}renameTopLevelLayoutSizeSignal(){this.getName("width")!=="width"&&this.renameSignal(this.getName("width"),"width"),this.getName("height")!=="height"&&this.renameSignal(this.getName("height"),"height")}parseLegends(){Ql(this)}assembleEncodeFromView(t){const{style:n,...i}=t,r={};for(const s of b(i)){const o=i[s];o!==void 0&&(r[s]=B(o))}return r}assembleGroupEncodeEntry(t){let n={};return this.view&&(n=this.assembleEncodeFromView(this.view)),!t&&(this.description&&(n.description=B(this.description)),this.type==="unit"||this.type==="layer")?{width:this.getSizeSignalRef("width"),height:this.getSizeSignalRef("height"),...n}:M(n)?void 0:n}assembleLayout(){if(!this.layout)return;const{spacing:t,...n}=this.layout,{component:i,config:r}=this,s=cb(i.layoutHeaders,r);return{padding:t,...this.assembleDefaultLayout(),...n,...s?{titleBand:s}:{}}}assembleDefaultLayout(){return{}}assembleHeaderMarks(){const{layoutHeaders:t}=this.component;let n=[];for(const i of _e)t[i].title&&n.push(nb(this,i));for(const i of po)n=n.concat(ib(this,i));return n}assembleAxes(){return Wy(this.component.axes,this.config)}assembleLegends(){return Jl(this)}assembleProjections(){return Ob(this)}assembleTitle(){const{encoding:t,...n}=this.title??{},i={...ka(this.config.title).nonMarkTitleProperties,...n,...t?{encode:{update:t}}:{}};return i.text?(O(["unit","layer"],this.type)?O(["middle",void 0],i.anchor)&&(i.frame??(i.frame="group")):i.anchor??(i.anchor="start"),M(i)?void 0:i):void 0}assembleGroup(t=[]){const n={};t=t.concat(this.assembleSignals()),t.length>0&&(n.signals=t);const i=this.assembleLayout();i&&(n.layout=i),n.marks=[].concat(this.assembleHeaderMarks(),this.assembleMarks());const r=!this.parent||ve(this.parent)?df(this):[];r.length>0&&(n.scales=r);const s=this.assembleAxes();s.length>0&&(n.axes=s);const o=this.assembleLegends();return o.length>0&&(n.legends=o),n}getName(t){return W((this.name?`${this.name}_`:"")+t)}getDataName(t){return this.getName(G[t].toLowerCase())}requestDataName(t){const n=this.getDataName(t),i=this.component.data.outputNodeRefCounts;return i[n]=(i[n]||0)+1,n}getSizeSignalRef(t){if(ve(this.parent)){const n=Ul(t),i=Ni(n),r=this.component.scales[i];if(r&&!r.merged){const s=r.get("type"),o=r.get("range");if(J(s)&&Ct(o)){const a=r.get("name"),c=Sr(this,i),u=To(c);if(u){const l=w({aggregate:"distinct",field:u},{expr:"datum"});return{signal:jl(a,r,l)}}else return x(ns(i)),null}}}return{signal:this.signalNameMap.get(this.getName(t))}}lookupDataSource(t){const n=this.component.data.outputNodes[t];return n?n.getSource():t}getSignalName(t){return this.signalNameMap.get(t)}renameSignal(t,n){this.signalNameMap.rename(t,n)}renameScale(t,n){this.scaleNameMap.rename(t,n)}renameProjection(t,n){this.projectionNameMap.rename(t,n)}scaleName(t,n){return n?this.getName(t):ya(t)&&qe(t)&&this.component.scales[t]||this.scaleNameMap.has(this.getName(t))?this.scaleNameMap.get(this.getName(t)):void 0}projectionName(t){return t?this.getName("projection"):this.component.projection&&!this.component.projection.merged||this.projectionNameMap.has(this.getName("projection"))?this.projectionNameMap.get(this.getName("projection")):void 0}getScaleComponent(t){if(!this.component.scales)throw new Error("getScaleComponent cannot be called before parseScale(). Make sure you have called parseScale or use parseUnitModelWithScale().");const n=this.component.scales[t];return n&&!n.merged?n:this.parent?this.parent.getScaleComponent(t):void 0}getScaleType(t){const n=this.getScaleComponent(t);return n?n.get("type"):void 0}getSelectionComponent(t,n){let i=this.component.selection[t];if(!i&&this.parent&&(i=this.parent.getSelectionComponent(t,n)),!i)throw new Error(ep(n));return i}hasAxisOrientSignalRef(){return this.component.axes.x?.some(t=>t.hasOrientSignalRef())||this.component.axes.y?.some(t=>t.hasOrientSignalRef())}}class Cf extends Po{vgField(t,n={}){const i=this.fieldDef(t);return i?w(i,n):void 0}reduceFieldDef(t,n){return Fh(this.getMapping(),(i,r,s)=>{const o=Ie(r);return o?t(i,o,s):i},n)}forEachFieldDef(t,n){As(this.getMapping(),(i,r)=>{const s=Ie(i);s&&t(s,r)},n)}}class vr extends I{clone(){return new vr(null,C(this.transform))}constructor(t,n){super(t);this.transform=n,this.transform=C(n);const i=this.transform.as??[void 0,void 0];this.transform.as=[i[0]??"value",i[1]??"density"];const r=this.transform.resolve??"shared";this.transform.resolve=r}dependentFields(){return new Set([this.transform.density,...this.transform.groupby??[]])}producedFields(){return new Set(this.transform.as)}hash(){return`DensityTransform ${P(this.transform)}`}assemble(){const{density:t,...n}=this.transform,i={type:"kde",field:t,...n};return i.resolve=this.transform.resolve,i}}class wr extends I{clone(){return new wr(null,C(this.transform))}constructor(t,n){super(t);this.transform=n,this.transform=C(n)}dependentFields(){return new Set([this.transform.extent])}producedFields(){return new Set([])}hash(){return`ExtentTransform ${P(this.transform)}`}assemble(){const{extent:t,param:n}=this.transform,i={type:"extent",field:t,signal:n};return i}}class $r extends I{clone(){return new $r(this.parent,C(this.transform))}constructor(t,n){super(t);this.transform=n,this.transform=C(n);const{flatten:i,as:r=[]}=this.transform;this.transform.as=i.map((s,o)=>r[o]??s)}dependentFields(){return new Set(this.transform.flatten)}producedFields(){return new Set(this.transform.as)}hash(){return`FlattenTransform ${P(this.transform)}`}assemble(){const{flatten:t,as:n}=this.transform,i={type:"flatten",fields:t,as:n};return i}}class Er extends I{clone(){return new Er(null,C(this.transform))}constructor(t,n){super(t);this.transform=n,this.transform=C(n);const i=this.transform.as??[void 0,void 0];this.transform.as=[i[0]??"key",i[1]??"value"]}dependentFields(){return new Set(this.transform.fold)}producedFields(){return new Set(this.transform.as)}hash(){return`FoldTransform ${P(this.transform)}`}assemble(){const{fold:t,as:n}=this.transform,i={type:"fold",fields:t,as:n};return i}}class Dn extends I{clone(){return new Dn(null,C(this.fields),this.geojson,this.signal)}static parseAll(t,n){if(n.component.projection&&!n.component.projection.isFit)return t;let i=0;for(const r of[[Te,Ne],[Ee,Oe]]){const s=r.map(o=>{const a=K(n.encoding[o]);return S(a)?a.field:Ke(a)?{expr:`${a.datum}`}:Re(a)?{expr:`${a.value}`}:void 0});(s[0]||s[1])&&(t=new Dn(t,s,null,n.getName(`geojson_${i++}`)))}if(n.channelHasField(he)){const r=n.typedFieldDef(he);r.type===xn&&(t=new Dn(t,null,r.field,n.getName(`geojson_${i++}`)))}return t}constructor(t,n,i,r){super(t);this.fields=n,this.geojson=i,this.signal=r}dependentFields(){const t=(this.fields??[]).filter(N);return new Set([...this.geojson?[this.geojson]:[],...t])}producedFields(){return new Set}hash(){return`GeoJSON ${this.geojson} ${this.signal} ${P(this.fields)}`}assemble(){return[...this.geojson?[{type:"filter",expr:`isValid(datum["${this.geojson}"])`}]:[],{type:"geojson",...this.fields?{fields:this.fields}:{},...this.geojson?{geojson:this.geojson}:{},signal:this.signal}]}}class fi extends I{clone(){return new fi(null,this.projection,C(this.fields),C(this.as))}constructor(t,n,i,r){super(t);this.projection=n,this.fields=i,this.as=r}static parseAll(t,n){if(!n.projectionName())return t;for(const i of[[Te,Ne],[Ee,Oe]]){const r=i.map(o=>{const a=K(n.encoding[o]);return S(a)?a.field:Ke(a)?{expr:`${a.datum}`}:Re(a)?{expr:`${a.value}`}:void 0}),s=i[0]===Ee?"2":"";(r[0]||r[1])&&(t=new fi(t,n.projectionName(),r,[n.getName(`x${s}`),n.getName(`y${s}`)]))}return t}dependentFields(){return new Set(this.fields.filter(N))}producedFields(){return new Set(this.as)}hash(){return`Geopoint ${this.projection} ${P(this.fields)} ${P(this.as)}`}assemble(){return{type:"geopoint",projection:this.projection,fields:this.fields,as:this.as}}}class rn extends I{clone(){return new rn(null,C(this.transform))}constructor(t,n){super(t);this.transform=n}dependentFields(){return new Set([this.transform.impute,this.transform.key,...this.transform.groupby??[]])}producedFields(){return new Set([this.transform.impute])}processSequence(t){const{start:n=0,stop:i,step:r}=t,s=[n,i,...r?[r]:[]].join(",");return{signal:`sequence(${s})`}}static makeFromTransform(t,n){return new rn(t,n)}static makeFromEncoding(t,n){const i=n.encoding,r=i.x,s=i.y;if(S(r)&&S(s)){const o=r.impute?r:s.impute?s:void 0;if(o===void 0)return;const a=r.impute?s:s.impute?r:void 0,{method:c,value:u,frame:l,keyvals:f}=o.impute,d=tu(n.mark,i);return new rn(t,{impute:o.field,key:a.field,...c?{method:c}:{},...u!==void 0?{value:u}:{},...l?{frame:l}:{},...f!==void 0?{keyvals:f}:{},...d.length?{groupby:d}:{}})}return null}hash(){return`Impute ${P(this.transform)}`}assemble(){const{impute:t,key:n,keyvals:i,method:r,groupby:s,value:o,frame:a=[null,null]}=this.transform,c={type:"impute",field:t,key:n,...i?{keyvals:Tm(i)?this.processSequence(i):i}:{},method:"value",...s?{groupby:s}:{},value:!r||r==="value"?o:null};if(r&&r!=="value"){const u={type:"window",as:[`imputed_${t}_value`],ops:[r],fields:[t],frame:a,ignorePeers:!1,...s?{groupby:s}:{}},l={type:"formula",expr:`datum.${t} === null ? datum.imputed_${t}_value : datum.${t}`,as:t};return[c,u,l]}else return[c]}}class _r extends I{clone(){return new _r(null,C(this.transform))}constructor(t,n){super(t);this.transform=n,this.transform=C(n);const i=this.transform.as??[void 0,void 0];this.transform.as=[i[0]??n.on,i[1]??n.loess]}dependentFields(){return new Set([this.transform.loess,this.transform.on,...this.transform.groupby??[]])}producedFields(){return new Set(this.transform.as)}hash(){return`LoessTransform ${P(this.transform)}`}assemble(){const{loess:t,on:n,...i}=this.transform,r={type:"loess",x:n,y:t,...i};return r}}class di extends I{clone(){return new di(null,C(this.transform),this.secondary)}constructor(t,n,i){super(t);this.transform=n,this.secondary=i}static make(t,n,i,r){const s=n.component.data.sources,{from:o}=i;let a=null;if(Om(o)){let c=Of(o.data,s);c||(c=new en(o.data),s.push(c));const u=n.getName(`lookup_${r}`);a=new ye(c,u,G.Lookup,n.component.data.outputNodeRefCounts),n.component.data.outputNodes[u]=a}else if(Am(o)){const c=o.param;i={as:c,...i};let u;try{u=n.getSelectionComponent(W(c),c)}catch(l){throw new Error(rp(c))}if(a=u.materialized,!a)throw new Error(sp(c))}return new di(t,i,a.getSource())}dependentFields(){return new Set([this.transform.lookup])}producedFields(){return new Set(this.transform.as?V(this.transform.as):this.transform.from.fields)}hash(){return`Lookup ${P({transform:this.transform,secondary:this.secondary})}`}assemble(){let t;if(this.transform.from.fields)t={values:this.transform.from.fields,...this.transform.as?{as:V(this.transform.as)}:{}};else{let n=this.transform.as;N(n)||(x(pp),n="_lookup"),t={as:[n]}}return{type:"lookup",from:this.secondary,key:this.transform.from.key,fields:[this.transform.lookup],...t,...this.transform.default?{default:this.transform.default}:{}}}}class kr extends I{clone(){return new kr(null,C(this.transform))}constructor(t,n){super(t);this.transform=n,this.transform=C(n);const i=this.transform.as??[void 0,void 0];this.transform.as=[i[0]??"prob",i[1]??"value"]}dependentFields(){return new Set([this.transform.quantile,...this.transform.groupby??[]])}producedFields(){return new Set(this.transform.as)}hash(){return`QuantileTransform ${P(this.transform)}`}assemble(){const{quantile:t,...n}=this.transform,i={type:"quantile",field:t,...n};return i}}class Cr extends I{clone(){return new Cr(null,C(this.transform))}constructor(t,n){super(t);this.transform=n,this.transform=C(n);const i=this.transform.as??[void 0,void 0];this.transform.as=[i[0]??n.on,i[1]??n.regression]}dependentFields(){return new Set([this.transform.regression,this.transform.on,...this.transform.groupby??[]])}producedFields(){return new Set(this.transform.as)}hash(){return`RegressionTransform ${P(this.transform)}`}assemble(){const{regression:t,on:n,...i}=this.transform,r={type:"regression",x:n,y:t,...i};return r}}class Fr extends I{clone(){return new Fr(null,C(this.transform))}constructor(t,n){super(t);this.transform=n}addDimensions(t){this.transform.groupby=je((this.transform.groupby??[]).concat(t),n=>n)}producedFields(){return}dependentFields(){return new Set([this.transform.pivot,this.transform.value,...this.transform.groupby??[]])}hash(){return`PivotTransform ${P(this.transform)}`}assemble(){const{pivot:t,value:n,groupby:i,limit:r,op:s}=this.transform;return{type:"pivot",field:t,value:n,...r!==void 0?{limit:r}:{},...s!==void 0?{op:s}:{},...i!==void 0?{groupby:i}:{}}}}class Nr extends I{clone(){return new Nr(null,C(this.transform))}constructor(t,n){super(t);this.transform=n}dependentFields(){return new Set}producedFields(){return new Set}hash(){return`SampleTransform ${P(this.transform)}`}assemble(){return{type:"sample",size:this.transform.sample}}}function Ff(e){let t=0;function n(i,r){if(i instanceof en&&(!i.isGenerator&&!Cn(i.data))){e.push(r);const s={name:null,source:r.name,transform:[]};r=s}if(i instanceof ce&&(i.parent instanceof en&&!r.source?(r.format={...r.format,parse:i.assembleFormatParse()},r.transform.push(...i.assembleTransforms(!0))):r.transform.push(...i.assembleTransforms())),i instanceof Rn){r.name||(r.name=`data_${t++}`),!r.source||r.transform.length>0?(e.push(r),i.data=r.name):i.data=r.source,e.push(...i.assemble());return}if((i instanceof ci||i instanceof ui||i instanceof In||i instanceof On||i instanceof An||i instanceof fi||i instanceof Me||i instanceof di||i instanceof Ln||i instanceof nn||i instanceof Er||i instanceof $r||i instanceof vr||i instanceof _r||i instanceof kr||i instanceof Cr||i instanceof Rt||i instanceof Nr||i instanceof Fr||i instanceof wr)&&r.transform.push(i.assemble()),(i instanceof et||i instanceof Je||i instanceof rn||i instanceof ht||i instanceof Dn)&&r.transform.push(...i.assemble()),i instanceof ye){if(r.source&&r.transform.length===0)i.setSource(r.source);else if(i.parent instanceof ye)i.setSource(r.name);else if(r.name||(r.name=`data_${t++}`),i.setSource(r.name),i.numChildren()===1){e.push(r);const s={name:null,source:r.name,transform:[]};r=s}}switch(i.numChildren()){case 0:i instanceof ye&&(!r.source||r.transform.length>0)&&e.push(r);break;case 1:n(i.children[0],r);break;default:{r.name||(r.name=`data_${t++}`);let s=r.name;!r.source||r.transform.length>0?e.push(r):s=r.source;for(const o of i.children){const a={name:null,source:s,transform:[]};n(o,a)}break}}}return n}function Wx(e){const t=[],n=Ff(t);for(const i of e.children)n(i,{source:e.name,name:null,transform:[]});return t}function Hx(e,t){const n=[],i=Ff(n);let r=0;for(const o of e.sources){o.hasName()||(o.dataName=`source_${r++}`);const a=o.assemble();i(o,a)}for(const o of n)o.transform.length===0&&delete o.transform;let s=0;for(const[o,a]of n.entries())(a.transform??[]).length===0&&!a.source&&n.splice(s++,0,n.splice(o,1)[0]);for(const o of n)for(const a of o.transform??[])a.type==="lookup"&&(a.from=e.outputNodes[a.from].getSource());for(const o of n)o.name in t&&(o.values=t[o.name]);return n}function qx(e){return e==="top"||e==="left"||$(e)?"header":"footer"}function Gx(e){for(const t of _e)Vx(e,t);Tf(e,"x"),Tf(e,"y")}function Vx(e,t){const{facet:n,config:i,child:r,component:s}=e;if(e.channelHasField(t)){const o=n[t],a=zn("title",null,i,t);let c=$n(o,i,{allowDisabling:!0,includeDefault:a===void 0||!!a});r.component.layoutHeaders[t].title&&(c=E(c)?c.join(", "):c,c+=` / ${r.component.layoutHeaders[t].title}`,r.component.layoutHeaders[t].title=null);const u=zn("labelOrient",o.header,i,t),l=o.header!==null?X(o.header?.labels,i.header.labels,!0):!1,f=O(["bottom","right"],u)?"footer":"header";s.layoutHeaders[t]={title:o.header!==null?c:null,facetFieldDef:o,[f]:t==="facet"?[]:[Nf(e,t,l)]}}}function Nf(e,t,n){const i=t==="row"?"height":"width";return{labels:n,sizeSignal:e.child.component.layoutSize.get(i)?e.child.getSizeSignalRef(i):void 0,axes:[]}}function Tf(e,t){const{child:n}=e;if(n.component.axes[t]){const{layoutHeaders:i,resolve:r}=e.component;if(r.axis[t]=yo(r,t),r.axis[t]==="shared"){const s=t==="x"?"column":"row",o=i[s];for(const a of n.component.axes[t]){const c=qx(a.get("orient"));o[c]??(o[c]=[Nf(e,s,!1)]);const u=ai(a,"main",e.config,{header:!0});u&&o[c][0].axes.push(u),a.mainExtracted=!0}}}}function Xx(e){zo(e),Tr(e,"width"),Tr(e,"height")}function Yx(e){zo(e);const t=e.layout.columns===1?"width":"childWidth",n=e.layout.columns===void 0?"height":"childHeight";Tr(e,t),Tr(e,n)}function zo(e){for(const t of e.children)t.parseLayoutSize()}function Tr(e,t){const n=Ul(t),i=Ni(n),r=e.component.resolve,s=e.component.layoutSize;let o;for(const a of e.children){const c=a.component.layoutSize.getWithExplicit(n),u=r.scale[i]??Wl(i,e);if(u==="independent"&&c.value==="step"){o=void 0;break}if(o){if(u==="independent"&&o.value!==c.value){o=void 0;break}o=Ot(o,c,n,"")}else o=c}if(o){for(const a of e.children)e.renameSignal(a.getName(n),e.getName(t)),a.component.layoutSize.set(n,"merged",!1);s.setWithExplicit(t,o)}else s.setWithExplicit(t,{explicit:!1,value:void 0})}function Kx(e){const{size:t,component:n}=e;for(const i of at){const r=me(i);if(t[r]){const s=t[r];n.layoutSize.set(r,Qe(s)?"step":s,!0)}else{const s=Qx(e,r);n.layoutSize.set(r,s,!1)}}}function Qx(e,t){const n=t==="width"?"x":"y",i=e.config,r=e.getScaleComponent(n);if(r){const s=r.get("type"),o=r.get("range");if(J(s)){const a=sr(i.view,t);return Ct(o)||Qe(a)?"step":a}else return Hs(i.view,t)}else{if(e.hasProjection||e.mark==="arc")return Hs(i.view,t);{const s=sr(i.view,t);return Qe(s)?s.step:s}}}function Ro(e,t,n){return w(t,{suffix:`by_${w(e)}`,...n})}class pi extends Cf{constructor(t,n,i,r){super(t,"facet",n,i,r,t.resolve);this.child=jo(t.spec,this,this.getName("child"),void 0,r),this.children=[this.child],this.facet=this.initFacet(t.facet)}initFacet(t){if(!ei(t))return{facet:this.initFacetFieldDef(t,"facet")};const n=b(t),i={};for(const r of n){if(![tt,nt].includes(r)){x(Pi(r,"facet"));break}const s=t[r];if(s.field===void 0){x(is(s,r));break}i[r]=this.initFacetFieldDef(s,r)}return i}initFacetFieldDef(t,n){const i=Os(t,n);return i.header?i.header=oe(i.header):i.header===null&&(i.header=null),i}channelHasField(t){return!!this.facet[t]}fieldDef(t){return this.facet[t]}parseData(){this.component.data=Or(this),this.child.parseData()}parseLayoutSize(){zo(this)}parseSelections(){this.child.parseSelections(),this.component.selection=this.child.component.selection}parseMarkGroup(){this.child.parseMarkGroup()}parseAxesAndHeaders(){this.child.parseAxesAndHeaders(),Gx(this)}assembleSelectionTopLevelSignals(t){return this.child.assembleSelectionTopLevelSignals(t)}assembleSignals(){return this.child.assembleSignals(),[]}assembleSelectionData(t){return this.child.assembleSelectionData(t)}getHeaderLayoutMixins(){const t={};for(const n of _e)for(const i of go){const r=this.component.layoutHeaders[n],s=r[i],{facetFieldDef:o}=r;if(o){const a=zn("titleOrient",o.header,this.config,n);if(["right","bottom"].includes(a)){const c=mr(n,a);t.titleAnchor??(t.titleAnchor={}),t.titleAnchor[c]="end"}}if(s?.[0]){const a=n==="row"?"height":"width",c=i==="header"?"headerBand":"footerBand";n!=="facet"&&!this.child.component.layoutSize.get(a)&&(t[c]??(t[c]={}),t[c][n]=.5),r.title&&(t.offset??(t.offset={}),t.offset[n==="row"?"rowTitle":"columnTitle"]=10)}}return t}assembleDefaultLayout(){const{column:t,row:n}=this.facet,i=t?this.columnDistinctSignal():n?1:void 0;let r="all";return(!n&&this.component.resolve.scale.x==="independent"||!t&&this.component.resolve.scale.y==="independent")&&(r="none"),{...this.getHeaderLayoutMixins(),...i?{columns:i}:{},bounds:"full",align:r}}assembleLayoutSignals(){return this.child.assembleLayoutSignals()}columnDistinctSignal(){if(this.parent&&this.parent instanceof pi)return;{const t=this.getName("column_domain");return{signal:`length(data('${t}'))`}}}assembleGroupStyle(){return}assembleGroup(t){return this.parent&&this.parent instanceof pi?{...this.channelHasField("column")?{encode:{update:{columns:{field:w(this.facet.column,{prefix:"distinct"})}}}}:{},...super.assembleGroup(t)}:super.assembleGroup(t)}getCardinalityAggregateForChild(){const t=[],n=[],i=[];if(this.child instanceof pi){if(this.child.channelHasField("column")){const r=w(this.child.facet.column);t.push(r),n.push("distinct"),i.push(`distinct_${r}`)}}else for(const r of at){const s=this.child.component.scales[r];if(s&&!s.merged){const o=s.get("type"),a=s.get("range");if(J(o)&&Ct(a)){const c=Sr(this.child,r),u=To(c);u?(t.push(u),n.push("distinct"),i.push(`distinct_${u}`)):x(ns(r))}}}return{fields:t,ops:n,as:i}}assembleFacet(){const{name:t,data:n}=this.component.data.facetRoot,{row:i,column:r}=this.facet,{fields:s,ops:o,as:a}=this.getCardinalityAggregateForChild(),c=[];for(const l of _e){const f=this.facet[l];if(f){c.push(w(f));const{bin:d,sort:p}=f;if(j(d)&&c.push(w(f,{binSuffix:"end"})),lt(p)){const{field:h,op:g=Wi}=p,m=Ro(f,p);i&&r?(s.push(m),o.push("max"),a.push(m)):(s.push(h),o.push(g),a.push(m))}else if(E(p)){const h=Pn(f,l);s.push(h),o.push("max"),a.push(h)}}}const u=!!i&&!!r;return{name:t,data:n,groupby:c,...u||s.length>0?{aggregate:{...u?{cross:u}:{},...s.length?{fields:s,ops:o,as:a}:{}}}:{}}}facetSortFields(t){const{facet:n}=this,i=n[t];return i?lt(i.sort)?[Ro(i,i.sort,{expr:"datum"})]:E(i.sort)?[Pn(i,t,{expr:"datum"})]:[w(i,{expr:"datum"})]:[]}facetSortOrder(t){const{facet:n}=this,i=n[t];if(i){const{sort:r}=i,s=(lt(r)?r.order:!E(r)&&r)||"ascending";return[s]}return[]}assembleLabelTitle(){const{facet:t,config:n}=this;if(t.facet)return ho(t.facet,"facet",n);const i={row:["top","bottom"],column:["left","right"]};for(const r of po)if(t[r]){const s=zn("labelOrient",t[r]?.header,n,r);if(i[r].includes(s))return ho(t[r],r,n)}return}assembleMarks(){const{child:t}=this,n=this.component.data.facetRoot,i=Wx(n),r=t.assembleGroupEncodeEntry(!1),s=this.assembleLabelTitle()||t.assembleTitle(),o=t.assembleGroupStyle(),a={name:this.getName("cell"),type:"group",...s?{title:s}:{},...o?{style:o}:{},from:{facet:this.assembleFacet()},sort:{field:_e.map(c=>this.facetSortFields(c)).flat(),order:_e.map(c=>this.facetSortOrder(c)).flat()},...i.length>0?{data:i}:{},...r?{encode:{update:r}}:{},...t.assembleGroup(uy(this,[]))};return[a]}getMapping(){return this.facet}}function Zx(e,t){const{row:n,column:i}=t;if(n&&i){let r=null;for(const s of[n,i])if(lt(s.sort)){const{field:o,op:a=Wi}=s.sort;e=r=new nn(e,{joinaggregate:[{op:a,field:o,as:Ro(s,s.sort,{forAs:!0})}],groupby:[w(s)]})}return r}return null}function Of(e,t){for(const n of t){const i=n.data;if(e.name&&n.hasName()&&e.name!==n.dataName)continue;const r=e.format?.mesh,s=i.format?.feature;if(r&&s)continue;const o=e.format?.feature;if((o||s)&&o!==s)continue;const a=i.format?.mesh;if((r||a)&&r!==a)continue;if(ri(e)&&ri(i)){if(be(e.values,i.values))return n}else if(Cn(e)&&Cn(i)){if(e.url===i.url)return n}else if(qu(e)&&e.name===n.dataName)return n}return null}function Jx(e,t){if(e.data||!e.parent){if(e.data===null){const i=new en({values:[]});return t.push(i),i}const n=Of(e.data,t);if(n)return At(e.data)||(n.data.format=ra({},e.data.format,n.data.format)),!n.hasName()&&e.data.name&&(n.dataName=e.data.name),n;{const i=new en(e.data);return t.push(i),i}}else return e.parent.component.data.facetRoot?e.parent.component.data.facetRoot:e.parent.component.data.main}function eS(e,t,n){let i=0;for(const r of t.transforms){let s,o;if(Bm(r))o=e=new An(e,r),s="derived";else if(Ys(r)){const a=Hb(r);o=e=ce.makeWithAncestors(e,{},a,n)??e,e=new On(e,t,r.filter)}else if(Lu(r))o=e=et.makeFromTransform(e,r,t),s="number";else if(Hm(r)){s="date";const a=n.getWithExplicit(r.field);a.value===void 0&&(e=new ce(e,{[r.field]:s}),n.set(r.field,s,!1)),o=e=Je.makeFromTransform(e,r)}else if(qm(r))o=e=Me.makeFromTransform(e,r),s="number",ao(t)&&(e=new Rt(e));else if(Iu(r))o=e=di.make(e,t,r,i++),s="derived";else if(Dm(r))o=e=new Ln(e,r),s="number";else if(jm(r))o=e=new nn(e,r),s="number";else if(Gm(r))o=e=ht.makeFromTransform(e,r),s="derived";else if(Vm(r))o=e=new Er(e,r),s="derived";else if(Xm(r))o=e=new wr(e,r),s="derived";else if(Um(r))o=e=new $r(e,r),s="derived";else if(Pm(r))o=e=new Fr(e,r),s="derived";else if(Mm(r))e=new Nr(e,r);else if(Wm(r))o=e=rn.makeFromTransform(e,r),s="derived";else if(zm(r))o=e=new vr(e,r),s="derived";else if(Rm(r))o=e=new kr(e,r),s="derived";else if(Im(r))o=e=new Cr(e,r),s="derived";else if(Lm(r))o=e=new _r(e,r),s="derived";else{x(dp(r));continue}if(o&&s!==void 0)for(const a of o.producedFields()??[])n.set(a,s,!1)}return e}function Or(e){let t=Jx(e,e.component.data.sources);const{outputNodes:n,outputNodeRefCounts:i}=e.component.data,r=e.data,s=r&&(At(r)||Cn(r)||ri(r)),o=!s&&e.parent?e.parent.component.data.ancestorParse.clone():new oy;At(r)?(Gu(r)?t=new ui(t,r.sequence):Zs(r)&&(t=new ci(t,r.graticule)),o.parseNothing=!0):r?.format?.parse===null&&(o.parseNothing=!0),t=ce.makeExplicit(t,e,o)??t,t=new Rt(t);const a=e.parent&&Mn(e.parent);(q(e)||ve(e))&&(a&&(t=et.makeFromEncoding(t,e)??t)),e.transforms.length>0&&(t=eS(t,e,o));const c=Gb(e),u=qb(e);t=ce.makeWithAncestors(t,{},{...c,...u},o)??t,q(e)&&(t=Dn.parseAll(t,e),t=fi.parseAll(t,e)),(q(e)||ve(e))&&(a||(t=et.makeFromEncoding(t,e)??t),t=Je.makeFromEncoding(t,e)??t,t=An.parseAllForSortIndex(t,e));const l=t=Ar(G.Raw,e,t);if(q(e)){const m=Me.makeFromEncoding(t,e);m&&(t=m,ao(e)&&(t=new Rt(t))),t=rn.makeFromEncoding(t,e)??t,t=ht.makeFromEncoding(t,e)??t}let f,d;if(q(e)){const{markDef:m,mark:y,config:v}=e,k=R("invalid",m,v),{marks:_,scales:T}=d=Xu({invalid:k,isPath:Ft(y)});_!==T&&T==="include-invalid-values"&&(f=t=Ar(G.PreFilterInvalid,e,t)),_==="exclude-invalid-values"&&(t=In.make(t,e,d)??t)}const p=t=Ar(G.Main,e,t);let h;if(q(e)&&d){const{marks:m,scales:y}=d;m==="include-invalid-values"&&y==="exclude-invalid-values"&&(t=In.make(t,e,d)??t,h=t=Ar(G.PostFilterInvalid,e,t))}q(e)&&Uy(e,p);let g=null;if(ve(e)){const m=e.getName("facet");t=Zx(t,e.facet)??t,g=new Rn(t,e,m,p.getSource()),n[m]=g}return{...e.component.data,outputNodes:n,outputNodeRefCounts:i,raw:l,main:p,facetRoot:g,ancestorParse:o,preFilterInvalid:f,postFilterInvalid:h}}function Ar(e,t,n){const{outputNodes:i,outputNodeRefCounts:r}=t.component.data,s=t.getDataName(e),o=new ye(n,s,e,r);return i[s]=o,o}class tS extends Po{constructor(t,n,i,r){super(t,"concat",n,i,r,t.resolve);(t.resolve?.axis?.x==="shared"||t.resolve?.axis?.y==="shared")&&x(up),this.children=this.getChildren(t).map((s,o)=>jo(s,this,this.getName(`concat_${o}`),void 0,r))}parseData(){this.component.data=Or(this);for(const t of this.children)t.parseData()}parseSelections(){this.component.selection={};for(const t of this.children){t.parseSelections();for(const n of b(t.component.selection))this.component.selection[n]=t.component.selection[n]}}parseMarkGroup(){for(const t of this.children)t.parseMarkGroup()}parseAxesAndHeaders(){for(const t of this.children)t.parseAxesAndHeaders()}getChildren(t){return ir(t)?t.vconcat:Ws(t)?t.hconcat:t.concat}parseLayoutSize(){Yx(this)}parseAxisGroup(){return null}assembleSelectionTopLevelSignals(t){return this.children.reduce((n,i)=>i.assembleSelectionTopLevelSignals(n),t)}assembleSignals(){return this.children.forEach(t=>t.assembleSignals()),[]}assembleLayoutSignals(){const t=mo(this);for(const n of this.children)t.push(...n.assembleLayoutSignals());return t}assembleSelectionData(t){return this.children.reduce((n,i)=>i.assembleSelectionData(n),t)}assembleMarks(){return this.children.map(t=>{const n=t.assembleTitle(),i=t.assembleGroupStyle(),r=t.assembleGroupEncodeEntry(!1);return{type:"group",name:t.getName("group"),...n?{title:n}:{},...i?{style:i}:{},...r?{encode:{update:r}}:{},...t.assembleGroup()}})}assembleGroupStyle(){return}assembleDefaultLayout(){const t=this.layout.columns;return{...t!=null?{columns:t}:{},bounds:"full",align:"each"}}}function nS(e){return e===!1||e===null}const iS={disable:1,gridScale:1,scale:1,...Xc,labelExpr:1,encode:1},Af=b(iS);class Io extends pt{constructor(t={},n={},i=!1){super();this.explicit=t,this.implicit=n,this.mainExtracted=i}clone(){return new Io(C(this.explicit),C(this.implicit),this.mainExtracted)}hasAxisPart(t){return t==="axis"?!0:t==="grid"||t==="title"?!!this.get(t):!nS(this.get(t))}hasOrientSignalRef(){return $(this.explicit.orient)}}function rS(e,t,n){const{encoding:i,config:r}=e,s=K(i[t])??K(i[He(t)]),o=e.axis(t)||{},{format:a,formatType:c}=o;if(Xt(c))return{text:ze({fieldOrDatumDef:s,field:"datum.value",format:a,formatType:c,config:r}),...n};if(a===void 0&&c===void 0&&r.customFormatTypes){if(vn(s)==="quantitative"){if(wn(s)&&s.stack==="normalize"&&r.normalizedNumberFormatType)return{text:ze({fieldOrDatumDef:s,field:"datum.value",format:r.normalizedNumberFormat,formatType:r.normalizedNumberFormatType,config:r}),...n};if(r.numberFormatType)return{text:ze({fieldOrDatumDef:s,field:"datum.value",format:r.numberFormat,formatType:r.numberFormatType,config:r}),...n}}if(vn(s)==="temporal"&&r.timeFormatType&&S(s)&&!s.timeUnit)return{text:ze({fieldOrDatumDef:s,field:"datum.value",format:r.timeFormat,formatType:r.timeFormatType,config:r}),...n}}return n}function sS(e){return at.reduce((t,n)=>(e.component.scales[n]&&(t[n]=[dS(n,e)]),t),{})}const oS={bottom:"top",top:"bottom",left:"right",right:"left"};function aS(e){const{axes:t,resolve:n}=e.component,i={top:0,bottom:0,right:0,left:0};for(const r of e.children){r.parseAxesAndHeaders();for(const s of b(r.component.axes))n.axis[s]=yo(e.component.resolve,s),n.axis[s]==="shared"&&(t[s]=cS(t[s],r.component.axes[s]),t[s]||(n.axis[s]="independent",delete t[s]))}for(const r of at){for(const s of e.children){if(!s.component.axes[r])continue;if(n.axis[r]==="independent"){t[r]=(t[r]??[]).concat(s.component.axes[r]);for(const o of s.component.axes[r]){const{value:a,explicit:c}=o.getWithExplicit("orient");if($(a))continue;if(i[a]>0&&!c){const u=oS[a];i[a]>i[u]&&o.set("orient",u,!1)}i[a]++}}delete s.component.axes[r]}if(n.axis[r]==="independent"&&t[r]&&t[r].length>1)for(const[s,o]of(t[r]||[]).entries())s>0&&!!o.get("grid")&&!o.explicit.grid&&(o.implicit.grid=!1)}}function cS(e,t){if(e){if(e.length!==t.length)return;const n=e.length;for(let i=0;in.clone());return e}function uS(e,t){for(const n of Af){const i=Ot(e.getWithExplicit(n),t.getWithExplicit(n),n,"axis",(r,s)=>{switch(n){case"title":return Ra(r,s);case"gridScale":return{explicit:r.explicit,value:X(r.value,s.value)}}return ar(r,s,n,"axis")});e.setWithExplicit(n,i)}return e}function lS(e,t,n,i,r){if(t==="disable")return n!==void 0;n=n||{};switch(t){case"titleAngle":case"labelAngle":return e===($(n.labelAngle)?n.labelAngle:qn(n.labelAngle));case"values":return!!n.values;case"encode":return!!n.encoding||!!n.labelAngle;case"title":if(e===Rl(i,r))return!0}return e===n[t]}const fS=new Set(["grid","translate","format","formatType","orient","labelExpr","tickCount","position","tickMinStep"]);function dS(e,t){let n=t.axis(e);const i=new Io,r=K(t.encoding[e]),{mark:s,config:o}=t,a=n?.orient||o[e==="x"?"axisX":"axisY"]?.orient||o.axis?.orient||Qy(e),c=t.getScaleComponent(e).get("type"),u=Hy(e,c,a,t.config),l=n!==void 0?!n:lo("disable",o.style,n?.style,u).configValue;if(i.set("disable",l,n!==void 0),l)return i;n=n||{};const f=Xy(r,n,e,o.style,u),d=Nc(n.formatType,r,c),p=Fc(r,r.type,n.format,n.formatType,o,!0),h={fieldOrDatumDef:r,axis:n,channel:e,model:t,scaleType:c,orient:a,labelAngle:f,format:p,formatType:d,mark:s,config:o};for(const y of Af){const v=y in Al?Al[y](h):Yc(y)?n[y]:void 0,k=v!==void 0,_=lS(v,y,n,t,e);if(k&&_)i.set(y,v,_);else{const{configValue:T=void 0,configFrom:L=void 0}=Yc(y)&&y!=="values"?lo(y,o.style,n.style,u):{},ue=T!==void 0;k&&!ue?i.set(y,v,_):(!(L==="vgAxisConfig")||fS.has(y)&&ue||ii(T)||$(T))&&i.set(y,T,!1)}}const g=n.encoding??{},m=Vc.reduce((y,v)=>{if(!i.hasAxisPart(v))return y;const k=Bl(g[v]??{},t),_=v==="labels"?rS(t,e,k):k;return _!==void 0&&!M(_)&&(y[v]={update:_}),y},{});return M(m)||i.set("encode",m,!!n.encoding||n.labelAngle!==void 0),i}function pS({encoding:e,size:t}){for(const n of at){const i=me(n);Qe(t[i])&&(Tt(e[n])&&(delete t[i],x(Va(i))))}return t}const gS={vgMark:"arc",encodeEntry:e=>({...ke(e,{align:"ignore",baseline:"ignore",color:"include",size:"ignore",orient:"ignore",theta:"ignore"}),...ae("x",e,{defaultPos:"mid"}),...ae("y",e,{defaultPos:"mid"}),...Pt(e,"radius"),...Pt(e,"theta")})},hS={vgMark:"area",encodeEntry:e=>({...ke(e,{align:"ignore",baseline:"ignore",color:"include",orient:"include",size:"ignore",theta:"ignore"}),...fr("x",e,{defaultPos:"zeroOrMin",defaultPos2:"zeroOrMin",range:e.markDef.orient==="horizontal"}),...fr("y",e,{defaultPos:"zeroOrMin",defaultPos2:"zeroOrMin",range:e.markDef.orient==="vertical"}),...so(e)})},mS={vgMark:"rect",encodeEntry:e=>({...ke(e,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"}),...Pt(e,"x"),...Pt(e,"y")})},yS={vgMark:"shape",encodeEntry:e=>({...ke(e,{align:"ignore",baseline:"ignore",color:"include",size:"ignore",orient:"ignore",theta:"ignore"})}),postEncodingTransform:e=>{const{encoding:t}=e,n=t.shape,i={type:"geoshape",projection:e.projectionName(),...n&&S(n)&&n.type===xn?{field:w(n,{expr:"datum"})}:{}};return[i]}},bS={vgMark:"image",encodeEntry:e=>({...ke(e,{align:"ignore",baseline:"ignore",color:"ignore",orient:"ignore",size:"ignore",theta:"ignore"}),...Pt(e,"x"),...Pt(e,"y"),...io(e,"url")})},xS={vgMark:"line",encodeEntry:e=>({...ke(e,{align:"ignore",baseline:"ignore",color:"include",size:"ignore",orient:"ignore",theta:"ignore"}),...ae("x",e,{defaultPos:"mid"}),...ae("y",e,{defaultPos:"mid"}),...ee("size",e,{vgChannel:"strokeWidth"}),...so(e)})},SS={vgMark:"trail",encodeEntry:e=>({...ke(e,{align:"ignore",baseline:"ignore",color:"include",size:"include",orient:"ignore",theta:"ignore"}),...ae("x",e,{defaultPos:"mid"}),...ae("y",e,{defaultPos:"mid"}),...ee("size",e),...so(e)})};function Lo(e,t){const{config:n}=e;return{...ke(e,{align:"ignore",baseline:"ignore",color:"include",size:"include",orient:"ignore",theta:"ignore"}),...ae("x",e,{defaultPos:"mid"}),...ae("y",e,{defaultPos:"mid"}),...ee("size",e),...ee("angle",e),...vS(e,n,t)}}function vS(e,t,n){return n?{shape:{value:n}}:ee("shape",e)}const wS={vgMark:"symbol",encodeEntry:e=>Lo(e)},$S={vgMark:"symbol",encodeEntry:e=>Lo(e,"circle")},ES={vgMark:"symbol",encodeEntry:e=>Lo(e,"square")},_S={vgMark:"rect",encodeEntry:e=>({...ke(e,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"}),...Pt(e,"x"),...Pt(e,"y")})},kS={vgMark:"rule",encodeEntry:e=>{const{markDef:t}=e,n=t.orient;return!e.encoding.x&&!e.encoding.y&&!e.encoding.latitude&&!e.encoding.longitude?{}:{...ke(e,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"}),...fr("x",e,{defaultPos:n==="horizontal"?"zeroOrMax":"mid",defaultPos2:"zeroOrMin",range:n!=="vertical"}),...fr("y",e,{defaultPos:n==="vertical"?"zeroOrMax":"mid",defaultPos2:"zeroOrMin",range:n!=="horizontal"}),...ee("size",e,{vgChannel:"strokeWidth"})}}},CS={vgMark:"text",encodeEntry:e=>{const{config:t,encoding:n}=e;return{...ke(e,{align:"include",baseline:"include",color:"include",size:"ignore",orient:"ignore",theta:"include"}),...ae("x",e,{defaultPos:"mid"}),...ae("y",e,{defaultPos:"mid"}),...io(e),...ee("size",e,{vgChannel:"fontSize"}),...ee("angle",e),...pl("align",FS(e.markDef,n,t)),...pl("baseline",NS(e.markDef,n,t)),...ae("radius",e,{defaultPos:null}),...ae("theta",e,{defaultPos:null})}}};function FS(e,t,n){const i=R("align",e,n);return i===void 0?"center":void 0}function NS(e,t,n){const i=R("baseline",e,n);return i===void 0?"middle":void 0}const TS={vgMark:"rect",encodeEntry:e=>{const{config:t,markDef:n}=e,i=n.orient,r=i==="horizontal"?"width":"height",s=i==="horizontal"?"height":"width";return{...ke(e,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"}),...ae("x",e,{defaultPos:"mid",vgChannel:"xc"}),...ae("y",e,{defaultPos:"mid",vgChannel:"yc"}),...ee("size",e,{defaultValue:OS(e),vgChannel:r}),[s]:B(R("thickness",n,t))}}};function OS(e){const{config:t,markDef:n}=e,{orient:i}=n,r=i==="horizontal"?"width":"height",s=e.getScaleComponent(i==="horizontal"?"x":"y"),o=R("size",n,t,{vgChannel:r})??t.tick.bandSize;if(o!==void 0)return o;{const a=s?s.get("range"):void 0;if(a&&Ct(a)&&U(a.step))return a.step*3/4;const c=rr(t.view,r);return c*3/4}}const Pr={arc:gS,area:hS,bar:mS,circle:$S,geoshape:yS,image:bS,line:xS,point:wS,rect:_S,rule:kS,square:ES,text:CS,tick:TS,trail:SS};function AS(e){if(O([Di,Li,Dg],e.mark)){const t=tu(e.mark,e.encoding);if(t.length>0)return PS(e,t)}else if(e.mark===Mi){const t=es.some(n=>R(n,e.markDef,e.config));if(e.stack&&!e.fieldDef("size")&&t)return zS(e)}return Mo(e)}const Pf="faceted_path_";function PS(e,t){return[{name:e.getName("pathgroup"),type:"group",from:{facet:{name:Pf+e.requestDataName(G.Main),data:e.requestDataName(G.Main),groupby:t}},encode:{update:{width:{field:{group:"width"}},height:{field:{group:"height"}}}},marks:Mo(e,{fromPrefix:Pf})}]}const zf="stack_group_";function zS(e){const[t]=Mo(e,{fromPrefix:zf}),n=e.scaleName(e.stack.fieldChannel),i=(u={})=>e.vgField(e.stack.fieldChannel,u),r=(u,l)=>{const f=[i({prefix:"min",suffix:"start",expr:l}),i({prefix:"max",suffix:"start",expr:l}),i({prefix:"min",suffix:"end",expr:l}),i({prefix:"max",suffix:"end",expr:l})];return`${u}(${f.map(d=>`scale('${n}',${d})`).join(",")})`};let s,o;e.stack.fieldChannel==="x"?(s={...ln(t.encode.update,["y","yc","y2","height",...es]),x:{signal:r("min","datum")},x2:{signal:r("max","datum")},clip:{value:!0}},o={x:{field:{group:"x"},mult:-1},height:{field:{group:"height"}}},t.encode.update={...pe(t.encode.update,["y","yc","y2"]),height:{field:{group:"height"}}}):(s={...ln(t.encode.update,["x","xc","x2","width"]),y:{signal:r("min","datum")},y2:{signal:r("max","datum")},clip:{value:!0}},o={y:{field:{group:"y"},mult:-1},width:{field:{group:"width"}}},t.encode.update={...pe(t.encode.update,["x","xc","x2"]),width:{field:{group:"width"}}});for(const u of es){const l=Ge(u,e.markDef,e.config);t.encode.update[u]?(s[u]=t.encode.update[u],delete t.encode.update[u]):l&&(s[u]=B(l)),l&&(t.encode.update[u]={value:0})}const a=[];if(e.stack.groupbyChannels?.length>0)for(const u of e.stack.groupbyChannels){const l=e.fieldDef(u),f=w(l);f&&a.push(f),(l?.bin||l?.timeUnit)&&a.push(w(l,{binSuffix:"end"}))}const c=["stroke","strokeWidth","strokeJoin","strokeCap","strokeDash","strokeDashOffset","strokeMiterLimit","strokeOpacity"];return s=c.reduce((u,l)=>{if(t.encode.update[l])return{...u,[l]:t.encode.update[l]};{const f=Ge(l,e.markDef,e.config);return f!==void 0?{...u,[l]:B(f)}:u}},s),s.stroke&&(s.strokeForeground={value:!0},s.strokeOffset={value:0}),[{type:"group",from:{facet:{data:e.requestDataName(G.Main),name:zf+e.requestDataName(G.Main),groupby:a,aggregate:{fields:[i({suffix:"start"}),i({suffix:"start"}),i({suffix:"end"}),i({suffix:"end"})],ops:["min","max","min","max"]}}},encode:{update:s},marks:[{type:"group",encode:{update:o},marks:[t]}]}]}function RS(e){const{encoding:t,stack:n,mark:i,markDef:r,config:s}=e,o=t.order;if(!E(o)&&Re(o)&&Mr(o.value)||!o&&Mr(R("order",r,s)))return;if((E(o)||S(o))&&!n)return Aa(o,{expr:"datum"});if(Ft(i)){const a=r.orient==="horizontal"?"y":"x",c=t[a];if(S(c))return{field:a}}return}function Mo(e,t={fromPrefix:""}){const{mark:n,markDef:i,encoding:r,config:s}=e,o=X(i.clip,IS(e),LS(e)),a=Ta(i),c=r.key,u=RS(e),l=MS(e),f=R("aria",i,s),d=Pr[n].postEncodingTransform?Pr[n].postEncodingTransform(e):null;return[{name:e.getName("marks"),type:Pr[n].vgMark,...o?{clip:o}:{},...a?{style:a}:{},...c?{key:c.field}:{},...u?{sort:u}:{},...l||{},...f===!1?{aria:f}:{},from:{data:t.fromPrefix+e.requestDataName(G.Main)},encode:{update:Pr[n].encodeEntry(e)},...d?{transform:d}:{}}]}function IS(e){const t=e.getScaleComponent("x"),n=e.getScaleComponent("y");return t?.get("selectionExtent")||n?.get("selectionExtent")?!0:void 0}function LS(e){const t=e.component.projection;return t&&!t.isFit?!0:void 0}function MS(e){if(!e.component.selection)return null;const t=b(e.component.selection).length;let n=t,i=e.parent;for(;i&&n===0;)n=b(i.component.selection).length,i=i.parent;return n?{interactive:t>0||e.mark==="geoshape"||!!e.encoding.tooltip||!!e.markDef.tooltip}:null}class Rf extends Cf{constructor(t,n,i,r={},s){super(t,"unit",n,i,s,void 0,xu(t)?t.view:void 0);this.specifiedScales={},this.specifiedAxes={},this.specifiedLegends={},this.specifiedProjection={},this.selection=[],this.children=[];const o=Ye(t.mark)?{...t.mark}:{type:t.mark},a=o.type;o.filled===void 0&&(o.filled=wm(o,s,{graticule:t.data&&Zs(t.data)}));const c=this.encoding=kh(t.encoding||{},a,o.filled,s);this.markDef=Fu(o,c,s),this.size=pS({encoding:c,size:xu(t)?{...r,...t.width?{width:t.width}:{},...t.height?{height:t.height}:{}}:r}),this.stack=Cu(this.markDef,c),this.specifiedScales=this.initScales(a,c),this.specifiedAxes=this.initAxes(c),this.specifiedLegends=this.initLegends(c),this.specifiedProjection=t.projection,this.selection=(t.params??[]).filter(u=>Us(u))}get hasProjection(){const{encoding:t}=this,n=this.mark===xc,i=t&&wd.some(r=>F(t[r]));return n||i}scaleDomain(t){const n=this.specifiedScales[t];return n?n.domain:void 0}axis(t){return this.specifiedAxes[t]}legend(t){return this.specifiedLegends[t]}initScales(t,n){return Qr.reduce((i,r)=>{const s=K(n[r]);return s&&(i[r]=this.initScale(s.scale??{})),i},{})}initScale(t){const{domain:n,range:i}=t,r=oe(t);return E(n)&&(r.domain=n.map(xe)),E(i)&&(r.range=i.map(xe)),r}initAxes(t){return at.reduce((n,i)=>{const r=t[i];if(F(r)||i===H&&F(t.x2)||i===Q&&F(t.y2)){const s=F(r)?r.axis:void 0;n[i]=s&&this.initAxis({...s})}return n},{})}initAxis(t){const n=b(t),i={};for(const r of n){const s=t[r];i[r]=ii(s)?Ca(s):xe(s)}return i}initLegends(t){return Ad.reduce((n,i)=>{const r=K(t[i]);if(r&&zd(i)){const s=r.legend;n[i]=s&&oe(s)}return n},{})}parseData(){this.component.data=Or(this)}parseLayoutSize(){Kx(this)}parseSelections(){this.component.selection=jy(this,this.selection)}parseMarkGroup(){this.component.mark=AS(this)}parseAxesAndHeaders(){this.component.axes=sS(this)}assembleSelectionTopLevelSignals(t){return ly(this,t)}assembleSignals(){return[...Tl(this),...cy(this,[])]}assembleSelectionData(t){return fy(this,t)}assembleLayout(){return null}assembleLayoutSignals(){return mo(this)}assembleMarks(){let t=this.component.mark??[];return(!this.parent||!Mn(this.parent))&&(t=Ku(this,t)),t.map(this.correctDataNames)}assembleGroupStyle(){const{style:t}=this.view||{};return t!==void 0?t:this.encoding.x||this.encoding.y?"cell":"view"}getMapping(){return this.encoding}get mark(){return this.markDef.type}channelHasField(t){return Kt(this.encoding,t)}fieldDef(t){const n=this.encoding[t];return Ie(n)}typedFieldDef(t){const n=this.fieldDef(t);return fe(n)?n:null}}class Do extends Po{constructor(t,n,i,r,s){super(t,"layer",n,i,s,t.resolve,t.view);const o={...r,...t.width?{width:t.width}:{},...t.height?{height:t.height}:{}};this.children=t.layer.map((a,c)=>{if(or(a))return new Do(a,this,this.getName(`layer_${c}`),o,s);if(ft(a))return new Rf(a,this,this.getName(`layer_${c}`),o,s);throw new Error(ts(a))})}parseData(){this.component.data=Or(this);for(const t of this.children)t.parseData()}parseLayoutSize(){Xx(this)}parseSelections(){this.component.selection={};for(const t of this.children){t.parseSelections();for(const n of b(t.component.selection))this.component.selection[n]=t.component.selection[n]}}parseMarkGroup(){for(const t of this.children)t.parseMarkGroup()}parseAxesAndHeaders(){aS(this)}assembleSelectionTopLevelSignals(t){return this.children.reduce((n,i)=>i.assembleSelectionTopLevelSignals(n),t)}assembleSignals(){return this.children.reduce((t,n)=>t.concat(n.assembleSignals()),Tl(this))}assembleLayoutSignals(){return this.children.reduce((t,n)=>t.concat(n.assembleLayoutSignals()),mo(this))}assembleSelectionData(t){return this.children.reduce((n,i)=>i.assembleSelectionData(n),t)}assembleGroupStyle(){const t=new Set;for(const i of this.children)for(const r of V(i.assembleGroupStyle()))t.add(r);const n=Array.from(t);return n.length>1?n:n.length===1?n[0]:void 0}assembleTitle(){let t=super.assembleTitle();if(t)return t;for(const n of this.children)if(t=n.assembleTitle(),t)return t;return}assembleLayout(){return null}assembleMarks(){return dy(this,this.children.flatMap(t=>t.assembleMarks()))}assembleLegends(){return this.children.reduce((t,n)=>t.concat(n.assembleLegends()),Jl(this))}}function jo(e,t,n,i,r){if(Hi(e))return new pi(e,t,n,r);if(or(e))return new Do(e,t,n,i,r);if(ft(e))return new Rf(e,t,n,i,r);if(Kh(e))return new tS(e,t,n,r);throw new Error(ts(e))}function DS(e,t={}){t.logger&&Jp(t.logger),t.fieldTitle&&Wc(t.fieldTitle);try{const n=_u(ta(t.config,e.config)),i=Uu(e,n),r=jo(i,null,"",void 0,n);r.parse(),cx(r.component.data,r);const s=US(r,jS(e,i.autosize,n,r),e.datasets,e.usermeta);return{spec:s,normalized:i}}finally{t.logger&&eg(),t.fieldTitle&&yh()}}function jS(e,t,n,i){const r=i.component.layoutSize.get("width"),s=i.component.layoutSize.get("height");if(t===void 0?(t={type:"pad"},i.hasAxisOrientSignalRef()&&(t.resize=!0)):N(t)&&(t={type:t}),r&&s&&iy(t.type)){if(r==="step"&&s==="step")x(Ma()),t.type="pad";else if(r==="step"||s==="step"){const o=r==="step"?"width":"height";x(Ma(Ni(o)));const a=o==="width"?"height":"width";t.type=ry(a)}}return{...b(t).length===1&&t.type?t.type==="pad"?{}:{autosize:t.type}:{autosize:t},...Wu(n,!1),...Wu(e,!0)}}function US(e,t,n={},i){const r=e.config?lm(e.config):void 0,s=[].concat(e.assembleSelectionData([]),Hx(e.component.data,n)),o=e.assembleProjections(),a=e.assembleTitle(),c=e.assembleGroupStyle(),u=e.assembleGroupEncodeEntry(!0);let l=e.assembleLayoutSignals();l=l.filter(p=>(p.name==="width"||p.name==="height")&&p.value!==void 0?(t[p.name]=+p.value,!1):!0);const{params:f,...d}=t;return{$schema:"https://vega.github.io/schema/vega/v5.json",...e.description?{description:e.description}:{},...d,...a?{title:a}:{},...c?{style:c}:{},...u?{encode:{update:u}}:{},data:s,...o.length>0?{projections:o}:{},...e.assembleGroup([...l,...e.assembleSelectionTopLevelSignals([]),...yu(f)]),...r?{config:r}:{},...i?{usermeta:i}:{}}}const BS=md.version;export{pn as accessPathDepth,Wr as accessPathWithDatum,DS as compile,O as contains,be as deepEqual,wi as deleteNestedProperty,C as duplicate,bt as entries,Dr as every,Br as fieldIntersection,oa as flatAccessWithDatum,X as getFirstDefined,jr as hasIntersection,P as hash,ua as internalField,Bn as isBoolean,M as isEmpty,bd as isEqual,la as isInternalField,Mr as isNullOrFalse,$i as isNumeric,b as keys,Wn as logicalExpr,ra as mergeDeep,ia as never,Uu as normalize,qn as normalizeAngle,pe as omit,ln as pick,Ur as prefixGenerator,dn as removePathFromField,Lt as replaceAll,we as replacePathInField,Sd as resetIdCounter,sa as setEqual,fn as some,D as stringify,Hn as titleCase,je as unique,ca as uniqueId,ie as vals,W as varName,BS as version};export default null;