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.16.3",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",jest:"NODE_OPTIONS=--experimental-vm-modules npx jest",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 --experimental-vm-modules ./node_modules/.bin/jest --runInBand test","test:runtime":"NODE_OPTIONS=--experimental-vm-modules 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":"NODE_OPTIONS=--experimental-vm-modules 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.22.10","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/preset-env":"^7.22.10","@babel/preset-typescript":"^7.22.5","@release-it/conventional-changelog":"^7.0.0","@rollup/plugin-alias":"^5.0.0","@rollup/plugin-babel":"^6.0.3","@rollup/plugin-commonjs":"^25.0.4","@rollup/plugin-json":"^6.0.0","@rollup/plugin-node-resolve":"^15.2.1","@rollup/plugin-terser":"^0.4.3","@types/chai":"^4.3.5","@types/d3":"^7.4.0","@types/jest":"^29.5.4","@types/pako":"^2.0.0","@typescript-eslint/eslint-plugin":"^6.4.1","@typescript-eslint/parser":"^6.4.1",ajv:"^8.12.0","ajv-formats":"^2.1.1",chai:"^4.3.7",cheerio:"^1.0.0-rc.12","conventional-changelog-cli":"^4.0.0",d3:"^7.8.5","del-cli":"^5.0.0",eslint:"^8.47.0","eslint-config-prettier":"^9.0.0","eslint-plugin-jest":"^27.2.3","eslint-plugin-prettier":"^5.0.0","fast-json-stable-stringify":"~2.1.0","highlight.js":"^11.8.0",jest:"^29.6.3","jest-dev-server":"^9.0.0",mkdirp:"^3.0.1",pako:"^2.1.0",prettier:"^3.0.2",puppeteer:"^15.0.0","release-it":"^16.1.5",rollup:"^3.28.1","rollup-plugin-bundle-size":"^1.0.3","rollup-plugin-sourcemaps":"^0.6.3",serve:"^14.2.1",terser:"^5.19.2","ts-jest":"^29.1.1","ts-json-schema-generator":"^1.3.0",typescript:"~5.2.2","vega-cli":"^5.25.0","vega-datasets":"^2.7.0","vega-embed":"^6.22.2","vega-tooltip":"^0.33.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 $e(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 Oe(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="Legend bindings are only supported for selections over an individual field or encoding channel.";function Yd(e){return`Lookups can only be performed on selection parameters. "${e}" is a variable parameter.`}function Kd(e){return`Cannot define and lookup the "${e}" selection in the same view. Try moving the lookup into a second, layered view?`}const Qd="The same selection must be used to override scale domains in a layered view.",Jd='Interval selections should be initialized using "x", "y", "longitude", or "latitude" keys.';function Zd(e){return`Unknown repeated value "${e}".`}function Ma(e){return`The "columns" property cannot be used when "${e}" has nested row/column.`}const ep="Axes cannot be shared in concatenated or repeated views yet (https://github.com/vega/vega-lite/issues/2415).";function tp(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 np="Attempt to add the same child twice.";function ip(e){return`Ignoring an invalid transform: ${L(e)}.`}const rp='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 sp(e){const{parentProjection:t,projection:n}=e;return`Layer's shared projection ${L(t)} is overridden by a child projection ${L(n)}.`}const op="Arc marks uses theta channel rather than angle, replacing angle with theta.";function ap(e){return`${e}Offset dropped because ${e} is continuous`}function cp(e,t,n){return`Channel ${e} is a ${t}. Converted to {value: ${L(n)}}.`}function Ua(e){return`Invalid field type "${e}".`}function up(e,t){return`Invalid field type "${e}" for aggregate: "${t}", using "quantitative" instead.`}function lp(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 fp(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 dp="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 pp(e){return`${e}-encoding is dropped as ${e} is not a valid encoding channel.`}function gp(e){return`${e} encoding should be discrete (ordinal / nominal / binned).`}function mp(e){return`${e} encoding should be discrete (ordinal / nominal / binned) or use a discretizing scale (e.g. threshold).`}function hp(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 yp(e){return`The ${e} for range marks cannot be an expression`}function bp(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 xp(e,t){return`Specified orient "${e}" overridden with "${t}".`}function Sp(e){return`Cannot use the scale property "${e}" with non-color channel.`}function wp(e){return`Cannot use the relative band size with ${e} scale.`}function $p(e){return`Using unaggregated domain with raw field has no effect (${L(e)}).`}function vp(e){return`Unaggregated domain not applicable for "${e}" since it produces values outside the origin domain of the source data.`}function Ep(e){return`Unaggregated domain is currently unsupported for log scale (${L(e)}).`}function _p(e){return`Cannot apply size to non-oriented mark "${e}".`}function kp(e,t,n){return`Channel "${e}" does not work with "${t}" scale. We are using "${n}" scale instead.`}function Cp(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 Fp(e,t,n,i){return`Conflicting ${t.toString()} property "${e.toString()}" (${L(n)} and ${L(i)}). Using ${L(n)}.`}function Np(e,t,n,i){return`Conflicting ${t.toString()} property "${e.toString()}" (${L(n)} and ${L(i)}). Using the union of the two domains.`}function Tp(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 Ap(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.",Op="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.",Pp="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.",zp="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 Rp(e){return`Cannot stack "${e}" if there is already "${e}2".`}function Ip(e){return`Cannot stack non-linear scale (${e}).`}function Lp(e){return`Stacking is applied even though the aggregate function is non-summative ("${e}").`}function Ai(e,t){return`Invalid ${e}: ${L(t)}.`}function Mp(e){return`Dropping day from datetime ${L(e)} as day cannot be combined with other units.`}function Dp(e,t){return`${t?"extent ":""}${t&&e?"and ":""}${e?"center ":""}${t&&e?"are ":"is "}not needed when data are aggregated.`}function jp(e,t,n){return`${e} is not usually used with ${t} for ${n}.`}function Up(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 Bp(e){return`Channel ${e} should not be used with "binned" bin.`}function Wp(e){return`Domain for ${e} is required for threshold scale.`}var dw=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},pw=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 Hp(e){return yn=e,yn}function qp(){return yn=Xa,yn}function x(...e){yn.warn(...e)}function Gp(...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"],Vp=Ya.map(e=>e.substr(0,3)),Ka=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],Xp=Ka.map(e=>e.substr(0,3));function Yp(e){if(Si(e)&&(e=+e),B(e))return e>4&&x(Ai("quarter",e)),e-1;throw new Error(Ai("quarter",e))}function Kp(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=Vp.indexOf(i);if(r!==-1)return r;throw new Error(Ai("month",e))}}function Qp(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=Xp.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(Mp(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?Kp(e.month):e.month;n.push(i)}else if(e.quarter!==void 0){const i=t?Yp(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?Qp(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 Jp(e){const t=ts(e,!1),n=t.join(", ");return e.utc?`utc(${n})`:`datetime(${n})`}function Zp(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 eg(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 tg(e){return e.substring(3)}const ng={"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 ig(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"),Jp(a)}function tc(e){if(!e)return;const t=Oi(e);return`timeUnitSpecifier(${L(t)}, ${L(ng)})`}function rg(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=tg(t.unit)),t}function sg(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 og={year:1,month:1,date:1,hours:1,minutes:1,seconds:1,milliseconds:1};function ag(e){return!!og[e]}function ic(e,t=1){if(ag(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 cg(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 ug(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 lg(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:ig(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([${lg(e.oneOf,r).join(",")}], ${a}) !== -1`;if(ug(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 fg(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 dg(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 pg(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 gg(e,t){const n=gs[e],i=gs[t];return n===i||n==="ordinal-position"&&i==="time"||i==="ordinal-position"&&n==="time"}const mg={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 mg[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"]),hg=new Set([...uc,...fc,"sequential","identity"]),yg=new Set(["ordinal","bin-ordinal","point","band"]);function Z(e){return yg.has(e)}function Se(e){return hg.has(e)}function Pe(e){return uc.has(e)}function Sn(e){return fc.has(e)}const bg={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 xg(e){return!N(e)&&!!e.name}function dc(e){return e?.param}function Sg(e){return e?.unionWith}function wg(e){return Tr(e)&&"field"in e}const $g={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:gw,domain:mw,range:hw,rangeMax:yw,rangeMin:bw,scheme:xw,...vg}=$g,Eg=b(vg);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 Pe(e)||e==="band"||e==="point";case"padding":case"rangeMin":case"rangeMax":return Pe(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 Pe(e);case"nice":return Pe(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:Sp(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 _g(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 kg(e,t,n=!1){if(!ut(e))return!1;switch(e){case q:case Q:case xt:case gn:case ve:case Fe:return Pe(t)||t==="band"?!0:t==="point"?!n:!1;case at:case $t:case ct:case St:case wt:case Dt:return Pe(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,Cg=ae.image,Ri=ae.line,Ii=ae.point,Fg=ae.rect,Li=ae.rule,mc=ae.text,hs=ae.tick,Ng=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 Tg=new Set(b(ae));function Ve(e){return e.type}const Ag=["stroke","strokeWidth","strokeDash","strokeDashOffset","strokeOpacity","strokeJoin","strokeMiterLimit"],Og=["fill","fillOpacity"],Pg=[...Ag,...Og],zg={color:1,filled:1,invalid:1,order:1,radius2:1,theta2:1,timeUnitBandSize:1,timeUnitBandPosition:1},yc=b(zg),Rg={area:["line","point"],bar:["binSpacing","continuousBandSize","discreteBandSize","minBandSize"],rect:["binSpacing","continuousBandSize","discreteBandSize","minBandSize"],line:["point"],tick:["bandSize","thickness"]},Ig={color:"#4c78a8",invalid:"filter",timeUnitBandSize:1},Lg={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(Lg);function Vt(e){return e&&e.band!=null}const Mg={horizontal:["cornerRadiusTopRight","cornerRadiusBottomRight"],vertical:["cornerRadiusTopLeft","cornerRadiusTopRight"]},xc=5,Dg={binSpacing:1,continuousBandSize:xc,minBandSize:.25,timeUnitBandPosition:.5},jg={binSpacing:0,continuousBandSize:xc,minBandSize:.25,timeUnitBandPosition:.5},Ug={thickness:1};function Bg(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&&Pe(r.get("type"))?Wg({fieldDef:n,channel:t,markDef:i,ref:o,config:s}):o}function Wg({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?[Hg(e,t),i]:i}function Hg(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 qg(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 sm(e);default:return rm(e,t)}};let Lc=Ic;function Mc(e){Lc=e}function om(){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 am(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(cp(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):cm(e)}function cm(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(lp(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(Bp(t)),ce(a)){const{type:c}=a,u=pg(c);c!==u&&(a.type=u),c!=="quantitative"&&(Sa(i)&&(x(up(c,i)),a.type="quantitative"))}else if(!ga(t)){const c=am(a,t);a.type=c}if(ce(a)){const{compatible:c,warning:u}=um(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 um(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:gp(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 ve:case Fe:case _i:return En;case Te:case Ee:case Ne:case Ae: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 Ce: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)&&!nm(e)?{compatible:!1,warning:mp(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&&lm(e)}function lm(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)})`,eg(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"],fm={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},dm={...Wc,style:1,labelExpr:1,encoding:1};function Hc(e){return!!dm[e]}const pm={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(pm);function pt(e){return"mark"in e}class Yi{constructor(t,n){this.name=t,this.run=n}hasMatchingType(t){return pt(t)?Bg(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 gm(e,t,n){const i=Cd(t,n);if(i){if(i==="binned"){const r=e[t===Ce?q:Q];return!!(S(r)&&S(e[t])&&ie(r.bin))}}else return!1;return!0}function mm(e,t,n,i){const r={};for(const s of b(e))pa(s)||x(pp(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)&&(dg(c.type)&&(S(o)&&!c.timeUnit))){x(ap(a));continue}}if(s==="angle"&&t==="arc"&&!e.theta&&(x(op),s=ve),!gm(e,s,t)){x(Ti(s,t));continue}if(s===at&&t==="line"){const a=Ke(e[s]);if(a?.aggregate){x(dp);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)&&!Re(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)&&!Re(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 hm(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 ym(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 Ce:case Ue:case xt:case gn:case ve:case ot:case Fe:case st:case Ne:case Te:case Ae:case Ee: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 bm(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=hm(n).map(em);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(Up(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",xm=["box","median","outliers","rule","ticks"],Sm=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}=wm(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:OS,...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 wm(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}=bm(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",$m=["ticks","rule"],vm=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 Em(e,t){const{encoding:n}=e;if(_m(n))return{orient:Jc(e,t),inputType:"raw"};const i=km(n),r=Cm(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 _m(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 km(e){return F(e.x2)||F(e.y2)}function Cm(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}=Em(e,t),{continuousAxisChannelDef:f,continuousAxisChannelDef2:d,continuousAxisChannelDefError:p,continuousAxisChannelDefError2:g,continuousAxis:m}=Qc(e,u,t),{errorBarSpecificAggregate:h,postAggregateCalculates:y,tooltipSummary:$,tooltipTitleWithFieldName:k}=Fm(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 Fm(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(jp(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(Dp(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",Nm=["band","borders"],Tm=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 Am(){return b(ou)}Is(Ji,eu,xm),Is(zs,nu,$m),Is(Rs,su,Nm);const Om=["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"},Pm=b(au),zm=b(cu),Rm={header:1,headerRow:1,headerColumn:1,headerFacet:1},uu=b(Rm),lu=["size","shape","fill","stroke","strokeDash","strokeWidth","opacity"],Im={gradientHorizontalMaxLength:200,gradientHorizontalMinLength:100,gradientVerticalMaxLength:200,gradientVerticalMinLength:64,unselectedOpacity:.35},Lm={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},Ie="_vgsid_",Mm={point:{on:"click",fields:[Ie],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 Dm(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,jm={align:1,bounds:1,center:1,columns:1,spacing:1},Um=b(jm);function Bm(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 Um)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,Wm={continuousWidth:200,continuousHeight:200,step:mu},Hm={background:"white",padding:5,timeFormat:"%b %d, %Y",countTitle:"Count of Records",view:Wm,mark:Ig,arc:{},area:{},bar:Dg,circle:{},geoshape:{},image:{},line:{},point:{},rect:jg,rule:{color:"black"},square:{},text:{color:"black"},tick:Ug,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:bg,projection:{},legend:Im,header:{titlePadding:10,labelPadding:10},headerColumn:{},headerRow:{},headerFacet:{},selection:Mm,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 qm(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 Gm(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 Vm(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 Xm(e){const t=b(e),n={};for(const i of t)n[i]=bu(e[i]);return n}const Ym=[...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(Hm),n?Vm(n):{},t?qm(t):{},i?Gm(i):{},s||{});r&&Mf(o,"selection",r,!0);const a=fe(o,Ym);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=Xm(o.style)),o.title&&(a.title=me(o.title)),o.view&&(a.view=me(o.view)),a}const Km=new Set(["view",...Tg]),Qm=["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"],Jm={view:["continuousWidth","continuousHeight","discreteWidth","discreteHeight","step"],...Rg};function Zm(e){e=C(e);for(const t of Qm)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 Om)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 Km){for(const i of yc)delete e[t][i];const n=Jm[t];if(n)for(const i of n)delete e[t][i];th(e,t)}for(const t of Am())delete e[t];eh(e);for(const t in e)M(e[t])&&I(e[t])&&delete e[t];return I(e)?void 0:e}function eh(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 th(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 nh(e){return"repeat"in e}function ih(e){return!E(e.repeat)&&e.repeat.layer}class Ws{map(t,n){return ji(t)?this.mapFacet(t,n):nh(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 rh={zero:1,center:1,normalize:1};function sh(e){return e in rh}const oh=new Set([gc,zi,Pi,Li,Ii,ys,bs,Ri,mc,hs]),ah=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 ch(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(!oh.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=ch(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:ah.has(i)&&(g="zero"),!g||!sh(g)||Ns(t)&&p.length===0?null:s?.scale?.type&&s?.scale?.type!==he.LINEAR?(s?.stack&&x(Ip(s.scale.type)),null):F(t[He(r)])?(s.stack!==void 0&&x(Rp(r)),null):(S(s)&&s.aggregate&&!zd.has(s.aggregate)&&x(Lp(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=dh(i.type,t,r),r!==void 0&&r!==i.orient&&x(xp(i.orient,r)),i.type==="bar"&&i.orient){const a=z("cornerRadiusEnd",i,n);if(a!==void 0){const c=i.orient==="horizontal"&&t.x2||i.orient==="vertical"&&t.y2?["cornerRadius"]:Mg[i.orient];for(const u of c)i[u]=a;i.cornerRadiusEnd!==void 0&&delete i.cornerRadiusEnd}}const s=z("opacity",i,n);s===void 0&&(i.opacity=lh(i.type,t));const o=z("cursor",i,n);return o===void 0&&(i.cursor=uh(i,t,n)),i}function uh(e,t,n){return t.href||e.href||z("href",e,n)?"pointer":e.cursor}function lh(e,t){return P([Ii,hs,ys,bs],e)&&!Ns(t)?.7:void 0}function fh(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 dh(e,t,n){switch(e){case Ii:case ys:case bs:case mc:case Fg:case Cg: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 ph(e){const{point:t,line:n,...i}=e;return b(i).length>1?i:i.type}function gh(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 mh{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:ph({...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:gh(r)})}}function hh(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(Jg(i)){if(i.repeat in n)return{...t,[e]:n[i.repeat]};x(Zd(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 yh{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(bp(!!r.x2,!!r.y2)),i({...t,mark:M(s)?{...s,type:"rule"}:"rule"},n)}}class bh extends Ws{constructor(){super(...arguments);this.nonFacetUnitNormalizers=[Sm,vm,Tm,new mh,new yh]}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 ih(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(hp([...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:hh(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||Re(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(sp({parentProjection:t,projection:n})),n??t}function Vs(e){return"filter"in e}function xh(e){return e?.stop!==void 0}function Tu(e){return"lookup"in e}function Sh(e){return"data"in e}function wh(e){return"param"in e}function $h(e){return"pivot"in e}function vh(e){return"density"in e}function Eh(e){return"quantile"in e}function _h(e){return"regression"in e}function kh(e){return"loess"in e}function Ch(e){return"sample"in e}function Fh(e){return"window"in e}function Nh(e){return"joinaggregate"in e}function Th(e){return"flatten"in e}function Ah(e){return"calculate"in e}function Au(e){return"bin"in e}function Oh(e){return"impute"in e}function Ph(e){return"timeUnit"in e}function zh(e){return"aggregate"in e}function Rh(e){return"stack"in e}function Ih(e){return"fold"in e}function Lh(e){return"extent"in e&&!("density"in e)}function Mh(e){return e.map(t=>Vs(t)?{filter:fn(t.filter,fg)}:t)}class Dh 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,jh(n,i))}}function jh(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=Hh(e,t),{width:i,height:r}=e,s=qh(n,{width:i,height:r,autosize:e.autosize},t);return{...n,...s?{autosize:s}:{}}}const Uh=new bh,Bh=new Dh,Wh=new Ys;function Hh(e,t={}){const n={config:t};return Wh.map(Uh.map(Bh.map(e,n),n),n)}function Iu(e){return N(e)?{type:e}:e??{}}function qh(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 Gh(e){return e==="fit"||e==="fit-x"||e==="fit-y"}function Vh(e){return e?`fit-${ki(e)}`:"fit"}const Xh=["background","padding"];function Lu(e,t){const n={};for(const i of Xh)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(Fp(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 Yh 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=$e(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):Zp(e));return t?n(L(e)):e}function Kh(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+Fy,on:[{events:{signal:n.name+zt},update:`modify(${A(n.name+Zt)}, ${r})`}]})}return Qs(t)}function Qh(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 Jh(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 Zh(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:Ie}}]),r.init){const a=r.project.items.map(Bu);s.values=r.project.hasSelectionId?r.init.map(c=>({unit:i,[Ie]: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 ey(e,t){for(const n of e.children)V(n)&&(t=Wu(n,t));return t}function ty(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(np);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:$e(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 ny{constructor(...t){this.items=t,this.hasChannel={},this.hasField={},this.hasSelectionId=!1}}const iy={defined:()=>!0,parse:(e,t,n)=>{const i=t.name,r=t.project??(t.project=new ny),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(Jd),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===Ie,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===Ie}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(!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($e(o.field))}: ${o.signals.data}`).join(", ")}}`;else{for(const o of i){const a=`${A($e(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.filter(s=>s.name===i.signals.data)[0];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",ry="_center",sy={defined:e=>e.type==="interval",parse:(e,t,n)=>{var i;if(e.hasProjection){const r={...Tr(n.select)?n.select:{}};r.fields=[Ie],r.encodings||(r.encodings=n.value?b(n.value):[Te,Ne]),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(oy(e,t,c,o&&o[c.index])),[])),e.hasProjection){const a=A(e.projectionName()),c=e.projectionName()+ry,{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 m of b(u))u[m]=[{test:`${c}.length && ${c}[0].unit === ${en(e)}`,...u[m]},{value:0}];const{fill:l,fillOpacity:f,cursor:d,...p}=t.mark,g=b(p).reduce((m,h)=>(m[h]=[{test:[r!==void 0&&`${o}[0] !== ${o}[1]`,s!==void 0&&`${a}[0] !== ${a}[1]`].filter(y=>y).join(" && "),value:p[h]},{value:null}],m),{});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:{...d?{cursor:{value:d}}:{},fill:{value:"transparent"}},update:{...u,...g}}}]}};function oy(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 ay={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+=`${Ie}: ${o}[${A(Ie)}]`;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(Qg(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(Re(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===ve||f===Fe)&&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 cy(e){const{markDef:t,config:n}=e,i=z("aria",t,n);return i===!1?{}:{...i?{aria:i}:{},...uy(e),...ly(e)}}function uy(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 ly(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 fy(e){const{encoding:t,mark:n}=e,i=t.order;return!Ft(n)&&Re(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)}:dy({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 dy(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 py={left:"x",center:"xc",right:"x2"},gy={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(yp(r)),o=void 0):o=s,e==="x"?py[o||(i==="top"?"left":"center")]:gy[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=my(t,i,o),u=c[a]?el(e,r,s):Et(e);return{...se(e,t,{defaultPos:n,vgChannel:u}),...c}}function my(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=hy({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 hy({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(fp(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)?xy({fieldDef:c,fieldDef2:u,channel:t,model:e}):(F(c)&&Z(f)||m)&&!u?by(c,t,e):tl(t,e,{defaultPos:"zeroOrMax",defaultPos2:"zeroOrMin"})}function yy(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(${Oe(l)}, ${u})`:u}}else r.band!==1&&(x(wp(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 by(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(_p(i.type)));const y=!!h,$=Tc({channel:t,fieldDef:e,markDef:i,config:s,scaleType:(u||g)?.get("type"),useVlSizeChannel:m});h=h||{[l]:yy(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=Oe(n),l=Oe(r),f=Oe(i),d=Oe(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 xy({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=Gg({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 Sy=new Set(["aria","width","height"]);function ke(e,t){const{fill:n=void 0,stroke:i=void 0}=t.color==="include"?Zu(e):{};return{...wy(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),...fy(e),...Ku(e),...to(e,"href"),...cy(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=$y(e,{invalid:!0,channels:Ci});if(a)return{[t]:[{test:a,value:null},...G(n)]}}return n?{[t]:n}:{}}function wy(e,t){return Dd.reduce((n,i)=>(!Sy.has(i)&&e[i]!==void 0&&t[i]!=="ignore"&&(n[i]=W(e[i])),n),{})}function $y(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=vy(e,{channels:qe});if(r)return{defined:{signal:r}}}return{}}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",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`}},Ey={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!==Ie;return t&&!n&&x(Xd),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 _y(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",ky={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",Cy={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",Fy="_modify",hl="vlSelectionResolve",lr=[ay,sy,iy,cl,al,ht,ul,Ey,ky,Cy,ol];function Ny(e){let t=e.parent;for(;t&&!De(t);)t=t.parent;return t}function en(e,{escape:t}={escape:!0}){let n=t?A(e.name):e.name;const i=Ny(e);if(i){const{facet:r}=i;for(const s of _e)r[s]&&(n+=` + '__facet_${s}_' + (facet[${A(i.vgField(s))}])`)}return n}function 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 Ty(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($e(s))}]`}function Ay(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:cg(i)?Sl(e,i,n):sc(i))}function Oy(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=fm[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=Oy(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 Py(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}" ? ${Oe(o[l])} : ${Oe(a[l])}`};return u}return t[r]})])}function zy(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:Ry([...c,...a],i)}}function Ry(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??Iy(n,e),gridScale:({model:e,channel:t})=>Ly(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??Dy(t.type,n),labelOverlap:({axis:e,fieldOrDatumDef:t,scaleType:n})=>e.labelOverlap??jy(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??By({fieldOrDatumDef:i,scaleType:r,size:o,values:n.values})},tickMinStep:Wy,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})=>Hy(e,t),zindex:({axis:e,fieldOrDatumDef:t,mark:n})=>e.zindex??qy(n,t)};function Iy(e,t){return!Z(e)&&S(t)&&!j(t?.bin)&&!ie(t?.bin)}function Ly(e,t){const n=t==="x"?"y":"x";return e.getScaleComponent(n)?e.scaleName(n):void 0}function My(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 Gy(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,Pm,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 Vy(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=Yy(e,t,r,n,s);o!=null&&i.push(o)}return i}function Xy(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,zm,cu)}}function Yy(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=De(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:Xy(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 Ky={column:{start:0,end:1},row:{start:1,end:0}};function Qy(e,t){return Ky[t][e]}function Jy(e,t){const n={};for(const i of _e){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=Qy(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(De(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}, ${Oe(o)}, ${Oe(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(De(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(Tp(t)),"independent"):e[i][t]||"shared"}const Zy={...Lm,disable:1,labelExpr:1,selections:1,opacity:1,shape:1,stroke:1,fill:1,size:1,strokeWidth:1,strokeDash:1,encode:1},Il=b(Zy);class eb extends mt{}const Ll={symbols:tb,gradient:nb,labels:ib,entries:rb};function tb(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,Pg),...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 nb(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 ib(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=ze({fieldOrDatumDef:t,field:"datum.value",format:u,formatType:l,config:o}):u===void 0&&l===void 0&&o.customFormatTypes&&(t.type==="quantitative"&&o.numberFormatType?f=ze({fieldOrDatumDef:t,field:"datum.value",format:o.numberFormat,formatType:o.numberFormatType,config:o}):t.type==="temporal"&&o.timeFormatType&&S(t)&&t.timeUnit===void 0&&(f=ze({fieldOrDatumDef:t,field:"datum.value",format:o.timeFormat,formatType:o.timeFormatType,config:o})));const d={...c?{opacity:c}:{},...f?{text:f}:{},...e};return I(d)?void 0:d}function rb(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 Zg(e)?G(e.condition).reduce(t,e.value):Re(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??fb(e)},labelOverlap:({legend:e,legendConfig:t,scaleType:n})=>e.labelOverlap??t.labelOverlap??db(n),symbolType:({legend:e,markDef:t,channel:n,encoding:i})=>e.symbolType??ob(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)&&Pe(t)){if(e==="gradient")return}else if(e==="symbol")return;return e},values:({fieldOrDatumDef:e,legend:t})=>sb(t,e)};function sb(e,t){const n=e.values;return E(n)?jc(t,n):v(n)?n:void 0}function ob(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 ab(e){const{legend:t}=e;return X(t.type,cb(e))}function cb({channel:e,timeUnit:t,scaleType:n}){if(hn(e)){if(P(["quarter","month","day"],t))return"symbol";if(Pe(n))return"gradient"}return"symbol"}function ub({legendConfig:e,legendType:t,orient:n,legend:i}){return i.direction??e[t?"gradientDirection":"symbolDirection"]??lb(n,t)}function lb(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 fb({legendConfig:e,model:t,direction:n,orient:i,scaleType:r}){const{gradientHorizontalMaxLength:s,gradientHorizontalMinLength:o,gradientVerticalMaxLength:a,gradientVerticalMinLength:c}=e;return Pe(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 db(e){return P(["quantile","threshold","log","symlog"],e)?"greedy":void 0}function Wl(e){const t=V(e)?pb(e):yb(e);return e.component.legends=t,t}function pb(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]=hb(e,i)}return n}function gb(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 mb(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 hb(e,t){let n=e.legend(t);const{markDef:i,encoding:r,config:s}=e,o=s.legend,a=new eb({},gb(e,t));_y(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=ab({legend:n,channel:t,timeUnit:f,scaleType:u}),g=ub({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=mb(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 yb(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 bb(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 bb(e,t){return t.value==="circle"?t:e}function xb(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=>Sb(r,e.config)).filter(r=>r!==void 0);return i}function Sb(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)),xb(s,"labels","text",{signal:o})}return s}function wb(e){return Ln(e)||No(e)?$b(e):Gl(e)}function $b(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 vb=["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)?Eb(e):Cb(e)}function Eb(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?_b(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 _b(e){const t=[],{encoding:n}=e;for(const i of[[Te,Ne],[Ee,Ae]])(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 kb(e,t){const n=Rr(vb,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 Cb(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=kb(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 Fb(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 Nb(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 Tb(e){return"as"in e}function Kl(e,t,n){let i,r;Tb(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}=Nb(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],...Fb(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:$e(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:$e(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 Ab(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)&&wg(n.scale?.range)&&e.add(n.scale.range.field),e}function Ob(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 Le extends R{clone(){return new Le(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 Ab(s,a,o,n)}),s.size+b(r).length===0?null:new Le(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 Le(t,i,r)}merge(t){return ta(this.dimensions,t.dimensions)?(Ob(this.measures,t.measures),!0):(Gp("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:$e(s));const r={type:"aggregate",groupby:[...this.dimensions].map($e),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 _e){const o=n.facet[s];if(o){const{bin:a,sort:c}=o;this[s]={name:n.getName(`${s}_domain`),fields:[w(o),...j(a)?[w(o,{binSuffix:"end"})]:[]],...Xe(c)?{sortField:c}:E(c)?{sortIndexField:Pn(o,s)}:{}}}}this.childModel=n.child}hash(){let t="Facet";for(const n of _e)this[n]&&(t+=` ${n.charAt(0)}:${O(this[n])}`);return t}get fields(){const t=[];for(const n of _e)this[n]?.fields&&t.push(...this[n].fields);return t}dependentFields(){const t=new Set(this.fields);for(const n of _e)this[n]&&(this[n].sortField&&t.add(this[n].sortField.field),this[n].sortIndexField&&t.add(this[n].sortIndexField));return t}producedFields(){return new Set}getSource(){return this.name}getChildIndependentFieldsWithStep(){const t={};for(const n of 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 Pb(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(tp(t)),null}function zb(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 Rb(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)||De(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 Ib(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=Pb(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([Ie])}hash(){return"Identifier"}assemble(){return{type:"identifier",as:Ie}}}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},Lb=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 Lb(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 Mb 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 Db extends So{constructor(t){super();this.requiresSelectionId=t&&so(t)}run(t){t instanceof Rt&&(this.requiresSelectionId&&(bo(t.parent)||t.parent instanceof Le||t.parent instanceof oe)||(this.setModified(),t.remove()))}}class jb 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 Ub extends So{constructor(){super()}run(t){t instanceof ue&&!t.isRequired()&&(this.setModified(),t.remove())}}class Bb 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 Wb 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 Hb extends nn{run(t){t instanceof ue||t.numChildren()>0||t instanceof Rn||(t instanceof tn||(this.setModified(),t.remove()))}}class qb 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 Gb extends nn{run(t){const n=t.children.filter(r=>r instanceof Le),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 Vb 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 Xb 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 Yb(e){return e.stack.stackBy.reduce((t,n)=>{const i=n.fieldDef,r=w(i);return r&&t.push(r),t},[])}function Kb(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 Kb(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=Yb(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.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 Qb(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 Le||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 Le||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=Qb(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 Me(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=Me(new Ub,i)||r,r=Me(new Db(t),i)||r,i=i.filter(s=>s.numChildren()>0),r=Me(new Hb,i)||r,i=i.filter(s=>s.numChildren()>0),n||(r=Me(new Bb,i)||r,r=Me(new Vb(t),i)||r,r=Me(new jb,i)||r,r=Me(new Wb,i)||r,r=Me(new Gb,i)||r,r=Me(new qb,i)||r,r=Me(new Mb,i)||r,r=Me(new Xb,i)||r),e.sources=i,r}function Jb(e,t){vo(e.sources);let n=0,i=0;for(let r=0;rt(n))}}function tf(e){V(e)?Zb(e):ex(e)}function Zb(e){const t=e.component.scales;for(const n of b(t)){const i=nx(e,n),r=t[n];if(r.setWithExplicit("domains",i),rx(e,n),e.component.data.isFaceted){let s=e;for(;!De(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 ex(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(Qd),r=a}}t[n].setWithExplicit("domains",i),r&&t[n].set("selectionExtent",r,!0)}}function tx(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 nx(e,t){const n=e.getScaleComponent(t).get("type"),{encoding:i}=e,r=tx(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 ix(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?ix(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(Sg(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)?sx(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:$e(i)}:{},...r?{order:r}:{}}}function rx(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 sx(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:vp(n)}:i==="quantitative"&&t==="log"?{valid:!1,reason:Ep(e)}:{valid:!0}:{valid:!1,reason:$p(e)}}function ko(e,t,n,i){return e.explicit&&t.explicit&&x(Np(n,i,e.value,t.value)),{explicit:e.explicit,value:[...e.value,...t.value]}}function ox(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(Ap(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(Op),t}return x(Pp),t}else if(Ld(e)){x(zp);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 ox(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=ax(r.range,s,n,e),p=hr(e,n),g=a?ty(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 ax(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 cx=["range","scheme"];function ux(e){const t=e.component.scales;for(const n of Ci){const i=t[n];if(!i)continue;const r=lx(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 lx(e,t){const n=t.specifiedScales[e],{size:i}=t,r=t.getScaleComponent(e),s=r.get("type");for(const f of cx)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(fx(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=dx(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 fx(e){return xg(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 dx(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 px(e,t,c);case at:{const f=t.component.scales[e].get("zero"),d=df(r,f,i),p=hx(r,n,t,i);return Sn(c)?mx(d,p,gx(c,i,u,e)):[d,p]}case ve:return[0,Math.PI*2];case Dt:return[0,360];case Fe:return[0,new te(()=>{const f=t.getSignalName("width"),d=t.getSignalName("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 px(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 gx(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(Wp(i)),3)}}function mx(e,t,n){const i=()=>{const r=Oe(t),s=Oe(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 hx(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)?yx(e,t):bf(e,t)}function yx(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)?bx(e,t):void 0,interpolate:({channel:e,fieldOrDatumDef:t})=>xx(e,t.type),nice:({scaleType:e,channel:t,domain:n,domainMin:i,domainMax:r,fieldOrDatumDef:s})=>Sx(e,t,n,i,r,s),padding:({channel:e,scaleType:t,fieldOrDatumDef:n,markDef:i,config:r})=>wx(e,t,r.scale,n,i,r.bar),paddingInner:({scalePadding:e,channel:t,markDef:n,scaleType:i,config:r,hasNestedOffsetScale:s})=>$x(e,t,n.type,i,r.scale,s),paddingOuter:({scalePadding:e,channel:t,scaleType:n,scalePaddingInner:i,config:r,hasNestedOffsetScale:s})=>vx(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 Ex(t,r,n,i.scale)},zero:({channel:e,fieldOrDatumDef:t,domain:n,markDef:i,scaleType:r,config:s,hasSecondaryRangeChannel:o})=>_x(e,t,n,i,r,s.scale,o)};function yf(e){V(e)?ux(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 bx(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 xx(e,t){return P([de,Be,We],e)&&t!=="nominal"?"hcl":void 0}function Sx(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 wx(e,t,n,i,r,s){if(Y(e)){if(Pe(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 $x(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 vx(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 Ex(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 _x(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 kx(e,t,n,i,r=!1){const s=Cx(t,n,i,r),{type:o}=e;return ut(t)?o!==void 0?kg(t,o)?S(n)&&!_g(o,n.type)?(x(Cp(o,s)),s):o:(x(kp(t,o,s)),s):s:null}function Cx(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 Fx(e,{ignoreRange:t}={}){xf(e),tf(e);for(const n of Eg)mf(e,n);t||yf(e)}function xf(e){V(e)?e.component.scales=Nx(e):e.component.scales=Ax(e)}function Nx(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=kx(a,s,o,i,c);r[s]=new of(e.scaleName(`${s}`,!0),{value:u,explicit:a.type===u})}}return r}const Tx=Mu((e,t)=>ac(e)-ac(t));function Ax(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?gg(a.value,c.value)?i[o]=At(a,c,"type","scale",Tx):(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 De(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=Mh(t.transform??[]),this.layout=n==="layer"||n==="unit"?{}:Bm(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(){Fx(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=Jy(i.layoutHeaders,r);return{padding:t,...this.assembleDefaultLayout(),...n,...s?{titleBand:s}:{}}}assembleDefaultLayout(){return{}}assembleHeaderMarks(){const{layoutHeaders:t}=this.component;let n=[];for(const i of _e)t[i].title&&n.push(Gy(this,i));for(const i of lo)n=n.concat(Vy(this,i));return n}assembleAxes(){return Py(this.component.axes,this.config)}assembleLegends(){return ql(this)}assembleProjections(){return wb(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||De(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(De(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 ym(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[[Te,Ne],[Ee,Ae]]){const s=r.map(o=>{const a=K(n.encoding[o]);return S(a)?a.field:Ye(a)?{expr:`${a.datum}`}:Re(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[[Te,Ne],[Ee,Ae]]){const r=i.map(o=>{const a=K(n.encoding[o]);return S(a)?a.field:Ye(a)?{expr:`${a.datum}`}:Re(a)?{expr:`${a.value}`}:void 0}),s=i[0]===Ee?"2":"";(r[0]||r[1])&&(t=new fi(t,n.projectionName(),r,[n.getName(`x${s}`),n.getName(`y${s}`)]))}return t}dependentFields(){return new Set(this.fields.filter(N))}producedFields(){return new Set(this.as)}hash(){return`Geopoint ${this.projection} ${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:xh(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(Sh(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(wh(o)){const c=o.param;i={as:c,...i};let u;try{u=n.getSelectionComponent(H(c),c)}catch(l){throw new Error(Yd(c))}if(a=u.materialized,!a)throw new Error(Kd(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(rp),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 Le||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 Ox(e){const t=[],n=wf(t);for(const i of e.children)n(i,{source:e.name,name:null,transform:[]});return t}function Px(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 zx(e){return e==="top"||e==="left"||v(e)?"header":"footer"}function Rx(e){for(const t of _e)Ix(e,t);vf(e,"x"),vf(e,"y")}function Ix(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=zx(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 Lx(e){Ao(e),kr(e,"width"),kr(e,"height")}function Mx(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 Dx(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=jx(e,r);n.layoutSize.set(r,s,!1)}}}function jx(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(),Rx(this)}assembleSelectionTopLevelSignals(t){return this.child.assembleSelectionTopLevelSignals(t)}assembleSignals(){return this.child.assembleSignals(),[]}assembleSelectionData(t){return this.child.assembleSelectionData(t)}getHeaderLayoutMixins(){const t={};for(const n of _e)for(const i of 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 _e){const f=this.facet[l];if(f){c.push(w(f));const{bin:d,sort:p}=f;if(j(d)&&c.push(w(f,{binSuffix:"end"})),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=Ox(n),r=t.assembleGroupEncodeEntry(!1),s=this.assembleLabelTitle()||t.assembleTitle(),o=t.assembleGroupStyle(),a={name:this.getName("cell"),type:"group",...s?{title:s}:{},...o?{style:o}:{},from:{facet:this.assembleFacet()},sort:{field:_e.map(c=>this.facetSortFields(c)).flat(),order:_e.map(c=>this.facetSortOrder(c)).flat()},...i.length>0?{data:i}:{},...r?{encode:{update:r}}:{},...t.assembleGroup(Qh(this,[]))};return[a]}getMapping(){return this.facet}}function Ux(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 Bx(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 Wx(e,t,n){let i=0;for(const r of t.transforms){let s,o;if(Ah(r))o=e=new On(e,r),s="derived";else if(Vs(r)){const a=zb(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(Ph(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(zh(r))o=e=Le.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(Fh(r))o=e=new In(e,r),s="number";else if(Nh(r))o=e=new rn(e,r),s="number";else if(Rh(r))o=e=yt.makeFromTransform(e,r),s="derived";else if(Ih(r))o=e=new Sr(e,r),s="derived";else if(Lh(r))o=e=new br(e,r),s="derived";else if(Th(r))o=e=new xr(e,r),s="derived";else if($h(r))o=e=new Er(e,r),s="derived";else if(Ch(r))e=new _r(e,r);else if(Oh(r))o=e=sn.makeFromTransform(e,r),s="derived";else if(vh(r))o=e=new yr(e,r),s="derived";else if(Eh(r))o=e=new $r(e,r),s="derived";else if(_h(r))o=e=new vr(e,r),s="derived";else if(kh(r))o=e=new wr(e,r),s="derived";else{x(ip(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=Bx(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 Yh;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)||De(e))&&(a&&(t=et.makeFromEncoding(t,e)??t)),e.transforms.length>0&&(t=Wx(t,e,o));const c=Ib(e),u=Rb(e);t=oe.makeWithAncestors(t,{},{...c,...u},o)??t,V(e)&&(t=Mn.parseAll(t,e),t=fi.parseAll(t,e)),(V(e)||De(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=Le.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)&&Ay(e,p);let g=null;if(De(e)){const m=e.getName("facet");t=Ux(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 Hx 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(ep),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(){Mx(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 qx(e){return e===!1||e===null}const Gx={disable:1,gridScale:1,scale:1,...Wc,labelExpr:1,encode:1},_f=b(Gx);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):!qx(this.get(t))}hasOrientSignalRef(){return v(this.explicit.orient)}}function Vx(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:ze({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:ze({fieldOrDatumDef:s,field:"datum.value",format:r.normalizedNumberFormat,formatType:r.normalizedNumberFormatType,config:r}),...n};if(r.numberFormatType)return{text:ze({fieldOrDatumDef:s,field:"datum.value",format:r.numberFormat,formatType:r.numberFormatType,config:r}),...n}}if(wn(s)==="temporal"&&r.timeFormatType&&S(s)&&!s.timeUnit)return{text:ze({fieldOrDatumDef:s,field:"datum.value",format:r.timeFormat,formatType:r.timeFormatType,config:r}),...n}}return n}function Xx(e){return qe.reduce((t,n)=>(e.component.scales[n]&&(t[n]=[tS(n,e)]),t),{})}const Yx={bottom:"top",top:"bottom",left:"right",right:"left"};function Kx(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]=Qx(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=Yx[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 Qx(e,t){if(e){if(e.length!==t.length)return;const n=e.length;for(let i=0;in.clone());return e}function Jx(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 Zx(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 eS=new Set(["grid","translate","format","formatType","orient","labelExpr","tickCount","position","tickMinStep"]);function tS(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||Uy(e),c=t.getScaleComponent(e).get("type"),u=zy(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=My(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,_=Zx($,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")||eS.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"?Vx(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 nS({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 iS={vgMark:"arc",encodeEntry:e=>({...ke(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")})},rS={vgMark:"area",encodeEntry:e=>({...ke(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)})},sS={vgMark:"rect",encodeEntry:e=>({...ke(e,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"}),...Pt(e,"x"),...Pt(e,"y")})},oS={vgMark:"shape",encodeEntry:e=>({...ke(e,{align:"ignore",baseline:"ignore",color:"include",size:"ignore",orient:"ignore",theta:"ignore"})}),postEncodingTransform:e=>{const{encoding:t}=e,n=t.shape,i={type:"geoshape",projection:e.projectionName(),...n&&S(n)&&n.type===xn?{field:w(n,{expr:"datum"})}:{}};return[i]}},aS={vgMark:"image",encodeEntry:e=>({...ke(e,{align:"ignore",baseline:"ignore",color:"ignore",orient:"ignore",size:"ignore",theta:"ignore"}),...Pt(e,"x"),...Pt(e,"y"),...to(e,"url")})},cS={vgMark:"line",encodeEntry:e=>({...ke(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)})},uS={vgMark:"trail",encodeEntry:e=>({...ke(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{...ke(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),...lS(e,n,t)}}function lS(e,t,n){return n?{shape:{value:n}}:ee("shape",e)}const fS={vgMark:"symbol",encodeEntry:e=>zo(e)},dS={vgMark:"symbol",encodeEntry:e=>zo(e,"circle")},pS={vgMark:"symbol",encodeEntry:e=>zo(e,"square")},gS={vgMark:"rect",encodeEntry:e=>({...ke(e,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"}),...Pt(e,"x"),...Pt(e,"y")})},mS={vgMark:"rule",encodeEntry:e=>{const{markDef:t}=e,n=t.orient;return!e.encoding.x&&!e.encoding.y&&!e.encoding.latitude&&!e.encoding.longitude?{}:{...ke(e,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"}),...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"})}}},hS={vgMark:"text",encodeEntry:e=>{const{config:t,encoding:n}=e;return{...ke(e,{align:"include",baseline:"include",color:"include",size:"ignore",orient:"ignore",theta:"include"}),...se("x",e,{defaultPos:"mid"}),...se("y",e,{defaultPos:"mid"}),...to(e),...ee("size",e,{vgChannel:"fontSize"}),...ee("angle",e),...sl("align",yS(e.markDef,n,t)),...sl("baseline",bS(e.markDef,n,t)),...se("radius",e,{defaultPos:null}),...se("theta",e,{defaultPos:null})}}};function yS(e,t,n){const i=z("align",e,n);return i===void 0?"center":void 0}function bS(e,t,n){const i=z("baseline",e,n);return i===void 0?"middle":void 0}const xS={vgMark:"rect",encodeEntry:e=>{const{config:t,markDef:n}=e,i=n.orient,r=i==="horizontal"?"width":"height",s=i==="horizontal"?"height":"width";return{...ke(e,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"}),...se("x",e,{defaultPos:"mid",vgChannel:"xc"}),...se("y",e,{defaultPos:"mid",vgChannel:"yc"}),...ee("size",e,{defaultValue:SS(e),vgChannel:r}),[s]:W(z("thickness",n,t))}}};function SS(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:iS,area:rS,bar:sS,circle:dS,geoshape:oS,image:aS,line:cS,point:fS,rect:gS,rule:mS,square:pS,text:hS,tick:xS,trail:uS};function wS(e){if(P([Ri,Pi,Ng],e.mark)){const t=Yc(e.mark,e.encoding);if(t.length>0)return $S(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 vS(e)}return Ro(e)}const kf="faceted_path_";function $S(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 vS(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 ES(e){const{encoding:t,stack:n,mark:i,markDef:r,config:s}=e,o=t.order;if(!E(o)&&Re(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,_S(e),kS(e)),a=Ca(i),c=r.key,u=ES(e),l=CS(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:!0}:{},...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 _S(e){const t=e.getScaleComponent("x"),n=e.getScaleComponent("y");return t?.get("selectionExtent")||n?.get("selectionExtent")?!0:void 0}function kS(e){const t=e.component.projection;return t&&!t.isFit?!0:void 0}function CS(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}: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=fh(o,s,{graticule:t.data&&Ks(t.data)}));const c=this.encoding=mm(t.encoding||{},a,o.filled,s);this.markDef=$u(o,c,s),this.size=nS({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(){Dx(this)}parseSelections(){this.component.selection=Ty(this,this.selection)}parseMarkGroup(){this.component.mark=wS(this)}parseAxesAndHeaders(){this.component.axes=Xx(this)}assembleSelectionTopLevelSignals(t){return Jh(this,t)}assembleSignals(){return[...$l(this),...Kh(this,[])]}assembleSelectionData(t){return Zh(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(){Lx(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(){Kx(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 ey(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(Dm(e))return new Hx(e,t,n,r);throw new Error(Qr(e))}function FS(e,t={}){t.logger&&Hp(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(),Jb(r.component.data,r);const s=TS(r,NS(e,i.autosize,n,r),e.datasets,e.usermeta);return{spec:s,normalized:i}}finally{t.logger&&qp(),t.fieldTitle&&om()}}function NS(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&&Gh(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=Vh(a)}}return{...b(t).length===1&&t.type?t.type==="pad"?{}:{autosize:t.type}:{autosize:t},...Lu(n,!1),...Lu(e,!0)}}function TS(e,t,n={},i){const r=e.config?Zm(e.config):void 0,s=[].concat(e.assembleSelectionData([]),Px(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 AS=cd.version;export{pn as accessPathDepth,Dr as accessPathWithDatum,FS 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,$e 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,AS as version};export default null;