import{hasOwnProperty as cn,isNumber as B,isString as N,writeConfig as Pf,splitAccessPath as un,stringValue as A,isObject as M,isBoolean as jn,isArray as E,array as G,logger as zf,Warn as Rf,isFunction as If,mergeConfig as Qo,identity as Lf}from"/-/vega-util@v1.17.2-LUfkDhormMyfWqy3Ts6U/dist=es2020,mode=imports,min/optimized/vega-util.js";import{isObject as Tr,writeConfig as Mf,isArray as Jo,isString as yi}from"/-/vega@v5.30.0-fYDVG3pUN16BiGmbVNdw/dist=es2020,mode=imports,min/optimized/vega.js";import{parseSelector as ln}from"/-/vega-event-selector@v3.0.1-UgiEAWJA4WQL4DTKnV4R/dist=es2020,mode=imports,min/optimized/vega-event-selector.js";import{parseExpression as Df}from"/-/vega-expression@v5.1.1-K4clrYr2THuj5KncykTn/dist=es2020,mode=imports,min/optimized/vega-expression.js";const jf="vega-lite",Uf='Dominik Moritz, Kanit "Ham" Wongsuphasawat, Arvind Satyanarayan, Jeffrey Heer',Bf="5.17.0",Wf=["Kanit Wongsuphasawat (http://kanitw.yellowpigz.com)","Dominik Moritz (https://www.domoritz.de)","Arvind Satyanarayan (https://arvindsatya.com)","Jeffrey Heer (https://jheer.org)"],Hf="https://vega.github.io/vega-lite/",qf="Vega-Lite is a concise high-level language for interactive visualization.",Gf=["vega","chart","visualization"],Vf="build/vega-lite.js",Xf="build/vega-lite.min.js",Yf="build/vega-lite.min.js",Kf="build/src/index",Qf="build/src/index.d.ts",Jf={vl2pdf:"./bin/vl2pdf",vl2png:"./bin/vl2png",vl2svg:"./bin/vl2svg",vl2vg:"./bin/vl2vg"},Zf=["bin","build","src","vega-lite*","tsconfig.json"],ed={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",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"},td={type:"git",url:"https://github.com/vega/vega-lite.git"},nd="BSD-3-Clause",id={url:"https://github.com/vega/vega-lite/issues"},rd={"@babel/core":"^7.23.9","@babel/preset-env":"^7.23.9","@babel/preset-typescript":"^7.23.3","@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.11","@types/pako":"^2.0.3","@typescript-eslint/eslint-plugin":"^6.20.0","@typescript-eslint/parser":"^6.20.0",ajv:"^8.12.0","ajv-formats":"^2.1.1",cheerio:"^1.0.0-rc.12","conventional-changelog-cli":"^4.1.0",d3:"^7.8.5","del-cli":"^5.1.0",eslint:"^8.56.0","eslint-config-prettier":"^9.1.0","eslint-plugin-jest":"^27.6.3","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":"^9.0.2",mkdirp:"^3.0.1",pako:"^2.1.0",prettier:"^3.2.4",puppeteer:"^15.0.0","release-it":"^17.0.3",rollup:"^4.9.6","rollup-plugin-bundle-size":"^1.0.3",serve:"^14.2.1",terser:"^5.27.0","ts-jest":"^29.1.2","ts-json-schema-generator":"^1.5.0",typescript:"~5.3.3","vega-cli":"^5.27.0","vega-datasets":"^2.8.0","vega-embed":"^6.24.0","vega-tooltip":"^0.34.0","yaml-front-matter":"^4.1.1"},sd={"json-stringify-pretty-compact":"~3.0.0",tslib:"~2.6.2","vega-event-selector":"~3.0.1","vega-expression":"~5.1.0","vega-util":"~1.17.2",yargs:"~17.7.2"},od={vega:"^5.24.0"},ad={node:">=18"};var cd={name:jf,author:Uf,version:Bf,collaborators:Wf,homepage:Hf,description:qf,keywords:Gf,main:Vf,unpkg:Xf,jsdelivr:Yf,module:Kf,types:Qf,bin:Jf,files:Zf,scripts:ed,repository:td,license:nd,bugs:id,devDependencies:rd,dependencies:sd,peerDependencies:od,engines:ad};function Ar(e){return!!e.or}function Or(e){return!!e.and}function Pr(e){return!!e.not}function bi(e,t){if(Pr(e))bi(e.not,t);else if(Or(e))for(const n of e.and)bi(n,t);else if(Ar(e))for(const n of e.or)bi(n,t);else t(e)}function fn(e,t){return Pr(e)?{not:fn(e.not,t)}:Or(e)?{and:e.and.map(n=>fn(n,t))}:Ar(e)?{or:e.or.map(n=>fn(n,t))}:t(e)}const C=structuredClone;function Zo(e){throw new Error(e)}function dn(e,t){const n={};for(const i of t)cn(e,i)&&(n[i]=e[i]);return n}function fe(e,t){const n={...e};for(const i of t)delete n[i];return n}Set.prototype.toJSON=function(){return`Set(${[...this].map(e=>L(e)).join(",")})`};function O(e){if(B(e))return e;const t=N(e)?e:L(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 Mr(e,t){return e===void 0||t===void 0?!0:Ir(Lr(e),Lr(t))}function I(e){return b(e).length===0}const b=Object.keys,ne=Object.values,bt=Object.entries;function Un(e){return e===!0||e===!1}function H(e){const t=e.replace(/\W/g,"_");return(e.match(/^\d+/)?"_":"")+t}function Bn(e,t){return Pr(e)?`!(${Bn(e.not,t)})`:Or(e)?`(${e.and.map(n=>Bn(n,t)).join(") && (")})`:Ar(e)?`(${e.or.map(n=>Bn(n,t)).join(") || (")})`:t(e)}function xi(e,t){if(t.length===0)return!0;const n=t.shift();return n in e&&xi(e[n],t)&&delete e[n],I(e)}function Wn(e){return e.charAt(0).toUpperCase()+e.substr(1)}function Dr(e,t="datum"){const n=un(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 na(e,t="datum"){return`${t}[${A(un(e).join("."))}]`}function fd(e){return e.replace(/(\[|\]|\.|'|")/g,"\\$1")}function ve(e){return`${un(e).map(fd).join("\\.")}`}function Mt(e,t,n){return e.replace(new RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"g"),n)}function jr(e){return`${un(e).join(".")}`}function pn(e){return e?un(e).length:0}function X(...e){for(const t of e)if(t!==void 0)return t;return}let ia=42;function ra(e){const t=++ia;return e?String(e)+t:t}function dd(){ia=42}function sa(e){return oa(e)?e:`__${e}`}function oa(e){return e.startsWith("__")}function Hn(e){return e===void 0?void 0:(e%360+360)%360}function Si(e){return B(e)?!0:!isNaN(e)&&!isNaN(parseFloat(e))}const aa=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!==aa.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString&&e.toString!==aa.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 L(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;rFi(e[t])?H(`_${t}_${bt(e[t])}`):H(`_${t}_${e[t]}`)).join("")}function j(e){return e===!0||Bt(e)&&!e.binned}function ie(e){return e==="binned"||Bt(e)&&e.binned===!0}function Bt(e){return M(e)}function Fi(e){return e?.param}function $a(e){switch(e){case it:case rt:case at:case de:case Be:case We:case $t:case ct:case St:case wt:case pe:return 6;case vt:return 4;default:return 10}}function Xn(e){return!!e?.expr}function me(e){const t=b(e||{}),n={};for(const i of t)n[i]=xe(e[i]);return n}function va(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:g,...m}=e,h={...m,...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}:{}},$={...c?{subtitleColor:c}:{},...u?{subtitleFont:u}:{},...l?{subtitleFontSize:l}:{},...f?{subtitleFontStyle:f}:{},...d?{subtitleFontWeight:d}:{},...p?{subtitleLineHeight:p}:{},...g?{subtitlePadding:g}:{}},k=dn(e,["align","baseline","dx","dy","limit"]);return{titleMarkConfig:h,subtitleMarkConfig:k,nonMarkTitleProperties:y,subtitle:$}}function kt(e){return N(e)||E(e)&&N(e[0])}function v(e){return!!e?.signal}function Ct(e){return!!e.step}function Id(e){return E(e)?!1:"fields"in e&&!("data"in e)}function Ld(e){return E(e)?!1:"fields"in e&&"data"in e}function ft(e){return E(e)?!1:"field"in e&&"data"in e}const Md={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},Dd=b(Md),jd={arc:1,area:1,group:1,image:1,line:1,path:1,rect:1,rule:1,shape:1,symbol:1,text:1,trail:1},Kr=["cornerRadius","cornerRadiusTopLeft","cornerRadiusTopRight","cornerRadiusBottomLeft","cornerRadiusBottomRight"];function Ea(e){const t=E(e.condition)?e.condition.map(_a):_a(e.condition);return{...xe(e),condition:t}}function xe(e){if(Xn(e)){const{expr:t,...n}=e;return{signal:t,...n}}return e}function _a(e){if(Xn(e)){const{expr:t,...n}=e;return{signal:t,...n}}return e}function W(e){if(Xn(e)){const{expr:t,...n}=e;return{signal:t,...n}}return v(e)?e:e!==void 0?{value:e}:void 0}function Ud(e){return v(e)?e.signal:A(e)}function ka(e){return v(e)?e.signal:A(e.value)}function Pe(e){return v(e)?e.signal:e==null?null:A(e)}function Bd(e,t,n){for(const i of n){const r=dt(i,t.markDef,t.config);r!==void 0&&(e[i]=W(r))}return e}function Ca(e){return[].concat(e.type,e.style??[])}function z(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:dt(e,t,n,i)}function dt(e,t,n,{vgChannel:i}={}){return X(i?Ni(e,t,n.style):void 0,Ni(e,t,n.style),i?n[t.type][i]:void 0,n[t.type][e],i?n.mark[i]:n.mark[e])}function Ni(e,t,n){return Fa(e,Ca(t),n)}function Fa(e,t,n){t=G(t);let i;for(const r of t){const s=n[r];s&&s[e]!==void 0&&(i=s[e])}return i}function Na(e,t){return G(e).reduce((n,i)=>(n.field.push(w(i,t)),n.order.push(i.sort??"ascending"),n),{field:[],order:[]})}function Ta(e,t){const n=[...e];return t.forEach(i=>{for(const r of n)if(be(r,i))return;n.push(i)}),n}function Aa(e,t){return be(e,t)||!t?e:e?[...G(e),...G(t)].join(", "):t}function Oa(e,t){const n=e.value,i=t.value;if(n==null||i===null)return{explicit:e.explicit,value:null};if((kt(n)||v(n))&&(kt(i)||v(i)))return{explicit:e.explicit,value:Aa(n,i)};if(kt(n)||v(n))return{explicit:e.explicit,value:n};if(kt(i)||v(i))return{explicit:e.explicit,value:i};if(!kt(n)&&!v(n)&&!kt(i)&&!v(i))return{explicit:e.explicit,value:Ta(n,i)};throw new Error("It should never reach here")}function Qr(e){return`Invalid specification ${L(e)}. Make sure the specification includes at least one of the following properties: "mark", "layer", "facet", "hconcat", "vconcat", "concat", or "repeat".`}const Wd='Autosize "fit" only works for single views and layered views.';function Pa(e){const t=e=="width"?"Width":"Height";return`${t} "container" only works for single views and layered views.`}function za(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 Ra(e){return e?`Dropping "fit-${e}" because spec has discrete ${ge(e)}.`:'Dropping "fit" because spec has discrete size.'}function Jr(e){return`Unknown field for ${e}. Cannot calculate view size.`}function Ia(e){return`Cannot project a selection on encoding channel "${e}", which has no field.`}function Hd(e,t){return`Cannot project a selection on encoding channel "${e}" as it uses an aggregate function ("${t}").`}function qd(e){return`The "nearest" transform is not supported for ${e} marks.`}function La(e){return`Selection not supported for ${e} yet.`}function Gd(e){return`Cannot find a selection named "${e}".`}const Vd="Scale bindings are currently only supported for scales with unbinned, continuous domains.",Xd="Sequntial scales are deprecated. The available quantitative scale type values are linear, log, pow, sqrt, symlog, time and utc",Yd="Legend bindings are only supported for selections over an individual field or encoding channel.";function Kd(e){return`Lookups can only be performed on selection parameters. "${e}" is a variable parameter.`}function Qd(e){return`Cannot define and lookup the "${e}" selection in the same view. Try moving the lookup into a second, layered view?`}const Jd="The same selection must be used to override scale domains in a layered view.",Zd='Interval selections should be initialized using "x", "y", "longitude", or "latitude" keys.';function ep(e){return`Unknown repeated value "${e}".`}function Ma(e){return`The "columns" property cannot be used when "${e}" has nested row/column.`}const tp="Axes cannot be shared in concatenated or repeated views yet (https://github.com/vega/vega-lite/issues/2415).";function np(e){return`Unrecognized parse "${e}".`}function Da(e,t,n){return`An ancestor parsed field "${e}" as ${n} but a child wants to parse the field as ${t}.`}const ip="Attempt to add the same child twice.";function rp(e){return`Ignoring an invalid transform: ${L(e)}.`}const sp='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 ja(e){return`Config.customFormatTypes is not true, thus custom format type and format for channel ${e} are dropped.`}function op(e){const{parentProjection:t,projection:n}=e;return`Layer's shared projection ${L(t)} is overridden by a child projection ${L(n)}.`}const ap="Arc marks uses theta channel rather than angle, replacing angle with theta.";function cp(e){return`${e}Offset dropped because ${e} is continuous`}function up(e,t,n){return`Channel ${e} is a ${t}. Converted to {value: ${L(n)}}.`}function Ua(e){return`Invalid field type "${e}".`}function lp(e,t){return`Invalid field type "${e}" for aggregate: "${t}", using "quantitative" instead.`}function fp(e){return`Invalid aggregation operator "${e}".`}function Ba(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 dp(e){return`Position range does not support relative band size for ${e}.`}function Zr(e,t){return`Dropping ${L(e)} from channel "${t}" since it does not contain any data field, datum, value, or signal.`}const pp="Line marks cannot encode size with a non-groupby field. You may want to use trail marks instead.";function Ti(e,t,n){return`${e} dropped as it is incompatible with "${t}"${n?` when ${n}`:""}.`}function gp(e){return`${e}-encoding is dropped as ${e} is not a valid encoding channel.`}function mp(e){return`${e} encoding should be discrete (ordinal / nominal / binned).`}function hp(e){return`${e} encoding should be discrete (ordinal / nominal / binned) or use a discretizing scale (e.g. threshold).`}function yp(e){return`Facet encoding dropped as ${e.join(" and ")} ${e.length>1?"are":"is"} also specified.`}function es(e,t){return`Using discrete channel "${e}" to encode "${t}" field can be misleading as it does not encode ${t==="ordinal"?"order":"magnitude"}.`}function bp(e){return`The ${e} for range marks cannot be an expression`}function xp(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 Sp(e,t){return`Specified orient "${e}" overridden with "${t}".`}function wp(e){return`Cannot use the scale property "${e}" with non-color channel.`}function $p(e){return`Cannot use the relative band size with ${e} scale.`}function vp(e){return`Using unaggregated domain with raw field has no effect (${L(e)}).`}function Ep(e){return`Unaggregated domain not applicable for "${e}" since it produces values outside the origin domain of the source data.`}function _p(e){return`Unaggregated domain is currently unsupported for log scale (${L(e)}).`}function kp(e){return`Cannot apply size to non-oriented mark "${e}".`}function Cp(e,t,n){return`Channel "${e}" does not work with "${t}" scale. We are using "${n}" scale instead.`}function Fp(e,t){return`FieldDef does not work with "${e}" scale. We are using "${t}" scale instead.`}function Wa(e,t,n){return`${n}-scale's "${t}" is dropped as it does not work with ${e} scale.`}function Ha(e){return`The step for "${e}" is dropped because the ${e==="width"?"x":"y"} is continuous.`}function Np(e,t,n,i){return`Conflicting ${t.toString()} property "${e.toString()}" (${L(n)} and ${L(i)}). Using ${L(n)}.`}function Tp(e,t,n,i){return`Conflicting ${t.toString()} property "${e.toString()}" (${L(n)} and ${L(i)}). Using the union of the two domains.`}function Ap(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 Op(e){return`Dropping sort property ${L(e)} as unioned domains only support boolean or op "count", "min", and "max".`}const qa="Domains that should be unioned has conflicting sort properties. Sort will be set to true.",Pp="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.",zp="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.",Rp="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 Ip(e){return`Cannot stack "${e}" if there is already "${e}2".`}function Lp(e){return`Cannot stack non-linear scale (${e}).`}function Mp(e){return`Stacking is applied even though the aggregate function is non-summative ("${e}").`}function Ai(e,t){return`Invalid ${e}: ${L(t)}.`}function Dp(e){return`Dropping day from datetime ${L(e)} as day cannot be combined with other units.`}function jp(e,t){return`${t?"extent ":""}${t&&e?"and ":""}${e?"center ":""}${t&&e?"are ":"is "}not needed when data are aggregated.`}function Up(e,t,n){return`${e} is not usually used with ${t} for ${n}.`}function Bp(e,t){return`Continuous axis should not have customized aggregation function ${e}; ${t} already agregates the axis.`}function Ga(e){return`1D error band does not support ${e}.`}function Va(e){return`Channel ${e} is required for "binned" bin.`}function Wp(e){return`Channel ${e} should not be used with "binned" bin.`}function Hp(e){return`Domain for ${e} is required for threshold scale.`}var pw=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},gw=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 Xa=zf(Rf);let yn=Xa;function qp(e){return yn=e,yn}function Gp(){return yn=Xa,yn}function x(...e){yn.warn(...e)}function Vp(...e){yn.debug(...e)}function Wt(e){if(e&&M(e)){for(const t of ns)if(t in e)return!0}return!1}const Ya=["january","february","march","april","may","june","july","august","september","october","november","december"],Xp=Ya.map(e=>e.substr(0,3)),Ka=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],Yp=Ka.map(e=>e.substr(0,3));function Kp(e){if(Si(e)&&(e=+e),B(e))return e>4&&x(Ai("quarter",e)),e-1;throw new Error(Ai("quarter",e))}function Qp(e){if(Si(e)&&(e=+e),B(e))return e-1;{const t=e.toLowerCase(),n=Ya.indexOf(t);if(n!==-1)return n;const i=t.substr(0,3),r=Xp.indexOf(i);if(r!==-1)return r;throw new Error(Ai("month",e))}}function Jp(e){if(Si(e)&&(e=+e),B(e))return e%7;{const t=e.toLowerCase(),n=Ka.indexOf(t);if(n!==-1)return n;const i=t.substr(0,3),r=Yp.indexOf(i);if(r!==-1)return r;throw new Error(Ai("day",e))}}function ts(e,t){const n=[];if(t&&e.day!==void 0&&(b(e).length>1&&(x(Dp(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?Qp(e.month):e.month;n.push(i)}else if(e.quarter!==void 0){const i=t?Kp(e.quarter):e.quarter;n.push(B(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?Jp(e.day):e.day;n.push(B(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 Ht(e){const t=ts(e,!0),n=t.join(", ");return e.utc?`utc(${n})`:`datetime(${n})`}function Zp(e){const t=ts(e,!1),n=t.join(", ");return e.utc?`utc(${n})`:`datetime(${n})`}function eg(e){const t=ts(e,!0);return e.utc?+new Date(Date.UTC(...t)):+new Date(...t)}const Qa={year:1,quarter:1,month:1,week:1,day:1,dayofyear:1,date:1,hours:1,minutes:1,seconds:1,milliseconds:1},ns=b(Qa);function tg(e){return!!Qa[e]}function qt(e){return M(e)?e.binned:Ja(e)}function Ja(e){return e&&e.startsWith("binned")}function is(e){return e.startsWith("utc")}function ng(e){return e.substring(3)}const ig={"year-month":"%b %Y ","year-month-date":"%b %d, %Y "};function Oi(e){return ns.filter(t=>ec(e,t))}function Za(e){const t=Oi(e);return t[t.length-1]}function ec(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 rg(e,t,{end:n}={end:!1}){const i=Dr(t),r=is(e)?"utc":"";function s(c){return c==="quarter"?`(${r}quarter(${i})-1)`:`${r}${c}(${i})`}let o;const a={};for(const c of ns)ec(e,c)&&(a[c]=s(c),o=c);return n&&(a[o]+="+1"),Zp(a)}function tc(e){if(!e)return;const t=Oi(e);return`timeUnitSpecifier(${L(t)}, ${L(ig)})`}function sg(e,t,n){if(!e)return;const i=tc(e),r=n||is(e);return`${r?"utc":"time"}Format(${t}, ${i})`}function J(e){if(!e)return;let t;return N(e)?Ja(e)?t={unit:e.substring(6),binned:!0}:t={unit:e}:M(e)&&(t={...e,...e.unit?{unit:e.unit}:{}}),is(t.unit)&&(t.utc=!0,t.unit=ng(t.unit)),t}function og(e){const{utc:t,...n}=J(e);return n.unit?(t?"utc":"")+b(n).map(i=>H(`${i==="unit"?"":`_${i}_`}${n[i]}`)).join(""):(t?"utc":"")+"timeunit"+b(n).map(i=>H(`_${i}_${n[i]}`)).join("")}function nc(e,t=n=>n){const n=J(e),i=Za(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}=ic(i,n.step),a={...r,[o]:+r[o]+s};return`${t(Ht(a))} - ${t(Ht(r))}`}return}const ag={year:1,month:1,date:1,hours:1,minutes:1,seconds:1,milliseconds:1};function cg(e){return!!ag[e]}function ic(e,t=1){if(cg(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 ug(e){return e?.param}function rs(e){return!!e?.field&&e.equal!==void 0}function ss(e){return!!e?.field&&e.lt!==void 0}function os(e){return!!e?.field&&e.lte!==void 0}function as(e){return!!e?.field&&e.gt!==void 0}function cs(e){return!!e?.field&&e.gte!==void 0}function us(e){if(e?.field){if(E(e.range)&&e.range.length===2)return!0;if(v(e.range))return!0}return!1}function ls(e){return!!e?.field&&(E(e.oneOf)||E(e.in))}function lg(e){return!!e?.field&&e.valid!==void 0}function rc(e){return ls(e)||rs(e)||us(e)||ss(e)||as(e)||os(e)||cs(e)}function Ge(e,t){return Xi(e,{timeUnit:t,wrapTime:!0})}function fg(e,t){return e.map(n=>Ge(n,t))}function sc(e,t=!0){const{field:n}=e,i=J(e.timeUnit),{unit:r,binned:s}=i||{},o=w(e,{expr:"datum"}),a=r?`time(${s?o:rg(r,n)})`:o;if(rs(e))return`${a}===${Ge(e.equal,r)}`;if(ss(e)){const c=e.lt;return`${a}<${Ge(c,r)}`}else if(as(e)){const c=e.gt;return`${a}>${Ge(c,r)}`}else if(os(e)){const c=e.lte;return`${a}<=${Ge(c,r)}`}else if(cs(e)){const c=e.gte;return`${a}>=${Ge(c,r)}`}else{if(ls(e))return`indexof([${fg(e.oneOf,r).join(",")}], ${a}) !== -1`;if(lg(e))return fs(a,e.valid);if(us(e)){const{range:c}=e,u=v(c)?{signal:`${c.signal}[0]`}:c[0],l=v(c)?{signal:`${c.signal}[1]`}:c[1];if(u!==null&&l!==null&&t)return"inrange("+a+", ["+Ge(u,r)+", "+Ge(l,r)+"])";const f=[];return u!==null&&f.push(`${a} >= ${Ge(u,r)}`),l!==null&&f.push(`${a} <= ${Ge(l,r)}`),f.length>0?f.join(" && "):"true"}}throw new Error(`Invalid field predicate: ${L(e)}`)}function fs(e,t=!0){return t?`isValid(${e}) && isFinite(+${e})`:`!isValid(${e}) || !isFinite(+${e})`}function dg(e){return rc(e)&&e.timeUnit?{...e,timeUnit:J(e.timeUnit)}:e}const Yn={quantitative:"quantitative",ordinal:"ordinal",temporal:"temporal",nominal:"nominal",geojson:"geojson"};function pg(e){return e==="quantitative"||e==="temporal"}function oc(e){return e==="ordinal"||e==="nominal"}const Gt=Yn.quantitative,ds=Yn.ordinal,bn=Yn.temporal,ps=Yn.nominal,xn=Yn.geojson;function gg(e){if(e){e=e.toLowerCase();switch(e){case"q":case Gt:return"quantitative";case"t":case bn:return"temporal";case"o":case ds:return"ordinal";case"n":case ps:return"nominal";case xn:return"geojson"}}return}const he={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"},gs={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 mg(e,t){const n=gs[e],i=gs[t];return n===i||n==="ordinal-position"&&i==="time"||i==="ordinal-position"&&n==="time"}const hg={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 ac(e){return hg[e]}const cc=new Set(["linear","log","pow","sqrt","symlog"]),uc=new Set([...cc,"time","utc"]);function lc(e){return cc.has(e)}const fc=new Set(["quantile","quantize","threshold"]),yg=new Set([...uc,...fc,"sequential","identity"]),bg=new Set(["ordinal","bin-ordinal","point","band"]);function Z(e){return bg.has(e)}function Se(e){return yg.has(e)}function ze(e){return uc.has(e)}function Sn(e){return fc.has(e)}const xg={pointPadding:.5,barBandPaddingInner:.1,rectBandPaddingInner:0,bandWithNestedOffsetPaddingInner:.2,bandWithNestedOffsetPaddingOuter:.2,minBandSize:2,minFontSize:8,maxFontSize:40,minOpacity:.3,maxOpacity:.8,minSize:9,minStrokeWidth:1,maxStrokeWidth:4,quantileCount:4,quantizeCount:4,zero:!0};function Sg(e){return!N(e)&&!!e.name}function dc(e){return e?.param}function wg(e){return e?.unionWith}function $g(e){return Tr(e)&&"field"in e}const vg={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:mw,domain:hw,range:yw,rangeMax:bw,rangeMin:xw,scheme:Sw,...Eg}=vg,_g=b(Eg);function ms(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 ze(e)||e==="band"||e==="point";case"padding":case"rangeMin":case"rangeMax":return ze(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 ze(e);case"nice":return ze(e)||e==="quantize"||e==="threshold";case"exponent":return e==="pow";case"base":return e==="log";case"constant":return e==="symlog";case"zero":return Se(e)&&!P(["log","time","utc","threshold","quantile"],e)}}function pc(e,t){switch(t){case"interpolate":case"scheme":case"domainMid":return hn(e)?void 0:wp(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 kg(e,t){return P([ds,ps],t)?e===void 0||Z(e):t===bn?P([he.TIME,he.UTC,void 0],e):t===Gt?lc(e)||Sn(e)||e===void 0:!0}function Cg(e,t,n=!1){if(!ut(e))return!1;switch(e){case q:case Q:case xt:case gn:case Ee:case Ne:return ze(t)||t==="band"?!0:t==="point"?!n:!1;case at:case $t:case ct:case St:case wt:case Dt:return ze(t)||Sn(t)||P(["band","point","ordinal"],t);case de:case Be:case We:return t!=="band";case vt:case pe:return t==="ordinal"||Sn(t)}}const ae={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"},gc=ae.arc,Pi=ae.area,zi=ae.bar,Fg=ae.image,Ri=ae.line,Ii=ae.point,Ng=ae.rect,Li=ae.rule,mc=ae.text,hs=ae.tick,Tg=ae.trail,ys=ae.circle,bs=ae.square,hc=ae.geoshape;function Ft(e){return["line","area","trail"].includes(e)}function Kn(e){return["rect","bar","image","arc"].includes(e)}const Ag=new Set(b(ae));function Ve(e){return e.type}const Og=["stroke","strokeWidth","strokeDash","strokeDashOffset","strokeOpacity","strokeJoin","strokeMiterLimit"],Pg=["fill","fillOpacity"],zg=[...Og,...Pg],Rg={color:1,filled:1,invalid:1,order:1,radius2:1,theta2:1,timeUnitBandSize:1,timeUnitBandPosition:1},yc=b(Rg),Ig={area:["line","point"],bar:["binSpacing","continuousBandSize","discreteBandSize","minBandSize"],rect:["binSpacing","continuousBandSize","discreteBandSize","minBandSize"],line:["point"],tick:["bandSize","thickness"]},Lg={color:"#4c78a8",invalid:"filter",timeUnitBandSize:1},Mg={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},bc=b(Mg);function Vt(e){return e&&e.band!=null}const Dg={horizontal:["cornerRadiusTopRight","cornerRadiusBottomRight"],vertical:["cornerRadiusTopLeft","cornerRadiusTopRight"]},xc=5,jg={binSpacing:1,continuousBandSize:xc,minBandSize:.25,timeUnitBandPosition:.5},Ug={binSpacing:0,continuousBandSize:xc,minBandSize:.25,timeUnitBandPosition:.5},Bg={thickness:1};function Wg(e){return Ve(e)?e.type:e}function xs(e){const{channel:t,channelDef:n,markDef:i,scale:r,config:s}=e,o=ws(e);return S(n)&&!Sa(n.aggregate)&&r&&ze(r.get("type"))?Hg({fieldDef:n,channel:t,markDef:i,ref:o,config:s}):o}function Hg({fieldDef:e,channel:t,markDef:n,ref:i,config:r}){if(Ft(n.type))return i;const s=z("invalid",n,r);return s===null?[qg(e,t),i]:i}function qg(e,t){const n=Ss(e,!0),i=Ut(t),r=i==="y"?{field:{group:"height"}}:{value:0};return{test:n,...r}}function Ss(e,t=!0){return fs(N(e)?e:w(e,{expr:"datum"}),!t)}function Gg(e){const{datum:t}=e;return Wt(t)?Ht(t):`${L(t)}`}function Xt(e,t,n,i){const r={};if(t&&(r.scale=t),Ye(e)){const{datum:s}=e;Wt(s)?r.signal=Ht(s):v(s)?r.signal=s.signal:Xn(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 Mi({scaleName:e,fieldOrDatumDef:t,fieldOrDatumDef2:n,offset:i,startSuffix:r,endSuffix:s="end",bandPosition:o=.5}){const a=!v(o)&&0{switch(t.fieldTitle){case"plain":return e.field;case"functional":return om(e);default:return sm(e,t)}};let Lc=Ic;function Mc(e){Lc=e}function am(){Mc(Ic)}function vn(e,t,{allowDisabling:n,includeDefault:i=!0}){const r=ks(e)?.title;if(!S(e))return r??e.title;const s=e,o=i?Cs(s,t):void 0;return n?X(r,s.title,o):r??s.title??o}function ks(e){return $n(e)&&e.axis?e.axis:zc(e)&&e.legend?e.legend:Es(e)&&e.header?e.header:void 0}function Cs(e,t){return Lc(e,t)}function qi(e){if(Rc(e)){const{format:t,formatType:n}=e;return{format:t,formatType:n}}else{const t=ks(e)??{},{format:n,formatType:i}=t;return{format:n,formatType:i}}}function cm(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(_s(e)&&E(e.sort))return"ordinal";const{aggregate:n,bin:i,timeUnit:r}=e;if(r)return"temporal";if(i||n&&!_t(n)&&!lt(n))return"quantitative";if(Kt(e)&&e.scale?.type)switch(gs[e.scale.type]){case"numeric":case"discretizing":return"quantitative";case"time":return"temporal"}return"nominal"}function Ke(e){return S(e)?e:Bi(e)?e.condition:void 0}function K(e){return F(e)?e:ei(e)?e.condition:void 0}function Dc(e,t,n,i={}){if(N(e)||B(e)||jn(e)){const r=N(e)?"string":B(e)?"number":"boolean";return x(up(t,r,e)),{value:e}}return F(e)?Gi(e,t,n,i):ei(e)?{...e,condition:Gi(e.condition,t,n,i)}:e}function Gi(e,t,n,i){if(Rc(e)){const{format:r,formatType:s,...o}=e;if(Yt(s)&&!n.customFormatTypes)return x(ja(t)),Gi(o,t,n,i)}else{const r=$n(e)?"axis":zc(e)?"legend":Es(e)?"header":null;if(r&&e[r]){const{format:s,formatType:o,...a}=e[r];if(Yt(o)&&!n.customFormatTypes)return x(ja(t)),Gi({...e,[r]:a},t,n,i)}}return S(e)?Fs(e,t,i):um(e)}function um(e){let t=e.type;if(t)return e;const{datum:n}=e;return t=B(n)?"quantitative":N(n)?"nominal":Wt(n)?"temporal":void 0,{...e,type:t}}function Fs(e,t,{compositeMark:n=!1}={}){const{aggregate:i,timeUnit:r,bin:s,field:o}=e,a={...e};if(!n&&i&&!Yr(i)&&!_t(i)&&!lt(i)&&(x(fp(i)),delete a.aggregate),r&&(a.timeUnit=J(r)),o&&(a.field=`${o}`),j(s)&&(a.bin=Vi(s,t)),ie(s)&&!Y(t)&&x(Wp(t)),ce(a)){const{type:c}=a,u=gg(c);c!==u&&(a.type=u),c!=="quantitative"&&(Sa(i)&&(x(lp(c,i)),a.type="quantitative"))}else if(!ga(t)){const c=cm(a,t);a.type=c}if(ce(a)){const{compatible:c,warning:u}=lm(a,t)||{};c===!1&&x(u)}if(_s(a)&&N(a.sort)){const{sort:c}=a;if(kc(c))return{...a,sort:{encoding:c}};const u=c.substr(1);if(c.charAt(0)==="-"&&kc(u))return{...a,sort:{encoding:u,order:"descending"}}}if(Es(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 Vi(e,t){return jn(e)?{maxbins:$a(t)}:e==="binned"?{binned:!0}:!e.maxbins&&!e.step?{...e,maxbins:$a(t)}:e}const En={compatible:!0};function lm(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 it:case rt:case wi:return Hi(e)?En:{compatible:!1,warning:mp(t)};case q:case Q:case xt:case gn:case de:case Be:case We:case qn:case Gn:case $i:case jt:case vi:case Ei:case Dt:case Ee:case Ne:case _i:return En;case Ae:case _e:case Te:case Oe:return n!==Gt?{compatible:!1,warning:`Channel ${t} should be used with a quantitative field only, not ${e.type} field.`}:En;case ct:case St:case wt:case $t:case at:case ot:case st:case Fe:case Ue:return n==="nominal"&&!e.sort?{compatible:!1,warning:`Channel ${t} should not be used with an unsorted discrete field.`}:En;case pe:case vt:return!Hi(e)&&!im(e)?{compatible:!1,warning:hp(t)}:En;case mn: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}=qi(e);return t==="time"||!t&&fm(e)}function fm(e){return e&&(e.type==="temporal"||S(e)&&!!e.timeUnit)}function Xi(e,{timeUnit:t,type:n,wrapTime:i,undefinedIfExprNotRequired:r}){const s=t&&J(t)?.unit;let o=s||n==="temporal",a;return Xn(e)?a=e.expr:v(e)?a=e.signal:Wt(e)?(o=!0,a=Ht(e)):(N(e)||B(e))&&(o&&(a=`datetime(${L(e)})`,tg(s)&&((B(e)&&e<1e4||N(e)&&isNaN(Date.parse(e)))&&(a=Ht({[s]:e}))))),a?i&&o?`time(${a})`:a:r?void 0:L(e)}function jc(e,t){const{type:n}=e;return t.map(i=>{const r=S(e)&&!qt(e.timeUnit)?e.timeUnit:void 0,s=Xi(i,{timeUnit:r,type:n,undefinedIfExprNotRequired:!0});return s!==void 0?{signal:s}:i})}function ti(e,t){return j(e.bin)?ut(t)&&["ordinal","nominal"].includes(e.type):(console.warn("Only call this method for binned field defs."),!1)}const Uc={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 ni(e){return e?.condition}const Bc=["domain","grid","labels","ticks","title"],dm={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"},Wc={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},pm={...Wc,style:1,labelExpr:1,encoding:1};function Hc(e){return!!pm[e]}const gm={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},qc=b(gm);function pt(e){return"mark"in e}class Yi{constructor(t,n){this.name=t,this.run=n}hasMatchingType(t){return pt(t)?Wg(t.mark)===this.name:!1}}function Qt(e,t){const n=e&&e[t];return n?E(n)?Lt(n,i=>!!i.field):S(n)||Bi(n):!1}function Gc(e,t){const n=e&&e[t];return n?E(n)?Lt(n,i=>!!i.field):S(n)||Ye(n)||ei(n):!1}function Vc(e,t){if(Y(t)){const n=e[t];if((S(n)||Ye(n))&&(oc(n.type)||S(n)&&n.timeUnit)){const i=Hr(t);return Gc(e,i)}}return!1}function Ns(e){return Lt(md,t=>{if(Qt(e,t)){const n=e[t];if(E(n))return Lt(n,i=>!!i.aggregate);{const i=Ke(n);return i&&!!i.aggregate}}return!1})}function Xc(e,t){const n=[],i=[],r=[],s=[],o={};return Ts(e,(a,c)=>{if(S(a)){const{field:u,aggregate:l,bin:f,timeUnit:d,...p}=a;if(l||d||f){const g=ks(a),m=g?.title;let h=w(a,{forAs:!0});const y={...m?[]:{title:vn(a,t,{allowDisabling:!0})},...p,field:h};if(l){let $;if(_t(l)?($="argmax",h=w({op:"argmax",field:l.argmax},{forAs:!0}),y.field=`${h}.${u}`):lt(l)?($="argmin",h=w({op:"argmin",field:l.argmin},{forAs:!0}),y.field=`${h}.${u}`):l!=="boxplot"&&l!=="errorbar"&&l!=="errorband"&&($=l),$){const k={op:$,as:h};u&&(k.field=u),s.push(k)}}else if(n.push(h),ce(a)&&j(f)){if(i.push({bin:f,field:u,as:h}),n.push(w(a,{binSuffix:"end"})),ti(a,c)&&n.push(w(a,{binSuffix:"range"})),Y(c)){const $={field:`${h}_end`};o[`${c}2`]=$}y.bin="binned",ga(c)||(y.type=Gt)}else if(d&&!qt(d)){r.push({timeUnit:d,field:u,as:h});const $=ce(a)&&a.type!==bn&&"time";$&&(c===qn||c===jt?y.formatType=$:_d(c)?y.legend={formatType:$,...y.legend}:Y(c)&&(y.axis={formatType:$,...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 mm(e,t,n){const i=Cd(t,n);if(i){if(i==="binned"){const r=e[t===Fe?q:Q];return!!(S(r)&&S(e[t])&&ie(r.bin))}}else return!1;return!0}function hm(e,t,n,i){const r={};for(const s of b(e))pa(s)||x(gp(s));for(let s of wd){if(!e[s])continue;const o=e[s];if(Vn(s)){const a=Sd(s),c=r[a];if(S(c)&&(pg(c.type)&&(S(o)&&!c.timeUnit))){x(cp(a));continue}}if(s==="angle"&&t==="arc"&&!e.theta&&(x(ap),s=Ee),!mm(e,s,t)){x(Ti(s,t));continue}if(s===at&&t==="line"){const a=Ke(e[s]);if(a?.aggregate){x(pp);continue}}if(s===de&&(n?"fill"in e:"stroke"in e)){x(Ba("encoding",{fill:"fill"in e,stroke:"stroke"in e}));continue}if(s===Gn||s===mn&&!E(o)&&!Ie(o)||s===jt&&E(o)){if(o){if(s===mn){const a=e[s];if(Oc(a)){r[s]=a;continue}}r[s]=G(o).reduce((a,c)=>(S(c)?a.push(Fs(c,s)):x(Zr(c,s)),a),[])}}else{if(s===jt&&o===null)r[s]=null;else if(!S(o)&&!Ye(o)&&!Ie(o)&&!Ui(o)&&!v(o)){x(Zr(o,s));continue}r[s]=Dc(o,s,i)}}return r}function Ki(e,t){const n={};for(const i of b(e)){const r=Dc(e[i],i,t,{compositeMark:!0});n[i]=r}return n}function ym(e){const t=[];for(const n of b(e))if(Qt(e,n)){const i=e[n],r=G(i);for(const s of r)S(s)?t.push(s):Bi(s)&&t.push(s.condition)}return t}function Ts(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 bm(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 Yc(e,t){return b(t).reduce((n,i)=>{switch(i){case q:case Q:case vi:case _i:case Ei:case Fe:case Ue:case xt:case gn:case Ee:case ot:case Ne:case st:case Te:case Ae:case Oe:case _e:case qn:case pe:case Dt:case jt:return n;case mn:if(e==="line"||e==="trail")return n;case Gn:case $i:{const r=t[i];if(E(r)||S(r))for(const s of G(r))s.aggregate||n.push(w(s,{}));return n}case at:if(e==="trail")return n;case de:case Be:case We:case ct:case St:case wt:case vt:case $t:{const r=Ke(t[i]);return r&&!r.aggregate&&n.push(w(r,{})),n}}},[])}function xm(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 As(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 ${Os(t)}`:"";return{field:o+t.field,type:t.type,title:v(a)?{signal:`${a}"${escape(c)}"`}:a+c}}),s=ym(n).map(tm);return{tooltip:[...r,...je(s,O)]}}function Os(e){const{title:t,field:n}=e;return X(t,n)}function Ps(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=Os(n);return Kc(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 Kc(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}:{},...Ve(i.mark)?i.mark:{type:i.mark},style:`${a}-${String(t)}`,...jn(e[t])?{}:e[t]}}]:[]}function Qc(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:Qi(s,n),continuousAxisChannelDef2:Qi(o,n),continuousAxisChannelDefError:Qi(a,n),continuousAxisChannelDefError2:Qi(c,n),continuousAxis:r}}function Qi(e,t){if(e?.aggregate){const{aggregate:n,...i}=e;return n!==t&&x(Bp(n,t)),i}else return e}function Jc(e,t){const{mark:n,encoding:i}=e,{x:r,y:s}=i;if(Ve(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 Ji="boxplot",Sm=["box","median","outliers","rule","ticks"],wm=new Yi(Ji,eu);function Zc(e){return B(e)?"tukey":e}function eu(e,{config:t}){e={...e,encoding:Ki(e.encoding,t)};const{mark:n,encoding:i,params:r,projection:s,...o}=e,a=Ve(n)?n:{type:n};r&&x(La("boxplot"));const c=a.extent??t.boxplot.extent,u=z("size",a,t),l=a.invalid,f=Zc(c),{bins:d,timeUnits:p,transform:g,continuousAxisChannelDef:m,continuousAxis:h,groupby:y,aggregate:$,encodingWithoutContinuousAxis:k,ticksOrient:_,boxOrient:T,customTooltipWithoutAggregatedField:D}=$m(e,c,t),{color:ye,size:re,...tt}=k,le=Of=>Ps(a,h,m,Of,t.boxplot),nt=le(tt),Nr=le(k),gi=le({...tt,...re?{size:re}:{}}),on=As([{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"}],m,k),Dn={type:"tick",color:"black",opacity:1,orient:_,invalid:l,aria:!1},an=f==="min-max"?on:As([{fieldPrefix:"upper_whisker_",titlePrefix:"Upper Whisker"},{fieldPrefix:"lower_whisker_",titlePrefix:"Lower Whisker"}],m,k),Mo=[...nt({partName:"rule",mark:{type:"rule",invalid:l,aria:!1},positionPrefix:"lower_whisker",endPositionPrefix:"lower_box",extraEncoding:an}),...nt({partName:"rule",mark:{type:"rule",invalid:l,aria:!1},positionPrefix:"upper_box",endPositionPrefix:"upper_whisker",extraEncoding:an}),...nt({partName:"ticks",mark:Dn,positionPrefix:"lower_whisker",extraEncoding:an}),...nt({partName:"ticks",mark:Dn,positionPrefix:"upper_whisker",extraEncoding:an})],Do=[...f!=="tukey"?Mo:[],...Nr({partName:"box",mark:{type:"bar",...u?{size:u}:{},orient:T,invalid:l,ariaRoleDescription:"box"},positionPrefix:"lower_box",endPositionPrefix:"upper_box",extraEncoding:on}),...gi({partName:"median",mark:{type:"tick",invalid:l,...M(t.boxplot.median)&&t.boxplot.median.color?{color:t.boxplot.median.color}:{},...u?{size:u}:{},orient:_,aria:!1},positionPrefix:"mid_box",extraEncoding:on})];if(f==="min-max")return{...o,transform:(o.transform??[]).concat(g),layer:Do};const jo=`datum["lower_box_${m.field}"]`,Uo=`datum["upper_box_${m.field}"]`,Bo=`(${Uo} - ${jo})`,Wo=`${jo} - ${c} * ${Bo}`,Ho=`${Uo} + ${c} * ${Bo}`,mi=`datum["${m.field}"]`,Nf={joinaggregate:tu(m.field),groupby:y},qo={transform:[{filter:`(${Wo} <= ${mi}) && (${mi} <= ${Ho})`},{aggregate:[{op:"min",field:m.field,as:`lower_whisker_${m.field}`},{op:"max",field:m.field,as:`upper_whisker_${m.field}`},{op:"min",field:`lower_box_${m.field}`,as:`lower_box_${m.field}`},{op:"max",field:`upper_box_${m.field}`,as:`upper_box_${m.field}`},...$],groupby:y}],layer:Mo},{tooltip:PS,...Tf}=tt,{scale:Go,axis:Af}=m,Vo=Os(m),Xo=fe(Af,["title"]),Yo=Kc(a,"outliers",t.boxplot,{transform:[{filter:`(${mi} < ${Wo}) || (${mi} > ${Ho})`}],mark:"point",encoding:{[h]:{field:m.field,type:m.type,...Vo!==void 0?{title:Vo}:{},...Go!==void 0?{scale:Go}:{},...I(Xo)?{}:{axis:Xo}},...Tf,...ye?{color:ye}:{},...D?{tooltip:D}:{}}})[0];let hi;const Ko=[...d,...p,Nf];return Yo?hi={transform:Ko,layer:[Yo,qo]}:(hi=qo,hi.transform.unshift(...Ko)),{...o,layer:[hi,{transform:g,layer:Do}]}}function tu(e){return[{op:"q1",field:e,as:`lower_box_${e}`},{op:"q3",field:e,as:`upper_box_${e}`}]}function $m(e,t,n){const i=Jc(e,Ji),{continuousAxisChannelDef:r,continuousAxis:s}=Qc(e,i,Ji),o=r.field,a=Zc(t),c=[...tu(o),{op:"median",field:o,as:`mid_box_${o}`},{op:"min",field:o,as:(a==="min-max"?"lower_whisker_":"min_")+o},{op:"max",field:o,as:(a==="min-max"?"upper_whisker_":"max_")+o}],u=a==="min-max"||a==="tukey"?[]:[{calculate:`datum["upper_box_${o}"] - datum["lower_box_${o}"]`,as:`iqr_${o}`},{calculate:`min(datum["upper_box_${o}"] + datum["iqr_${o}"] * ${t}, datum["max_${o}"])`,as:`upper_whisker_${o}`},{calculate:`max(datum["lower_box_${o}"] - datum["iqr_${o}"] * ${t}, datum["min_${o}"])`,as:`lower_whisker_${o}`}],{[s]:l,...f}=e.encoding,{customTooltipWithoutAggregatedField:d,filteredEncoding:p}=xm(f),{bins:g,timeUnits:m,aggregate:h,groupby:y,encoding:$}=Xc(p,n),k=i==="vertical"?"horizontal":"vertical",_=i,T=[...g,...m,{aggregate:[...h,...c],groupby:y},...u];return{bins:g,timeUnits:m,transform:T,groupby:y,aggregate:h,continuousAxisChannelDef:r,continuousAxis:s,encodingWithoutContinuousAxis:$,ticksOrient:k,boxOrient:_,customTooltipWithoutAggregatedField:d}}const zs="errorbar",vm=["ticks","rule"],Em=new Yi(zs,nu);function nu(e,{config:t}){e={...e,encoding:Ki(e.encoding,t)};const{transform:n,continuousAxisChannelDef:i,continuousAxis:r,encodingWithoutContinuousAxis:s,ticksOrient:o,markDef:a,outerSpec:c,tooltipEncoding:u}=iu(e,zs,t);delete s.size;const l=Ps(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}:{}},g=[...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,...g.length>1?{layer:g}:{...g[0]}}}function _m(e,t){const{encoding:n}=e;if(km(n))return{orient:Jc(e,t),inputType:"raw"};const i=Cm(n),r=Fm(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 km(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 Cm(e){return F(e.x2)||F(e.y2)}function Fm(e){return F(e.xError)||F(e.xError2)||F(e.yError)||F(e.yError2)}function iu(e,t,n){const{mark:i,encoding:r,params:s,projection:o,...a}=e,c=Ve(i)?i:{type:i};s&&x(La(t));const{orient:u,inputType:l}=_m(e,t),{continuousAxisChannelDef:f,continuousAxisChannelDef2:d,continuousAxisChannelDefError:p,continuousAxisChannelDefError2:g,continuousAxis:m}=Qc(e,u,t),{errorBarSpecificAggregate:h,postAggregateCalculates:y,tooltipSummary:$,tooltipTitleWithFieldName:k}=Nm(c,f,d,p,g,l,t,n),{[m]:_,[m==="x"?"x2":"y2"]:T,[m==="x"?"xError":"yError"]:D,[m==="x"?"xError2":"yError2"]:ye,...re}=r,{bins:tt,timeUnits:le,aggregate:nt,groupby:Nr,encoding:gi}=Xc(re,n),on=[...nt,...h],Dn=l!=="raw"?[]:Nr,an=As($,f,gi,k);return{transform:[...a.transform??[],...tt,...le,...on.length===0?[]:[{aggregate:on,groupby:Dn}],...y],groupby:Dn,continuousAxisChannelDef:f,continuousAxis:m,encodingWithoutContinuousAxis:gi,ticksOrient:u==="vertical"?"horizontal":"vertical",markDef:c,outerSpec:a,tooltipEncoding:an}}function Nm(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,g=e.extent?e.extent:p==="mean"?"stderr":"iqr";if(p==="median"!==(g==="iqr")&&x(Up(p,g,o)),g==="stderr"||g==="stdev")c=[{op:g,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:Wn(p)},{fieldPrefix:"upper_",titlePrefix:ru(p,g,"+")},{fieldPrefix:"lower_",titlePrefix:ru(p,g,"-")}],d=!0;else{let m,h,y;g==="ci"?(m="mean",h="ci0",y="ci1"):(m="median",h="q1",y="q3"),c=[{op:h,field:l,as:`lower_${l}`},{op:y,field:l,as:`upper_${l}`},{op:m,field:l,as:`center_${l}`}],f=[{fieldPrefix:"upper_",titlePrefix:vn({field:l,aggregate:y,type:"quantitative"},a,{allowDisabling:!1})},{fieldPrefix:"lower_",titlePrefix:vn({field:l,aggregate:h,type:"quantitative"},a,{allowDisabling:!1})},{fieldPrefix:"center_",titlePrefix:vn({field:l,aggregate:m,type:"quantitative"},a,{allowDisabling:!1})}]}}else{(e.center||e.extent)&&x(jp(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:Mt(Mt(p.calculate,'datum["',""),'"]',"")})}return{postAggregateCalculates:u,errorBarSpecificAggregate:c,tooltipSummary:f,tooltipTitleWithFieldName:d}}function ru(e,t,n){return`${Wn(e)} ${n} ${t}`}const Rs="errorband",Tm=["band","borders"],Am=new Yi(Rs,su);function su(e,{config:t}){e={...e,encoding:Ki(e.encoding,t)};const{transform:n,continuousAxisChannelDef:i,continuousAxis:r,encodingWithoutContinuousAxis:s,markDef:o,outerSpec:a,tooltipEncoding:c}=iu(e,Rs,t),u=o,l=Ps(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 g={...u.interpolate?{interpolate:u.interpolate}:{},...u.tension&&u.interpolate?{tension:u.tension}:{}};return f?(d={...d,...g,ariaRoleDescription:"errorband"},p={...p,...g,aria:!1}):u.interpolate?x(Ga("interpolate")):u.tension&&x(Ga("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 ou={};function Is(e,t,n){const i=new Yi(e,t);ou[e]={normalizer:i,parts:n}}function Om(){return b(ou)}Is(Ji,eu,Sm),Is(zs,nu,vm),Is(Rs,su,Tm);const Pm=["gradientHorizontalMaxLength","gradientHorizontalMinLength","gradientVerticalMaxLength","gradientVerticalMinLength","unselectedOpacity"],au={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"},cu={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"},zm=b(au),Rm=b(cu),Im={header:1,headerRow:1,headerColumn:1,headerFacet:1},uu=b(Im),lu=["size","shape","fill","stroke","strokeDash","strokeWidth","opacity"],Lm={gradientHorizontalMaxLength:200,gradientHorizontalMinLength:100,gradientVerticalMaxLength:200,gradientVerticalMinLength:64,unselectedOpacity:.35},Mm={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_",Dm={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 Ls(e){return e==="legend"||!!e?.legend}function Ms(e){return Ls(e)&&M(e)}function Ds(e){return!!e?.select}function fu(e){const t=[];for(const n of e||[]){if(Ds(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 jm(e){return Zi(e)||Us(e)||js(e)}function js(e){return"concat"in e}function Zi(e){return"vconcat"in e}function Us(e){return"hconcat"in e}function du({step:e,offsetIsDiscrete:t}){return t?e.for??"offset":"position"}function Qe(e){return M(e)&&e.step!==void 0}function pu(e){return e.view||e.width||e.height}const gu=20,Um={align:1,bounds:1,center:1,columns:1,spacing:1},Bm=b(Um);function Wm(e,t,n){const i=n[t],r={},{spacing:s,columns:o}=i;s!==void 0&&(r.spacing=s),o!==void 0&&((ji(e)&&!Zn(e.facet)||js(e))&&(r.columns=o)),Zi(e)&&(r.columns=1);for(const a of Bm)if(e[a]!==void 0)if(a==="spacing"){const c=e[a];r[a]=B(c)?c:{row:c.row??s,column:c.column??s}}else r[a]=e[a];return r}function Bs(e,t){return e[t]??e[t==="width"?"continuousWidth":"continuousHeight"]}function er(e,t){const n=tr(e,t);return Qe(n)?n.step:mu}function tr(e,t){const n=e[t]??e[t==="width"?"discreteWidth":"discreteHeight"];return X(n,{step:e.step})}const mu=20,Hm={continuousWidth:200,continuousHeight:200,step:mu},qm={background:"white",padding:5,timeFormat:"%b %d, %Y",countTitle:"Count of Records",view:Hm,mark:Lg,arc:{},area:{},bar:jg,circle:{},geoshape:{},image:{},line:{},point:{},rect:Ug,rule:{color:"black"},square:{},text:{color:"black"},tick:Bg,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:xg,projection:{},legend:Lm,header:{titlePadding:10,labelPadding:10},headerColumn:{},headerRow:{},headerFacet:{},selection:Dm,style:{},title:{},facet:{spacing:gu},concat:{spacing:gu},normalizedNumberFormat:".0%"},gt=["#4c78a8","#f58518","#e45756","#72b7b2","#54a24b","#eeca3b","#b279a2","#ff9da6","#9d755d","#bab0ac"],hu={text:11,guideLabel:10,guideTitle:11,groupTitle:13,groupSubtitle:12},yu={blue:gt[0],orange:gt[1],red:gt[2],teal:gt[3],green:gt[4],yellow:gt[5],purple:gt[6],pink:gt[7],brown:gt[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 Gm(e={}){return{signals:[{name:"color",value:M(e)?{...yu,...e}:yu}],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 Vm(e){return{signals:[{name:"fontSize",value:M(e)?{...hu,...e}:hu}],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 Xm(e){return{text:{font:e},style:{"guide-label":{font:e},"guide-title":{font:e},"group-title":{font:e},"group-subtitle":{font:e}}}}function bu(e){const t=b(e||{}),n={};for(const i of t){const r=e[i];n[i]=ni(r)?Ea(r):xe(r)}return n}function Ym(e){const t=b(e),n={};for(const i of t)n[i]=bu(e[i]);return n}const Km=[...bc,...qc,...uu,"background","padding","legend","lineBreak","scale","style","title","view"];function xu(e={}){const{color:t,font:n,fontSize:i,selection:r,...s}=e,o=Qo({},C(qm),n?Xm(n):{},t?Gm(t):{},i?Vm(i):{},s||{});r&&Mf(o,"selection",r,!0);const a=fe(o,Km);for(const c of["background","lineBreak","padding"])o[c]&&(a[c]=xe(o[c]));for(const c of bc)o[c]&&(a[c]=me(o[c]));for(const c of qc)o[c]&&(a[c]=bu(o[c]));for(const c of uu)o[c]&&(a[c]=me(o[c]));return o.legend&&(a.legend=me(o.legend)),o.scale&&(a.scale=me(o.scale)),o.style&&(a.style=Ym(o.style)),o.title&&(a.title=me(o.title)),o.view&&(a.view=me(o.view)),a}const Qm=new Set(["view",...Ag]),Jm=["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"],Zm={view:["continuousWidth","continuousHeight","discreteWidth","discreteHeight","step"],...Ig};function eh(e){e=C(e);for(const t of Jm)delete e[t];if(e.axis)for(const t in e.axis)ni(e.axis[t])&&delete e.axis[t];if(e.legend)for(const t of Pm)delete e.legend[t];if(e.mark){for(const t of yc)delete e.mark[t];e.mark.tooltip&&M(e.mark.tooltip)&&delete e.mark.tooltip}e.params&&(e.signals=(e.signals||[]).concat(fu(e.params)),delete e.params);for(const t of Qm){for(const i of yc)delete e[t][i];const n=Zm[t];if(n)for(const i of n)delete e[t][i];nh(e,t)}for(const t of Om())delete e[t];th(e);for(const t in e)M(e[t])&&I(e[t])&&delete e[t];return I(e)?void 0:e}function th(e){const{titleMarkConfig:t,subtitleMarkConfig:n,subtitle:i}=va(e.title);I(t)||(e.style["group-title"]={...e.style["group-title"],...t}),I(n)||(e.style["group-subtitle"]={...e.style["group-subtitle"],...n}),I(i)?delete e.title:e.title=i}function nh(e,t,n,i){const r=i?e[t][i]:e[t];t==="view"&&(n="cell");const s={...r,...e.style[n??t]};I(s)||(e.style[n??t]=s),i||delete e[t]}function nr(e){return"layer"in e}function ih(e){return"repeat"in e}function rh(e){return!E(e.repeat)&&e.repeat.layer}class Ws{map(t,n){return ji(t)?this.mapFacet(t,n):ih(t)?this.mapRepeat(t,n):Us(t)?this.mapHConcat(t,n):Zi(t)?this.mapVConcat(t,n):js(t)?this.mapConcat(t,n):this.mapLayerOrUnit(t,n)}mapLayerOrUnit(t,n){if(nr(t))return this.mapLayer(t,n);if(pt(t))return this.mapUnit(t,n);throw new Error(Qr(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 sh={zero:1,center:1,normalize:1};function oh(e){return e in sh}const ah=new Set([gc,zi,Pi,Li,Ii,ys,bs,Ri,mc,hs]),ch=new Set([zi,Pi,gc]);function kn(e){return S(e)&&wn(e)==="quantitative"&&!e.bin}function Su(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 uh(e){switch(e){case"x":return"y";case"y":return"x";case"theta":return"radius";case"radius":return"theta"}}function wu(e,t){const n=Ve(e)?e:{type:e},i=n.type;if(!ah.has(i))return null;const r=Su(t,"x",n)||Su(t,"theta",n);if(!r)return null;const s=t[r],o=S(s)?w(s,{}):void 0,a=uh(r),c=[],u=new Set;if(t[a]){const m=t[a],h=S(m)?w(m,{}):void 0;h&&h!==o&&(c.push(a),u.add(h))}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=$d.reduce((m,h)=>{if(h!=="tooltip"&&Qt(t,h)){const y=t[h];for(const $ of G(y)){const k=Ke($);if(k.aggregate)continue;const _=w(k,{});(!_||!u.has(_))&&m.push({channel:h,fieldDef:k})}}return m},[]);let g;return s.stack!==void 0?jn(s.stack)?g=s.stack?"zero":null:g=s.stack:ch.has(i)&&(g="zero"),!g||!oh(g)||Ns(t)&&p.length===0?null:s?.scale?.type&&s?.scale?.type!==he.LINEAR?(s?.stack&&x(Lp(s.scale.type)),null):F(t[He(r)])?(s.stack!==void 0&&x(Ip(r)),null):(S(s)&&s.aggregate&&!zd.has(s.aggregate)&&x(Mp(s.aggregate)),{groupbyChannels:c,groupbyFields:u,fieldChannel:r,impute:s.impute===null?!1:Ft(i),stackBy:p,offset:g})}function $u(e,t,n){const i=me(e),r=z("orient",i,n);if(i.orient=ph(i.type,t,r),r!==void 0&&r!==i.orient&&x(Sp(i.orient,r)),i.type==="bar"&&i.orient){const c=z("cornerRadiusEnd",i,n);if(c!==void 0){const u=i.orient==="horizontal"&&t.x2||i.orient==="vertical"&&t.y2?["cornerRadius"]:Dg[i.orient];for(const l of u)i[l]=c;i.cornerRadiusEnd!==void 0&&delete i.cornerRadiusEnd}}const s=z("opacity",i,n),o=z("fillOpacity",i,n);s===void 0&&o===void 0&&(i.opacity=fh(i.type,t));const a=z("cursor",i,n);return a===void 0&&(i.cursor=lh(i,t,n)),i}function lh(e,t,n){return t.href||e.href||z("href",e,n)?"pointer":e.cursor}function fh(e,t){return P([Ii,hs,ys,bs],e)&&!Ns(t)?.7:void 0}function dh(e,t,{graticule:n}){if(n)return!1;const i=dt("filled",e,t),r=e.type;return X(i,r!==Ii&&r!==Ri&&r!==Li)}function ph(e,t,n){switch(e){case Ii:case ys:case bs:case mc:case Ng:case Fg:return}const{x:i,y:r,x2:s,y2:o}=t;switch(e){case zi:if(S(i)&&(ie(i.bin)||S(r)&&r.aggregate&&!i.aggregate))return"vertical";if(S(r)&&(ie(r.bin)||S(i)&&i.aggregate&&!r.aggregate))return"horizontal";if(o||s){if(n)return n;if(!s)return(S(i)&&i.type===Gt&&!j(i.bin)||Wi(i))&&(S(r)&&ie(r.bin))?"horizontal":"vertical";if(!o)return(S(r)&&r.type===Gt&&!j(r.bin)||Wi(r))&&(S(i)&&ie(i.bin))?"vertical":"horizontal"}case Li:if(s&&!(S(i)&&ie(i.bin))&&o&&!(S(r)&&ie(r.bin)))return;case Pi:if(o)return S(r)&&ie(r.bin)?"horizontal":"vertical";if(s)return S(i)&&ie(i.bin)?"vertical":"horizontal";if(e===Li){if(i&&!r)return"vertical";if(r&&!i)return"horizontal"}case Ri:case hs:{const a=Pc(i),c=Pc(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=ce(i)&&i.type===bn,l=ce(r)&&r.type===bn;if(u&&!l)return"vertical";if(!u&&l)return"horizontal"}return}}return"vertical"}function gh(e){const{point:t,line:n,...i}=e;return b(i).length>1?i:i.type}function mh(e){for(const t of["line","area","rule","trail"])e[t]&&(e={...e,[t]:fe(e[t],["point","line"])});return e}function Hs(e,t={},n){return e.point==="transparent"?{opacity:0}:e.point?M(e.point)?e.point:{}:e.point!==void 0?null:t.point||n.shape?M(t.point)?t.point:{}:void 0}function vu(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 hh{constructor(){this.name="path-overlay"}hasMatchingType(t,n){if(pt(t)){const{mark:i,encoding:r}=t,s=Ve(i)?i:{type:i};switch(s.type){case"line":case"rule":case"trail":return!!Hs(s,n[s.type],r);case"area":return!!Hs(s,n[s.type],r)||!!vu(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=Ki(u,r),d=Ve(a)?a:{type:a},p=Hs(d,r[d.type],f),g=d.type==="area"&&vu(d,r[d.type]),m=[{name:c,...s?{params:s}:{},mark:gh({...d.type==="area"&&d.opacity===void 0&&d.fillOpacity===void 0?{opacity:.7}:{},...d}),encoding:fe(f,["shape"])}],h=wu($u(d,f,r),f);let y=f;if(h){const{fieldChannel:$,offset:k}=h;y={...f,[$]:{...f[$],...k?{stack:k}:{}}}}return y=fe(y,["y2","x2"]),g&&m.push({...o?{projection:o}:{},mark:{type:"line",...dn(d,["clip","interpolate","tension","tooltip"]),...g},encoding:y}),p&&m.push({...o?{projection:o}:{},mark:{type:"point",opacity:1,filled:!0,...dn(d,["clip","tooltip"]),...p},encoding:y}),i({...l,layer:m},{...n,config:mh(r)})}}function yh(e,t){return t?Zn(e)?Cu(e,t):Eu(e,t):e}function qs(e,t){return t?Cu(e,t):e}function Gs(e,t,n){const i=t[e];if(Zg(i)){if(i.repeat in n)return{...t,[e]:n[i.repeat]};x(ep(i.repeat));return}return t}function Eu(e,t){if(e=Gs("field",e,t),e===void 0)return;if(e===null)return null;if(_s(e)&&Xe(e.sort)){const n=Gs("field",e.sort,t);e={...e,...n?{sort:n}:{}}}return e}function _u(e,t){if(S(e))return Eu(e,t);{const n=Gs("datum",e,t);return n!==e&&!n.type&&(n.type="nominal"),n}}function ku(e,t){if(F(e)){const n=_u(e,t);if(n)return n;if(Ui(e))return{condition:e.condition}}else{if(ei(e)){const n=_u(e.condition,t);if(n)return{...e,condition:n};{const{condition:i,...r}=e;return r}}return e}return}function Cu(e,t){const n={};for(const i in e)if(cn(e,i)){const r=e[i];if(E(r))n[i]=r.map(s=>ku(s,t)).filter(s=>s);else{const s=ku(r,t);s!==void 0&&(n[i]=s)}}return n}class bh{constructor(){this.name="RuleForRangedLine"}hasMatchingType(t){if(pt(t)){const{encoding:n,mark:i}=t;if(i==="line"||Ve(i)&&i.type==="line")for(const r of xd){const s=Ut(r),o=n[s];if(n[r]&&(S(o)&&!ie(o.bin)||Ye(o)))return!0}}return!1}run(t,n,i){const{encoding:r,mark:s}=t;return x(xp(!!r.x2,!!r.y2)),i({...t,mark:M(s)?{...s,type:"rule"}:"rule"},n)}}class xh extends Ws{constructor(){super(...arguments);this.nonFacetUnitNormalizers=[wm,Em,Am,new hh,new bh]}map(t,n){if(pt(t)){const i=Qt(t.encoding,it),r=Qt(t.encoding,rt),s=Qt(t.encoding,wi);if(i||r||s)return this.mapFacetedUnit(t,n)}return super.map(t,n)}mapUnit(t,n){const{parentEncoding:i,parentProjection:r}=n,s=qs(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 rh(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_${H(f)}`,g=this.mapLayerOrUnit(r,{...n,repeater:d,repeaterPrefix:p});return g.name=p,g})}}mapNonLayerRepeat(t,n){const{repeat:i,spec:r,data:s,...o}=t;!E(i)&&t.columns&&(t=fe(t,["columns"]),x(Ma("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 g of d)for(const m of l)for(const h of f){const y={repeat:g,row:m,column:h,layer:c.layer},$=(r.name?`${r.name}_`:"")+u+"child__"+(E(i)?`${H(g)}`:(i.row?`row_${H(m)}`:"")+(i.column?`column_${H(h)}`:"")),k=this.map(r,{...n,repeater:y,repeaterPrefix:$});k.name=$,a.push(fe(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 Zn(i)&&t.columns&&(t=fe(t,["columns"]),x(Ma("facet"))),super.mapFacet(t,n)}mapUnitWithParentEncodingOrProjection(t,n){const{encoding:i,projection:r}=t,{parentEncoding:s,parentProjection:o,config:a}=n,c=Nu({parentProjection:o,projection:r}),u=Fu({parentEncoding:s,encoding:qs(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,...g}=t,{facetMapping:m,layout:h}=this.getFacetMappingAndLayout({row:i,column:r,facet:s},n),y=qs(o,n.repeater);return this.mapFacet({...g,...h,facet:m,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(yp([...i?[it]:[],...r?[rt]:[]]));const o={},a={};for(const c of[it,rt]){const u=t[c];if(u){const{align:l,center:f,spacing:d,columns:p,...g}=u;o[c]=g;for(const m of["align","center","spacing"])u[m]!==void 0&&(a[m]??(a[m]={}),a[m][c]=u[m])}}return{facetMapping:o,layout:a}}else{const{align:o,center:a,spacing:c,columns:u,...l}=s;return{facetMapping:yh(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:Fu({parentEncoding:n,encoding:s,layer:!0}),parentProjection:Nu({parentProjection:i,projection:o})};return super.mapLayer({...a,...t.name?{name:[c.repeaterPrefix,t.name].filter(u=>u).join("_")}:{}},c)}}function Fu({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 ei(o)?i[s]={...o,condition:{...a,...o.condition}}:o||o===null?i[s]=o:(n||Ie(a)||v(a)||F(a)||E(a))&&(i[s]=a)}}else i=t;return!i||I(i)?void 0:i}function Nu(e){const{parentProjection:t,projection:n}=e;return t&&n&&x(op({parentProjection:t,projection:n})),n??t}function Vs(e){return"filter"in e}function Sh(e){return e?.stop!==void 0}function Tu(e){return"lookup"in e}function wh(e){return"data"in e}function $h(e){return"param"in e}function vh(e){return"pivot"in e}function Eh(e){return"density"in e}function _h(e){return"quantile"in e}function kh(e){return"regression"in e}function Ch(e){return"loess"in e}function Fh(e){return"sample"in e}function Nh(e){return"window"in e}function Th(e){return"joinaggregate"in e}function Ah(e){return"flatten"in e}function Oh(e){return"calculate"in e}function Au(e){return"bin"in e}function Ph(e){return"impute"in e}function zh(e){return"timeUnit"in e}function Rh(e){return"aggregate"in e}function Ih(e){return"stack"in e}function Lh(e){return"fold"in e}function Mh(e){return"extent"in e&&!("density"in e)}function Dh(e){return e.map(t=>Vs(t)?{filter:fn(t.filter,dg)}:t)}class jh extends Ws{map(t,n){return n.emptySelections??(n.emptySelections={}),n.selectionPredicates??(n.selectionPredicates={}),t=Ou(t,n),super.map(t,n)}mapLayerOrUnit(t,n){if(t=Ou(t,n),t.encoding){const i={};for(const[r,s]of bt(t.encoding))i[r]=Pu(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 ne(n.selectionPredicates[s]??{}))f.empty=u!=="none";return{name:s,value:a,select:l,bind:c}})}:t}}function Ou(e,t){const{transform:n,...i}=e;if(n){const r=n.map(s=>{if(Vs(s))return{filter:Xs(s,t)};if(Au(s)&&Bt(s.bin))return{...s,bin:zu(s.bin)};if(Tu(s)){const{selection:o,...a}=s.from;return o?{...s,from:{param:o,...a}}:s}return s});return{...i,transform:r}}return e}function Pu(e,t){const n=C(e);if(S(n)&&Bt(n.bin)&&(n.bin=zu(n.bin)),Kt(n)&&n.scale?.domain?.selection){const{selection:i,...r}=n.scale.domain;n.scale.domain={...r,...i?{param:i}:{}}}if(Ui(n))if(Jo(n.condition))n.condition=n.condition.map(i=>{const{selection:r,param:s,test:o,...a}=i;return s?i:{...a,test:Xs(i,t)}});else{const{selection:i,param:r,test:s,...o}=Pu(n.condition,t);n.condition=r?n.condition:{...o,test:Xs(n.condition,t)}}return n}function zu(e){const t=e.extent;if(t?.selection){const{selection:n,...i}=t;return{...e,extent:{...i,param:n}}}return e}function Xs(e,t){const n=i=>fn(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):fn(e.test||e.filter,i=>i.selection?n(i.selection):i)}class Ys extends Ws{map(t,n){const i=n.selections??[];if(t.params&&!pt(t)){const r=[];for(const s of t.params)Ds(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)(yi(a)&&(a===t.name||r.includes(a))||Jo(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=Ys.prototype[e];Ys.prototype[e]=function(n,i){return t.call(this,n,Uh(n,i))}}function Uh(e,t){return e.name?{...t,path:(t.path??[]).concat(e.name)}:t}function Ru(e,t){t===void 0&&(t=xu(e.config));const n=qh(e,t),{width:i,height:r}=e,s=Gh(n,{width:i,height:r,autosize:e.autosize},t);return{...n,...s?{autosize:s}:{}}}const Bh=new xh,Wh=new jh,Hh=new Ys;function qh(e,t={}){const n={config:t};return Hh.map(Bh.map(Wh.map(e,n),n),n)}function Iu(e){return N(e)?{type:e}:e??{}}function Gh(e,t,n){let{width:i,height:r}=t;const s=pt(e)||nr(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(Pa("width")),i=void 0),r=="container"&&(x(Pa("height")),r=void 0));const a={type:"pad",...o,...n?Iu(n.autosize):{},...Iu(e.autosize)};return a.type==="fit"&&!s&&(x(Wd),a.type="pad"),i=="container"&&!(a.type=="fit"||a.type=="fit-x")&&x(za("width")),r=="container"&&!(a.type=="fit"||a.type=="fit-y")&&x(za("height")),be(a,{type:"pad"})?void 0:a}function Vh(e){return e==="fit"||e==="fit-x"||e==="fit-y"}function Xh(e){return e?`fit-${ki(e)}`:"fit"}const Yh=["background","padding"];function Lu(e,t){const n={};for(const i of Yh)e&&e[i]!==void 0&&(n[i]=xe(e[i]));return t&&(n.params=e.params),n}class mt{constructor(t={},n={}){this.explicit=t,this.implicit=n}clone(){return new mt(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 Je(e){return{explicit:!0,value:e}}function we(e){return{explicit:!1,value:e}}function Mu(e){return(t,n,i,r)=>{const s=e(t.value,n.value);return s>0?t:s<0?n:ir(t,n,i,r)}}function ir(e,t,n,i){return e.explicit&&t.explicit&&x(Np(n,i,e.value,t.value)),e}function At(e,t,n,i,r=ir){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 Kh extends mt{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 ii(e){return"values"in e}function Du(e){return"name"in e&&!Cn(e)&&!ii(e)&&!Ot(e)}function Ot(e){return e&&(ju(e)||Uu(e)||Ks(e))}function ju(e){return"sequence"in e}function Uu(e){return"sphere"in e}function Ks(e){return"graticule"in e}var U;(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"})(U||(U={}));function Bu(e){const{signals:t,hasLegend:n,index:i,...r}=e;return r.field=ve(r.field),r}function Jt(e,t=!0,n=Lf){if(E(e)){const i=e.map(r=>Jt(r,t,n));return t?`[${i.join(", ")}]`:i}else if(Wt(e))return n(t?Ht(e):eg(e));return t?n(L(e)):e}function Qh(e,t){for(const n of ne(e.component.selection??{})){const i=n.name;let r=`${i}${zt}, ${n.resolve==="global"?"true":`{unit: ${en(e)}}`}`;for(const s of lr){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+Ny,on:[{events:{signal:n.name+zt},update:`modify(${A(n.name+Zt)}, ${r})`}]})}return Qs(t)}function Jh(e,t){if(e.component.selection&&b(e.component.selection).length){const n=A(e.getName("cell"));t.unshift({name:"facet",value:{},on:[{events:ln("pointermove","scope"),update:`isTuple(facet) ? facet : group(${n}).datum`}]})}return Qs(t)}function Zh(e,t){let n=!1;for(const i of ne(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:`${hl}(${s}, ${A(a)}${c}`})}n=!0;for(const a of lr)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 Qs(t)}function ey(e,t){const n=[...t],i=en(e,{escape:!1});for(const r of ne(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(Bu);s.values=r.project.hasSelectionId?r.init.map(c=>({unit:i,[Le]:Jt(c,!1)[0]})):r.init.map(c=>({unit:i,fields:a,values:Jt(c,!1)}))}const o=n.filter(a=>a.name===r.name+Zt);o.length||n.push(s)}return n}function Wu(e,t){for(const n of ne(e.component.selection??{}))for(const i of lr)i.defined(n)&&i.marks&&(t=i.marks(e,n,t));return t}function ty(e,t){for(const n of e.children)V(n)&&(t=Wu(n,t));return t}function ny(e,t,n,i){const r=wl(e,t.param,t);return{signal:Se(n.get("type"))&&E(i)&&i[0]>i[1]?`isValid(${r}) && reverse(${r})`:r}}function Qs(e){return e.map(t=>(t.on&&!t.on.length&&delete t.on,t))}class R{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(ip);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 ue extends R{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 ${ra()}`),this._hash}getSource(){return this.refCounts[this._name]++,this._source}isRequired(){return!!this.refCounts[this._name]}setSource(t){this._source=t}}function Js(e){return e.as!==void 0}function Hu(e){return`${e}_end`}class Ze extends R{clone(){return new Ze(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(qt(c)){if(V(n)){const{mark:l,markDef:f,config:d}=n,p=Nt({fieldDef:s,markDef:f,config:d});(Kn(l)||!!p)&&(u={timeUnit:J(c),field:a})}}else u={as:w(s,{forAs:!0}),field:a,timeUnit:c};if(V(n)){const{mark:l,markDef:f,config:d}=n,p=Nt({fieldDef:s,markDef:f,config:d});Kn(l)&&Y(o)&&p!==.5&&(u.rectBandPosition=p)}u&&(r[O(u)]=u)}return r},{});return I(i)?null:new Ze(t,i)}static makeFromTransform(t,n){const{timeUnit:i,...r}={...n},s=J(i),o={...r,timeUnit:s};return new Ze(t,{[O(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=Js(r)?r.as:`${r.field}_end`;t.has(s)||(n[i]=r)}this.timeUnits=n}producedFields(){return new Set(ne(this.timeUnits).map(t=>Js(t)?t.as:Hu(t.field)))}dependentFields(){return new Set(ne(this.timeUnits).map(t=>t.field))}hash(){return`TimeUnit ${O(this.timeUnits)}`}assemble(){const t=[];for(const n of ne(this.timeUnits)){const{rectBandPosition:i}=n,r=J(n.timeUnit);if(Js(n)){const{field:s,as:o}=n,{unit:a,utc:c,...u}=r,l=[o,`${o}_end`];t.push({field:ve(s),type:"timeunit",...a?{units:Oi(a)}:{},...c?{timezone:"utc"}:{},...u,as:l}),t.push(...Gu(l,i,r))}else if(n){const{field:s}=n,o=s.replaceAll("\\.","."),a=qu({timeUnit:r,field:o}),c=Hu(o);t.push({type:"formula",expr:a,as:c}),t.push(...Gu([o,c],i,r))}}return t}}const rr="offsetted_rect_start",sr="offsetted_rect_end";function qu({timeUnit:e,field:t,reverse:n}){const{unit:i,utc:r}=e,s=Za(i),{part:o,step:a}=ic(s,e.step),c=r?"utcOffset":"timeOffset",u=`${c}('${o}', datum['${t}'], ${n?-a:a})`;return u}function Gu([e,t],n,i){if(n!==void 0&&n!==.5){const r=`datum['${e}']`,s=`datum['${t}']`;return[{type:"formula",expr:Vu([qu({timeUnit:i,field:e,reverse:!0}),r],n+.5),as:`${e}_${rr}`},{type:"formula",expr:Vu([r,s],n+.5),as:`${e}_${sr}`}]}return[]}function Vu([e,t],n){return`${1-n} * ${e} + ${n} * ${t}`}const ri="_tuple_fields";class iy{constructor(...t){this.items=t,this.hasChannel={},this.hasField={},this.hasSelectionId=!1}}const ry={defined:()=>!0,parse:(e,t,n)=>{const i=t.name,r=t.project??(t.project=new iy),s={},o={},a=new Set,c=(g,m)=>{const h=m==="visual"?g.channel:g.field;let y=H(`${i}_${h}`);for(let $=1;a.has(y);$++)y=H(`${i}_${h}_${$}`);return a.add(y),{[m]:y}},u=t.type,l=e.config.selection[u],f=n.value!==void 0?G(n.value):null;let{fields:d,encodings:p}=M(n.select)?n.select:{};if(!d&&!p&&f)for(const g of f){if(!M(g))continue;for(const m of b(g))bd(m)?(p||(p=[])).push(m):u==="interval"?(x(Zd),p=l.encodings):(d??(d=[])).push(m)}!d&&!p&&(p=l.encodings,"fields"in l&&(d=l.fields));for(const g of p??[]){const m=e.fieldDef(g);if(m){let h=m.field;if(m.aggregate){x(Hd(g,m.aggregate));continue}else if(!h){x(Ia(g));continue}if(m.timeUnit&&!qt(m.timeUnit)){h=e.vgField(g);const y={timeUnit:m.timeUnit,as:h,field:m.field};o[O(y)]=y}if(!s[h]){const y=u==="interval"&&ut(g)&&Se(e.getScaleComponent(g).get("type"))?"R":m.bin?"R-RE":"E",$={field:h,channel:g,type:y,index:r.items.length};$.signals={...c($,"data"),...c($,"visual")},r.items.push(s[h]=$),r.hasField[h]=s[h],r.hasSelectionId=r.hasSelectionId||h===Le,fa(g)?($.geoChannel=g,$.channel=la(g),r.hasChannel[$.channel]=s[h]):r.hasChannel[g]=s[h]}}else x(Ia(g))}for(const g of d??[]){if(r.hasField[g])continue;const m={type:"E",field:g,index:r.items.length};m.signals={...c(m,"data")},r.items.push(m),r.hasField[g]=m,r.hasSelectionId=r.hasSelectionId||g===Le}f&&(t.init=f.map(g=>r.items.map(m=>M(g)?g[m.geoChannel||m.channel]!==void 0?g[m.geoChannel||m.channel]:g[m.field]:g))),I(o)||(r.timeUnit=new Ze(null,o))},signals:(e,t,n)=>{const i=t.name+ri,r=n.filter(s=>s.name===i);return r.length>0||t.project.hasSelectionId?n:n.concat({name:i,value:t.project.items.map(Bu)})}},ht={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(!ut(r))continue;const s=e.getScaleComponent(r),o=s?s.get("type"):void 0;if(o=="sequential"&&x(Xd),!s||!Se(o)){x(Vd);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||eo(e)||i.length===0)return n;const r=n.filter(o=>o.name===t.name)[0];let s=r.update;if(s.indexOf(hl)>=0)r.update=`{${i.map(o=>`${A(ve(o.field))}: ${o.signals.data}`).join(", ")}}`;else{for(const o of i){const a=`${A(ve(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&&!eo(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 Zs(e,t){const n=A(e.scaleName(t));return`domain(${n})`}function eo(e){return e.parent&&Ln(e.parent)&&(!e.parent.parent??eo(e.parent.parent))}const Fn="_brush",Xu="_scale_trigger",si="geo_interval_init_tick",Yu="_init",sy="_center",oy={defined:e=>e.type==="interval",parse:(e,t,n)=>{var i;if(e.hasProjection){const r={...Tr(n.select)?n.select:{}};r.fields=[Le],r.encodings||(r.encodings=n.value?b(n.value):[Ae,Te]),n.select={type:"interval",...r}}if(t.translate&&!ht.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=G((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=ne(t.project.hasChannel).filter(a=>a.channel===q||a.channel===Q),o=t.init?t.init[0]:null;if(n.push(...s.reduce((a,c)=>a.concat(ay(e,t,c,o&&o[c.index])),[])),e.hasProjection){const a=A(e.projectionName()),c=e.projectionName()+sy,{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]`,g=l?o&&o[l.index]:`${c}[1]`,m=T=>e.getSizeSignalRef(T).signal,h=`[[${f?f+"[0]":"0"}, ${d?d+"[0]":"0"}],[${f?f+"[1]":m("width")}, ${d?d+"[1]":m("height")}]]`;if(o&&(n.unshift({name:i+Yu,init:`[scale(${a}, [${u?p[0]:p}, ${l?g[0]:g}]), scale(${a}, [${u?p[1]:p}, ${l?g[1]:g}])]`}),!u||!l)){const T=n.find(D=>D.name===c);T||n.unshift({name:c,update:`invert(${a}, [${m("width")}/2, ${m("height")}/2])`})}const y=`intersect(${h}, {markname: ${A(e.getName("marks"))}}, unit.mark)`,$=`{unit: ${en(e)}}`,k=`vlSelectionTuples(${y}, ${$})`,_=s.map(T=>T.signals.visual);return n.concat({name:r,on:[{events:[..._.length?[{signal:_.join(" || ")}]:[],...o?[{signal:si}]:[]],update:k}]})}else{if(!ht.defined(t)){const u=i+Xu,l=s.map(f=>{const d=f.channel,{data:p,visual:g}=f.signals,m=A(e.scaleName(d)),h=e.getScaleComponent(d).get("type"),y=Se(h)?"+":"";return`(!isArray(${p}) || (${y}invert(${m}, ${g})[0] === ${y}${p}[0] && ${y}invert(${m}, ${g})[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: ${en(e)}, fields: ${i+ri}, values`;return n.concat({name:r,...o?{init:`{${c}: ${Jt(o)}}`}:{},...a.length?{on:[{events:[{signal:a.join(" || ")}],update:`${a.join(" && ")} ? {${c}: [${a}]} : null`}]}:{}})}},topLevelSignals:(e,t,n)=>{if(V(e)&&e.hasProjection&&t.init){const i=n.filter(r=>r.name===si);i.length||n.unshift({name:si,value:null,on:[{events:"timer{1}",update:`${si} === null ? {} : ${si}`}]})}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(ht.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 h of b(u))u[h]=[{test:`${c}.length && ${c}[0].unit === ${en(e)}`,...u[h]},{value:0}];const{fill:l,fillOpacity:f,cursor:d,...p}=t.mark,g=b(p).reduce((h,y)=>(h[y]=[{test:[r!==void 0&&`${o}[0] !== ${o}[1]`,s!==void 0&&`${a}[0] !== ${a}[1]`].filter($=>$).join(" && "),value:p[y]},{value:null}],h),{}),m=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:{...m?{cursor:{value:m}}:{},fill:{value:"transparent"}},update:{...u,...g}}}]}};function ay(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===q?"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=ht.defined(t),g=e.getScaleComponent(s),m=g?g.get("type"):void 0,h=i?{init:Jt(i,!0,c)}:{value:[]};return f.push({events:{signal:t.name+Xu},update:Se(m)?`[${c(`${d}[0]`)}, ${c(`${d}[1]`)}]`:"[0, 0]"}),p?[{name:d,on:[]}]:[{name:o,...h,on:f},{name:d,...i?{init:Jt(i)}:{},on:[{events:{signal:o},update:`${o}[0] === ${o}[1] ? null : invert(${a}, ${o})`}]}]}else{const d=s===q?0:1,p=t.name+Yu,g=i?{init:`[${p}[0][${d}], ${p}[1][${d}]]`}:{value:[]};return[{name:o,...g,on:f}]}}const cy={defined:e=>e.type==="point",signals:(e,t,n)=>{const i=t.name,r=i+ri,s=t.project,o="(item().isVoronoi ? datum.datum : datum)",a=ne(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: ${en(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(e,t,n,i){const r=Ui(t)&&t.condition,s=i(t);if(r){const o=G(r),a=o.map(c=>{const u=i(c);if(Jg(c)){const{param:l,empty:f}=c,d=Sl(e,{param:l,empty:f});return{test:d,...u}}else{const l=fr(e,c.test);return{test:l,...u}}});return{[n]:[...a,...s!==void 0?[s]:[]]}}else return s!==void 0?{[n]:s}:{}}function to(e,t="text"){const n=e.encoding[t];return Nn(e,n,t,i=>or(i,e.config))}function or(e,t,n="datum"){if(e){if(Ie(e))return W(e.value);if(F(e)){const{format:i,formatType:r}=qi(e);return $s({fieldOrDatumDef:e,format:i,formatType:r,expr:n,config:t})}}return}function Ku(e,t={}){const{encoding:n,markDef:i,config:r,stack:s}=e,o=n.tooltip;if(E(o))return{tooltip:Ju({tooltip:o},s,r,t)};{const a=t.reactiveGeom?"datum.datum":"datum";return Nn(e,o,"tooltip",c=>{const u=or(c,r,a);if(u)return u;if(c===null)return;let l=z("tooltip",i,r);return l===!0&&(l={content:"encoding"}),N(l)?{value:l}:M(l)?v(l)?l:l.content==="encoding"?Ju(n,s,r,t):{signal:a}:void 0})}}function Qu(e,t,n,{reactiveGeom:i}={}){const r={...n,...n.tooltipFormat},s={},o=i?"datum.datum":"datum",a=[];function c(l,f){const d=Ut(f),p=ce(l)?l:{...l,type:e[d].type},g=p.title||Cs(p,r),m=G(g).join(", ").replaceAll(/"/g,'\\"');let h;if(Y(f)){const y=f==="x"?"x2":"y2",$=Ke(e[y]);if(ie(p.bin)&&$){const k=w(p,{expr:o}),_=w($,{expr:o}),{format:T,formatType:D}=qi(p);h=Jn(k,_,T,D,r),s[y]=!0}}if((Y(f)||f===Ee||f===Ne)&&t&&t.fieldChannel===f&&t.offset==="normalize"){const{format:y,formatType:$}=qi(p);h=$s({fieldOrDatumDef:p,format:y,formatType:$,expr:o,config:r,normalizeStack:!0}).signal}h??(h=or(p,r,o).signal),a.push({channel:f,key:m,value:h})}Ts(e,(l,f)=>{S(l)?c(l,f):Bi(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 Ju(e,t,n,{reactiveGeom:i}={}){const r=Qu(e,t,n,{reactiveGeom:i}),s=bt(r).map(([o,a])=>`"${o}": ${a}`);return s.length>0?{signal:`{${s.join(", ")}}`}:void 0}function uy(e){const{markDef:t,config:n}=e,i=z("aria",t,n);return i===!1?{}:{...i?{aria:i}:{},...ly(e),...fy(e)}}function ly(e){const{mark:t,markDef:n,config:i}=e;if(i.aria===!1)return{};const r=z("ariaRoleDescription",n,i);return r!=null?{ariaRoleDescription:{value:r}}:t in jd?{}:{ariaRoleDescription:{value:t}}}function fy(e){const{encoding:t,markDef:n,config:i,stack:r}=e,s=t.description;if(s)return Nn(e,s,"description",c=>or(c,e.config));const o=z("description",n,i);if(o!=null)return{description:W(o)};if(i.aria===!1)return{};const a=Qu(t,r,i);return I(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=z(e,i,s,{vgChannel:o,ignoreVgConfig:!0})),c!==void 0&&(a=W(c)));const u=r[e];return Nn(t,u,o??e,l=>ws({channel:e,channelDef:l,markDef:i,config:s,scaleName:t.scaleName(e),scale:t.getScaleComponent(e),stack:null,defaultRef:a}))}function Zu(e,t={filled:void 0}){const{markDef:n,encoding:i,config:r}=e,{type:s}=n,o=t.filled??z("filled",n,r),a=P(["bar","point","circle","square","geoshape"],s)?"transparent":void 0,c=z(o===!0?"color":void 0,n,r,{vgChannel:"fill"})??r.mark[o===!0&&"color"]??a,u=z(o===!1?"color":void 0,n,r,{vgChannel:"stroke"})??r.mark[o===!1&&"color"],l=o?"fill":"stroke",f={...c?{fill:W(c)}:{},...u?{stroke:W(u)}:{}};return n.color&&(o?n.fill:n.stroke)&&x(Ba("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 dy(e){const{encoding:t,mark:n}=e,i=t.order;return!Ft(n)&&Ie(i)?Nn(e,i,"zindex",r=>W(r.value)):{}}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=ws({channel:s,channelDef:a,markDef:t,config:i?.config,scaleName:i.scaleName(s),scale:i.getScaleComponent(s),stack:null,defaultRef:W(o),bandPosition:r});return{offsetType:"encoding",offset:u}}const c=t[s];return c?{offsetType:"visual",offset:c}:{}}function se(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}),g=no({model:t,defaultPos:n,channel:e,scaleName:l,scale:f}),m=!c&&Y(e)&&(r.latitude||r.longitude)?{field:t.getName(e)}:py({channel:e,channelDef:c,channel2Def:u,markDef:s,config:o,scaleName:l,scale:f,stack:a,offset:d,defaultRef:g,bandPosition:p==="encoding"?0:void 0});return m?{[i||e]:m}:void 0}function py(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 Mi({scaleName:i,fieldOrDatumDef:n,startSuffix:"start",bandPosition:a,offset:s})}return Xt(n,i,{suffix:"end"},{offset:s})}return xs(e)}function no({model:e,defaultPos:t,channel:n,scaleName:i,scale:r}){const{markDef:s,config:o}=e;return()=>{const a=Ut(n),c=Et(n),u=z(n,s,o,{vgChannel:c});if(u!==void 0)return Qn(n,u);switch(t){case"zeroOrMin":case"zeroOrMax":if(i){const l=r.get("type");if(!P([he.LOG,he.TIME,he.UTC],l)){if(r.domainDefinitelyIncludesZero())return{scale:i,value:0}}}if(t==="zeroOrMin")return a==="y"?{field:{group:"height"}}:{value:0};switch(a){case"radius":return{signal:`min(${e.width.signal},${e.height.signal})/2`};case"theta":return{signal:"2*PI"};case"x":return{field:{group:"width"}};case"y":return{value:0}}break;case"mid":{const l=e[ge(n)];return{...l,mult:.5}}}return}}const gy={left:"x",center:"xc",right:"x2"},my={top:"y",middle:"yc",bottom:"y2"};function el(e,t,n,i="middle"){if(e==="radius"||e==="theta")return Et(e);const r=e==="x"?"align":"baseline",s=z(r,t,n);let o;return v(s)?(x(bp(r)),o=void 0):o=s,e==="x"?gy[o||(i==="top"?"left":"center")]:my[o||i]}function ar(e,t,{defaultPos:n,defaultPos2:i,range:r}){return r?tl(e,t,{defaultPos:n,defaultPos2:i}):se(e,t,{defaultPos:n})}function tl(e,t,{defaultPos:n,defaultPos2:i}){const{markDef:r,config:s}=t,o=He(e),a=ge(e),c=hy(t,i,o),u=c[a]?el(e,r,s):Et(e);return{...se(e,t,{defaultPos:n,vgChannel:u}),...c}}function hy(e,t,n){const{encoding:i,mark:r,markDef:s,stack:o,config:a}=e,c=Ut(n),u=ge(n),l=Et(n),f=i[c],d=e.scaleName(c),p=e.getScaleComponent(c),{offset:g}=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 h=ge(n),y=e.markDef[h];return y!=null?{[h]:{value:y}}:{[l]:{field:e.getName(n)}}}const m=yy({channel:n,channelDef:f,channel2Def:i[n],markDef:s,config:a,scaleName:d,scale:p,stack:o,offset:g,defaultRef:void 0});return m!==void 0?{[l]:m}:cr(n,s)||cr(n,{[n]:Ni(n,s,a.style),[u]:Ni(u,s,a.style)})||cr(n,a[r])||cr(n,a.mark)||{[l]:no({model:e,defaultPos:t,channel:n,scaleName:d,scale:p})()}}function yy({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)?Xt(t,s,{suffix:"start"},{offset:c}):xs({channel:e,channelDef:n,scaleName:s,scale:o,stack:a,markDef:i,config:r,offset:c,defaultRef:u})}function cr(e,t){const n=ge(e),i=Et(e);if(t[i]!==void 0)return{[i]:Qn(e,t[i])};if(t[e]!==void 0)return{[i]:Qn(e,t[e])};if(t[n]){const r=t[n];if(Vt(r))x(dp(n));else return{[n]:Qn(e,r)}}return}function Pt(e,t){const{config:n,encoding:i,markDef:r}=e,s=r.type,o=He(t),a=ge(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??z("size",r,n,{vgChannel:a}),g=ma(t),m=s==="bar"&&(t==="x"?d==="vertical":d==="horizontal");return S(c)&&(j(c.bin)||ie(c.bin)||c.timeUnit&&!u)&&!(p&&!Vt(p))&&!i[g]&&!Z(f)?Sy({fieldDef:c,fieldDef2:u,channel:t,model:e}):(F(c)&&Z(f)||m)&&!u?xy(c,t,e):tl(t,e,{defaultPos:"zeroOrMax",defaultPos2:"zeroOrMin"})}function by(e,t,n,i,r,s,o){if(Vt(r))if(n){const c=n.get("type");if(c==="band"){let u=`bandwidth('${t}')`;r.band!==1&&(u=`${r.band} * ${u}`);const l=dt("minBandSize",{type:o},i);return{signal:l?`max(${Pe(l)}, ${u})`:u}}else r.band!==1&&(x($p(c)),r=void 0)}else return{mult:r.band,field:{group:e}};else{if(v(r))return r;if(r)return{value:r}}if(n){const c=n.get("range");if(Ct(c)&&B(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(v(f))return{signal:`(1 - (${f.signal})) * ${e}`};if(B(f))return{signal:`${1-f} * ${e}`}}const a=er(i.view,e);return{value:a-2}}function xy(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=ge(t),f=He(t),d=ma(t),p=n.scaleName(d),g=n.getScaleComponent(Hr(t)),m=a==="horizontal"&&t==="y"||a==="vertical"&&t==="x";let h;(r.size||i.size)&&(m?h=ee("size",n,{vgChannel:l,defaultRef:W(i.size)}):x(kp(i.type)));const y=!!h,$=Tc({channel:t,fieldDef:e,markDef:i,config:s,scaleType:(u||g)?.get("type"),useVlSizeChannel:m});h=h||{[l]:by(l,p||c,g||u,s,$,!!e,i.type)};const k=(u||g)?.get("type")==="band"&&Vt($)&&!y?"top":"middle",_=el(t,i,s,k),T=_==="xc"||_==="yc",{offset:D,offsetType:ye}=Tn({channel:t,markDef:i,encoding:r,model:n,bandPosition:T?.5:0}),re=xs({channel:t,channelDef:e,markDef:i,config:s,scaleName:c,scale:u,stack:o,offset:D,defaultRef:no({model:n,defaultPos:"mid",channel:t,scaleName:c,scale:u}),bandPosition:T?ye==="encoding"?0:.5:v($)?{signal:`(1-${$})/2`}:Vt($)?(1-$.band)/2:0});if(l)return{[_]:re,...h};{const tt=Et(f),le=h[l],nt=D?{...le,offset:D}:le;return{[_]:re,[tt]:E(re)?[re[0],{...re[1],offset:nt}]:{...re,offset:nt}}}}function nl(e,t,n,i,r,s,o){if(ua(e))return 0;const a=e==="x"||e==="y2",c=a?-t/2:t/2;if(v(n)||v(r)||v(i)||s){const u=Pe(n),l=Pe(r),f=Pe(i),d=Pe(s),p=a?"":"-",g=s?`(${o} < ${d} ? ${p}0.5 * (${d} - (${o})) : ${c})`:c,m=f?`${f} + `:"",h=u?`(${u} ? -1 : 1) * `:"",y=l?`(${l} + ${g})`:g;return{signal:m+h+y}}else return r=r||0,i+(n?-r-c:+r+c)}function Sy({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=Tc({channel:n,fieldDef:e,markDef:s,config:r,scaleType:u}),d=i.component.axes[n]?.[0],p=d?.get("translate")??.5,g=Y(n)?z("binSpacing",s,r)??0:0,m=He(n),h=Et(n),y=Et(m),$=dt("minBandSize",s,r),{offset:k}=Tn({channel:n,markDef:s,encoding:o,model:i,bandPosition:0}),{offset:_}=Tn({channel:m,markDef:s,encoding:o,model:i,bandPosition:0}),T=Vg({fieldDef:e,scaleName:c}),D=nl(n,g,l,p,k,$,T),ye=nl(m,g,l,p,_??k,$,T),re=v(f)?{signal:`(1-${f.signal})/2`}:Vt(f)?(1-f.band)/2:.5,tt=Nt({fieldDef:e,fieldDef2:t,markDef:s,config:r});if(j(e.bin)||e.timeUnit){const le=e.timeUnit&&tt!==.5;return{[y]:il({fieldDef:e,scaleName:c,bandPosition:re,offset:ye,useRectOffsetField:le}),[h]:il({fieldDef:e,scaleName:c,bandPosition:v(re)?{signal:`1-${re.signal}`}:1-re,offset:D,useRectOffsetField:le})}}else if(ie(e.bin)){const le=Xt(e,c,{},{offset:ye});if(S(t))return{[y]:le,[h]:Xt(t,c,{},{offset:D})};if(Bt(e.bin)&&e.bin.step)return{[y]:le,[h]:{signal:`scale("${c}", ${w(e,{expr:"datum"})} + ${e.bin.step})`,offset:D}}}x(Va(m));return}function il({fieldDef:e,scaleName:t,bandPosition:n,offset:i,useRectOffsetField:r}){return Mi({scaleName:t,fieldOrDatumDef:e,bandPosition:n,offset:i,...r?{startSuffix:rr,endSuffix:sr}:{}})}const wy=new Set(["aria","width","height"]);function Ce(e,t){const{fill:n=void 0,stroke:i=void 0}=t.color==="include"?Zu(e):{};return{...$y(e.markDef,t),...rl(e,"fill",n),...rl(e,"stroke",i),...ee("opacity",e),...ee("fillOpacity",e),...ee("strokeOpacity",e),...ee("strokeWidth",e),...ee("strokeDash",e),...dy(e),...Ku(e),...to(e,"href"),...uy(e)}}function rl(e,t,n){const{config:i,mark:r,markDef:s}=e,o=z("invalid",s,i);if(o==="hide"&&n&&!Ft(r)){const a=vy(e,{invalid:!0,channels:Ci});if(a)return{[t]:[{test:a,value:null},...G(n)]}}return n?{[t]:n}:{}}function $y(e,t){return Dd.reduce((n,i)=>(!wy.has(i)&&e[i]!==void 0&&t[i]!=="ignore"&&(n[i]=W(e[i])),n),{})}function vy(e,{invalid:t=!1,channels:n}){const i=n.reduce((s,o)=>{const a=e.getScaleComponent(o);if(a){const c=a.get("type"),u=e.vgField(o,{expr:"datum"});u&&Se(c)&&(s[u]=!0)}return s},{}),r=b(i);if(r.length>0){const s=t?"||":"&&";return r.map(o=>Ss(o,t)).join(` ${s} `)}return}function io(e){const{config:t,markDef:n}=e,i=z("invalid",n,t);if(i){const r=Ey(e,{channels:qe});if(r)return{defined:{signal:r}}}return{}}function Ey(e,{invalid:t=!1,channels:n}){const i=n.reduce((s,o)=>{const a=e.getScaleComponent(o);if(a){const c=a.get("type"),u=e.vgField(o,{expr:"datum",binSuffix:e.stack?.impute?"mid":void 0});u&&Se(c)&&(s[u]=!0)}return s},{}),r=b(i);if(r.length>0){const s=t?"||":"&&";return r.map(o=>Ss(o,t)).join(` ${s} `)}return}function sl(e,t){return t!==void 0?{[e]:W(t)}:void 0}const ro="voronoi",ol={defined:e=>e.type==="point"&&e.nearest,parse:(e,t)=>{if(t.events)for(const n of t.events)n.markname=e.getName(ro)},marks:(e,t,n)=>{const{x:i,y:r}=t.project.hasChannel,s=e.mark;if(Ft(s))return x(qd(s)),n;const o={name:e.getName(ro),type:"path",interactive:!0,from:{data:e.getName("marks")},encode:{update:{fill:{value:"transparent"},strokeWidth:{value:.35},stroke:{value:"transparent"},isVoronoi:{value:!0},...Ku(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(ro)>=0&&(c=!0)}),c||n.splice(a+1,0,o),n}},al={defined:e=>e.type==="point"&&e.resolve==="global"&&e.bind&&e.bind!=="scales"&&!Ls(e.bind),parse:(e,t,n)=>yl(t,n),topLevelSignals:(e,t,n)=>{const i=t.name,r=t.project,s=t.bind,o=t.init&&t.init[0],a=ol.defined(t)?"(item().isVoronoi ? datum.datum : datum)":"datum";return r.items.forEach((c,u)=>{const l=H(`${i}_${c.field}`),f=n.filter(d=>d.name===l);f.length||n.unshift({name:l,...o?{init:Jt(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+ri,a=r.items.map(u=>H(`${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}},ur="_toggle",cl={defined:e=>e.type==="point"&&!!e.toggle,signals:(e,t,n)=>n.concat({name:t.name+ur,value:!1,on:[{events:t.events,update:t.toggle}]}),modifyExpr:(e,t)=>{const n=t.name+zt,i=t.name+ur;return`${i} ? null : ${n}, `+(t.resolve==="global"?`${i} ? null : true, `:`${i} ? null : {unit: ${en(e)}}, `)+`${i} ? ${n} : null`}},_y={defined:e=>e.clear!==void 0&&e.clear!==!1,parse:(e,t)=>{t.clear&&(t.clear=N(t.clear)?ln(t.clear,"view"):t.clear)},topLevelSignals:(e,t,n)=>{if(al.defined(t))for(const i of t.project.items){const r=n.findIndex(s=>s.name===H(`${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"),cl.defined(t)&&(r=n.findIndex(s=>s.name===t.name+ur),i(r,"false"))}return n}},ul={defined:e=>{const t=e.resolve==="global"&&e.bind&&Ls(e.bind),n=e.project.items.length===1&&e.project.items[0].field!==Le;return t&&!n&&x(Yd),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},yl(t,i),Tr(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=G(a.filter??[]),a.filter.includes(o)||a.filter.push(o)}const r=Ms(t.bind)?t.bind.legend:"click",s=N(r)?ln(r,"view"):G(r);t.bind={legend:{merge:s}}},topLevelSignals:(e,t,n)=>{const i=t.name,r=Ms(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=`${H(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+ri,a=r.items.filter(d=>d.hasLegend).map(d=>H(`${i}_${H(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+ur),f=Ms(t.bind)&&t.bind.legend;return l&&(t.events?l.on.push({...l.on[0],events:f}):l.on[0].events=f),n}};function ky(e,t,n){const i=e.fieldDef(t)?.field;for(const r of ne(e.component.selection??{})){const s=r.project.hasField[i]??r.project.hasChannel[t];if(s&&ul.defined(r)){const o=n.get("selections")??[];o.push(r.name),n.set("selections",o,!1),s.hasLegend=!0}}}const ll="_translate_anchor",fl="_translate_delta",Cy={defined:e=>e.type==="interval"&&e.translate,signals:(e,t,n)=>{const i=t.name,r=ht.defined(t),s=i+ll,{x:o,y:a}=t.project.hasChannel;let c=ln(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?Zs(e,q):`slice(${o.signals.visual})`}`:"")+(a!==void 0?`, extent_y: ${r?Zs(e,Q):`slice(${a.signals.visual})`}`:"")+"}"}]},{name:i+fl,value:{},on:[{events:c,update:`{x: ${s}.x - x(unit), y: ${s}.y - y(unit)}`}]}),o!==void 0&&dl(e,t,o,"width",n),a!==void 0&&dl(e,t,a,"height",n),n}};function dl(e,t,n,i,r){const s=t.name,o=s+ll,a=s+fl,c=n.channel,u=ht.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"),g=d&&d.get("reverse"),m=u?c===q?g?"":"-":g?"-":"":"",h=`${o}.extent_${c}`,y=`${m}${a}.${c} / ${u?`${f}`:`span(${h})`}`,$=!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}`:"":"",_=`${$}(${h}, ${y}${k})`;l.on.push({events:{signal:a},update:u?_:`clampRange(${_}, 0, ${f})`})}const pl="_zoom_anchor",gl="_zoom_delta",Fy={defined:e=>e.type==="interval"&&e.zoom,signals:(e,t,n)=>{const i=t.name,r=ht.defined(t),s=i+gl,{x:o,y:a}=t.project.hasChannel,c=A(e.scaleName(q)),u=A(e.scaleName(Q));let l=ln(t.zoom,"scope");return r||(l=l.map(f=>(f.markname=i+Fn,f))),n.push({name:i+pl,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&&ml(e,t,o,"width",n),a!==void 0&&ml(e,t,a,"height",n),n}};function ml(e,t,n,i,r){const s=t.name,o=n.channel,a=ht.defined(t),c=r.filter($=>$.name===n.signals[a?"data":"visual"])[0],u=e.getSizeSignalRef(i).signal,l=e.getScaleComponent(o),f=l&&l.get("type"),d=a?Zs(e,o):c.name,p=s+gl,g=`${s}${pl}.${o}`,m=!a||!l?"zoomLinear":f==="log"?"zoomLog":f==="symlog"?"zoomSymlog":f==="pow"?"zoomPow":"zoomLinear",h=a?f==="pow"?`, ${l.get("exponent")??1}`:f==="symlog"?`, ${l.get("constant")??1}`:"":"",y=`${m}(${d}, ${g}, ${p}${h})`;c.on.push({events:{signal:p},update:a?y:`clampRange(${y}, 0, ${u})`})}const Zt="_store",zt="_tuple",Ny="_modify",hl="vlSelectionResolve",lr=[cy,oy,ry,cl,al,ht,ul,_y,Cy,Fy,ol];function Ty(e){let t=e.parent;for(;t&&!$e(t);)t=t.parent;return t}function en(e,{escape:t}={escape:!0}){let n=t?A(e.name):e.name;const i=Ty(e);if(i){const{facet:r}=i;for(const s of ke)r[s]&&(n+=` + '__facet_${s}_' + (facet[${A(i.vgField(s))}])`)}return n}function so(e){return ne(e.component.selection??{}).reduce((t,n)=>t||n.project.hasSelectionId,!1)}function yl(e,t){(yi(t.select)||!t.select.on)&&delete e.events,(yi(t.select)||!t.select.clear)&&delete e.clear,(yi(t.select)||!t.select.toggle)&&delete e.toggle}function oo(e){const t=[];return e.type==="Identifier"?[e.name]:e.type==="Literal"?[e.value]:(e.type==="MemberExpression"&&(t.push(...oo(e.object)),t.push(...oo(e.property))),t)}function bl(e){return e.object.type==="MemberExpression"?bl(e.object):e.object.name==="datum"}function xl(e){const t=Df(e),n=new Set;return t.visit(i=>{i.type==="MemberExpression"&&bl(i)&&n.add(oo(i).slice(1).join("."))}),n}class An extends R{clone(){return new An(null,this.model,C(this.filter))}constructor(t,n,i){super(t);this.model=n,this.filter=i,this.expr=fr(this.model,this.filter,this),this._dependentFields=xl(this.expr)}dependentFields(){return this._dependentFields}producedFields(){return new Set}assemble(){return{type:"filter",expr:this.expr}}hash(){return`Filter ${this.expr}`}}function Ay(e,t){const n={},i=e.config.selection;if(!t||!t.length)return n;for(const r of t){const s=H(r.name),o=r.select,a=N(o)?o:o.type,c=M(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)?ln(c.on,"scope"):G(C(c.on))},f=C(r);for(const d of lr)d.defined(l)&&d.parse&&d.parse(e,l,f)}return n}function Sl(e,t,n,i="datum"){const r=N(t)?t:t.param,s=H(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 wl(e,t,n){const i=H(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(ve(s))}]`}function Oy(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 ue(new An(t,e,{param:n}),r,U.Lookup,e.component.data.outputNodeRefCounts)}}function fr(e,t,n){return Bn(t,i=>N(i)?i:ug(i)?Sl(e,i,n):sc(i))}function Py(e,t){return e?E(e)&&!kt(e)?e.map(n=>Cs(n,t)).join(", "):e:void 0}function ao(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 oi(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=dm[f],p=l[f];if(d&&d!==t&&d!=="both")delete l[f];else if(ni(p)){const{condition:g,...m}=p,h=G(g),y=Uc[f];if(y){const{vgProp:$,part:k}=y,_=[...h.map(T=>{const{test:D,...ye}=T;return{test:fr(null,D),...ye}}),m];ao(l,k,$,_),delete l[f]}else if(y===null){const $={signal:h.map(k=>{const{test:_,...T}=k;return`${fr(null,_)} ? ${ka(T)} : `}).join("")+ka(m)};l[f]=$}}else if(v(p)){const g=Uc[f];if(g){const{vgProp:m,part:h}=g;ao(l,h,m,p),delete l[f]}}P(["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}:{}},I(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&&v(l.encode.labels.update.text)&&(d=Mt(a,"datum.label",l.encode.labels.update.text.signal)),ao(l,"labels","text",{signal:d})}if(l.labelAlign===null&&delete l.labelAlign,l.encode){for(const d of Bc)e.hasAxisPart(d)||delete l.encode[d];I(l.encode)&&delete l.encode}const f=Py(c,n);return{scale:o,orient:s,grid:!1,...f?{title:f}:{},...l,...n.aria===!1?{aria:!1}:{},zindex:X(u,0)}}}function $l(e){const{axes:t}=e.component,n=[];for(const i of qe)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 zy(e,t){const{x:n=[],y:i=[]}=e;return[...n.map(r=>oi(r,"grid",t)),...i.map(r=>oi(r,"grid",t)),...n.map(r=>oi(r,"main",t)),...i.map(r=>oi(r,"main",t))].filter(r=>r)}function vl(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}" ? ${Pe(o[l])} : ${Pe(a[l])}`};return u}return t[r]})])}function Ry(e,t,n,i){const r=t==="band"?["axisDiscrete","axisBand"]:t==="point"?["axisDiscrete","axisPoint"]:lc(t)?["axisQuantitative"]:t==="time"||t==="utc"?["axisTemporal"]:[],s=e==="x"?"axisX":"axisY",o=v(n)?"axisOrient":`axis${Wn(n)}`,a=[...r,...r.map(u=>s+u.substr(4))],c=["axis",o,s];return{vlOnlyAxisConfig:vl(a,i,e,n),vgAxisConfig:vl(c,i,e,n),axisConfigStyle:Iy([...c,...a],i)}}function Iy(e,t){const n=[{}];for(const i of e){let r=t[i]?.style;if(r){r=G(r);for(const s of r)n.push(t.style[s])}}return Object.assign.apply(null,n)}function co(e,t,n,i={}){const r=Fa(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 El={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??Ly(n,e),gridScale:({model:e,channel:t})=>My(e,t),labelAlign:({axis:e,labelAngle:t,orient:n,channel:i})=>e.labelAlign||kl(t,n,i),labelAngle:({labelAngle:e})=>e,labelBaseline:({axis:e,labelAngle:t,orient:n,channel:i})=>e.labelBaseline||_l(t,n,i),labelFlush:({axis:e,fieldOrDatumDef:t,channel:n})=>e.labelFlush??jy(t.type,n),labelOverlap:({axis:e,fieldOrDatumDef:t,scaleType:n})=>e.labelOverlap??Uy(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??Wy({fieldOrDatumDef:i,scaleType:r,size:o,values:n.values})},tickMinStep:Hy,title:({axis:e,model:t,channel:n})=>{if(e.title!==void 0)return e.title;const i=Cl(t,n);if(i!==void 0)return i;const r=t.typedFieldDef(n),s=n==="x"?"x2":"y2",o=t.fieldDef(s);return Ta(r?[Nc(r)]:[],S(o)?[Nc(o)]:[])},values:({axis:e,fieldOrDatumDef:t})=>qy(e,t),zindex:({axis:e,fieldOrDatumDef:t,mark:n})=>e.zindex??Gy(n,t)};function Ly(e,t){return!Z(e)&&S(t)&&!j(t?.bin)&&!ie(t?.bin)}function My(e,t){const n=t==="x"?"y":"x";return e.getScaleComponent(n)?e.scaleName(n):void 0}function Dy(e,t,n,i,r){const s=t?.labelAngle;if(s!==void 0)return v(s)?s:Hn(s);{const{configValue:o}=co("labelAngle",i,t?.style,r);return o!==void 0?Hn(o):n===q&&P([ps,ds],e.type)&&!(S(e)&&e.timeUnit)?270:void 0}}function uo(e){return`(((${e.signal} % 360) + 360) % 360)`}function _l(e,t,n,i){if(e!==void 0)if(n==="x"){if(v(e)){const r=uo(e),s=v(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(!Kt(i))return;if(Fc(i.sort)){const{field:s,timeUnit:o}=i,a=i.sort,c=a.map((u,l)=>`${sc({field:s,timeUnit:o,equal:u})} ? ${l} : `).join("")+a.length;t=new On(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 ${O(this.transform)}`}}function Pn(e,t,n){return w(e,{prefix:t,suffix:"sort_index",...n})}function dr(e,t){return P(["top","bottom"],t)?"column":P(["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 pr(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 lo=["row","column"],fo=["header","footer"];function Vy(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}=pr(["titleAnchor","titleAngle","titleOrient"],r.header,i,t),c=dr(t,a),u=Hn(o);return{name:`${t}-title`,type:"group",role:`${c}-title`,title:{text:n,...t==="row"?{orient:"left"}:{},style:"guide-title",...Nl(u,c),...Fl(c,u,s),...Tl(i,r,t,zm,au)}}}function Fl(e,t,n="middle"){switch(n){case"start":return{align:"left"};case"end":return{align:"right"}}const i=kl(t,e==="row"?"left":"top",e==="row"?"y":"x");return i?{align:i}:{}}function Nl(e,t){const n=_l(e,t==="row"?"left":"top",t==="row"?"y":"x",!0);return n?{baseline:n}:{}}function Xy(e,t){const n=e.component.layoutHeaders[t],i=[];for(const r of fo)if(n[r])for(const s of n[r]){const o=Ky(e,t,r,n,s);o!=null&&i.push(o)}return i}function Yy(e,t){const{sort:n}=e;return Xe(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 po(e,t,n){const{format:i,formatType:r,labelAngle:s,labelAnchor:o,labelOrient:a,labelExpr:c}=pr(["format","formatType","labelAngle","labelAnchor","labelOrient","labelExpr"],e.header,n,t),u=$s({fieldOrDatumDef:e,format:i,formatType:r,expr:"parent",config:n}).signal,l=dr(t,a);return{text:{signal:c?Mt(Mt(c,"datum.label",u),"datum.value",w(e,{expr:"parent"})):u},...t==="row"?{orient:"left"}:{},style:"guide-label",frame:"group",...Nl(s,l),...Fl(l,s,o),...Tl(n,e,t,Rm,cu)}}function Ky(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}=pr(["labelOrient"],o.header,a,t);(t==="row"&&!P(["top","bottom"],f)||t==="column"&&!P(["left","right"],f))&&(s=po(o,t,a))}const c=$e(e)&&!Zn(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:Yy(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 Qy={column:{start:0,end:1},row:{start:1,end:0}};function Jy(e,t){return Qy[t][e]}function Zy(e,t){const n={};for(const i of ke){const r=e[i];if(r?.facetFieldDef){const{titleAnchor:s,titleOrient:o}=pr(["titleAnchor","titleOrient"],r.facetFieldDef.header,t,i),a=dr(i,o),c=Jy(s,a);c!==void 0&&(n[a]=c)}}return I(n)?void 0:n}function Tl(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 go(e){return[...gr(e,"width"),...gr(e,"height"),...gr(e,"childWidth"),...gr(e,"childHeight")]}function gr(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(Z(o)&&Ct(a)){const c=e.scaleName(n);if($e(e.parent)){const u=e.parent.component.resolve;if(u.scale[n]==="independent")return[Al(c,a)]}return[Al(c,a),{name:r,update:Ol(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=Bs(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 Al(e,t){const n=`${e}_step`;return v(t.step)?{name:n,update:t.step.signal}:{name:n,value:t.step}}function Ol(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}, ${Pe(o)}, ${Pe(s)}) * ${e}_step`}function Pl(e){return e==="childWidth"?"width":e==="childHeight"?"height":e}function zl(e,t){return b(e).reduce((n,i)=>{const r=e[i];return{...n,...Nn(t,r,i,s=>W(s.value))}},{})}function Rl(e,t){if($e(t))return e==="theta"?"independent":"shared";if(Ln(t))return"shared";if(No(t))return Y(e)||e==="theta"||e==="radius"?"independent":"shared";throw new Error("invalid model type for resolve")}function mo(e,t){const n=e.scale[t],i=Y(t)?"axis":"legend";return n==="independent"?(e[i][t]==="shared"&&x(Ap(t)),"independent"):e[i][t]||"shared"}const eb={...Mm,disable:1,labelExpr:1,selections:1,opacity:1,shape:1,stroke:1,fill:1,size:1,strokeWidth:1,strokeDash:1,encode:1},Il=b(eb);class tb extends mt{}const Ll={symbols:nb,gradient:ib,labels:rb,entries:sb};function nb(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={...Bd({},n,zg),...Zu(n,{filled:l})};const d=r.get("symbolOpacity")??c.legend.symbolOpacity,p=r.get("symbolFillColor")??c.legend.symbolFillColor,g=r.get("symbolStrokeColor")??c.legend.symbolStrokeColor,m=d===void 0?Ml(a.opacity)??o.opacity:void 0;if(f.fill){if(i==="fill"||l&&i===de)delete f.fill;else if(f.fill.field)p?delete f.fill:(f.fill=W(c.legend.symbolBaseFillColor??"black"),f.fillOpacity=W(m??1));else if(E(f.fill)){const h=ho(a.fill??a.color)??o.fill??(l&&o.color);h&&(f.fill=W(h))}}if(f.stroke){if(i==="stroke"||!l&&i===de)delete f.stroke;else if(f.stroke.field||g)delete f.stroke;else if(E(f.stroke)){const h=X(ho(a.stroke||a.color),o.stroke,l?o.color:void 0);h&&(f.stroke={value:h})}}if(i!==ct){const h=S(t)&&jl(n,r,t);h?f.opacity=[{test:h,...W(m??1)},W(c.legend.unselectedOpacity)]:m&&(f.opacity=W(m))}return f={...f,...e},I(f)?void 0:f}function ib(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?Ml(o.opacity)||s.opacity:void 0;return u&&(a.opacity=W(u)),a={...a,...e},I(a)?void 0:a}function rb(e,{fieldOrDatumDef:t,model:n,channel:i,legendCmpt:r}){const s=n.legend(i)||{},o=n.config,a=S(t)?jl(n,r,t):void 0,c=a?[{test:a,value:1},{value:o.legend.unselectedOpacity}]:void 0,{format:u,formatType:l}=s;let f;Yt(l)?f=Re({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=Re({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=Re({fieldOrDatumDef:t,field:"datum.value",format:o.timeFormat,formatType:o.timeFormatType,config:o})));const d={...c?{opacity:c}:{},...f?{text:f}:{},...e};return I(d)?void 0:d}function sb(e,{legendCmpt:t}){const n=t.get("selections");return n?.length?{...e,fill:{value:"transparent"}}:e}function Ml(e){return Dl(e,(t,n)=>Math.max(t,n.value))}function ho(e){return Dl(e,(t,n)=>X(t,n.value))}function Dl(e,t){return em(e)?G(e.condition).reduce(t,e.value):Ie(e)?e.value:void 0}function jl(e,t,n){const i=t.get("selections");if(!i?.length)return;const r=A(n.field);return i.map(s=>{const o=A(H(s)+Zt);return`(!length(data(${o})) || (${s}[${r}] && indexof(${s}[${r}], datum.value) >= 0))`}).join(" || ")}const Ul={direction:({direction:e})=>e,format:({fieldOrDatumDef:e,legend:t,config:n})=>{const{format:i,formatType:r}=t;return $c(e,e.type,i,r,n,!1)},formatType:({legend:e,fieldOrDatumDef:t,scaleType:n})=>{const{formatType:i}=e;return vc(i,t,n)},gradientLength:e=>{const{legend:t,legendConfig:n}=e;return t.gradientLength??n.gradientLength??db(e)},labelOverlap:({legend:e,legendConfig:t,scaleType:n})=>e.labelOverlap??t.labelOverlap??pb(n),symbolType:({legend:e,markDef:t,channel:n,encoding:i})=>e.symbolType??ab(t.type,n,i.shape,t.shape),title:({fieldOrDatumDef:e,config:t})=>vn(e,t,{allowDisabling:!0}),type:({legendType:e,scaleType:t,channel:n})=>{if(hn(n)&&ze(t)){if(e==="gradient")return}else if(e==="symbol")return;return e},values:({fieldOrDatumDef:e,legend:t})=>ob(t,e)};function ob(e,t){const n=e.values;return E(n)?jc(t,n):v(n)?n:void 0}function ab(e,t,n,i){if(t!=="shape"){const r=ho(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 cb(e){const{legend:t}=e;return X(t.type,ub(e))}function ub({channel:e,timeUnit:t,scaleType:n}){if(hn(e)){if(P(["quarter","month","day"],t))return"symbol";if(ze(n))return"gradient"}return"symbol"}function lb({legendConfig:e,legendType:t,orient:n,legend:i}){return i.direction??e[t?"gradientDirection":"symbolDirection"]??fb(n,t)}function fb(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 db({legendConfig:e,model:t,direction:n,orient:i,scaleType:r}){const{gradientHorizontalMaxLength:s,gradientHorizontalMinLength:o,gradientVerticalMaxLength:a,gradientVerticalMinLength:c}=e;return ze(r)?n==="horizontal"?i==="top"||i==="bottom"?Bl(t,"width",o,s):o:Bl(t,"height",c,a):void 0}function Bl(e,t,n,i){const r=e.getSizeSignalRef(t).signal;return{signal:`clamp(${r}, ${n}, ${i})`}}function pb(e){return P(["quantile","threshold","log","symlog"],e)?"greedy":void 0}function Wl(e){const t=V(e)?gb(e):bb(e);return e.component.legends=t,t}function gb(e){const{encoding:t}=e,n={};for(const i of[de,...lu]){const r=K(t[i]);if(!r||!e.getScaleComponent(i))continue;if(i===pe&&S(r)&&r.type===xn)continue;n[i]=yb(e,i)}return n}function mb(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 hb(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 yb(e,t){let n=e.legend(t);const{markDef:i,encoding:r,config:s}=e,o=s.legend,a=new tb({},mb(e,t));ky(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)?J(l.timeUnit)?.unit:void 0,d=n.orient||s.legend.orient||"right",p=cb({legend:n,channel:t,timeUnit:f,scaleType:u}),g=lb({legend:n,legendType:p,orient:d,legendConfig:o}),m={legend:n,channel:t,model:e,markDef:i,encoding:r,fieldOrDatumDef:l,legendConfig:o,config:s,scaleType:u,orient:d,legendType:p,direction:g};for(const _ of Il){if(p==="gradient"&&_.startsWith("symbol")||p==="symbol"&&_.startsWith("gradient"))continue;const T=_ in Ul?Ul[_](m):n[_];if(T!==void 0){const D=hb(T,_,n,e.fieldDef(t));(D||s.legend[_]===void 0)&&a.set(_,T,D)}}const h=n?.encoding??{},y=a.get("selections"),$={},k={fieldOrDatumDef:l,model:e,channel:t,legendCmpt:a,legendType:p};for(const _ of["labels","legend","title","symbols","gradient","entries"]){const T=zl(h[_]??{},e),D=_ in Ll?Ll[_](T,k):T;D!==void 0&&!I(D)&&($[_]={...y?.length&&S(l)?{name:`${H(l.field)}_legend_${_}`}:{},...y?.length?{interactive:!!y}:{},update:D})}return I($)||a.set("encode",$,!!n?.encoding),a}function bb(e){const{legends:t,resolve:n}=e.component;for(const i of e.children){Wl(i);for(const r of b(i.component.legends))n.legend[r]=mo(e.component.resolve,r),n.legend[r]==="shared"&&(t[r]=Hl(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 Hl(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 Il){const o=At(e.getWithExplicit(s),t.getWithExplicit(s),s,"legend",(a,c)=>{switch(s){case"symbolType":return xb(a,c);case"title":return Oa(a,c);case"type":return r=!0,we("symbol")}return ir(a,c,s,"legend")});e.setWithExplicit(s,o)}return r&&(e.implicit?.encode?.gradient&&xi(e.implicit,["encode","gradient"]),e.explicit?.encode?.gradient&&xi(e.explicit,["encode","gradient"])),e}function xb(e,t){return t.value==="circle"?t:e}function Sb(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 ql(e){const t=e.component.legends,n={};for(const r of b(t)){const s=e.getScaleComponent(r),o=L(s.get("domains"));if(n[o])for(const a of n[o]){const c=Hl(a,t[r]);c||n[o].push(t[r])}else n[o]=[t[r].clone()]}const i=ne(n).flat().map(r=>wb(r,e.config)).filter(r=>r!==void 0);return i}function wb(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 lu)s[a]&&delete o[a]}if(s.title||delete s.title,i!==void 0){let o=i;s.encode?.labels?.update&&v(s.encode.labels.update.text)&&(o=Mt(i,"datum.label",s.encode.labels.update.text.signal)),Sb(s,"labels","text",{signal:o})}return s}function $b(e){return Ln(e)||No(e)?vb(e):Gl(e)}function vb(e){return e.children.reduce((t,n)=>t.concat(n.assembleProjections()),Gl(e))}function Gl(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=v(a)?a.signal:`data('${e.lookupDataSource(a)}')`;return P(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 Eb=["type","clipAngle","clipExtent","center","rotate","precision","reflectX","reflectY","coefficient","distance","fraction","lobes","parallel","radius","ratio","spacing","tilt"];class Vl extends mt{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 Xl(e){e.component.projection=V(e)?_b(e):Fb(e)}function _b(e){if(e.hasProjection){const t=me(e.specifiedProjection),n=!(t&&(t.scale!=null||t.translate!=null)),i=n?[e.getSizeSignalRef("width"),e.getSizeSignalRef("height")]:void 0,r=n?kb(e):void 0,s=new Vl(e.projectionName(!0),{...me(e.config.projection),...t},i,r);return s.get("type")||s.set("type","equalEarth",!1),s}return}function kb(e){const t=[],{encoding:n}=e;for(const i of[[Ae,Te],[_e,Oe]])(K(n[i[0]])||K(n[i[1]]))&&t.push({signal:e.getName(`geojson_${t.length}`)});return e.channelHasField(pe)&&e.typedFieldDef(pe).type===xn&&t.push({signal:e.getName(`geojson_${t.length}`)}),t.length===0&&t.push(e.requestDataName(U.Main)),t}function Cb(e,t){const n=Rr(Eb,r=>!cn(e.explicit,r)&&!cn(t.explicit,r)?!0:!!(cn(e.explicit,r)&&cn(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 Fb(e){if(e.children.length===0)return;let t;for(const i of e.children)Xl(i);const n=Rr(e.children,i=>{const r=i.component.projection;if(r)if(t){const s=Cb(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 Vl(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 Nb(e,t,n,i){if(ti(t,n)){const r=V(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 Yl(e,t){return`${wa(e)}_${t}`}function Tb(e,t){return{signal:e.getName(`${t}_bins`),extentSignal:e.getName(`${t}_extent`)}}function yo(e,t,n){const i=Vi(n,void 0)??{},r=Yl(i,t);return e.getName(`${r}_bins`)}function Ab(e){return"as"in e}function Kl(e,t,n){let i,r;Ab(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={...Vi(t,void 0)},o=Yl(s,e.field),{signal:a,extentSignal:c}=Tb(n,o);if(Fi(s.extent)){const l=s.extent;r=wl(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 R{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(ce(s)&&j(s.bin)){const{key:a,binComponent:c}=Kl(s,s.bin,n);r[a]={...c,...r[a],...Nb(n,s,o,n.config)}}return r},{});return I(i)?null:new et(t,i)}static makeFromTransform(t,n,i){const{key:r,binComponent:s}=Kl(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],O)):this.bins[i]=t.bins[i];for(const i of t.children)t.removeChild(i),i.parent=this;t.remove()}producedFields(){return new Set(ne(this.bins).map(t=>t.as).flat(2))}dependentFields(){return new Set(ne(this.bins).map(t=>t.field))}hash(){return`Bin ${O(this.bins)}`}assemble(){return ne(this.bins).flatMap(t=>{const n=[],[i,...r]=t.as,{extent:s,...o}=t.bin,a={type:"bin",field:ve(t.field),as:i,signal:t.signal,...Fi(s)?{extent:null}:{extent:s},...t.span?{span:{signal:`span(${t.span})`}}:{},...o};!s&&t.extentSignal&&(n.push({type:"extent",field:ve(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 Ob(e,t,n,i){const r=V(i)?i.encoding[He(t)]:void 0;if(ce(n)&&V(i)&&Ac(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});Kn(s)&&c!==.5&&Y(t)&&(e.add(w(n,{suffix:rr})),e.add(w(n,{suffix:sr}))),n.bin&&ti(n,t)&&e.add(w(n,{binSuffix:"range"}))}else if(fa(t)){const s=la(t);e.add(i.getName(s))}else e.add(w(n));return Kt(n)&&$g(n.scale?.range)&&e.add(n.scale.range.field),e}function Pb(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 R{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(lt(c)||_t(c)){const l=lt(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})]);ut(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 Ob(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 ta(this.dimensions,t.dimensions)?(Pb(this.measures,t.measures),!0):(Vp("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 ${O({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:ve(s));const r={type:"aggregate",groupby:[...this.dimensions].map(ve),ops:t,fields:n,as:i};return r}}class Rn extends R{constructor(t,n,i,r){super(t);this.model=n,this.name=i,this.data=r;for(const s of ke){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"})]:[]],...Xe(c)?{sortField:c}:E(c)?{sortIndexField:Pn(o,s)}:{}}}}this.childModel=n.child}hash(){let t="Facet";for(const n of ke)this[n]&&(t+=` ${n.charAt(0)}:${O(this[n])}`);return t}get fields(){const t=[];for(const n of ke)this[n]?.fields&&t.push(...this[n].fields);return t}dependentFields(){const t=new Set(this.fields);for(const n of ke)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 qe){const i=this.childModel.component.scales[n];if(i&&!i.merged){const r=i.get("type"),s=i.get("range");if(Z(r)&&Ct(s)){const o=hr(this.childModel,n),a=Co(o);a?t[n]=a:x(Jr(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=Di,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 lo){for(const u of fo){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[rt,it])this[a]&&t.push(this.assembleRowColumnHeaderData(a,n,i));if(o){const a=this.assembleFacetHeaderData(i);a&&t.push(...a)}return t}}function Ql(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')?e.slice(1,-1):e}function zb(e,t){const n=Dr(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=Ql(t.slice(5,t.length));return`timeParse(${n},'${i}')`}else if(t.startsWith("utc:")){const i=Ql(t.slice(4,t.length));return`utcParse(${n},'${i}')`}else return x(np(t)),null}function Rb(e){const t={};return bi(e.filter,n=>{if(rc(n)){let i=null;rs(n)?i=xe(n.equal):os(n)?i=xe(n.lte):ss(n)?i=xe(n.lt):as(n)?i=xe(n.gt):cs(n)?i=xe(n.gte):us(n)?i=n.range[0]:ls(n)&&(i=(n.oneOf??n.in)[0]),i&&(Wt(i)?t[n.field]="date":B(i)?t[n.field]="number":N(i)&&(t[n.field]="string")),n.timeUnit&&(t[n.field]="date")}}),t}function Ib(e){const t={};function n(i){_n(i)?t[i.field]="date":i.type==="quantitative"&&Pd(i.aggregate)?t[i.field]="number":pn(i.field)>1?i.field in t||(t[i.field]="flatten"):Kt(i)&&Xe(i.sort)&&pn(i.sort.field)>1&&(i.sort.field in t||(t[i.sort.field]="flatten"))}if((V(e)||$e(e))&&e.forEachFieldDef((i,r)=>{if(ce(i))n(i);else{const s=Ut(r),o=e.fieldDef(s);n({...i,type:o.type})}}),V(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 Lb(e){const t={};if(V(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 oe extends R{clone(){return new oe(null,C(this._parse))}constructor(t,n){super(t);this._parse=n}hash(){return`Parse ${O(this._parse)}`}static makeExplicit(t,n,i){let r={};const s=n.data;return!Ot(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(Da(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(Da(a,n[a],c)))}const s=new mt(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 oe(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=zb(n,this._parse[n]);if(!i)return null;const r={type:"formula",expr:i,as:jr(n)};return r}).filter(n=>n!==null)}}class Rt extends R{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 ai extends R{clone(){return new ai(null,this.params)}constructor(t,n){super(t);this.params=n}dependentFields(){return new Set}producedFields(){return}hash(){return`Graticule ${O(this.params)}`}assemble(){return{type:"graticule",...this.params===!0?{}:this.params}}}class ci extends R{clone(){return new ci(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 ${O(this.params)}`}assemble(){return{type:"sequence",...this.params}}}class tn extends R{constructor(t){super(null);t??(t={name:"source"});let n;if(Ot(t)||(n=t.format?{...fe(t.format,["parse"])}:{}),ii(t))this._data={values:t.values};else if(Cn(t)){if(this._data={url:t.url},!n.type){let i=/(?:\.([^.]+))?$/.exec(t.url)[1];P(["json","csv","tsv","dsv","topojson"],i)||(i="json"),n.type=i}}else Uu(t)?this._data={values:[{type:"Sphere"}]}:(Du(t)||Ot(t))&&(this._data={});this._generator=Ot(t),t.name&&(this._name=t.name),n&&!I(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 Jl=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},Mb=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)},ui;function bo(e){return e instanceof tn||e instanceof ai||e instanceof ci}class xo{constructor(){ui.set(this,void 0),Jl(this,ui,!1,"f")}setModified(){Jl(this,ui,!0,"f")}get modifiedFlag(){return Mb(this,ui,"f")}}ui=new WeakMap;class nn extends xo{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 So extends xo{optimize(t){this.run(t);for(const n of t.children)this.optimize(n);return this.modifiedFlag}}class Db extends So{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 jb extends So{constructor(t){super();this.requiresSelectionId=t&&so(t)}run(t){t instanceof Rt&&(this.requiresSelectionId&&(bo(t.parent)||t.parent instanceof Me||t.parent instanceof oe)||(this.setModified(),t.remove()))}}class Ub extends xo{optimize(t){return this.run(t,new Set),this.modifiedFlag}run(t,n){let i=new Set;t instanceof Ze&&(i=t.producedFields(),Ir(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 Bb extends So{constructor(){super()}run(t){t instanceof ue&&!t.isRequired()&&(this.setModified(),t.remove())}}class Wb extends nn{run(t){if(bo(t))return;if(t.numChildren()>1)return;for(const n of t.children)if(n instanceof oe)if(t instanceof oe)this.setModified(),t.merge(n);else{if(Mr(t.producedFields(),n.dependentFields()))continue;this.setModified(),n.swapWithParent()}return}}class Hb extends nn{run(t){const n=[...t.children],i=t.children.filter(r=>r instanceof oe);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(!I(r)){this.setModified();const o=new oe(t,r);for(const a of n){if(a instanceof oe)for(const c of b(r))delete a.parse[c];t.removeChild(a),a.parent=o,a instanceof oe&&b(a.parse).length===0&&a.remove()}}}}}class qb extends nn{run(t){t instanceof ue||t.numChildren()>0||t instanceof Rn||(t instanceof tn||(this.setModified(),t.remove()))}}class Gb extends nn{run(t){const n=t.children.filter(r=>r instanceof Ze),i=n.pop();for(const r of n)this.setModified(),i.merge(r)}}class Vb extends nn{run(t){const n=t.children.filter(r=>r instanceof Me),i={};for(const r of n){const s=O(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 Xb extends nn{constructor(t){super();this.model=t}run(t){const n=!(bo(t)||t instanceof An||t instanceof oe||t instanceof Rt),i=[],r=[];for(const s of t.children)s instanceof et&&(n&&!Mr(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 Yb extends nn{run(t){const n=[...t.children],i=Lt(n,o=>o instanceof ue);if(!i||t.numChildren()<=1)return;const r=[];let s;for(const o of n)if(o instanceof ue){let a=o;for(;a.numChildren()===1;){const[c]=a.children;if(c instanceof ue)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 rn extends R{clone(){return new rn(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 ${O(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}:{}}}}function Kb(e){return e.stack.stackBy.reduce((t,n)=>{const i=n.fieldDef,r=w(i);return r&&t.push(r),t},[])}function Qb(e){return E(e)&&e.every(t=>N(t))&&e.length>1}class yt extends R{clone(){return new yt(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 Qb(s)?l=s:N(s)?l=[s,`${s}_end`]:l=[`${n.stack}_start`,`${n.stack}_end`],new yt(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 g=r[p];return Ke(g)}).filter(p=>!!p),l=Kb(n),f=n.encoding.order;let d;if(E(f)||S(f))d=Na(f);else{const p=Oc(f)?f.sort:o==="y"?"descending":"ascending";d=l.reduce((g,m)=>(g.field.includes(m)||(g.field.push(m),g.order.push(p)),g),{field:[],order:[]})}return new yt(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 ${O(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"}),g=w(l,{expr:"datum",binSuffix:"end"});t.push({type:"formula",expr:`${f}*${p}+${1-f}*${g}`,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 In extends R{clone(){return new In(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 ${O(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=>Yr(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 Jb(e){function t(n){if(!(n instanceof Rn)){const i=n.clone();if(i instanceof ue){const r=$o+i.getSource();i.setSource(r),e.model.component.data.outputNodes[r]=i}else(i instanceof Me||i instanceof yt||i instanceof In||i instanceof rn)&&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 wo(e){if(e instanceof Rn)if(e.numChildren()===1&&!(e.children[0]instanceof ue)){const t=e.children[0];(t instanceof Me||t instanceof yt||t instanceof In||t instanceof rn)&&t.addDimensions(e.fields),t.swapWithParent(),wo(e)}else{const t=e.model.component.data.main;Zl(t);const n=Jb(e),i=e.children.map(n).flat();for(const r of i)r.parent=t}else e.children.map(wo)}function Zl(e){if(e instanceof ue&&e.type===U.Main&&e.numChildren()===1){const t=e.children[0];t instanceof Rn||(t.swapWithParent(),Zl(e))}}const $o="scale_",mr=5;function vo(e){for(const t of e){for(const n of t.children)if(n.parent!==t)return!1;if(!vo(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 ef(e,t,n){let i=e.sources,r=!1;return r=De(new Bb,i)||r,r=De(new jb(t),i)||r,i=i.filter(s=>s.numChildren()>0),r=De(new qb,i)||r,i=i.filter(s=>s.numChildren()>0),n||(r=De(new Wb,i)||r,r=De(new Xb(t),i)||r,r=De(new Ub,i)||r,r=De(new Hb,i)||r,r=De(new Vb,i)||r,r=De(new Gb,i)||r,r=De(new Db,i)||r,r=De(new Yb,i)||r),e.sources=i,r}function Zb(e,t){vo(e.sources);let n=0,i=0;for(let r=0;rt(n))}}function tf(e){V(e)?ex(e):tx(e)}function ex(e){const t=e.component.scales;for(const n of b(t)){const i=ix(e,n),r=t[n];if(r.setWithExplicit("domains",i),sx(e,n),e.component.data.isFaceted){let s=e;for(;!$e(s)&&s.parent;)s=s.parent;const o=s.component.resolve.scale[n];if(o==="shared")for(const a of i.value)ft(a)&&(a.data=$o+a.data.replace($o,""))}}}function tx(e){for(const n of e.children)tf(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=At(i,o.getWithExplicit("domains"),"domains","scale",ko);const a=o.get("selectionExtent");r&&a&&r.param!==a.param&&x(Jd),r=a}}t[n].setWithExplicit("domains",i),r&&t[n].set("selectionExtent",r,!0)}}function nx(e,t,n,i){if(e==="unaggregated"){const{valid:r,reason:s}=nf(t,n);if(!r){x(s);return}}else if(e===void 0&&i.useUnaggregatedDomain){const{valid:r}=nf(t,n);if(r)return"unaggregated"}return e}function ix(e,t){const n=e.getScaleComponent(t).get("type"),{encoding:i}=e,r=nx(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)?At(It(n,r,e,"x"),It(n,r,e,"x2"),"domain","scale",ko):It(n,r,e,"x2"):t==="y"&&K(i.y2)?K(i.y)?At(It(n,r,e,"y"),It(n,r,e,"y2"),"domain","scale",ko):It(n,r,e,"y2"):It(n,r,e,t)}function rx(e,t,n){return e.map(i=>{const r=Xi(i,{timeUnit:n,type:t});return{signal:`{data: ${r}}`}})}function Eo(e,t,n){const i=J(n)?.unit;return t==="temporal"||i?rx(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;if(wg(t)){const g=It(e,void 0,n,i),m=Eo(t.unionWith,l,f);return Je([...m,...g.value])}else{if(v(t))return Je([t]);if(t&&t!=="unaggregated"&&!dc(t))return Je(Eo(t,l,f))}if(c&&i===c.fieldChannel){if(c.offset==="normalize")return we([[0,1]]);const g=n.requestDataName(U.Main);return we([{data:g,field:n.vgField(i,{suffix:"start"})},{data:g,field:n.vgField(i,{suffix:"end"})}])}const d=ut(i)&&S(u)?ox(n,i,e):void 0;if(Ye(u)){const g=Eo([u.datum],l,f);return we(g)}const p=u;if(t==="unaggregated"){const g=n.requestDataName(U.Main),{field:m}=u;return we([{data:g,field:w({field:m,aggregate:"min"})},{data:g,field:w({field:m,aggregate:"max"})}])}else if(j(p.bin)){if(Z(e))return e==="bin-ordinal"?we([]):we([{data:Un(d)?n.requestDataName(U.Main):n.requestDataName(U.Raw),field:n.vgField(i,ti(p,i)?{binSuffix:"range"}:{}),sort:d===!0||!M(d)?{field:n.vgField(i,{}),op:"min"}:d}]);{const{bin:g}=p;if(j(g)){const m=yo(n,p.field,g);return we([new te(()=>{const h=n.getSignalName(m);return`[${h}.start, ${h}.stop]`})])}else return we([{data:n.requestDataName(U.Main),field:n.vgField(i,{})}])}}else if(p.timeUnit&&P(["time","utc"],e)){const g=r[He(i)];if(Ac(p,g,s,a)){const m=n.requestDataName(U.Main),h=Nt({fieldDef:p,fieldDef2:g,markDef:s,config:a}),y=Kn(o)&&h!==.5&&Y(i);return we([{data:m,field:n.vgField(i,y?{suffix:rr}:{})},{data:m,field:n.vgField(i,{suffix:y?sr:"end"})}])}}return we(d?[{data:Un(d)?n.requestDataName(U.Main):n.requestDataName(U.Raw),field:n.vgField(i),sort:d}]:[{data:n.requestDataName(U.Main),field:n.vgField(i)}])}function _o(e,t){const{op:n,field:i,order:r}=e;return{op:n??(t?"sum":Di),...i?{field:ve(i)}:{},...r?{order:r}:{}}}function sx(e,t){const n=e.component.scales[t],i=e.specifiedScales[t].domain,r=e.fieldDef(t)?.bin,s=dc(i)&&i,o=Bt(r)&&Fi(r.extent)&&r.extent;(s||o)&&n.set("selectionExtent",s??o,!0)}function ox(e,t,n){if(!Z(n))return;const i=e.fieldDef(t),r=i.sort;if(Fc(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(Xe(r)){const a=s&&!o.has(r.field);return _o(r,a)}else if(Cc(r)){const{encoding:a,order:c}=r,u=e.fieldDef(a),{aggregate:l,field:f}=u,d=s&&!o.has(f);if(lt(l)||_t(l))return _o({field:w(u),order:c},d);if(Yr(l)||!l)return _o({op:l,field:f,order:c},d)}else{if(r==="descending")return{op:"min",field:e.vgField(t),order:"descending"};if(P(["ascending",void 0],r))return!0}return}function nf(e,t){const{aggregate:n,type:i}=e;return n?N(n)&&!Rd.has(n)?{valid:!1,reason:Ep(n)}:i==="quantitative"&&t==="log"?{valid:!1,reason:_p(e)}:{valid:!0}:{valid:!1,reason:vp(e)}}function ko(e,t,n,i){return e.explicit&&t.explicit&&x(Tp(n,i,e.value,t.value)),{explicit:e.explicit,value:[...e.value,...t.value]}}function ax(e){const t=je(e.map(o=>{if(ft(o)){const{sort:a,...c}=o;return c}return o}),O),n=je(e.map(o=>{if(ft(o)){const a=o.sort;return a!==void 0&&!Un(a)&&("op"in a&&a.op==="count"&&delete a.field,a.order==="ascending"&&delete a.order),a}return}).filter(o=>o!==void 0),O);if(t.length===0)return;if(t.length===1){const o=e[0];if(ft(o)&&n.length>0){let a=n[0];if(n.length>1){x(qa);const c=n.filter(u=>M(u)&&"op"in u&&u.op!=="min");n.every(u=>M(u)&&"op"in u)&&c.length===1?a=c[0]:a=!0}else if(M(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=>Un(o)||!("op"in o)||N(o.op)&&o.op in Ad?o:(x(Op(o)),!0)),O);let r;i.length===1?r=i[0]:i.length>1&&(x(qa),r=!0);const s=je(e.map(o=>ft(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 Co(e){if(ft(e)&&N(e.field))return e.field;if(Id(e)){let t;for(const n of e.fields)if(ft(n)&&N(n.field)){if(!t)t=n.field;else if(t!==n.field)return x(Pp),t}return x(zp),t}else if(Ld(e)){x(Rp);const t=e.fields[0];return N(t)?t:void 0}return}function hr(e,t){const n=e.component.scales[t],i=n.get("domains").map(r=>(ft(r)&&(r.data=e.lookupDataSource(r.data)),r));return ax(i)}function rf(e){return Ln(e)||No(e)?e.children.reduce((t,n)=>t.concat(rf(n)),sf(e)):sf(e)}function sf(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=cx(r.range,s,n,e),p=hr(e,n),g=a?ny(e,a,i,p):null;return t.push({name:s,type:o,...p?{domain:p}:{},...g?{domainRaw:g}:{},range:d,...l!==void 0?{reverse:l}:{},...f}),t},[])}function cx(e,t,n,i){if(Y(n)){if(Ct(e))return{step:{signal:`${t}_step`}}}else if(M(e)&&ft(e))return{...e,data:i.lookupDataSource(e.data)};return e}class of extends mt{constructor(t,n){super({},{name:t});this.merged=!1,this.setWithExplicit("type",n)}domainDefinitelyIncludesZero(){return this.get("zero")!==!1?!0:Lt(this.get("domains"),t=>E(t)&&t.length===2&&B(t[0])&&t[0]<=0&&B(t[1])&&t[1]>=0)}}const ux=["range","scheme"];function lx(e){const t=e.component.scales;for(const n of Ci){const i=t[n];if(!i)continue;const r=fx(n,e);i.setWithExplicit("range",r)}}function af(e,t){const n=e.fieldDef(t);if(n?.bin){const{bin:i,field:r}=n,s=ge(t),o=e.getName(s);if(M(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=yo(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 fx(e,t){const n=t.specifiedScales[e],{size:i}=t,r=t.getScaleComponent(e),s=r.get("type");for(const f of ux)if(n[f]!==void 0){const d=ms(s,f),p=pc(e,f);if(!d)x(Wa(s,f,e));else if(p)x(p);else switch(f){case"range":{const g=n.range;if(E(g)){if(Y(e))return Je(g.map(m=>{if(m==="width"||m==="height"){const h=t.getName(m),y=t.getSignalName.bind(t);return te.fromName(y,h)}return m}))}else if(M(g))return Je({data:t.requestDataName(U.Main),field:g.field,sort:{op:"min",field:t.vgField(e)}});return Je(g)}case"scheme":return Je(dx(n[f]))}}const o=e===q||e==="xOffset"?"width":"height",a=i[o];if(Qe(a)){if(Y(e))if(Z(s)){const f=uf(a,t,e);if(f)return Je({step:f})}else x(Ha(o));else if(Vn(e)){const f=e===xt?"x":"y",d=t.getScaleComponent(f),p=d.get("type");if(p==="band"){const g=lf(a,s);if(g)return Je(g)}}}const{rangeMin:c,rangeMax:u}=n,l=px(e,t);return(c!==void 0||u!==void 0)&&ms(s,"rangeMin")&&E(l)&&l.length===2?Je([c??l[0],u??l[1]]):we(l)}function dx(e){return Sg(e)?{scheme:e.name,...fe(e,["name"])}:{scheme:e}}function cf(e,t,n,{center:i}={}){const r=ge(e),s=t.getName(r),o=t.getSignalName.bind(t);return e===Q&&Se(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 px(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 q:case Q:{if(P(["point","band"],c)){const f=ff(e,n,i.view);if(Qe(f)){const d=uf(f,t,e);return{step:d}}}return cf(e,t,c)}case xt:case gn:return gx(e,t,c);case at:{const f=t.component.scales[e].get("zero"),d=df(r,f,i),p=yx(r,n,t,i);return Sn(c)?hx(d,p,mx(c,i,u,e)):[d,p]}case Ee:return[0,Math.PI*2];case Dt:return[0,360];case Ne:return[0,new te(()=>{const f=t.getSignalName($e(t.parent)?"child_width":"width"),d=t.getSignalName($e(t.parent)?"child_height":"height");return`min(${f},${d})/2`})];case $t:return[i.scale.minStrokeWidth,i.scale.maxStrokeWidth];case vt:return[[1,0],[4,2],[2,1],[1,1],[1,2,4,2]];case pe:return"symbol";case de:case Be:case We:return c==="ordinal"?o==="nominal"?"category":"ordinal":l!==void 0?"diverging":r==="rect"||r==="geoshape"?"heatmap":"ramp";case ct:case St:case wt:return[i.scale.minOpacity,i.scale.maxOpacity]}}function uf(e,t,n){const{encoding:i}=t,r=t.getScaleComponent(n),s=Hr(n),o=i[s],a=du({step:e,offsetIsDiscrete:F(o)&&oc(o.type)});if(a==="offset"&&Gc(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-${Ud(f)})`}}else return e.step}function lf(e,t){const n=du({step:e,offsetIsDiscrete:Z(t)});return n==="offset"?{step:e.step}:void 0}function gx(e,t,n){const i=e===xt?"x":"y",r=t.getScaleComponent(i);if(!r)return cf(i,t,n,{center:!0});const s=r.get("type"),o=t.scaleName(i),{markDef:a,config:c}=t;if(s==="band"){const u=ff(i,t.size,t.config.view);if(Qe(u)){const l=lf(u,n);if(l)return l}return[0,{signal:`bandwidth('${o}')`}]}else{const u=t.encoding[i];if(S(u)&&u.timeUnit){const l=nc(u.timeUnit,g=>`scale('${o}', ${g})`),f=t.config.scale.bandWithNestedOffsetPaddingInner,d=Nt({fieldDef:u,markDef:a,config:c})-.5,p=d!==0?` + ${d}`:"";if(f){const g=v(f)?`${f.signal}/2`+p:`${f/2+d}`,m=v(f)?`(1 - ${f.signal}/2)`+p:`${1-f/2+d}`;return[{signal:`${g} * (${l})`},{signal:`${m} * (${l})`}]}return[0,{signal:l}]}return Zo(`Cannot use ${e} scale if ${i} scale is not discrete.`)}}function ff(e,t,n){const i=e===q?"width":"height",r=t[i];return r||tr(n,i)}function mx(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(Hp(i)),3)}}function hx(e,t,n){const i=()=>{const r=Pe(t),s=Pe(e),o=`(${r} - ${s}) / (${n} - 1)`;return`sequence(${s}, ${r} + ${o}, ${o})`};return v(t)?new te(i):{signal:i()}}function df(e,t,n){if(t)return v(t)?{signal:`${t.signal} ? 0 : ${df(e,!1,n)}`}:0;switch(e){case"bar":case"tick":return n.scale.minBandSize;case"line":case"trail":case"rule":return n.scale.minStrokeWidth;case"text":return n.scale.minFontSize;case"point":case"square":case"circle":return n.scale.minSize}throw new Error(Ti("size",e))}const pf=.95;function yx(e,t,n,i){const r={x:af(n,"x"),y:af(n,"y")};switch(e){case"bar":case"tick":{if(i.scale.maxBandSize!==void 0)return i.scale.maxBandSize;const s=gf(t,r,i.view);return B(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=gf(t,r,i.view);return B(s)?Math.pow(pf*s,2):new te(()=>`pow(${pf} * ${s.signal}, 2)`)}}throw new Error(Ti("size",e))}function gf(e,t,n){const i=Qe(e.width)?e.width.step:er(n,"width"),r=Qe(e.height)?e.height.step:er(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 mf(e,t){V(e)?bx(e,t):bf(e,t)}function bx(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"),g=l.get("padding"),m=l.get("paddingInner"),h=ms(p,t),y=pc(a,t);if(d!==void 0&&(h?y&&x(y):x(Wa(p,t,a))),h&&y===void 0)if(d!==void 0){const $=f.timeUnit,k=f.type;switch(t){case"domainMax":case"domainMin":Wt(c[t])||k==="temporal"||$?u.set(t,{signal:Xi(c[t],{type:k,timeUnit:$})},!0):u.set(t,c[t],!0);break;default:u.copyKeyFromObject(t,c)}}else{const $=t in hf?hf[t]({model:e,channel:a,fieldOrDatumDef:f,scaleType:p,scalePadding:g,scalePaddingInner:m,domain:c.domain,domainMin:c.domainMin,domainMax:c.domainMax,markDef:s,config:i,hasNestedOffsetScale:Vc(r,a),hasSecondaryRangeChannel:!!r[He(a)]}):i.scale[t];$!==void 0&&u.set(t,$,!1)}}}const hf={bins:({model:e,fieldOrDatumDef:t})=>S(t)?xx(e,t):void 0,interpolate:({channel:e,fieldOrDatumDef:t})=>Sx(e,t.type),nice:({scaleType:e,channel:t,domain:n,domainMin:i,domainMax:r,fieldOrDatumDef:s})=>wx(e,t,n,i,r,s),padding:({channel:e,scaleType:t,fieldOrDatumDef:n,markDef:i,config:r})=>$x(e,t,r.scale,n,i,r.bar),paddingInner:({scalePadding:e,channel:t,markDef:n,scaleType:i,config:r,hasNestedOffsetScale:s})=>vx(e,t,n.type,i,r.scale,s),paddingOuter:({scalePadding:e,channel:t,scaleType:n,scalePaddingInner:i,config:r,hasNestedOffsetScale:s})=>Ex(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 _x(t,r,n,i.scale)},zero:({channel:e,fieldOrDatumDef:t,domain:n,markDef:i,scaleType:r,config:s,hasSecondaryRangeChannel:o})=>kx(e,t,n,i,r,s.scale,o)};function yf(e){V(e)?lx(e):bf(e,"range")}function bf(e,t){const n=e.component.scales;for(const i of e.children)t==="range"?yf(i):mf(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=At(r,a,t,"scale",Mu((c,u)=>{switch(t){case"range":return c.step&&u.step?c.step-u.step:0}return 0}))}}n[i].setWithExplicit(t,r)}}function xx(e,t){const n=t.bin;if(j(n)){const i=yo(e,t.field,n);return new te(()=>e.getSignalName(i))}else if(ie(n)&&Bt(n)&&n.step!==void 0)return{step:n.step};return}function Sx(e,t){return P([de,Be,We],e)&&t!=="nominal"?"hcl":void 0}function wx(e,t,n,i,r,s){return Ke(s)?.bin||E(n)||r!=null||i!=null||P([he.TIME,he.UTC],e)?void 0:Y(t)?!0:void 0}function $x(e,t,n,i,r,s){if(Y(e)){if(ze(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===he.POINT)return n.pointPadding}return}function vx(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(Vn(t)&&i===he.BAND)return r.offsetBandPaddingInner;return}function Ex(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===he.BAND)return X(o,v(i)?{signal:`${i.signal}/2`}:i/2)}else if(Vn(t)){if(n===he.POINT)return .5;if(n===he.BAND)return r.offsetBandPaddingOuter}return}function _x(e,t,n,i){return n==="x"&&i.xReverse!==void 0?Se(e)&&t==="descending"?v(i.xReverse)?{signal:`!${i.xReverse.signal}`}:!i.xReverse:i.xReverse:Se(e)&&t==="descending"?!0:void 0}function kx(e,t,n,i,r,s,o){const a=!!n&&n!=="unaggregated";if(a&&Se(r)){if(E(n)){const c=n[0],u=n[n.length-1];if(B(c)&&c<=0&&B(u)&&u>=0)return!0}return!1}if(e==="size"&&t.type==="quantitative"&&!Sn(r))return!0;if(!(S(t)&&t.bin)&&P([...qe,...vd],e)){const{orient:c,type:u}=i;return P(["bar","area","line","trail"],u)&&(c==="horizontal"&&e==="y"||c==="vertical"&&e==="x")?!1:P(["bar","area"],u)&&!o?!0:s?.zero}return!1}function Cx(e,t,n,i,r=!1){const s=Fx(t,n,i,r),{type:o}=e;return ut(t)?o!==void 0?Cg(t,o)?S(n)&&!kg(o,n.type)?(x(Fp(o,s)),s):o:(x(Cp(t,o,s)),s):s:null}function Fx(e,t,n,i){switch(t.type){case"nominal":case"ordinal":{if(hn(e)||Xr(e)==="discrete")return e==="shape"&&t.type==="ordinal"&&x(es(e,"ordinal")),"ordinal";if(Y(e)||Vn(e)){if(P(["rect","bar","image","rule"],n.type))return"band";if(i)return"band"}else if(n.type==="arc"&&e in Vr)return"band";const r=n[ge(e)];return Vt(r)||$n(t)&&t.axis?.tickBand?"band":"point"}case"temporal":return hn(e)?"time":Xr(e)==="discrete"?(x(es(e,"temporal")),"ordinal"):S(t)&&t.timeUnit&&J(t.timeUnit).utc?"utc":"time";case"quantitative":return hn(e)?S(t)&&j(t.bin)?"bin-ordinal":"linear":Xr(e)==="discrete"?(x(es(e,"quantitative")),"ordinal"):"linear";case"geojson":return}throw new Error(Ua(t.type))}function Nx(e,{ignoreRange:t}={}){xf(e),tf(e);for(const n of _g)mf(e,n);t||yf(e)}function xf(e){V(e)?e.component.scales=Tx(e):e.component.scales=Ox(e)}function Tx(e){const{encoding:t,mark:n,markDef:i}=e,r={};for(const s of Ci){const o=K(t[s]);if(o&&n===hc&&s===pe&&o.type===xn)continue;let a=o&&o.scale;if(o&&a!==null&&a!==!1){a??(a={});const c=Vc(t,s),u=Cx(a,s,o,i,c);r[s]=new of(e.scaleName(`${s}`,!0),{value:u,explicit:a.type===u})}}return r}const Ax=Mu((e,t)=>ac(e)-ac(t));function Ox(e){var t;const n=e.component.scales={},i={},r=e.component.resolve;for(const s of e.children){xf(s);for(const o of b(s.component.scales))if((t=r.scale)[o]??(t[o]=Rl(o,e)),r.scale[o]==="shared"){const a=i[o],c=s.component.scales[o].getWithExplicit("type");a?mg(a.value,c.value)?i[o]=At(a,c,"type","scale",Ax):(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 of(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 Fo{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 V(e){return e?.type==="unit"}function $e(e){return e?.type==="facet"}function No(e){return e?.type==="concat"}function Ln(e){return e?.type==="layer"}class To{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=me(a),this.name=t.name??r,this.title=kt(t.title)?{text:t.title}:t.title?me(t.title):void 0,this.scaleNameMap=i?i.scaleNameMap:new Fo,this.projectionNameMap=i?i.projectionNameMap:new Fo,this.signalNameMap=i?i.signalNameMap:new Fo,this.data=t.data,this.description=t.description,this.transforms=Dh(t.transform??[]),this.layout=n==="layer"||n==="unit"?{}:Wm(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:ji(t)||i?.component.data.isFaceted&&t.data===void 0},layoutSize:new mt,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(){Nx(this)}parseProjection(){Xl(this)}renameTopLevelLayoutSizeSignal(){this.getName("width")!=="width"&&this.renameSignal(this.getName("width"),"width"),this.getName("height")!=="height"&&this.renameSignal(this.getName("height"),"height")}parseLegends(){Wl(this)}assembleEncodeFromView(t){const{style:n,...i}=t,r={};for(const s of b(i)){const o=i[s];o!==void 0&&(r[s]=W(o))}return r}assembleGroupEncodeEntry(t){let n={};return this.view&&(n=this.assembleEncodeFromView(this.view)),!t&&(this.description&&(n.description=W(this.description)),this.type==="unit"||this.type==="layer")?{width:this.getSizeSignalRef("width"),height:this.getSizeSignalRef("height"),...n}:I(n)?void 0:n}assembleLayout(){if(!this.layout)return;const{spacing:t,...n}=this.layout,{component:i,config:r}=this,s=Zy(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 ke)t[i].title&&n.push(Vy(this,i));for(const i of lo)n=n.concat(Xy(this,i));return n}assembleAxes(){return zy(this.component.axes,this.config)}assembleLegends(){return ql(this)}assembleProjections(){return $b(this)}assembleTitle(){const{encoding:t,...n}=this.title??{},i={...va(this.config.title).nonMarkTitleProperties,...n,...t?{encode:{update:t}}:{}};return i.text?(P(["unit","layer"],this.type)?P(["middle",void 0],i.anchor)&&(i.frame??(i.frame="group")):i.anchor??(i.anchor="start"),I(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||$e(this.parent)?rf(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 H((this.name?`${this.name}_`:"")+t)}getDataName(t){return this.getName(U[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($e(this.parent)){const n=Pl(t),i=ki(n),r=this.component.scales[i];if(r&&!r.merged){const s=r.get("type"),o=r.get("range");if(Z(s)&&Ct(o)){const a=r.get("name"),c=hr(this,i),u=Co(c);if(u){const l=w({aggregate:"distinct",field:u},{expr:"datum"});return{signal:Ol(a,r,l)}}else return x(Jr(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):pa(t)&&ut(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}getSelectionComponent(t,n){let i=this.component.selection[t];if(!i&&this.parent&&(i=this.parent.getSelectionComponent(t,n)),!i)throw new Error(Gd(n));return i}hasAxisOrientSignalRef(){return this.component.axes.x?.some(t=>t.hasOrientSignalRef())||this.component.axes.y?.some(t=>t.hasOrientSignalRef())}}class Sf extends To{vgField(t,n={}){const i=this.fieldDef(t);return i?w(i,n):void 0}reduceFieldDef(t,n){return bm(this.getMapping(),(i,r,s)=>{const o=Ke(r);return o?t(i,o,s):i},n)}forEachFieldDef(t,n){Ts(this.getMapping(),(i,r)=>{const s=Ke(i);s&&t(s,r)},n)}}class yr extends R{clone(){return new yr(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"]}dependentFields(){return new Set([this.transform.density,...this.transform.groupby??[]])}producedFields(){return new Set(this.transform.as)}hash(){return`DensityTransform ${O(this.transform)}`}assemble(){const{density:t,...n}=this.transform,i={type:"kde",field:t,...n};return this.transform.groupby&&(i.resolve="shared"),i}}class br extends R{clone(){return new br(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 ${O(this.transform)}`}assemble(){const{extent:t,param:n}=this.transform,i={type:"extent",field:t,signal:n};return i}}class li extends R{clone(){return new li(null,{...this.filter})}constructor(t,n){super(t);this.filter=n}static make(t,n){const{config:i,mark:r,markDef:s}=n,o=z("invalid",s,i);if(o!=="filter")return null;const a=n.reduceFieldDef((c,u,l)=>{const f=ut(l)&&n.getScaleComponent(l);if(f){const d=f.get("type");Se(d)&&u.aggregate!=="count"&&!Ft(r)&&(c[u.field]=u)}return c},{});return b(a).length?new li(t,a):null}dependentFields(){return new Set(b(this.filter))}producedFields(){return new Set}hash(){return`FilterInvalid ${O(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}) || (isValid(${s}) && isFinite(+${s})))`):r.type==="quantitative"&&(n.push(`isValid(${s})`),n.push(`isFinite(+${s})`))),n},[]);return t.length>0?{type:"filter",expr:t.join(" && ")}:null}}class xr extends R{clone(){return new xr(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 ${O(this.transform)}`}assemble(){const{flatten:t,as:n}=this.transform,i={type:"flatten",fields:t,as:n};return i}}class Sr extends R{clone(){return new Sr(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 ${O(this.transform)}`}assemble(){const{fold:t,as:n}=this.transform,i={type:"fold",fields:t,as:n};return i}}class Mn extends R{clone(){return new Mn(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[[Ae,Te],[_e,Oe]]){const s=r.map(o=>{const a=K(n.encoding[o]);return S(a)?a.field:Ye(a)?{expr:`${a.datum}`}:Ie(a)?{expr:`${a.value}`}:void 0});(s[0]||s[1])&&(t=new Mn(t,s,null,n.getName(`geojson_${i++}`)))}if(n.channelHasField(pe)){const r=n.typedFieldDef(pe);r.type===xn&&(t=new Mn(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} ${O(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 R{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[[Ae,Te],[_e,Oe]]){const r=i.map(o=>{const a=K(n.encoding[o]);return S(a)?a.field:Ye(a)?{expr:`${a.datum}`}:Ie(a)?{expr:`${a.value}`}:void 0}),s=i[0]===_e?"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} ${O(this.fields)} ${O(this.as)}`}assemble(){return{type:"geopoint",projection:this.projection,fields:this.fields,as:this.as}}}class sn extends R{clone(){return new sn(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 sn(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=Yc(n.mark,i);return new sn(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 ${O(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:Sh(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 wr extends R{clone(){return new wr(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 ${O(this.transform)}`}assemble(){const{loess:t,on:n,...i}=this.transform,r={type:"loess",x:n,y:t,...i};return r}}class di extends R{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(wh(o)){let c=Ef(o.data,s);c||(c=new tn(o.data),s.push(c));const u=n.getName(`lookup_${r}`);a=new ue(c,u,U.Lookup,n.component.data.outputNodeRefCounts),n.component.data.outputNodes[u]=a}else if($h(o)){const c=o.param;i={as:c,...i};let u;try{u=n.getSelectionComponent(H(c),c)}catch(l){throw new Error(Kd(c))}if(a=u.materialized,!a)throw new Error(Qd(c))}return new di(t,i,a.getSource())}dependentFields(){return new Set([this.transform.lookup])}producedFields(){return new Set(this.transform.as?G(this.transform.as):this.transform.from.fields)}hash(){return`Lookup ${O({transform:this.transform,secondary:this.secondary})}`}assemble(){let t;if(this.transform.from.fields)t={values:this.transform.from.fields,...this.transform.as?{as:G(this.transform.as)}:{}};else{let n=this.transform.as;N(n)||(x(sp),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 $r extends R{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]??"prob",i[1]??"value"]}dependentFields(){return new Set([this.transform.quantile,...this.transform.groupby??[]])}producedFields(){return new Set(this.transform.as)}hash(){return`QuantileTransform ${O(this.transform)}`}assemble(){const{quantile:t,...n}=this.transform,i={type:"quantile",field:t,...n};return i}}class vr extends R{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]??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 ${O(this.transform)}`}assemble(){const{regression:t,on:n,...i}=this.transform,r={type:"regression",x:n,y:t,...i};return r}}class Er extends R{clone(){return new Er(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 ${O(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 _r extends R{clone(){return new _r(null,C(this.transform))}constructor(t,n){super(t);this.transform=n}dependentFields(){return new Set}producedFields(){return new Set}hash(){return`SampleTransform ${O(this.transform)}`}assemble(){return{type:"sample",size:this.transform.sample}}}function wf(e){let t=0;function n(i,r){if(i instanceof tn&&(!i.isGenerator&&!Cn(i.data))){e.push(r);const s={name:null,source:r.name,transform:[]};r=s}if(i instanceof oe&&(i.parent instanceof tn&&!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 ai||i instanceof ci||i instanceof li||i instanceof An||i instanceof On||i instanceof fi||i instanceof Me||i instanceof di||i instanceof In||i instanceof rn||i instanceof Sr||i instanceof xr||i instanceof yr||i instanceof wr||i instanceof $r||i instanceof vr||i instanceof Rt||i instanceof _r||i instanceof Er||i instanceof br)&&r.transform.push(i.assemble()),(i instanceof et||i instanceof Ze||i instanceof sn||i instanceof yt||i instanceof Mn)&&r.transform.push(...i.assemble()),i instanceof ue){if(r.source&&r.transform.length===0)i.setSource(r.source);else if(i.parent instanceof ue)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 ue&&(!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 Px(e){const t=[],n=wf(t);for(const i of e.children)n(i,{source:e.name,name:null,transform:[]});return t}function zx(e,t){const n=[],i=wf(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 Rx(e){return e==="top"||e==="left"||v(e)?"header":"footer"}function Ix(e){for(const t of ke)Lx(e,t);vf(e,"x"),vf(e,"y")}function Lx(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=vn(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=P(["bottom","right"],u)?"footer":"header";s.layoutHeaders[t]={title:o.header!==null?c:null,facetFieldDef:o,[f]:t==="facet"?[]:[$f(e,t,l)]}}}function $f(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 vf(e,t){const{child:n}=e;if(n.component.axes[t]){const{layoutHeaders:i,resolve:r}=e.component;if(r.axis[t]=mo(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=Rx(a.get("orient"));o[c]??(o[c]=[$f(e,s,!1)]);const u=oi(a,"main",e.config,{header:!0});u&&o[c][0].axes.push(u),a.mainExtracted=!0}}}}function Mx(e){Ao(e),kr(e,"width"),kr(e,"height")}function Dx(e){Ao(e);const t=e.layout.columns===1?"width":"childWidth",n=e.layout.columns===void 0?"height":"childHeight";kr(e,t),kr(e,n)}function Ao(e){for(const t of e.children)t.parseLayoutSize()}function kr(e,t){const n=Pl(t),i=ki(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]??Rl(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=At(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 jx(e){const{size:t,component:n}=e;for(const i of qe){const r=ge(i);if(t[r]){const s=t[r];n.layoutSize.set(r,Qe(s)?"step":s,!0)}else{const s=Ux(e,r);n.layoutSize.set(r,s,!1)}}}function Ux(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(Z(s)){const a=tr(i.view,t);return Ct(o)||Qe(a)?"step":a}else return Bs(i.view,t)}else{if(e.hasProjection||e.mark==="arc")return Bs(i.view,t);{const s=tr(i.view,t);return Qe(s)?s.step:s}}}function Oo(e,t,n){return w(t,{suffix:`by_${w(e)}`,...n})}class pi extends Sf{constructor(t,n,i,r){super(t,"facet",n,i,r,t.resolve);this.child=Lo(t.spec,this,this.getName("child"),void 0,r),this.children=[this.child],this.facet=this.initFacet(t.facet)}initFacet(t){if(!Zn(t))return{facet:this.initFacetFieldDef(t,"facet")};const n=b(t),i={};for(const r of n){if(![it,rt].includes(r)){x(Ti(r,"facet"));break}const s=t[r];if(s.field===void 0){x(Zr(s,r));break}i[r]=this.initFacetFieldDef(s,r)}return i}initFacetFieldDef(t,n){const i=Fs(t,n);return i.header?i.header=me(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=Cr(this),this.child.parseData()}parseLayoutSize(){Ao(this)}parseSelections(){this.child.parseSelections(),this.component.selection=this.child.component.selection}parseMarkGroup(){this.child.parseMarkGroup()}parseAxesAndHeaders(){this.child.parseAxesAndHeaders(),Ix(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 ke)for(const i of fo){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=dr(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 qe){const s=this.child.component.scales[r];if(s&&!s.merged){const o=s.get("type"),a=s.get("range");if(Z(o)&&Ct(a)){const c=hr(this.child,r),u=Co(c);u?(t.push(u),n.push("distinct"),i.push(`distinct_${u}`)):x(Jr(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 ke){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"})),Xe(p)){const{field:g,op:m=Di}=p,h=Oo(f,p);i&&r?(s.push(h),o.push("max"),a.push(h)):(s.push(g),o.push(m),a.push(h))}else if(E(p)){const g=Pn(f,l);s.push(g),o.push("max"),a.push(g)}}}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?Xe(i.sort)?[Oo(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=(Xe(r)?r.order:!E(r)&&r)||"ascending";return[s]}return[]}assembleLabelTitle(){const{facet:t,config:n}=this;if(t.facet)return po(t.facet,"facet",n);const i={row:["top","bottom"],column:["left","right"]};for(const r of lo)if(t[r]){const s=zn("labelOrient",t[r]?.header,n,r);if(i[r].includes(s))return po(t[r],r,n)}return}assembleMarks(){const{child:t}=this,n=this.component.data.facetRoot,i=Px(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:ke.map(c=>this.facetSortFields(c)).flat(),order:ke.map(c=>this.facetSortOrder(c)).flat()},...i.length>0?{data:i}:{},...r?{encode:{update:r}}:{},...t.assembleGroup(Jh(this,[]))};return[a]}getMapping(){return this.facet}}function Bx(e,t){const{row:n,column:i}=t;if(n&&i){let r=null;for(const s of[n,i])if(Xe(s.sort)){const{field:o,op:a=Di}=s.sort;e=r=new rn(e,{joinaggregate:[{op:a,field:o,as:Oo(s,s.sort,{forAs:!0})}],groupby:[w(s)]})}return r}return null}function Ef(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(ii(e)&&ii(i)){if(be(e.values,i.values))return n}else if(Cn(e)&&Cn(i)){if(e.url===i.url)return n}else if(Du(e)&&e.name===n.dataName)return n}return null}function Wx(e,t){if(e.data||!e.parent){if(e.data===null){const i=new tn({values:[]});return t.push(i),i}const n=Ef(e.data,t);if(n)return Ot(e.data)||(n.data.format=ea({},e.data.format,n.data.format)),!n.hasName()&&e.data.name&&(n.dataName=e.data.name),n;{const i=new tn(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 Hx(e,t,n){let i=0;for(const r of t.transforms){let s,o;if(Oh(r))o=e=new On(e,r),s="derived";else if(Vs(r)){const a=Rb(r);o=e=oe.makeWithAncestors(e,{},a,n)??e,e=new An(e,t,r.filter)}else if(Au(r))o=e=et.makeFromTransform(e,r,t),s="number";else if(zh(r)){s="date";const a=n.getWithExplicit(r.field);a.value===void 0&&(e=new oe(e,{[r.field]:s}),n.set(r.field,s,!1)),o=e=Ze.makeFromTransform(e,r)}else if(Rh(r))o=e=Me.makeFromTransform(e,r),s="number",so(t)&&(e=new Rt(e));else if(Tu(r))o=e=di.make(e,t,r,i++),s="derived";else if(Nh(r))o=e=new In(e,r),s="number";else if(Th(r))o=e=new rn(e,r),s="number";else if(Ih(r))o=e=yt.makeFromTransform(e,r),s="derived";else if(Lh(r))o=e=new Sr(e,r),s="derived";else if(Mh(r))o=e=new br(e,r),s="derived";else if(Ah(r))o=e=new xr(e,r),s="derived";else if(vh(r))o=e=new Er(e,r),s="derived";else if(Fh(r))e=new _r(e,r);else if(Ph(r))o=e=sn.makeFromTransform(e,r),s="derived";else if(Eh(r))o=e=new yr(e,r),s="derived";else if(_h(r))o=e=new $r(e,r),s="derived";else if(kh(r))o=e=new vr(e,r),s="derived";else if(Ch(r))o=e=new wr(e,r),s="derived";else{x(rp(r));continue}if(o&&s!==void 0)for(const a of o.producedFields()??[])n.set(a,s,!1)}return e}function Cr(e){let t=Wx(e,e.component.data.sources);const{outputNodes:n,outputNodeRefCounts:i}=e.component.data,r=e.data,s=r&&(Ot(r)||Cn(r)||ii(r)),o=!s&&e.parent?e.parent.component.data.ancestorParse.clone():new Kh;Ot(r)?(ju(r)?t=new ci(t,r.sequence):Ks(r)&&(t=new ai(t,r.graticule)),o.parseNothing=!0):r?.format?.parse===null&&(o.parseNothing=!0),t=oe.makeExplicit(t,e,o)??t,t=new Rt(t);const a=e.parent&&Ln(e.parent);(V(e)||$e(e))&&(a&&(t=et.makeFromEncoding(t,e)??t)),e.transforms.length>0&&(t=Hx(t,e,o));const c=Lb(e),u=Ib(e);t=oe.makeWithAncestors(t,{},{...c,...u},o)??t,V(e)&&(t=Mn.parseAll(t,e),t=fi.parseAll(t,e)),(V(e)||$e(e))&&(a||(t=et.makeFromEncoding(t,e)??t),t=Ze.makeFromEncoding(t,e)??t,t=On.parseAllForSortIndex(t,e));const l=e.getDataName(U.Raw),f=new ue(t,l,U.Raw,i);if(n[l]=f,t=f,V(e)){const m=Me.makeFromEncoding(t,e);m&&(t=m,so(e)&&(t=new Rt(t))),t=sn.makeFromEncoding(t,e)??t,t=yt.makeFromEncoding(t,e)??t}V(e)&&(t=li.make(t,e)??t);const d=e.getDataName(U.Main),p=new ue(t,d,U.Main,i);n[d]=p,t=p,V(e)&&Oy(e,p);let g=null;if($e(e)){const m=e.getName("facet");t=Bx(t,e.facet)??t,g=new Rn(t,e,m,p.getSource()),n[m]=g}return{...e.component.data,outputNodes:n,outputNodeRefCounts:i,raw:f,main:p,facetRoot:g,ancestorParse:o}}class qx extends To{constructor(t,n,i,r){super(t,"concat",n,i,r,t.resolve);(t.resolve?.axis?.x==="shared"||t.resolve?.axis?.y==="shared")&&x(tp),this.children=this.getChildren(t).map((s,o)=>Lo(s,this,this.getName(`concat_${o}`),void 0,r))}parseData(){this.component.data=Cr(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 Zi(t)?t.vconcat:Us(t)?t.hconcat:t.concat}parseLayoutSize(){Dx(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=go(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 Gx(e){return e===!1||e===null}const Vx={disable:1,gridScale:1,scale:1,...Wc,labelExpr:1,encode:1},_f=b(Vx);class Po extends mt{constructor(t={},n={},i=!1){super();this.explicit=t,this.implicit=n,this.mainExtracted=i}clone(){return new Po(C(this.explicit),C(this.implicit),this.mainExtracted)}hasAxisPart(t){return t==="axis"?!0:t==="grid"||t==="title"?!!this.get(t):!Gx(this.get(t))}hasOrientSignalRef(){return v(this.explicit.orient)}}function Xx(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(Yt(c))return{text:Re({fieldOrDatumDef:s,field:"datum.value",format:a,formatType:c,config:r}),...n};if(a===void 0&&c===void 0&&r.customFormatTypes){if(wn(s)==="quantitative"){if($n(s)&&s.stack==="normalize"&&r.normalizedNumberFormatType)return{text:Re({fieldOrDatumDef:s,field:"datum.value",format:r.normalizedNumberFormat,formatType:r.normalizedNumberFormatType,config:r}),...n};if(r.numberFormatType)return{text:Re({fieldOrDatumDef:s,field:"datum.value",format:r.numberFormat,formatType:r.numberFormatType,config:r}),...n}}if(wn(s)==="temporal"&&r.timeFormatType&&S(s)&&!s.timeUnit)return{text:Re({fieldOrDatumDef:s,field:"datum.value",format:r.timeFormat,formatType:r.timeFormatType,config:r}),...n}}return n}function Yx(e){return qe.reduce((t,n)=>(e.component.scales[n]&&(t[n]=[nS(n,e)]),t),{})}const Kx={bottom:"top",top:"bottom",left:"right",right:"left"};function Qx(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]=mo(e.component.resolve,s),n.axis[s]==="shared"&&(t[s]=Jx(t[s],r.component.axes[s]),t[s]||(n.axis[s]="independent",delete t[s]))}for(const r of qe){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(v(a))continue;if(i[a]>0&&!c){const u=Kx[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 Jx(e,t){if(e){if(e.length!==t.length)return;const n=e.length;for(let i=0;in.clone());return e}function Zx(e,t){for(const n of _f){const i=At(e.getWithExplicit(n),t.getWithExplicit(n),n,"axis",(r,s)=>{switch(n){case"title":return Oa(r,s);case"gridScale":return{explicit:r.explicit,value:X(r.value,s.value)}}return ir(r,s,n,"axis")});e.setWithExplicit(n,i)}return e}function eS(e,t,n,i,r){if(t==="disable")return n!==void 0;n=n||{};switch(t){case"titleAngle":case"labelAngle":return e===(v(n.labelAngle)?n.labelAngle:Hn(n.labelAngle));case"values":return!!n.values;case"encode":return!!n.encoding||!!n.labelAngle;case"title":if(e===Cl(i,r))return!0}return e===n[t]}const tS=new Set(["grid","translate","format","formatType","orient","labelExpr","tickCount","position","tickMinStep"]);function nS(e,t){let n=t.axis(e);const i=new Po,r=K(t.encoding[e]),{mark:s,config:o}=t,a=n?.orient||o[e==="x"?"axisX":"axisY"]?.orient||o.axis?.orient||By(e),c=t.getScaleComponent(e).get("type"),u=Ry(e,c,a,t.config),l=n!==void 0?!n:co("disable",o.style,n?.style,u).configValue;if(i.set("disable",l,n!==void 0),l)return i;n=n||{};const f=Dy(r,n,e,o.style,u),d=vc(n.formatType,r,c),p=$c(r,r.type,n.format,n.formatType,o,!0),g={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 _f){const $=y in El?El[y](g):Hc(y)?n[y]:void 0,k=$!==void 0,_=eS($,y,n,t,e);if(k&&_)i.set(y,$,_);else{const{configValue:T=void 0,configFrom:D=void 0}=Hc(y)&&y!=="values"?co(y,o.style,n.style,u):{},ye=T!==void 0;k&&!ye?i.set(y,$,_):(!(D==="vgAxisConfig")||tS.has(y)&&ye||ni(T)||v(T))&&i.set(y,T,!1)}}const m=n.encoding??{},h=Bc.reduce((y,$)=>{if(!i.hasAxisPart($))return y;const k=zl(m[$]??{},t),_=$==="labels"?Xx(t,e,k):k;return _!==void 0&&!I(_)&&(y[$]={update:_}),y},{});return I(h)||i.set("encode",h,!!n.encoding||n.labelAngle!==void 0),i}function iS({encoding:e,size:t}){for(const n of qe){const i=ge(n);Qe(t[i])&&(Tt(e[n])&&(delete t[i],x(Ha(i))))}return t}const rS={vgMark:"arc",encodeEntry:e=>({...Ce(e,{align:"ignore",baseline:"ignore",color:"include",size:"ignore",orient:"ignore",theta:"ignore"}),...se("x",e,{defaultPos:"mid"}),...se("y",e,{defaultPos:"mid"}),...Pt(e,"radius"),...Pt(e,"theta")})},sS={vgMark:"area",encodeEntry:e=>({...Ce(e,{align:"ignore",baseline:"ignore",color:"include",orient:"include",size:"ignore",theta:"ignore"}),...ar("x",e,{defaultPos:"zeroOrMin",defaultPos2:"zeroOrMin",range:e.markDef.orient==="horizontal"}),...ar("y",e,{defaultPos:"zeroOrMin",defaultPos2:"zeroOrMin",range:e.markDef.orient==="vertical"}),...io(e)})},oS={vgMark:"rect",encodeEntry:e=>({...Ce(e,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"}),...Pt(e,"x"),...Pt(e,"y")})},aS={vgMark:"shape",encodeEntry:e=>({...Ce(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]}},cS={vgMark:"image",encodeEntry:e=>({...Ce(e,{align:"ignore",baseline:"ignore",color:"ignore",orient:"ignore",size:"ignore",theta:"ignore"}),...Pt(e,"x"),...Pt(e,"y"),...to(e,"url")})},uS={vgMark:"line",encodeEntry:e=>({...Ce(e,{align:"ignore",baseline:"ignore",color:"include",size:"ignore",orient:"ignore",theta:"ignore"}),...se("x",e,{defaultPos:"mid"}),...se("y",e,{defaultPos:"mid"}),...ee("size",e,{vgChannel:"strokeWidth"}),...io(e)})},lS={vgMark:"trail",encodeEntry:e=>({...Ce(e,{align:"ignore",baseline:"ignore",color:"include",size:"include",orient:"ignore",theta:"ignore"}),...se("x",e,{defaultPos:"mid"}),...se("y",e,{defaultPos:"mid"}),...ee("size",e),...io(e)})};function zo(e,t){const{config:n}=e;return{...Ce(e,{align:"ignore",baseline:"ignore",color:"include",size:"include",orient:"ignore",theta:"ignore"}),...se("x",e,{defaultPos:"mid"}),...se("y",e,{defaultPos:"mid"}),...ee("size",e),...ee("angle",e),...fS(e,n,t)}}function fS(e,t,n){return n?{shape:{value:n}}:ee("shape",e)}const dS={vgMark:"symbol",encodeEntry:e=>zo(e)},pS={vgMark:"symbol",encodeEntry:e=>zo(e,"circle")},gS={vgMark:"symbol",encodeEntry:e=>zo(e,"square")},mS={vgMark:"rect",encodeEntry:e=>({...Ce(e,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"}),...Pt(e,"x"),...Pt(e,"y")})},hS={vgMark:"rule",encodeEntry:e=>{const{markDef:t}=e,n=t.orient;return!e.encoding.x&&!e.encoding.y&&!e.encoding.latitude&&!e.encoding.longitude?{}:{...Ce(e,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"}),...ar("x",e,{defaultPos:n==="horizontal"?"zeroOrMax":"mid",defaultPos2:"zeroOrMin",range:n!=="vertical"}),...ar("y",e,{defaultPos:n==="vertical"?"zeroOrMax":"mid",defaultPos2:"zeroOrMin",range:n!=="horizontal"}),...ee("size",e,{vgChannel:"strokeWidth"})}}},yS={vgMark:"text",encodeEntry:e=>{const{config:t,encoding:n}=e;return{...Ce(e,{align:"include",baseline:"include",color:"include",size:"ignore",orient:"ignore",theta:"include"}),...se("x",e,{defaultPos:"mid"}),...se("y",e,{defaultPos:"mid"}),...to(e),...ee("size",e,{vgChannel:"fontSize"}),...ee("angle",e),...sl("align",bS(e.markDef,n,t)),...sl("baseline",xS(e.markDef,n,t)),...se("radius",e,{defaultPos:null}),...se("theta",e,{defaultPos:null})}}};function bS(e,t,n){const i=z("align",e,n);return i===void 0?"center":void 0}function xS(e,t,n){const i=z("baseline",e,n);return i===void 0?"middle":void 0}const SS={vgMark:"rect",encodeEntry:e=>{const{config:t,markDef:n}=e,i=n.orient,r=i==="horizontal"?"width":"height",s=i==="horizontal"?"height":"width";return{...Ce(e,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"}),...se("x",e,{defaultPos:"mid",vgChannel:"xc"}),...se("y",e,{defaultPos:"mid",vgChannel:"yc"}),...ee("size",e,{defaultValue:wS(e),vgChannel:r}),[s]:W(z("thickness",n,t))}}};function wS(e){const{config:t,markDef:n}=e,{orient:i}=n,r=i==="horizontal"?"width":"height",s=e.getScaleComponent(i==="horizontal"?"x":"y"),o=z("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)&&B(a.step))return a.step*3/4;const c=er(t.view,r);return c*3/4}}const Fr={arc:rS,area:sS,bar:oS,circle:pS,geoshape:aS,image:cS,line:uS,point:dS,rect:mS,rule:hS,square:gS,text:yS,tick:SS,trail:lS};function $S(e){if(P([Ri,Pi,Tg],e.mark)){const t=Yc(e.mark,e.encoding);if(t.length>0)return vS(e,t)}else if(e.mark===zi){const t=Kr.some(n=>z(n,e.markDef,e.config));if(e.stack&&!e.fieldDef("size")&&t)return ES(e)}return Ro(e)}const kf="faceted_path_";function vS(e,t){return[{name:e.getName("pathgroup"),type:"group",from:{facet:{name:kf+e.requestDataName(U.Main),data:e.requestDataName(U.Main),groupby:t}},encode:{update:{width:{field:{group:"width"}},height:{field:{group:"height"}}}},marks:Ro(e,{fromPrefix:kf})}]}const Cf="stack_group_";function ES(e){const[t]=Ro(e,{fromPrefix:Cf}),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={...dn(t.encode.update,["y","yc","y2","height",...Kr]),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={...fe(t.encode.update,["y","yc","y2"]),height:{field:{group:"height"}}}):(s={...dn(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={...fe(t.encode.update,["x","xc","x2"]),width:{field:{group:"width"}}});for(const u of Kr){const l=dt(u,e.markDef,e.config);t.encode.update[u]?(s[u]=t.encode.update[u],delete t.encode.update[u]):l&&(s[u]=W(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=dt(l,e.markDef,e.config);return f!==void 0?{...u,[l]:W(f)}:u}},s),s.stroke&&(s.strokeForeground={value:!0},s.strokeOffset={value:0}),[{type:"group",from:{facet:{data:e.requestDataName(U.Main),name:Cf+e.requestDataName(U.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 _S(e){const{encoding:t,stack:n,mark:i,markDef:r,config:s}=e,o=t.order;if(!E(o)&&Ie(o)&&zr(o.value)||!o&&zr(z("order",r,s)))return;if((E(o)||S(o))&&!n)return Na(o,{expr:"datum"});if(Ft(i)){const a=r.orient==="horizontal"?"y":"x",c=t[a];if(S(c)){const u=c.sort;if(E(u))return{field:w(c,{prefix:a,suffix:"sort_index",expr:"datum"})};if(Xe(u))return{field:w({aggregate:Ns(e.encoding)?u.op:void 0,field:u.field},{expr:"datum"})};if(Cc(u)){const l=e.fieldDef(u.encoding);return{field:w(l,{expr:"datum"}),order:u.order}}else return u===null?void 0:{field:w(c,{binSuffix:e.stack?.impute?"mid":void 0,expr:"datum"})}}return}return}function Ro(e,t={fromPrefix:""}){const{mark:n,markDef:i,encoding:r,config:s}=e,o=X(i.clip,kS(e),CS(e)),a=Ca(i),c=r.key,u=_S(e),l=FS(e),f=z("aria",i,s),d=Fr[n].postEncodingTransform?Fr[n].postEncodingTransform(e):null;return[{name:e.getName("marks"),type:Fr[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(U.Main)},encode:{update:Fr[n].encodeEntry(e)},...d?{transform:d}:{}}]}function kS(e){const t=e.getScaleComponent("x"),n=e.getScaleComponent("y");return t?.get("selectionExtent")||n?.get("selectionExtent")?!0:void 0}function CS(e){const t=e.component.projection;return t&&!t.isFit?!0:void 0}function FS(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 Ff extends Sf{constructor(t,n,i,r={},s){super(t,"unit",n,i,s,void 0,pu(t)?t.view:void 0);this.specifiedScales={},this.specifiedAxes={},this.specifiedLegends={},this.specifiedProjection={},this.selection=[],this.children=[];const o=Ve(t.mark)?{...t.mark}:{type:t.mark},a=o.type;o.filled===void 0&&(o.filled=dh(o,s,{graticule:t.data&&Ks(t.data)}));const c=this.encoding=hm(t.encoding||{},a,o.filled,s);this.markDef=$u(o,c,s),this.size=iS({encoding:c,size:pu(t)?{...r,...t.width?{width:t.width}:{},...t.height?{height:t.height}:{}}:r}),this.stack=wu(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=>Ds(u))}get hasProjection(){const{encoding:t}=this,n=this.mark===hc,i=t&&gd.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 Ci.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=me(t);return E(n)&&(r.domain=n.map(xe)),E(i)&&(r.range=i.map(xe)),r}initAxes(t){return qe.reduce((n,i)=>{const r=t[i];if(F(r)||i===q&&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]=ni(s)?Ea(s):xe(s)}return i}initLegends(t){return Ed.reduce((n,i)=>{const r=K(t[i]);if(r&&kd(i)){const s=r.legend;n[i]=s&&me(s)}return n},{})}parseData(){this.component.data=Cr(this)}parseLayoutSize(){jx(this)}parseSelections(){this.component.selection=Ay(this,this.selection)}parseMarkGroup(){this.component.mark=$S(this)}parseAxesAndHeaders(){this.component.axes=Yx(this)}assembleSelectionTopLevelSignals(t){return Zh(this,t)}assembleSignals(){return[...$l(this),...Qh(this,[])]}assembleSelectionData(t){return ey(this,t)}assembleLayout(){return null}assembleLayoutSignals(){return go(this)}assembleMarks(){let t=this.component.mark??[];return(!this.parent||!Ln(this.parent))&&(t=Wu(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 Qt(this.encoding,t)}fieldDef(t){const n=this.encoding[t];return Ke(n)}typedFieldDef(t){const n=this.fieldDef(t);return ce(n)?n:null}}class Io extends To{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(nr(a))return new Io(a,this,this.getName(`layer_${c}`),o,s);if(pt(a))return new Ff(a,this,this.getName(`layer_${c}`),o,s);throw new Error(Qr(a))})}parseData(){this.component.data=Cr(this);for(const t of this.children)t.parseData()}parseLayoutSize(){Mx(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(){Qx(this)}assembleSelectionTopLevelSignals(t){return this.children.reduce((n,i)=>i.assembleSelectionTopLevelSignals(n),t)}assembleSignals(){return this.children.reduce((t,n)=>t.concat(n.assembleSignals()),$l(this))}assembleLayoutSignals(){return this.children.reduce((t,n)=>t.concat(n.assembleLayoutSignals()),go(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 G(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 ty(this,this.children.flatMap(t=>t.assembleMarks()))}assembleLegends(){return this.children.reduce((t,n)=>t.concat(n.assembleLegends()),ql(this))}}function Lo(e,t,n,i,r){if(ji(e))return new pi(e,t,n,r);if(nr(e))return new Io(e,t,n,i,r);if(pt(e))return new Ff(e,t,n,i,r);if(jm(e))return new qx(e,t,n,r);throw new Error(Qr(e))}function NS(e,t={}){t.logger&&qp(t.logger),t.fieldTitle&&Mc(t.fieldTitle);try{const n=xu(Qo(t.config,e.config)),i=Ru(e,n),r=Lo(i,null,"",void 0,n);r.parse(),Zb(r.component.data,r);const s=AS(r,TS(e,i.autosize,n,r),e.datasets,e.usermeta);return{spec:s,normalized:i}}finally{t.logger&&Gp(),t.fieldTitle&&am()}}function TS(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&&Vh(t.type)){if(r==="step"&&s==="step")x(Ra()),t.type="pad";else if(r==="step"||s==="step"){const o=r==="step"?"width":"height";x(Ra(ki(o)));const a=o==="width"?"height":"width";t.type=Xh(a)}}return{...b(t).length===1&&t.type?t.type==="pad"?{}:{autosize:t.type}:{autosize:t},...Lu(n,!1),...Lu(e,!0)}}function AS(e,t,n={},i){const r=e.config?eh(e.config):void 0,s=[].concat(e.assembleSelectionData([]),zx(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([]),...fu(f)]),...r?{config:r}:{},...i?{usermeta:i}:{}}}const OS=cd.version;export{pn as accessPathDepth,Dr as accessPathWithDatum,NS as compile,P as contains,be as deepEqual,xi as deleteNestedProperty,C as duplicate,bt as entries,Rr as every,Mr as fieldIntersection,na as flatAccessWithDatum,X as getFirstDefined,Ir as hasIntersection,O as hash,sa as internalField,Un as isBoolean,I as isEmpty,ld as isEqual,oa as isInternalField,zr as isNullOrFalse,Si as isNumeric,b as keys,Bn as logicalExpr,ea as mergeDeep,Zo as never,Ru as normalize,Hn as normalizeAngle,fe as omit,dn as pick,Lr as prefixGenerator,jr as removePathFromField,Mt as replaceAll,ve as replacePathInField,dd as resetIdCounter,ta as setEqual,Lt as some,L as stringify,Wn as titleCase,je as unique,ra as uniqueId,ne as vals,H as varName,OS as version};export default null;