import{hasOwnProperty as on,isNumber as j,isString as N,writeConfig as Uf,splitAccessPath as an,stringValue as O,isObject as z,isBoolean as Un,isArray as E,array as V,logger as Bf,Warn as Wf,isFunction as Hf,mergeConfig as na,identity as qf}from"/-/vega-util@v1.17.2-LUfkDhormMyfWqy3Ts6U/dist=es2020,mode=imports,min/optimized/vega-util.js";import{isObject as Rr,writeConfig as Gf,isArray as ia,isString as vi}from"/-/vega@v5.30.0-fYDVG3pUN16BiGmbVNdw/dist=es2020,mode=imports,min/optimized/vega.js";import{parseSelector as cn}from"/-/vega-event-selector@v3.0.1-UgiEAWJA4WQL4DTKnV4R/dist=es2020,mode=imports,min/optimized/vega-event-selector.js";import{parseExpression as Vf}from"/-/vega-expression@v5.1.1-K4clrYr2THuj5KncykTn/dist=es2020,mode=imports,min/optimized/vega-expression.js";const Xf="vega-lite",Yf='Dominik Moritz, Kanit "Ham" Wongsuphasawat, Arvind Satyanarayan, Jeffrey Heer',Kf="5.20.1",Qf=["Kanit Wongsuphasawat (http://kanitw.yellowpigz.com)","Dominik Moritz (https://www.domoritz.de)","Arvind Satyanarayan (https://arvindsatya.com)","Jeffrey Heer (https://jheer.org)"],Zf="https://vega.github.io/vega-lite/",Jf="Vega-Lite is a concise high-level language for interactive visualization.",ed=["vega","chart","visualization"],td="build/vega-lite.js",nd="build/vega-lite.min.js",id="build/vega-lite.min.js",rd="build/src/index",sd="build/src/index.d.ts",od={vl2pdf:"./bin/vl2pdf",vl2png:"./bin/vl2png",vl2svg:"./bin/vl2svg",vl2vg:"./bin/vl2vg"},ad=["bin","build","src","vega-lite*","tsconfig.json"],cd={changelog:"conventional-changelog -p angular -r 2",prebuild:"yarn clean:build",build:"yarn build:only","build:only":"tsc -p tsconfig.build.json && rollup -c","prebuild:examples":"yarn build:only","build:examples":"yarn data && TZ=America/Los_Angeles scripts/build-examples.sh","prebuild:examples-full":"yarn build:only","build:examples-full":"TZ=America/Los_Angeles scripts/build-examples.sh 1","build:example":"TZ=America/Los_Angeles scripts/build-example.sh","build:toc":"yarn build:jekyll && scripts/generate-toc","build:site":"rollup -c site/rollup.config.mjs","build:jekyll":"pushd site && bundle exec jekyll build -q && popd","build:versions":"scripts/update-version.sh",clean:"yarn clean:build && del-cli 'site/data/*' 'examples/compiled/*.png' && find site/examples ! -name 'index.md' ! -name 'data' -type f -delete","clean:build":"del-cli 'build/*' !build/vega-lite-schema.json",data:"rsync -r node_modules/vega-datasets/data/* site/data","build-editor-preview":"scripts/build-editor-preview.sh",schema:"mkdir -p build && ts-json-schema-generator -f tsconfig.json -p src/index.ts -t TopLevelSpec --no-type-check --no-ref-encode > build/vega-lite-schema.json && yarn renameschema && cp build/vega-lite-schema.json site/_data/",renameschema:"scripts/rename-schema.sh",presite:"yarn data && yarn schema && yarn build:site && yarn build:versions && scripts/create-example-pages.sh",site:"yarn site:only","site:only":"pushd site && bundle exec jekyll serve -I -l && popd",prettierbase:"prettier '**/*.{md,css,yml}'",format:"eslint . --fix && yarn prettierbase --write",lint:"eslint . && yarn prettierbase --check",test:"yarn jest test/ && yarn lint && yarn schema && yarn jest examples/ && yarn test:runtime","test:cover":"yarn jest --collectCoverage test/","test:inspect":"node --inspect-brk ./node_modules/.bin/jest --runInBand test","test:runtime":"TZ=America/Los_Angeles npx jest test-runtime/ --config test-runtime/jest-config.json","test:runtime:generate":"yarn build:only && del-cli test-runtime/resources && VL_GENERATE_TESTS=true yarn test:runtime",watch:"tsc -p tsconfig.build.json -w","watch:site":"yarn build:site -w","watch:test":"yarn jest --watch test/","watch:test:runtime":"TZ=America/Los_Angeles npx jest --watch test-runtime/ --config test-runtime/jest-config.json",release:"release-it"},ud={type:"git",url:"https://github.com/vega/vega-lite.git"},ld="BSD-3-Clause",fd={url:"https://github.com/vega/vega-lite/issues"},dd={"@babel/core":"^7.24.7","@babel/preset-env":"^7.24.7","@babel/preset-typescript":"^7.24.7","@release-it/conventional-changelog":"^8.0.1","@rollup/plugin-alias":"^5.1.0","@rollup/plugin-babel":"^6.0.4","@rollup/plugin-commonjs":"^26.0.1","@rollup/plugin-json":"^6.1.0","@rollup/plugin-node-resolve":"^15.2.3","@rollup/plugin-terser":"^0.4.4","@types/d3":"^7.4.3","@types/jest":"^29.5.12","@types/pako":"^2.0.3","@typescript-eslint/eslint-plugin":"^7.13.0","@typescript-eslint/parser":"^7.13.0",ajv:"^8.16.0","ajv-formats":"^2.1.1",cheerio:"^1.0.0-rc.12","conventional-changelog-cli":"^4.1.0",d3:"^7.9.0","del-cli":"^5.1.0",eslint:"^8.57.0","eslint-config-prettier":"^9.1.0","eslint-plugin-jest":"^27.9.0","eslint-plugin-prettier":"^5.1.3","fast-json-stable-stringify":"~2.1.0","highlight.js":"^11.9.0",jest:"^29.7.0","jest-dev-server":"^10.0.0",mkdirp:"^3.0.1",pako:"^2.1.0",prettier:"^3.3.2",puppeteer:"^15.0.0","release-it":"17.2.1",rollup:"^4.18.0","rollup-plugin-bundle-size":"^1.0.3",serve:"^14.2.3",terser:"^5.31.1","ts-jest":"^29.1.4","ts-json-schema-generator":"^1.5.0",typescript:"~5.4.5","vega-cli":"^5.28.0","vega-datasets":"^2.8.1","vega-embed":"^6.25.0","vega-tooltip":"^0.34.0","yaml-front-matter":"^4.1.1"},pd={"json-stringify-pretty-compact":"~3.0.0",tslib:"~2.6.3","vega-event-selector":"~3.0.1","vega-expression":"~5.1.0","vega-util":"~1.17.2",yargs:"~17.7.2"},gd={vega:"^5.24.0"},hd={node:">=18"},md="yarn@1.22.19";var yd={name:Xf,author:Yf,version:Kf,collaborators:Qf,homepage:Zf,description:Jf,keywords:ed,main:td,unpkg:nd,jsdelivr:id,module:rd,types:sd,bin:od,files:ad,scripts:cd,repository:ud,license:ld,bugs:fd,devDependencies:dd,dependencies:pd,peerDependencies:gd,engines:hd,packageManager:md};function Ir(e){return!!e.or}function Lr(e){return!!e.and}function Mr(e){return!!e.not}function wi(e,t){if(Mr(e))wi(e.not,t);else if(Lr(e))for(const n of e.and)wi(n,t);else if(Ir(e))for(const n of e.or)wi(n,t);else t(e)}function un(e,t){return Mr(e)?{not:un(e.not,t)}:Lr(e)?{and:e.and.map(n=>un(n,t))}:Ir(e)?{or:e.or.map(n=>un(n,t))}:t(e)}const C=structuredClone;function ra(e){throw new Error(e)}function ln(e,t){const n={};for(const i of t)on(e,i)&&(n[i]=e[i]);return n}function pe(e,t){const n={...e};for(const i of t)delete n[i];return n}Set.prototype.toJSON=function(){return`Set(${[...this].map(e=>D(e)).join(",")})`};function P(e){if(j(e))return e;const t=N(e)?e:D(e);if(t.length<250)return t;let n=0;for(let i=0;ia===0?o:`[${o}]`),s=r.map((o,a)=>r.slice(0,a+1).join(""));for(const o of s)t.add(o)}return t}function Wr(e,t){return e===void 0||t===void 0?!0:Ur(Br(e),Br(t))}function M(e){return b(e).length===0}const b=Object.keys,ie=Object.values,bt=Object.entries;function Bn(e){return e===!0||e===!1}function W(e){const t=e.replace(/\W/g,"_");return(e.match(/^\d+/)?"_":"")+t}function Wn(e,t){return Mr(e)?`!(${Wn(e.not,t)})`:Lr(e)?`(${e.and.map(n=>Wn(n,t)).join(") && (")})`:Ir(e)?`(${e.or.map(n=>Wn(n,t)).join(") || (")})`:t(e)}function $i(e,t){if(t.length===0)return!0;const n=t.shift();return n in e&&$i(e[n],t)&&delete e[n],M(e)}function Hn(e){return e.charAt(0).toUpperCase()+e.substr(1)}function Hr(e,t="datum"){const n=an(e),i=[];for(let r=1;r<=n.length;r++){const s=`[${n.slice(0,r).map(O).join("][")}]`;i.push(`${t}${s}`)}return i.join(" && ")}function aa(e,t="datum"){return`${t}[${O(an(e).join("."))}]`}function Sd(e){return e.replace(/(\[|\]|\.|'|")/g,"\\$1")}function we(e){return`${an(e).map(Sd).join("\\.")}`}function Lt(e,t,n){return e.replace(new RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"g"),n)}function dn(e){return`${an(e).join(".")}`}function pn(e){return e?an(e).length:0}function X(...e){for(const t of e)if(t!==void 0)return t;return}let ca=42;function ua(e){const t=++ca;return e?String(e)+t:t}function vd(){ca=42}function la(e){return fa(e)?e:`__${e}`}function fa(e){return e.startsWith("__")}function qn(e){return e===void 0?void 0:(e%360+360)%360}function Ei(e){return j(e)?!0:!isNaN(e)&&!isNaN(parseFloat(e))}const da=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!==da.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString&&e.toString!==da.toString)return e.toString()===t.toString();const r=Object.keys(e);if(n=r.length,n!==Object.keys(t).length)return!1;for(i=n;i--!==0;)if(!Object.prototype.hasOwnProperty.call(t,r[i]))return!1;for(i=n;i--!==0;){const s=r[i];if(!be(e[s],t[s]))return!1}return!0}return e!==e&&t!==t}function D(e){const t=[];return function n(i){if(i&&i.toJSON&&typeof i.toJSON=="function"&&(i=i.toJSON()),i===void 0)return;if(typeof i=="number")return isFinite(i)?""+i:"null";if(typeof i!="object")return JSON.stringify(i);let r,s;if(Array.isArray(i)){for(s="[",r=0;rPi(e[t])?W(`_${t}_${bt(e[t])}`):W(`_${t}_${e[t]}`)).join("")}function U(e){return e===!0||Ut(e)&&!e.binned}function re(e){return e==="binned"||Ut(e)&&e.binned===!0}function Ut(e){return z(e)}function Pi(e){return e?.param}function ka(e){switch(e){case tt:case nt:case st:case ge:case Be:case We:case wt:case ot:case St:case vt:case he:return 6;case $t:return 4;default:return 10}}function Yn(e){return!!e?.expr}function oe(e,{level:t}={level:0}){const n=b(e||{}),i={};for(const r of n)i[r]=t===0?xe(e[r]):oe(e[r],{level:t-1});return i}function Ca(e){const{anchor:t,frame:n,offset:i,orient:r,angle:s,limit:o,color:a,subtitleColor:c,subtitleFont:u,subtitleFontSize:l,subtitleFontStyle:f,subtitleFontWeight:d,subtitleLineHeight:p,subtitlePadding:h,...g}=e,m={...g,...a?{fill:a}:{}},y={...t?{anchor:t}:{},...n?{frame:n}:{},...i?{offset:i}:{},...r?{orient:r}:{},...s!==void 0?{angle:s}:{},...o!==void 0?{limit:o}:{}},v={...c?{subtitleColor:c}:{},...u?{subtitleFont:u}:{},...l?{subtitleFontSize:l}:{},...f?{subtitleFontStyle:f}:{},...d?{subtitleFontWeight:d}:{},...p?{subtitleLineHeight:p}:{},...h?{subtitlePadding:h}:{}},k=ln(e,["align","baseline","dx","dy","limit"]);return{titleMarkConfig:m,subtitleMarkConfig:k,nonMarkTitleProperties:y,subtitle:v}}function kt(e){return N(e)||E(e)&&N(e[0])}function $(e){return!!e?.signal}function Ct(e){return!!e.step}function qd(e){return E(e)?!1:"fields"in e&&!("data"in e)}function Gd(e){return E(e)?!1:"fields"in e&&"data"in e}function ut(e){return E(e)?!1:"field"in e&&"data"in e}const Vd={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},Xd=b(Vd),Yd={arc:1,area:1,group:1,image:1,line:1,path:1,rect:1,rule:1,shape:1,symbol:1,text:1,trail:1},es=["cornerRadius","cornerRadiusTopLeft","cornerRadiusTopRight","cornerRadiusBottomLeft","cornerRadiusBottomRight"];function Fa(e){const t=E(e.condition)?e.condition.map(Na):Na(e.condition);return{...xe(e),condition:t}}function xe(e){if(Yn(e)){const{expr:t,...n}=e;return{signal:t,...n}}return e}function Na(e){if(Yn(e)){const{expr:t,...n}=e;return{signal:t,...n}}return e}function B(e){if(Yn(e)){const{expr:t,...n}=e;return{signal:t,...n}}return $(e)?e:e!==void 0?{value:e}:void 0}function ts(e){return $(e)?e.signal:O(e)}function Ta(e){return $(e)?e.signal:O(e.value)}function Oe(e){return $(e)?e.signal:e==null?null:O(e)}function Kd(e,t,n){for(const i of n){const r=Ge(i,t.markDef,t.config);r!==void 0&&(e[i]=B(r))}return e}function Aa(e){return[].concat(e.type,e.style??[])}function R(e,t,n,i={}){const{vgChannel:r,ignoreVgConfig:s}=i;return r&&t[r]!==void 0?t[r]:t[e]!==void 0?t[e]:s&&(!r||r===e)?void 0:Ge(e,t,n,i)}function Ge(e,t,n,{vgChannel:i}={}){return X(i?zi(e,t,n.style):void 0,zi(e,t,n.style),i?n[t.type][i]:void 0,n[t.type][e],i?n.mark[i]:n.mark[e])}function zi(e,t,n){return Oa(e,Aa(t),n)}function Oa(e,t,n){t=V(t);let i;for(const r of t){const s=n[r];s&&s[e]!==void 0&&(i=s[e])}return i}function Pa(e,t){return V(e).reduce((n,i)=>(n.field.push(w(i,t)),n.order.push(i.sort??"ascending"),n),{field:[],order:[]})}function za(e,t){const n=[...e];return t.forEach(i=>{for(const r of n)if(be(r,i))return;n.push(i)}),n}function Ra(e,t){return be(e,t)||!t?e:e?[...V(e),...V(t)].join(", "):t}function Ia(e,t){const n=e.value,i=t.value;if(n==null||i===null)return{explicit:e.explicit,value:null};if((kt(n)||$(n))&&(kt(i)||$(i)))return{explicit:e.explicit,value:Ra(n,i)};if(kt(n)||$(n))return{explicit:e.explicit,value:n};if(kt(i)||$(i))return{explicit:e.explicit,value:i};if(!kt(n)&&!$(n)&&!kt(i)&&!$(i))return{explicit:e.explicit,value:za(n,i)};throw new Error("It should never reach here")}function ns(e){return`Invalid specification ${D(e)}. Make sure the specification includes at least one of the following properties: "mark", "layer", "facet", "hconcat", "vconcat", "concat", or "repeat".`}const Qd='Autosize "fit" only works for single views and layered views.';function La(e){const t=e=="width"?"Width":"Height";return`${t} "container" only works for single views and layered views.`}function Ma(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 Da(e){return e?`Dropping "fit-${e}" because spec has discrete ${me(e)}.`:'Dropping "fit" because spec has discrete size.'}function is(e){return`Unknown field for ${e}. Cannot calculate view size.`}function ja(e){return`Cannot project a selection on encoding channel "${e}", which has no field.`}function Zd(e,t){return`Cannot project a selection on encoding channel "${e}" as it uses an aggregate function ("${t}").`}function Jd(e){return`The "nearest" transform is not supported for ${e} marks.`}function Ua(e){return`Selection not supported for ${e} yet.`}function ep(e){return`Cannot find a selection named "${e}".`}const tp="Scale bindings are currently only supported for scales with unbinned, continuous domains.",np="Sequntial scales are deprecated. The available quantitative scale type values are linear, log, pow, sqrt, symlog, time and utc",ip="Legend bindings are only supported for selections over an individual field or encoding channel.";function rp(e){return`Lookups can only be performed on selection parameters. "${e}" is a variable parameter.`}function sp(e){return`Cannot define and lookup the "${e}" selection in the same view. Try moving the lookup into a second, layered view?`}const op="The same selection must be used to override scale domains in a layered view.",ap='Interval selections should be initialized using "x", "y", "longitude", or "latitude" keys.';function cp(e){return`Unknown repeated value "${e}".`}function Ba(e){return`The "columns" property cannot be used when "${e}" has nested row/column.`}const up="Axes cannot be shared in concatenated or repeated views yet (https://github.com/vega/vega-lite/issues/2415).";function lp(e){return`Unrecognized parse "${e}".`}function Wa(e,t,n){return`An ancestor parsed field "${e}" as ${n} but a child wants to parse the field as ${t}.`}const fp="Attempt to add the same child twice.";function dp(e){return`Ignoring an invalid transform: ${D(e)}.`}const pp='If "from.fields" is not specified, "as" has to be a string that specifies the key to be used for the data from the secondary source.';function Ha(e){return`Config.customFormatTypes is not true, thus custom format type and format for channel ${e} are dropped.`}function gp(e){const{parentProjection:t,projection:n}=e;return`Layer's shared projection ${D(t)} is overridden by a child projection ${D(n)}.`}const hp="Arc marks uses theta channel rather than angle, replacing angle with theta.";function mp(e){return`${e}Offset dropped because ${e} is continuous`}function yp(e,t,n){return`Channel ${e} is a ${t}. Converted to {value: ${D(n)}}.`}function qa(e){return`Invalid field type "${e}".`}function bp(e,t){return`Invalid field type "${e}" for aggregate: "${t}", using "quantitative" instead.`}function xp(e){return`Invalid aggregation operator "${e}".`}function Ga(e,t){const{fill:n,stroke:i}=t;return`Dropping color ${e} as the plot also has ${n&&i?"fill and stroke":n?"fill":"stroke"}.`}function Sp(e){return`Position range does not support relative band size for ${e}.`}function rs(e,t){return`Dropping ${D(e)} from channel "${t}" since it does not contain any data field, datum, value, or signal.`}const vp="Line marks cannot encode size with a non-groupby field. You may want to use trail marks instead.";function Ri(e,t,n){return`${e} dropped as it is incompatible with "${t}"${n?` when ${n}`:""}.`}function wp(e){return`${e}-encoding is dropped as ${e} is not a valid encoding channel.`}function $p(e){return`${e} encoding should be discrete (ordinal / nominal / binned).`}function Ep(e){return`${e} encoding should be discrete (ordinal / nominal / binned) or use a discretizing scale (e.g. threshold).`}function _p(e){return`Facet encoding dropped as ${e.join(" and ")} ${e.length>1?"are":"is"} also specified.`}function ss(e,t){return`Using discrete channel "${e}" to encode "${t}" field can be misleading as it does not encode ${t==="ordinal"?"order":"magnitude"}.`}function kp(e){return`The ${e} for range marks cannot be an expression`}function Cp(e,t){const n=e&&t?"x2 and y2":e?"x2":"y2";return`Line mark is for continuous lines and thus cannot be used with ${n}. We will use the rule mark (line segments) instead.`}function Fp(e,t){return`Specified orient "${e}" overridden with "${t}".`}function Np(e){return`Cannot use the scale property "${e}" with non-color channel.`}function Tp(e){return`Cannot use the relative band size with ${e} scale.`}function Ap(e){return`Using unaggregated domain with raw field has no effect (${D(e)}).`}function Op(e){return`Unaggregated domain not applicable for "${e}" since it produces values outside the origin domain of the source data.`}function Pp(e){return`Unaggregated domain is currently unsupported for log scale (${D(e)}).`}function zp(e){return`Cannot apply size to non-oriented mark "${e}".`}function Rp(e,t,n){return`Channel "${e}" does not work with "${t}" scale. We are using "${n}" scale instead.`}function Ip(e,t){return`FieldDef does not work with "${e}" scale. We are using "${t}" scale instead.`}function Va(e,t,n){return`${n}-scale's "${t}" is dropped as it does not work with ${e} scale.`}function Xa(e){return`The step for "${e}" is dropped because the ${e==="width"?"x":"y"} is continuous.`}function Lp(e,t,n,i){return`Conflicting ${t.toString()} property "${e.toString()}" (${D(n)} and ${D(i)}). Using ${D(n)}.`}function Mp(e,t,n,i){return`Conflicting ${t.toString()} property "${e.toString()}" (${D(n)} and ${D(i)}). Using the union of the two domains.`}function Dp(e){return`Setting the scale to be independent for "${e}" means we also have to set the guide (axis or legend) to be independent.`}function jp(e){return`Dropping sort property ${D(e)} as unioned domains only support boolean or op "count", "min", and "max".`}const Ya="Domains that should be unioned has conflicting sort properties. Sort will be set to true.",Up="Detected faceted independent scales that union domain of multiple fields from different data sources. We will use the first field. The result view size may be incorrect.",Bp="Detected faceted independent scales that union domain of the same fields from different source. We will assume that this is the same field from a different fork of the same data source. However, if this is not the case, the result view size may be incorrect.",Wp="Detected faceted independent scales that union domain of multiple fields from the same data source. We will use the first field. The result view size may be incorrect.";function Hp(e){return`Cannot stack "${e}" if there is already "${e}2".`}function qp(e){return`Stack is applied to a non-linear scale (${e}).`}function Gp(e){return`Stacking is applied even though the aggregate function is non-summative ("${e}").`}function Ii(e,t){return`Invalid ${e}: ${D(t)}.`}function Vp(e){return`Dropping day from datetime ${D(e)} as day cannot be combined with other units.`}function Xp(e,t){return`${t?"extent ":""}${t&&e?"and ":""}${e?"center ":""}${t&&e?"are ":"is "}not needed when data are aggregated.`}function Yp(e,t,n){return`${e} is not usually used with ${t} for ${n}.`}function Kp(e,t){return`Continuous axis should not have customized aggregation function ${e}; ${t} already agregates the axis.`}function Ka(e){return`1D error band does not support ${e}.`}function Qa(e){return`Channel ${e} is required for "binned" bin.`}function Qp(e){return`Channel ${e} should not be used with "binned" bin.`}function Zp(e){return`Domain for ${e} is required for threshold scale.`}var $v=function(e,t,n,i,r){if(i==="m")throw new TypeError("Private method is not writable");if(i==="a"&&!r)throw new TypeError("Private accessor was defined without a setter");if(typeof t=="function"?e!==t||!r:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return i==="a"?r.call(e,n):r?r.value=n:t.set(e,n),n},Ev=function(e,t,n,i){if(n==="a"&&!i)throw new TypeError("Private accessor was defined without a getter");if(typeof t=="function"?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return n==="m"?i:n==="a"?i.call(e):i?i.value:t.get(e)};const Za=Bf(Wf);let yn=Za;function Jp(e){return yn=e,yn}function eg(){return yn=Za,yn}function x(...e){yn.warn(...e)}function tg(...e){yn.debug(...e)}function Bt(e){if(e&&z(e)){for(const t of as)if(t in e)return!0}return!1}const Ja=["january","february","march","april","may","june","july","august","september","october","november","december"],ng=Ja.map(e=>e.substr(0,3)),ec=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],ig=ec.map(e=>e.substr(0,3));function rg(e){if(Ei(e)&&(e=+e),j(e))return e>4&&x(Ii("quarter",e)),e-1;throw new Error(Ii("quarter",e))}function sg(e){if(Ei(e)&&(e=+e),j(e))return e-1;{const t=e.toLowerCase(),n=Ja.indexOf(t);if(n!==-1)return n;const i=t.substr(0,3),r=ng.indexOf(i);if(r!==-1)return r;throw new Error(Ii("month",e))}}function og(e){if(Ei(e)&&(e=+e),j(e))return e%7;{const t=e.toLowerCase(),n=ec.indexOf(t);if(n!==-1)return n;const i=t.substr(0,3),r=ig.indexOf(i);if(r!==-1)return r;throw new Error(Ii("day",e))}}function os(e,t){const n=[];if(t&&e.day!==void 0&&(b(e).length>1&&(x(Vp(e)),e=C(e),delete e.day)),e.year!==void 0?n.push(e.year):n.push(2012),e.month!==void 0){const i=t?sg(e.month):e.month;n.push(i)}else if(e.quarter!==void 0){const i=t?rg(e.quarter):e.quarter;n.push(j(i)?i*3:`${i}*3`)}else n.push(0);if(e.date!==void 0)n.push(e.date);else if(e.day!==void 0){const i=t?og(e.day):e.day;n.push(j(i)?i+1:`${i}+1`)}else n.push(1);for(const i of["hours","minutes","seconds","milliseconds"]){const r=e[i];n.push(typeof r=="undefined"?0:r)}return n}function Wt(e){const t=os(e,!0),n=t.join(", ");return e.utc?`utc(${n})`:`datetime(${n})`}function ag(e){const t=os(e,!1),n=t.join(", ");return e.utc?`utc(${n})`:`datetime(${n})`}function cg(e){const t=os(e,!0);return e.utc?+new Date(Date.UTC(...t)):+new Date(...t)}const tc={year:1,quarter:1,month:1,week:1,day:1,dayofyear:1,date:1,hours:1,minutes:1,seconds:1,milliseconds:1},as=b(tc);function ug(e){return!!tc[e]}function Ht(e){return z(e)?e.binned:nc(e)}function nc(e){return e&&e.startsWith("binned")}function cs(e){return e.startsWith("utc")}function lg(e){return e.substring(3)}const fg={"year-month":"%b %Y ","year-month-date":"%b %d, %Y "};function Li(e){return as.filter(t=>rc(e,t))}function ic(e){const t=Li(e);return t[t.length-1]}function rc(e,t){const n=e.indexOf(t);return n<0||(n>0&&t==="seconds"&&e.charAt(n-1)==="i"||e.length>n+3&&t==="day"&&e.charAt(n+3)==="o")?!1:!(n>0&&t==="year"&&e.charAt(n-1)==="f")}function dg(e,t,{end:n}={end:!1}){const i=Hr(t),r=cs(e)?"utc":"";function s(c){return c==="quarter"?`(${r}quarter(${i})-1)`:`${r}${c}(${i})`}let o;const a={};for(const c of as)rc(e,c)&&(a[c]=s(c),o=c);return n&&(a[o]+="+1"),ag(a)}function sc(e){if(!e)return;const t=Li(e);return`timeUnitSpecifier(${D(t)}, ${D(fg)})`}function pg(e,t,n){if(!e)return;const i=sc(e),r=n||cs(e);return`${r?"utc":"time"}Format(${t}, ${i})`}function Z(e){if(!e)return;let t;return N(e)?nc(e)?t={unit:e.substring(6),binned:!0}:t={unit:e}:z(e)&&(t={...e,...e.unit?{unit:e.unit}:{}}),cs(t.unit)&&(t.utc=!0,t.unit=lg(t.unit)),t}function gg(e){const{utc:t,...n}=Z(e);return n.unit?(t?"utc":"")+b(n).map(i=>W(`${i==="unit"?"":`_${i}_`}${n[i]}`)).join(""):(t?"utc":"")+"timeunit"+b(n).map(i=>W(`_${i}_${n[i]}`)).join("")}function oc(e,t=n=>n){const n=Z(e),i=ic(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}=ac(i,n.step),a={...r,[o]:+r[o]+s};return`${t(Wt(a))} - ${t(Wt(r))}`}return}const hg={year:1,month:1,date:1,hours:1,minutes:1,seconds:1,milliseconds:1};function mg(e){return!!hg[e]}function ac(e,t=1){if(mg(e))return{part:e,step:t};switch(e){case"day":case"dayofyear":return{part:"date",step:t};case"quarter":return{part:"month",step:t*3};case"week":return{part:"date",step:t*7}}}function yg(e){return e?.param}function us(e){return!!e?.field&&e.equal!==void 0}function ls(e){return!!e?.field&&e.lt!==void 0}function fs(e){return!!e?.field&&e.lte!==void 0}function ds(e){return!!e?.field&&e.gt!==void 0}function ps(e){return!!e?.field&&e.gte!==void 0}function gs(e){if(e?.field){if(E(e.range)&&e.range.length===2)return!0;if($(e.range))return!0}return!1}function hs(e){return!!e?.field&&(E(e.oneOf)||E(e.in))}function bg(e){return!!e?.field&&e.valid!==void 0}function cc(e){return hs(e)||us(e)||gs(e)||ls(e)||ds(e)||fs(e)||ps(e)}function Ve(e,t){return Ji(e,{timeUnit:t,wrapTime:!0})}function xg(e,t){return e.map(n=>Ve(n,t))}function uc(e,t=!0){const{field:n}=e,i=Z(e.timeUnit),{unit:r,binned:s}=i||{},o=w(e,{expr:"datum"}),a=r?`time(${s?o:dg(r,n)})`:o;if(us(e))return`${a}===${Ve(e.equal,r)}`;if(ls(e)){const c=e.lt;return`${a}<${Ve(c,r)}`}else if(ds(e)){const c=e.gt;return`${a}>${Ve(c,r)}`}else if(fs(e)){const c=e.lte;return`${a}<=${Ve(c,r)}`}else if(ps(e)){const c=e.gte;return`${a}>=${Ve(c,r)}`}else{if(hs(e))return`indexof([${xg(e.oneOf,r).join(",")}], ${a}) !== -1`;if(bg(e))return Mi(a,e.valid);if(gs(e)){const{range:c}=e,u=$(c)?{signal:`${c.signal}[0]`}:c[0],l=$(c)?{signal:`${c.signal}[1]`}:c[1];if(u!==null&&l!==null&&t)return"inrange("+a+", ["+Ve(u,r)+", "+Ve(l,r)+"])";const f=[];return u!==null&&f.push(`${a} >= ${Ve(u,r)}`),l!==null&&f.push(`${a} <= ${Ve(l,r)}`),f.length>0?f.join(" && "):"true"}}throw new Error(`Invalid field predicate: ${D(e)}`)}function Mi(e,t=!0){return t?`isValid(${e}) && isFinite(+${e})`:`!isValid(${e}) || !isFinite(+${e})`}function Sg(e){return cc(e)&&e.timeUnit?{...e,timeUnit:Z(e.timeUnit)}:e}const Kn={quantitative:"quantitative",ordinal:"ordinal",temporal:"temporal",nominal:"nominal",geojson:"geojson"};function vg(e){return e==="quantitative"||e==="temporal"}function lc(e){return e==="ordinal"||e==="nominal"}const qt=Kn.quantitative,ms=Kn.ordinal,bn=Kn.temporal,ys=Kn.nominal,xn=Kn.geojson;function wg(e){if(e){e=e.toLowerCase();switch(e){case"q":case qt:return"quantitative";case"t":case bn:return"temporal";case"o":case ms:return"ordinal";case"n":case ys:return"nominal";case xn:return"geojson"}}return}const se={LINEAR:"linear",LOG:"log",POW:"pow",SQRT:"sqrt",SYMLOG:"symlog",IDENTITY:"identity",SEQUENTIAL:"sequential",TIME:"time",UTC:"utc",QUANTILE:"quantile",QUANTIZE:"quantize",THRESHOLD:"threshold",BIN_ORDINAL:"bin-ordinal",ORDINAL:"ordinal",POINT:"point",BAND:"band"},bs={linear:"numeric",log:"numeric",pow:"numeric",sqrt:"numeric",symlog:"numeric",identity:"numeric",sequential:"numeric",time:"time",utc:"time",ordinal:"ordinal","bin-ordinal":"bin-ordinal",point:"ordinal-position",band:"ordinal-position",quantile:"discretizing",quantize:"discretizing",threshold:"discretizing"};function $g(e,t){const n=bs[e],i=bs[t];return n===i||n==="ordinal-position"&&i==="time"||i==="ordinal-position"&&n==="time"}const Eg={linear:0,log:1,pow:1,sqrt:1,symlog:1,identity:1,sequential:1,time:0,utc:0,point:10,band:11,ordinal:0,"bin-ordinal":0,quantile:0,quantize:0,threshold:0};function fc(e){return Eg[e]}const dc=new Set(["linear","log","pow","sqrt","symlog"]),pc=new Set([...dc,"time","utc"]);function gc(e){return dc.has(e)}const hc=new Set(["quantile","quantize","threshold"]),_g=new Set([...pc,...hc,"sequential","identity"]),kg=new Set(["ordinal","bin-ordinal","point","band"]);function J(e){return kg.has(e)}function Pe(e){return _g.has(e)}function Xe(e){return pc.has(e)}function Sn(e){return hc.has(e)}const Cg={pointPadding:.5,barBandPaddingInner:.1,rectBandPaddingInner:0,tickBandPaddingInner:.25,bandWithNestedOffsetPaddingInner:.2,bandWithNestedOffsetPaddingOuter:.2,minBandSize:2,minFontSize:8,maxFontSize:40,minOpacity:.3,maxOpacity:.8,minSize:4,minStrokeWidth:1,maxStrokeWidth:4,quantileCount:4,quantizeCount:4,zero:!0};function Fg(e){return!N(e)&&!!e.name}function mc(e){return e?.param}function Ng(e){return e?.unionWith}function Tg(e){return Rr(e)&&"field"in e}const Ag={type:1,domain:1,domainMax:1,domainMin:1,domainMid:1,domainRaw:1,align:1,range:1,rangeMax:1,rangeMin:1,scheme:1,bins:1,reverse:1,round:1,clamp:1,nice:1,base:1,exponent:1,constant:1,interpolate:1,zero:1,padding:1,paddingInner:1,paddingOuter:1},{type:_v,domain:kv,range:Cv,rangeMax:Fv,rangeMin:Nv,scheme:Tv,...Og}=Ag,Pg=b(Og);function xs(e,t){switch(t){case"type":case"domain":case"reverse":case"range":return!0;case"scheme":case"interpolate":return!["point","band","identity"].includes(e);case"bins":return!["point","band","identity","ordinal"].includes(e);case"round":return Xe(e)||e==="band"||e==="point";case"padding":case"rangeMin":case"rangeMax":return Xe(e)||["point","band"].includes(e);case"paddingOuter":case"align":return["point","band"].includes(e);case"paddingInner":return e==="band";case"domainMax":case"domainMid":case"domainMin":case"domainRaw":case"clamp":return Xe(e);case"nice":return Xe(e)||e==="quantize"||e==="threshold";case"exponent":return e==="pow";case"base":return e==="log";case"constant":return e==="symlog";case"zero":return Pe(e)&&!A(["log","time","utc","threshold","quantile"],e)}}function yc(e,t){switch(t){case"interpolate":case"scheme":case"domainMid":return mn(e)?void 0:Np(t);case"align":case"type":case"bins":case"domain":case"domainMax":case"domainMin":case"domainRaw":case"range":case"base":case"exponent":case"constant":case"nice":case"padding":case"paddingInner":case"paddingOuter":case"rangeMax":case"rangeMin":case"reverse":case"round":case"clamp":case"zero":return}}function zg(e,t){return A([ms,ys],t)?e===void 0||J(e):t===bn?A([se.TIME,se.UTC,void 0],e):t===qt?gc(e)||Sn(e)||e===void 0:!0}function Rg(e,t,n=!1){if(!qe(e))return!1;switch(e){case H:case Q:case xt:case gn:case $e:case Fe:return Xe(t)||t==="band"?!0:t==="point"?!n:!1;case st:case wt:case ot:case St:case vt:case Mt:return Xe(t)||Sn(t)||A(["band","point","ordinal"],t);case ge:case Be:case We:return t!=="band";case $t:case he:return t==="ordinal"||Sn(t)}}function Ig(e){return z(e)&&"value"in e}const le={arc:"arc",area:"area",bar:"bar",image:"image",line:"line",point:"point",rect:"rect",rule:"rule",text:"text",tick:"tick",trail:"trail",circle:"circle",square:"square",geoshape:"geoshape"},bc=le.arc,Di=le.area,ji=le.bar,Lg=le.image,Ui=le.line,Bi=le.point,Mg=le.rect,Wi=le.rule,xc=le.text,Ss=le.tick,Dg=le.trail,vs=le.circle,ws=le.square,Sc=le.geoshape;function Ft(e){return["line","area","trail"].includes(e)}function Qn(e){return["rect","bar","image","arc"].includes(e)}const jg=new Set(b(le));function Ye(e){return e.type}const Ug=["stroke","strokeWidth","strokeDash","strokeDashOffset","strokeOpacity","strokeJoin","strokeMiterLimit"],Bg=["fill","fillOpacity"],Wg=[...Ug,...Bg],Hg={color:1,filled:1,invalid:1,order:1,radius2:1,theta2:1,timeUnitBandSize:1,timeUnitBandPosition:1},vc=b(Hg),qg={area:["line","point"],bar:["binSpacing","continuousBandSize","discreteBandSize","minBandSize"],rect:["binSpacing","continuousBandSize","discreteBandSize","minBandSize"],line:["point"],tick:["bandSize","thickness"]},Gg={color:"#4c78a8",invalid:"break-paths-show-path-domains",timeUnitBandSize:1},Vg={mark:1,arc:1,area:1,bar:1,circle:1,image:1,line:1,point:1,rect:1,rule:1,square:1,text:1,tick:1,trail:1,geoshape:1},wc=b(Vg);function Gt(e){return e&&e.band!=null}const Xg={horizontal:["cornerRadiusTopRight","cornerRadiusBottomRight"],vertical:["cornerRadiusTopLeft","cornerRadiusTopRight"]},$c=5,Yg={binSpacing:1,continuousBandSize:$c,minBandSize:.25,timeUnitBandPosition:.5},Kg={binSpacing:0,continuousBandSize:$c,minBandSize:.25,timeUnitBandPosition:.5},Qg={thickness:1};function Zg(e){return Ye(e)?e.type:e}function Ec(e,{isPath:t}){return e===void 0||e==="break-paths-show-path-domains"?t?"break-paths-show-domains":"filter":e===null?"show":e}function $s({markDef:e,config:t,scaleChannel:n,scaleType:i,isCountAggregate:r}){if(!i||!Pe(i)||r)return"always-valid";const s=Ec(R("invalid",e,t),{isPath:Ft(e.type)}),o=t.scale?.invalid?.[n];return o!==void 0?"show":s}function Jg(e){return e==="break-paths-filter-domains"||e==="break-paths-show-domains"}function _c({scaleName:e,scale:t,mode:n}){const i=`domain('${e}')`;if(!t||!e)return;const r=`${i}[0]`,s=`peek(${i})`,o=t.domainHasZero();if(o==="definitely")return{scale:e,value:0};if(o==="maybe"){const a=n==="zeroOrMin"?r:s;return{signal:`scale('${e}', inrange(0, ${i}) ? 0 : ${a})`}}else return{signal:`scale('${e}', ${n==="zeroOrMin"?r:s})`}}function kc({scaleChannel:e,channelDef:t,scale:n,scaleName:i,markDef:r,config:s}){const o=n?.get("type"),a=Ie(t),c=Oi(a?.aggregate),u=$s({scaleChannel:e,markDef:r,config:s,scaleType:o,isCountAggregate:c});if(a&&u==="show"){const l=s.scale.invalid?.[e]??"zero-or-min";return{test:Mi(w(a,{expr:"datum"}),!1),...eh(l,n,i)}}return}function eh(e,t,n){if(Ig(e)){const{value:i}=e;return $(i)?{signal:i.signal}:{value:i}}return _c({scale:t,scaleName:n,mode:"zeroOrMin"})}function Es(e){const{channel:t,channelDef:n,markDef:i,scale:r,scaleName:s,config:o}=e,a=jt(t),c=_s(e),u=kc({scaleChannel:a,channelDef:n,scale:r,scaleName:s,markDef:i,config:o});return u!==void 0?[u,c]:c}function th(e){const{datum:t}=e;return Bt(t)?Wt(t):`${D(t)}`}function Vt(e,t,n,i){const r={};if(t&&(r.scale=t),Ke(e)){const{datum:s}=e;Bt(s)?r.signal=Wt(s):$(s)?r.signal=s.signal:Yn(s)?r.signal=s.expr:r.value=s}else r.field=w(e,n);if(i){const{offset:s,band:o}=i;s&&(r.offset=s),o&&(r.band=o)}return r}function Hi({scaleName:e,fieldOrDatumDef:t,fieldOrDatumDef2:n,offset:i,startSuffix:r,endSuffix:s="end",bandPosition:o=.5}){const a=!$(o)&&0{switch(t.fieldTitle){case"plain":return e.field;case"functional":return mh(e);default:return hh(e,t)}};let Wc=Bc;function Hc(e){Wc=e}function yh(){Hc(Bc)}function $n(e,t,{allowDisabling:n,includeDefault:i=!0}){const r=Ts(e)?.title;if(!S(e))return r??e.title;const s=e,o=i?As(s,t):void 0;return n?X(r,s.title,o):r??s.title??o}function Ts(e){return wn(e)&&e.axis?e.axis:jc(e)&&e.legend?e.legend:Fs(e)&&e.header?e.header:void 0}function As(e,t){return Wc(e,t)}function Ki(e){if(Uc(e)){const{format:t,formatType:n}=e;return{format:t,formatType:n}}else{const t=Ts(e)??{},{format:n,formatType:i}=t;return{format:n,formatType:i}}}function bh(e,t){switch(t){case"latitude":case"longitude":return"quantitative";case"row":case"column":case"facet":case"shape":case"strokeDash":return"nominal";case"order":return"ordinal"}if(Ns(e)&&E(e.sort))return"ordinal";const{aggregate:n,bin:i,timeUnit:r}=e;if(r)return"temporal";if(i||n&&!_t(n)&&!ct(n))return"quantitative";if(Yt(e)&&e.scale?.type)switch(bs[e.scale.type]){case"numeric":case"discretizing":return"quantitative";case"time":return"temporal"}return"nominal"}function Ie(e){return S(e)?e:Vi(e)?e.condition:void 0}function K(e){return F(e)?e:ni(e)?e.condition:void 0}function qc(e,t,n,i={}){if(N(e)||j(e)||Un(e)){const r=N(e)?"string":j(e)?"number":"boolean";return x(yp(t,r,e)),{value:e}}return F(e)?Qi(e,t,n,i):ni(e)?{...e,condition:Qi(e.condition,t,n,i)}:e}function Qi(e,t,n,i){if(Uc(e)){const{format:r,formatType:s,...o}=e;if(Xt(s)&&!n.customFormatTypes)return x(Ha(t)),Qi(o,t,n,i)}else{const r=wn(e)?"axis":jc(e)?"legend":Fs(e)?"header":null;if(r&&e[r]){const{format:s,formatType:o,...a}=e[r];if(Xt(o)&&!n.customFormatTypes)return x(Ha(t)),Qi({...e,[r]:a},t,n,i)}}return S(e)?Os(e,t,i):xh(e)}function xh(e){let t=e.type;if(t)return e;const{datum:n}=e;return t=j(n)?"quantitative":N(n)?"nominal":Bt(n)?"temporal":void 0,{...e,type:t}}function Os(e,t,{compositeMark:n=!1}={}){const{aggregate:i,timeUnit:r,bin:s,field:o}=e,a={...e};if(!n&&i&&!Jr(i)&&!_t(i)&&!ct(i)&&(x(xp(i)),delete a.aggregate),r&&(a.timeUnit=Z(r)),o&&(a.field=`${o}`),U(s)&&(a.bin=Zi(s,t)),re(s)&&!Y(t)&&x(Qp(t)),fe(a)){const{type:c}=a,u=wg(c);c!==u&&(a.type=u),c!=="quantitative"&&(Oi(i)&&(x(bp(c,i)),a.type="quantitative"))}else if(!xa(t)){const c=bh(a,t);a.type=c}if(fe(a)){const{compatible:c,warning:u}=Sh(a,t)||{};c===!1&&x(u)}if(Ns(a)&&N(a.sort)){const{sort:c}=a;if(Pc(c))return{...a,sort:{encoding:c}};const u=c.substr(1);if(c.charAt(0)==="-"&&Pc(u))return{...a,sort:{encoding:u,order:"descending"}}}if(Fs(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 Zi(e,t){return Un(e)?{maxbins:ka(t)}:e==="binned"?{binned:!0}:!e.maxbins&&!e.step?{...e,maxbins:ka(t)}:e}const En={compatible:!0};function Sh(e,t){const n=e.type;if(n==="geojson"&&t!=="shape")return{compatible:!1,warning:`Channel ${t} should not be used with a geojson data.`};switch(t){case tt:case nt:case _i:return Yi(e)?En:{compatible:!1,warning:$p(t)};case H:case Q:case xt:case gn:case ge:case Be:case We:case Gn:case Vn:case ki:case Dt:case Ci:case Fi:case Mt:case $e:case Fe:case Ni:return En;case Te:case Ee:case Ne:case Ae:return n!==qt?{compatible:!1,warning:`Channel ${t} should be used with a quantitative field only, not ${e.type} field.`}:En;case ot:case St:case vt:case wt:case st:case rt:case it:case Ce:case Ue:return n==="nominal"&&!e.sort?{compatible:!1,warning:`Channel ${t} should not be used with an unsorted discrete field.`}:En;case he:case $t:return!Yi(e)&&!ph(e)?{compatible:!1,warning:Ep(t)}:En;case hn:return e.type==="nominal"&&!("sort"in e)?{compatible:!1,warning:"Channel order is inappropriate for nominal field, which has no inherent order."}:En}}function _n(e){const{formatType:t}=Ki(e);return t==="time"||!t&&vh(e)}function vh(e){return e&&(e.type==="temporal"||S(e)&&!!e.timeUnit)}function Ji(e,{timeUnit:t,type:n,wrapTime:i,undefinedIfExprNotRequired:r}){const s=t&&Z(t)?.unit;let o=s||n==="temporal",a;return Yn(e)?a=e.expr:$(e)?a=e.signal:Bt(e)?(o=!0,a=Wt(e)):(N(e)||j(e))&&(o&&(a=`datetime(${D(e)})`,ug(s)&&((j(e)&&e<1e4||N(e)&&isNaN(Date.parse(e)))&&(a=Wt({[s]:e}))))),a?i&&o?`time(${a})`:a:r?void 0:D(e)}function Gc(e,t){const{type:n}=e;return t.map(i=>{const r=S(e)&&!Ht(e.timeUnit)?e.timeUnit:void 0,s=Ji(i,{timeUnit:r,type:n,undefinedIfExprNotRequired:!0});return s!==void 0?{signal:s}:i})}function ii(e,t){return U(e.bin)?qe(t)&&["ordinal","nominal"].includes(e.type):(console.warn("Only call this method for binned field defs."),!1)}const Vc={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 ri(e){return e?.condition}const Xc=["domain","grid","labels","ticks","title"],wh={grid:"grid",gridCap:"grid",gridColor:"grid",gridDash:"grid",gridDashOffset:"grid",gridOpacity:"grid",gridScale:"grid",gridWidth:"grid",orient:"main",bandPosition:"both",aria:"main",description:"main",domain:"main",domainCap:"main",domainColor:"main",domainDash:"main",domainDashOffset:"main",domainOpacity:"main",domainWidth:"main",format:"main",formatType:"main",labelAlign:"main",labelAngle:"main",labelBaseline:"main",labelBound:"main",labelColor:"main",labelFlush:"main",labelFlushOffset:"main",labelFont:"main",labelFontSize:"main",labelFontStyle:"main",labelFontWeight:"main",labelLimit:"main",labelLineHeight:"main",labelOffset:"main",labelOpacity:"main",labelOverlap:"main",labelPadding:"main",labels:"main",labelSeparation:"main",maxExtent:"main",minExtent:"main",offset:"both",position:"main",tickCap:"main",tickColor:"main",tickDash:"main",tickDashOffset:"main",tickMinStep:"both",tickOffset:"both",tickOpacity:"main",tickRound:"both",ticks:"main",tickSize:"main",tickWidth:"both",title:"main",titleAlign:"main",titleAnchor:"main",titleAngle:"main",titleBaseline:"main",titleColor:"main",titleFont:"main",titleFontSize:"main",titleFontStyle:"main",titleFontWeight:"main",titleLimit:"main",titleLineHeight:"main",titleOpacity:"main",titlePadding:"main",titleX:"main",titleY:"main",encode:"both",scale:"both",tickBand:"both",tickCount:"both",tickExtra:"both",translate:"both",values:"both",zindex:"both"},Yc={orient:1,aria:1,bandPosition:1,description:1,domain:1,domainCap:1,domainColor:1,domainDash:1,domainDashOffset:1,domainOpacity:1,domainWidth:1,format:1,formatType:1,grid:1,gridCap:1,gridColor:1,gridDash:1,gridDashOffset:1,gridOpacity:1,gridWidth:1,labelAlign:1,labelAngle:1,labelBaseline:1,labelBound:1,labelColor:1,labelFlush:1,labelFlushOffset:1,labelFont:1,labelFontSize:1,labelFontStyle:1,labelFontWeight:1,labelLimit:1,labelLineHeight:1,labelOffset:1,labelOpacity:1,labelOverlap:1,labelPadding:1,labels:1,labelSeparation:1,maxExtent:1,minExtent:1,offset:1,position:1,tickBand:1,tickCap:1,tickColor:1,tickCount:1,tickDash:1,tickDashOffset:1,tickExtra:1,tickMinStep:1,tickOffset:1,tickOpacity:1,tickRound:1,ticks:1,tickSize:1,tickWidth:1,title:1,titleAlign:1,titleAnchor:1,titleAngle:1,titleBaseline:1,titleColor:1,titleFont:1,titleFontSize:1,titleFontStyle:1,titleFontWeight:1,titleLimit:1,titleLineHeight:1,titleOpacity:1,titlePadding:1,titleX:1,titleY:1,translate:1,values:1,zindex:1},$h={...Yc,style:1,labelExpr:1,encoding:1};function Kc(e){return!!$h[e]}const Eh={axis:1,axisBand:1,axisBottom:1,axisDiscrete:1,axisLeft:1,axisPoint:1,axisQuantitative:1,axisRight:1,axisTemporal:1,axisTop:1,axisX:1,axisXBand:1,axisXDiscrete:1,axisXPoint:1,axisXQuantitative:1,axisXTemporal:1,axisY:1,axisYBand:1,axisYDiscrete:1,axisYPoint:1,axisYQuantitative:1,axisYTemporal:1},Qc=b(Eh);function ft(e){return"mark"in e}class er{constructor(t,n){this.name=t,this.run=n}hasMatchingType(t){return ft(t)?Zg(t.mark)===this.name:!1}}function Kt(e,t){const n=e&&e[t];return n?E(n)?fn(n,i=>!!i.field):S(n)||Vi(n):!1}function Zc(e,t){const n=e&&e[t];return n?E(n)?fn(n,i=>!!i.field):S(n)||Ke(n)||ni(n):!1}function Jc(e,t){if(Y(t)){const n=e[t];if((S(n)||Ke(n))&&(lc(n.type)||S(n)&&n.timeUnit)){const i=Ti(t);return Zc(e,i)}}return!1}function eu(e){return fn(Ed,t=>{if(Kt(e,t)){const n=e[t];if(E(n))return fn(n,i=>!!i.aggregate);{const i=Ie(n);return i&&!!i.aggregate}}return!1})}function tu(e,t){const n=[],i=[],r=[],s=[],o={};return Ps(e,(a,c)=>{if(S(a)){const{field:u,aggregate:l,bin:f,timeUnit:d,...p}=a;if(l||d||f){const h=Ts(a),g=h?.title;let m=w(a,{forAs:!0});const y={...g?[]:{title:$n(a,t,{allowDisabling:!0})},...p,field:m};if(l){let v;if(_t(l)?(v="argmax",m=w({op:"argmax",field:l.argmax},{forAs:!0}),y.field=`${m}.${u}`):ct(l)?(v="argmin",m=w({op:"argmin",field:l.argmin},{forAs:!0}),y.field=`${m}.${u}`):l!=="boxplot"&&l!=="errorbar"&&l!=="errorband"&&(v=l),v){const k={op:v,as:m};u&&(k.field=u),s.push(k)}}else if(n.push(m),fe(a)&&U(f)){if(i.push({bin:f,field:u,as:m}),n.push(w(a,{binSuffix:"end"})),ii(a,c)&&n.push(w(a,{binSuffix:"range"})),Y(c)){const v={field:`${m}_end`};o[`${c}2`]=v}y.bin="binned",xa(c)||(y.type=qt)}else if(d&&!Ht(d)){r.push({timeUnit:d,field:u,as:m});const v=fe(a)&&a.type!==bn&&"time";v&&(c===Gn||c===Dt?y.formatType=v:zd(c)?y.legend={formatType:v,...y.legend}:Y(c)&&(y.axis={formatType:v,...y.axis}))}o[c]=y}else n.push(u),o[c]=e[c]}else o[c]=e[c]}),{bins:i,timeUnits:r,aggregate:s,groupby:n,encoding:o}}function _h(e,t,n){const i=Id(t,n);if(i){if(i==="binned"){const r=e[t===Ce?H:Q];return!!(S(r)&&S(e[t])&&re(r.bin))}}else return!1;return!0}function kh(e,t,n,i){const r={};for(const s of b(e))ba(s)||x(wp(s));for(let s of Td){if(!e[s])continue;const o=e[s];if(Xn(s)){const a=Nd(s),c=r[a];if(S(c)&&(vg(c.type)&&(S(o)&&!c.timeUnit))){x(mp(a));continue}}if(s==="angle"&&t==="arc"&&!e.theta&&(x(hp),s=$e),!_h(e,s,t)){x(Ri(s,t));continue}if(s===st&&t==="line"){const a=Ie(e[s]);if(a?.aggregate){x(vp);continue}}if(s===ge&&(n?"fill"in e:"stroke"in e)){x(Ga("encoding",{fill:"fill"in e,stroke:"stroke"in e}));continue}if(s===Vn||s===hn&&!E(o)&&!Re(o)||s===Dt&&E(o)){if(o){if(s===hn){const a=e[s];if(Mc(a)){r[s]=a;continue}}r[s]=V(o).reduce((a,c)=>(S(c)?a.push(Os(c,s)):x(rs(c,s)),a),[])}}else{if(s===Dt&&o===null)r[s]=null;else if(!S(o)&&!Ke(o)&&!Re(o)&&!ti(o)&&!$(o)){x(rs(o,s));continue}r[s]=qc(o,s,i)}}return r}function tr(e,t){const n={};for(const i of b(e)){const r=qc(e[i],i,t,{compositeMark:!0});n[i]=r}return n}function Ch(e){const t=[];for(const n of b(e))if(Kt(e,n)){const i=e[n],r=V(i);for(const s of r)S(s)?t.push(s):Vi(s)&&t.push(s.condition)}return t}function Ps(e,t,n){if(!e)return;for(const i of b(e)){const r=e[i];if(E(r))for(const s of r)t.call(n,s,i);else t.call(n,r,i)}}function Fh(e,t,n,i){return e?b(e).reduce((r,s)=>{const o=e[s];return E(o)?o.reduce((a,c)=>t.call(i,a,c,s),r):t.call(i,r,o,s)},n):n}function nu(e,t){return b(t).reduce((n,i)=>{switch(i){case H:case Q:case Ci:case Ni:case Fi:case Ce:case Ue:case xt:case gn:case $e:case rt:case Fe:case it:case Ne:case Te:case Ae:case Ee:case Gn:case he:case Mt:case Dt:return n;case hn:if(e==="line"||e==="trail")return n;case Vn:case ki:{const r=t[i];if(E(r)||S(r))for(const s of V(r))s.aggregate||n.push(w(s,{}));return n}case st:if(e==="trail")return n;case ge:case Be:case We:case ot:case St:case vt:case $t:case wt:{const r=Ie(t[i]);return r&&!r.aggregate&&n.push(w(r,{})),n}}},[])}function Nh(e){const{tooltip:t,...n}=e;if(!t)return{filteredEncoding:n};let i,r;if(E(t)){for(const s of t)s.aggregate?(i||(i=[]),i.push(s)):(r||(r=[]),r.push(s));i&&(n.tooltip=i)}else t.aggregate?n.tooltip=t:r=t;return E(r)&&r.length===1&&(r=r[0]),{customTooltipWithoutAggregatedField:r,filteredEncoding:n}}function zs(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 ${Rs(t)}`:"";return{field:o+t.field,type:t.type,title:$(a)?{signal:`${a}"${escape(c)}"`}:a+c}}),s=Ch(n).map(fh);return{tooltip:[...r,...je(s,P)]}}function Rs(e){const{title:t,field:n}=e;return X(t,n)}function Is(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=Rs(n);return iu(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 iu(e,t,n,i){const{clip:r,color:s,opacity:o}=e,a=e.type;return e[t]||e[t]===void 0&&n[t]?[{...i,mark:{...n[t],...r?{clip:r}:{},...s?{color:s}:{},...o?{opacity:o}:{},...Ye(i.mark)?i.mark:{type:i.mark},style:`${a}-${String(t)}`,...Un(e[t])?{}:e[t]}}]:[]}function ru(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:nr(s,n),continuousAxisChannelDef2:nr(o,n),continuousAxisChannelDefError:nr(a,n),continuousAxisChannelDefError2:nr(c,n),continuousAxis:r}}function nr(e,t){if(e?.aggregate){const{aggregate:n,...i}=e;return n!==t&&x(Kp(n,t)),i}else return e}function su(e,t){const{mark:n,encoding:i}=e,{x:r,y:s}=i;if(Ye(n)&&n.orient)return n.orient;if(Tt(r)){if(Tt(s)){const o=S(r)&&r.aggregate,a=S(s)&&s.aggregate;if(!o&&a===t)return"vertical";if(!a&&o===t)return"horizontal";if(o===t&&a===t)throw new Error("Both x and y cannot have aggregate");return _n(s)&&!_n(r)?"horizontal":"vertical"}return"horizontal"}else{if(Tt(s))return"vertical";throw new Error(`Need a valid continuous axis for ${t}s`)}}const ir="boxplot",Th=["box","median","outliers","rule","ticks"],Ah=new er(ir,au);function ou(e){return j(e)?"tukey":e}function au(e,{config:t}){e={...e,encoding:tr(e.encoding,t)};const{mark:n,encoding:i,params:r,projection:s,...o}=e,a=Ye(n)?n:{type:n};r&&x(Ua("boxplot"));const c=a.extent??t.boxplot.extent,u=R("size",a,t),l=a.invalid,f=ou(c),{bins:d,timeUnits:p,transform:h,continuousAxisChannelDef:g,continuousAxis:m,groupby:y,aggregate:v,encodingWithoutContinuousAxis:k,ticksOrient:_,boxOrient:T,customTooltipWithoutAggregatedField:L}=Oh(e,c,t),ue=dn(g.field),{color:ne,size:mt,...de}=k,yt=jf=>Is(a,m,g,jf,t.boxplot),sn=yt(de),hi=yt(k),mi=(z(t.boxplot.box)?t.boxplot.box.color:t.mark.color)||"#4c78a8",yi=yt({...de,...mt?{size:mt}:{},color:{condition:{test:`datum['lower_box_${g.field}'] >= datum['upper_box_${g.field}']`,...ne||{value:mi}}}}),jn=zs([{fieldPrefix:f==="min-max"?"upper_whisker_":"max_",titlePrefix:"Max"},{fieldPrefix:"upper_box_",titlePrefix:"Q3"},{fieldPrefix:"mid_box_",titlePrefix:"Median"},{fieldPrefix:"lower_box_",titlePrefix:"Q1"},{fieldPrefix:f==="min-max"?"lower_whisker_":"min_",titlePrefix:"Min"}],g,k),Bo={type:"tick",color:"black",opacity:1,orient:_,invalid:l,aria:!1},bi=f==="min-max"?jn:zs([{fieldPrefix:"upper_whisker_",titlePrefix:"Upper Whisker"},{fieldPrefix:"lower_whisker_",titlePrefix:"Lower Whisker"}],g,k),Wo=[...sn({partName:"rule",mark:{type:"rule",invalid:l,aria:!1},positionPrefix:"lower_whisker",endPositionPrefix:"lower_box",extraEncoding:bi}),...sn({partName:"rule",mark:{type:"rule",invalid:l,aria:!1},positionPrefix:"upper_box",endPositionPrefix:"upper_whisker",extraEncoding:bi}),...sn({partName:"ticks",mark:Bo,positionPrefix:"lower_whisker",extraEncoding:bi}),...sn({partName:"ticks",mark:Bo,positionPrefix:"upper_whisker",extraEncoding:bi})],Ho=[...f!=="tukey"?Wo:[],...hi({partName:"box",mark:{type:"bar",...u?{size:u}:{},orient:T,invalid:l,ariaRoleDescription:"box"},positionPrefix:"lower_box",endPositionPrefix:"upper_box",extraEncoding:jn}),...yi({partName:"median",mark:{type:"tick",invalid:l,...z(t.boxplot.median)&&t.boxplot.median.color?{color:t.boxplot.median.color}:{},...u?{size:u}:{},orient:_,aria:!1},positionPrefix:"mid_box",extraEncoding:jn})];if(f==="min-max")return{...o,transform:(o.transform??[]).concat(h),layer:Ho};const qo=`datum["lower_box_${g.field}"]`,Go=`datum["upper_box_${g.field}"]`,Vo=`(${Go} - ${qo})`,Xo=`${qo} - ${c} * ${Vo}`,Yo=`${Go} + ${c} * ${Vo}`,xi=`datum["${g.field}"]`,Lf={joinaggregate:cu(g.field),groupby:y},Ko={transform:[{filter:`(${Xo} <= ${xi}) && (${xi} <= ${Yo})`},{aggregate:[{op:"min",field:g.field,as:`lower_whisker_${ue}`},{op:"max",field:g.field,as:`upper_whisker_${ue}`},{op:"min",field:`lower_box_${g.field}`,as:`lower_box_${ue}`},{op:"max",field:`upper_box_${g.field}`,as:`upper_box_${ue}`},...v],groupby:y}],layer:Wo},{tooltip:WS,...Mf}=de,{scale:Qo,axis:Df}=g,Zo=Rs(g),Jo=pe(Df,["title"]),ea=iu(a,"outliers",t.boxplot,{transform:[{filter:`(${xi} < ${Xo}) || (${xi} > ${Yo})`}],mark:"point",encoding:{[m]:{field:g.field,type:g.type,...Zo!==void 0?{title:Zo}:{},...Qo!==void 0?{scale:Qo}:{},...M(Jo)?{}:{axis:Jo}},...Mf,...ne?{color:ne}:{},...L?{tooltip:L}:{}}})[0];let Si;const ta=[...d,...p,Lf];return ea?Si={transform:ta,layer:[ea,Ko]}:(Si=Ko,Si.transform.unshift(...ta)),{...o,layer:[Si,{transform:h,layer:Ho}]}}function cu(e){const t=dn(e);return[{op:"q1",field:e,as:`lower_box_${t}`},{op:"q3",field:e,as:`upper_box_${t}`}]}function Oh(e,t,n){const i=su(e,ir),{continuousAxisChannelDef:r,continuousAxis:s}=ru(e,i,ir),o=r.field,a=dn(o),c=ou(t),u=[...cu(o),{op:"median",field:o,as:`mid_box_${a}`},{op:"min",field:o,as:(c==="min-max"?"lower_whisker_":"min_")+a},{op:"max",field:o,as:(c==="min-max"?"upper_whisker_":"max_")+a}],l=c==="min-max"||c==="tukey"?[]:[{calculate:`datum["upper_box_${a}"] - datum["lower_box_${a}"]`,as:`iqr_${a}`},{calculate:`min(datum["upper_box_${a}"] + datum["iqr_${a}"] * ${t}, datum["max_${a}"])`,as:`upper_whisker_${a}`},{calculate:`max(datum["lower_box_${a}"] - datum["iqr_${a}"] * ${t}, datum["min_${a}"])`,as:`lower_whisker_${a}`}],{[s]:f,...d}=e.encoding,{customTooltipWithoutAggregatedField:p,filteredEncoding:h}=Nh(d),{bins:g,timeUnits:m,aggregate:y,groupby:v,encoding:k}=tu(h,n),_=i==="vertical"?"horizontal":"vertical",T=i,L=[...g,...m,{aggregate:[...y,...u],groupby:v},...l];return{bins:g,timeUnits:m,transform:L,groupby:v,aggregate:y,continuousAxisChannelDef:r,continuousAxis:s,encodingWithoutContinuousAxis:k,ticksOrient:_,boxOrient:T,customTooltipWithoutAggregatedField:p}}const Ls="errorbar",Ph=["ticks","rule"],zh=new er(Ls,uu);function uu(e,{config:t}){e={...e,encoding:tr(e.encoding,t)};const{transform:n,continuousAxisChannelDef:i,continuousAxis:r,encodingWithoutContinuousAxis:s,ticksOrient:o,markDef:a,outerSpec:c,tooltipEncoding:u}=lu(e,Ls,t);delete s.size;const l=Is(a,r,i,s,t.errorbar),f=a.thickness,d=a.size,p={type:"tick",orient:o,aria:!1,...f!==void 0?{thickness:f}:{},...d!==void 0?{size:d}:{}},h=[...l({partName:"ticks",mark:p,positionPrefix:"lower",extraEncoding:u}),...l({partName:"ticks",mark:p,positionPrefix:"upper",extraEncoding:u}),...l({partName:"rule",mark:{type:"rule",ariaRoleDescription:"errorbar",...f!==void 0?{size:f}:{}},positionPrefix:"lower",endPositionPrefix:"upper",extraEncoding:u})];return{...c,transform:n,...h.length>1?{layer:h}:{...h[0]}}}function Rh(e,t){const{encoding:n}=e;if(Ih(n))return{orient:su(e,t),inputType:"raw"};const i=Lh(n),r=Mh(n),s=n.x,o=n.y;if(i){if(r)throw new Error(`${t} cannot be both type aggregated-upper-lower and aggregated-error`);const a=n.x2,c=n.y2;if(F(a)&&F(c))throw new Error(`${t} cannot have both x2 and y2`);if(F(a)){if(Tt(s))return{orient:"horizontal",inputType:"aggregated-upper-lower"};throw new Error(`Both x and x2 have to be quantitative in ${t}`)}else if(F(c)){if(Tt(o))return{orient:"vertical",inputType:"aggregated-upper-lower"};throw new Error(`Both y and y2 have to be quantitative in ${t}`)}throw new Error("No ranged axis")}else{const a=n.xError,c=n.xError2,u=n.yError,l=n.yError2;if(F(c)&&!F(a))throw new Error(`${t} cannot have xError2 without xError`);if(F(l)&&!F(u))throw new Error(`${t} cannot have yError2 without yError`);if(F(a)&&F(u))throw new Error(`${t} cannot have both xError and yError with both are quantiative`);if(F(a)){if(Tt(s))return{orient:"horizontal",inputType:"aggregated-error"};throw new Error("All x, xError, and xError2 (if exist) have to be quantitative")}else if(F(u)){if(Tt(o))return{orient:"vertical",inputType:"aggregated-error"};throw new Error("All y, yError, and yError2 (if exist) have to be quantitative")}throw new Error("No ranged axis")}}function Ih(e){return(F(e.x)||F(e.y))&&!F(e.x2)&&!F(e.y2)&&!F(e.xError)&&!F(e.xError2)&&!F(e.yError)&&!F(e.yError2)}function Lh(e){return F(e.x2)||F(e.y2)}function Mh(e){return F(e.xError)||F(e.xError2)||F(e.yError)||F(e.yError2)}function lu(e,t,n){const{mark:i,encoding:r,params:s,projection:o,...a}=e,c=Ye(i)?i:{type:i};s&&x(Ua(t));const{orient:u,inputType:l}=Rh(e,t),{continuousAxisChannelDef:f,continuousAxisChannelDef2:d,continuousAxisChannelDefError:p,continuousAxisChannelDefError2:h,continuousAxis:g}=ru(e,u,t),{errorBarSpecificAggregate:m,postAggregateCalculates:y,tooltipSummary:v,tooltipTitleWithFieldName:k}=Dh(c,f,d,p,h,l,t,n),{[g]:_,[g==="x"?"x2":"y2"]:T,[g==="x"?"xError":"yError"]:L,[g==="x"?"xError2":"yError2"]:ue,...ne}=r,{bins:mt,timeUnits:de,aggregate:yt,groupby:sn,encoding:hi}=tu(ne,n),mi=[...yt,...m],yi=l!=="raw"?[]:sn,jn=zs(v,f,hi,k);return{transform:[...a.transform??[],...mt,...de,...mi.length===0?[]:[{aggregate:mi,groupby:yi}],...y],groupby:yi,continuousAxisChannelDef:f,continuousAxis:g,encodingWithoutContinuousAxis:hi,ticksOrient:u==="vertical"?"horizontal":"vertical",markDef:c,outerSpec:a,tooltipEncoding:jn}}function Dh(e,t,n,i,r,s,o,a){let c=[],u=[];const l=t.field;let f,d=!1;if(s==="raw"){const p=e.center?e.center:e.extent?e.extent==="iqr"?"median":"mean":a.errorbar.center,h=e.extent?e.extent:p==="mean"?"stderr":"iqr";if(p==="median"!==(h==="iqr")&&x(Yp(p,h,o)),h==="stderr"||h==="stdev")c=[{op:h,field:l,as:`extent_${l}`},{op:p,field:l,as:`center_${l}`}],u=[{calculate:`datum["center_${l}"] + datum["extent_${l}"]`,as:`upper_${l}`},{calculate:`datum["center_${l}"] - datum["extent_${l}"]`,as:`lower_${l}`}],f=[{fieldPrefix:"center_",titlePrefix:Hn(p)},{fieldPrefix:"upper_",titlePrefix:fu(p,h,"+")},{fieldPrefix:"lower_",titlePrefix:fu(p,h,"-")}],d=!0;else{let g,m,y;h==="ci"?(g="mean",m="ci0",y="ci1"):(g="median",m="q1",y="q3"),c=[{op:m,field:l,as:`lower_${l}`},{op:y,field:l,as:`upper_${l}`},{op:g,field:l,as:`center_${l}`}],f=[{fieldPrefix:"upper_",titlePrefix:$n({field:l,aggregate:y,type:"quantitative"},a,{allowDisabling:!1})},{fieldPrefix:"lower_",titlePrefix:$n({field:l,aggregate:m,type:"quantitative"},a,{allowDisabling:!1})},{fieldPrefix:"center_",titlePrefix:$n({field:l,aggregate:g,type:"quantitative"},a,{allowDisabling:!1})}]}}else{(e.center||e.extent)&&x(Xp(e.center,e.extent)),s==="aggregated-upper-lower"?(f=[],u=[{calculate:`datum["${n.field}"]`,as:`upper_${l}`},{calculate:`datum["${l}"]`,as:`lower_${l}`}]):s==="aggregated-error"&&(f=[{fieldPrefix:"",titlePrefix:l}],u=[{calculate:`datum["${l}"] + datum["${i.field}"]`,as:`upper_${l}`}],r?u.push({calculate:`datum["${l}"] + datum["${r.field}"]`,as:`lower_${l}`}):u.push({calculate:`datum["${l}"] - datum["${i.field}"]`,as:`lower_${l}`}));for(const p of u)f.push({fieldPrefix:p.as.substring(0,6),titlePrefix:Lt(Lt(p.calculate,'datum["',""),'"]',"")})}return{postAggregateCalculates:u,errorBarSpecificAggregate:c,tooltipSummary:f,tooltipTitleWithFieldName:d}}function fu(e,t,n){return`${Hn(e)} ${n} ${t}`}const Ms="errorband",jh=["band","borders"],Uh=new er(Ms,du);function du(e,{config:t}){e={...e,encoding:tr(e.encoding,t)};const{transform:n,continuousAxisChannelDef:i,continuousAxis:r,encodingWithoutContinuousAxis:s,markDef:o,outerSpec:a,tooltipEncoding:c}=lu(e,Ms,t),u=o,l=Is(u,r,i,s,t.errorband),f=e.encoding.x!==void 0&&e.encoding.y!==void 0;let d={type:f?"area":"rect"},p={type:f?"line":"rule"};const h={...u.interpolate?{interpolate:u.interpolate}:{},...u.tension&&u.interpolate?{tension:u.tension}:{}};return f?(d={...d,...h,ariaRoleDescription:"errorband"},p={...p,...h,aria:!1}):u.interpolate?x(Ka("interpolate")):u.tension&&x(Ka("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 pu={};function Ds(e,t,n){const i=new er(e,t);pu[e]={normalizer:i,parts:n}}function Bh(){return b(pu)}Ds(ir,au,Th),Ds(Ls,uu,Ph),Ds(Ms,du,jh);const Wh=["gradientHorizontalMaxLength","gradientHorizontalMinLength","gradientVerticalMaxLength","gradientVerticalMinLength","unselectedOpacity"],gu={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"},hu={labelAlign:"align",labelAnchor:"anchor",labelAngle:"angle",labelBaseline:"baseline",labelColor:"color",labelFont:"font",labelFontSize:"fontSize",labelFontStyle:"fontStyle",labelFontWeight:"fontWeight",labelLimit:"limit",labelLineHeight:"lineHeight",labelOrient:"orient",labelPadding:"offset"},Hh=b(gu),qh=b(hu),Gh={header:1,headerRow:1,headerColumn:1,headerFacet:1},mu=b(Gh),yu=["size","shape","fill","stroke","strokeDash","strokeWidth","opacity"],Vh={gradientHorizontalMaxLength:200,gradientHorizontalMinLength:100,gradientVerticalMaxLength:200,gradientVerticalMinLength:64,unselectedOpacity:.35},Xh={aria:1,clipHeight:1,columnPadding:1,columns:1,cornerRadius:1,description:1,direction:1,fillColor:1,format:1,formatType:1,gradientLength:1,gradientOpacity:1,gradientStrokeColor:1,gradientStrokeWidth:1,gradientThickness:1,gridAlign:1,labelAlign:1,labelBaseline:1,labelColor:1,labelFont:1,labelFontSize:1,labelFontStyle:1,labelFontWeight:1,labelLimit:1,labelOffset:1,labelOpacity:1,labelOverlap:1,labelPadding:1,labelSeparation:1,legendX:1,legendY:1,offset:1,orient:1,padding:1,rowPadding:1,strokeColor:1,symbolDash:1,symbolDashOffset:1,symbolFillColor:1,symbolLimit:1,symbolOffset:1,symbolOpacity:1,symbolSize:1,symbolStrokeColor:1,symbolStrokeWidth:1,symbolType:1,tickCount:1,tickMinStep:1,title:1,titleAlign:1,titleAnchor:1,titleBaseline:1,titleColor:1,titleFont:1,titleFontSize:1,titleFontStyle:1,titleFontWeight:1,titleLimit:1,titleLineHeight:1,titleOpacity:1,titleOrient:1,titlePadding:1,type:1,values:1,zindex:1},Le="_vgsid_",Yh={point:{on:"click",fields:[Le],toggle:"event.shiftKey",resolve:"global",clear:"dblclick"},interval:{on:"[pointerdown, window:pointerup] > window:pointermove!",encodings:["x","y"],translate:"[pointerdown, window:pointerup] > window:pointermove!",zoom:"wheel!",mark:{fill:"#333",fillOpacity:.125,stroke:"white"},resolve:"global",clear:"dblclick"}};function js(e){return e==="legend"||!!e?.legend}function Us(e){return js(e)&&z(e)}function Bs(e){return!!e?.select}function bu(e){const t=[];for(const n of e||[]){if(Bs(n))continue;const{expr:i,bind:r,...s}=n;if(r&&i){const o={...s,bind:r,init:i};t.push(o)}else{const o={...s,...i?{update:i}:{},...r?{bind:r}:{}};t.push(o)}}return t}function Kh(e){return rr(e)||Hs(e)||Ws(e)}function Ws(e){return"concat"in e}function rr(e){return"vconcat"in e}function Hs(e){return"hconcat"in e}function xu({step:e,offsetIsDiscrete:t}){return t?e.for??"offset":"position"}function Qe(e){return z(e)&&e.step!==void 0}function Su(e){return e.view||e.width||e.height}const vu=20,Qh={align:1,bounds:1,center:1,columns:1,spacing:1},Zh=b(Qh);function Jh(e,t,n){const i=n[t],r={},{spacing:s,columns:o}=i;s!==void 0&&(r.spacing=s),o!==void 0&&((Gi(e)&&!ei(e.facet)||Ws(e))&&(r.columns=o)),rr(e)&&(r.columns=1);for(const a of Zh)if(e[a]!==void 0)if(a==="spacing"){const c=e[a];r[a]=j(c)?c:{row:c.row??s,column:c.column??s}}else r[a]=e[a];return r}function qs(e,t){return e[t]??e[t==="width"?"continuousWidth":"continuousHeight"]}function sr(e,t){const n=or(e,t);return Qe(n)?n.step:wu}function or(e,t){const n=e[t]??e[t==="width"?"discreteWidth":"discreteHeight"];return X(n,{step:e.step})}const wu=20,em={continuousWidth:200,continuousHeight:200,step:wu},tm={background:"white",padding:5,timeFormat:"%b %d, %Y",countTitle:"Count of Records",view:em,mark:Gg,arc:{},area:{},bar:Yg,circle:{},geoshape:{},image:{},line:{},point:{},rect:Kg,rule:{color:"black"},square:{},text:{color:"black"},tick:Qg,trail:{},boxplot:{size:14,extent:1.5,box:{},median:{color:"white"},outliers:{},rule:{},ticks:null},errorbar:{center:"mean",rule:!0,ticks:!1},errorband:{band:{opacity:.3},borders:!1},scale:Cg,projection:{},legend:Vh,header:{titlePadding:10,labelPadding:10},headerColumn:{},headerRow:{},headerFacet:{},selection:Yh,style:{},title:{},facet:{spacing:vu},concat:{spacing:vu},normalizedNumberFormat:".0%"},dt=["#4c78a8","#f58518","#e45756","#72b7b2","#54a24b","#eeca3b","#b279a2","#ff9da6","#9d755d","#bab0ac"],$u={text:11,guideLabel:10,guideTitle:11,groupTitle:13,groupSubtitle:12},Eu={blue:dt[0],orange:dt[1],red:dt[2],teal:dt[3],green:dt[4],yellow:dt[5],purple:dt[6],pink:dt[7],brown:dt[8],gray0:"#000",gray1:"#111",gray2:"#222",gray3:"#333",gray4:"#444",gray5:"#555",gray6:"#666",gray7:"#777",gray8:"#888",gray9:"#999",gray10:"#aaa",gray11:"#bbb",gray12:"#ccc",gray13:"#ddd",gray14:"#eee",gray15:"#fff"};function nm(e={}){return{signals:[{name:"color",value:z(e)?{...Eu,...e}:Eu}],mark:{color:{signal:"color.blue"}},rule:{color:{signal:"color.gray0"}},text:{color:{signal:"color.gray0"}},style:{"guide-label":{fill:{signal:"color.gray0"}},"guide-title":{fill:{signal:"color.gray0"}},"group-title":{fill:{signal:"color.gray0"}},"group-subtitle":{fill:{signal:"color.gray0"}},cell:{stroke:{signal:"color.gray8"}}},axis:{domainColor:{signal:"color.gray13"},gridColor:{signal:"color.gray8"},tickColor:{signal:"color.gray13"}},range:{category:[{signal:"color.blue"},{signal:"color.orange"},{signal:"color.red"},{signal:"color.teal"},{signal:"color.green"},{signal:"color.yellow"},{signal:"color.purple"},{signal:"color.pink"},{signal:"color.brown"},{signal:"color.grey8"}]}}}function im(e){return{signals:[{name:"fontSize",value:z(e)?{...$u,...e}:$u}],text:{fontSize:{signal:"fontSize.text"}},style:{"guide-label":{fontSize:{signal:"fontSize.guideLabel"}},"guide-title":{fontSize:{signal:"fontSize.guideTitle"}},"group-title":{fontSize:{signal:"fontSize.groupTitle"}},"group-subtitle":{fontSize:{signal:"fontSize.groupSubtitle"}}}}}function rm(e){return{text:{font:e},style:{"guide-label":{font:e},"guide-title":{font:e},"group-title":{font:e},"group-subtitle":{font:e}}}}function _u(e){const t=b(e||{}),n={};for(const i of t){const r=e[i];n[i]=ri(r)?Fa(r):xe(r)}return n}function sm(e){const t=b(e),n={};for(const i of t)n[i]=_u(e[i]);return n}const om=[...wc,...Qc,...mu,"background","padding","legend","lineBreak","scale","style","title","view"];function ku(e={}){const{color:t,font:n,fontSize:i,selection:r,...s}=e,o=na({},C(tm),n?rm(n):{},t?nm(t):{},i?im(i):{},s||{});r&&Gf(o,"selection",r,!0);const a=pe(o,om);for(const c of["background","lineBreak","padding"])o[c]&&(a[c]=xe(o[c]));for(const c of wc)o[c]&&(a[c]=oe(o[c]));for(const c of Qc)o[c]&&(a[c]=_u(o[c]));for(const c of mu)o[c]&&(a[c]=oe(o[c]));if(o.legend&&(a.legend=oe(o.legend)),o.scale){const{invalid:c,...u}=o.scale,l=oe(c,{level:1});a.scale={...oe(u),...b(l).length>0?{invalid:l}:{}}}return o.style&&(a.style=sm(o.style)),o.title&&(a.title=oe(o.title)),o.view&&(a.view=oe(o.view)),a}const am=new Set(["view",...jg]),cm=["color","fontSize","background","padding","facet","concat","numberFormat","numberFormatType","normalizedNumberFormat","normalizedNumberFormatType","timeFormat","countTitle","header","axisQuantitative","axisTemporal","axisDiscrete","axisPoint","axisXBand","axisXPoint","axisXDiscrete","axisXQuantitative","axisXTemporal","axisYBand","axisYPoint","axisYDiscrete","axisYQuantitative","axisYTemporal","scale","selection","overlay"],um={view:["continuousWidth","continuousHeight","discreteWidth","discreteHeight","step"],...qg};function lm(e){e=C(e);for(const t of cm)delete e[t];if(e.axis)for(const t in e.axis)ri(e.axis[t])&&delete e.axis[t];if(e.legend)for(const t of Wh)delete e.legend[t];if(e.mark){for(const t of vc)delete e.mark[t];e.mark.tooltip&&z(e.mark.tooltip)&&delete e.mark.tooltip}e.params&&(e.signals=(e.signals||[]).concat(bu(e.params)),delete e.params);for(const t of am){for(const i of vc)delete e[t][i];const n=um[t];if(n)for(const i of n)delete e[t][i];dm(e,t)}for(const t of Bh())delete e[t];fm(e);for(const t in e)z(e[t])&&M(e[t])&&delete e[t];return M(e)?void 0:e}function fm(e){const{titleMarkConfig:t,subtitleMarkConfig:n,subtitle:i}=Ca(e.title);M(t)||(e.style["group-title"]={...e.style["group-title"],...t}),M(n)||(e.style["group-subtitle"]={...e.style["group-subtitle"],...n}),M(i)?delete e.title:e.title=i}function dm(e,t,n,i){const r=i?e[t][i]:e[t];t==="view"&&(n="cell");const s={...r,...e.style[n??t]};M(s)||(e.style[n??t]=s),i||delete e[t]}function ar(e){return"layer"in e}function pm(e){return"repeat"in e}function gm(e){return!E(e.repeat)&&e.repeat.layer}class Gs{map(t,n){return Gi(t)?this.mapFacet(t,n):pm(t)?this.mapRepeat(t,n):Hs(t)?this.mapHConcat(t,n):rr(t)?this.mapVConcat(t,n):Ws(t)?this.mapConcat(t,n):this.mapLayerOrUnit(t,n)}mapLayerOrUnit(t,n){if(ar(t))return this.mapLayer(t,n);if(ft(t))return this.mapUnit(t,n);throw new Error(ns(t))}mapLayer(t,n){return{...t,layer:t.layer.map(i=>this.mapLayerOrUnit(i,n))}}mapHConcat(t,n){return{...t,hconcat:t.hconcat.map(i=>this.map(i,n))}}mapVConcat(t,n){return{...t,vconcat:t.vconcat.map(i=>this.map(i,n))}}mapConcat(t,n){const{concat:i,...r}=t;return{...r,concat:i.map(s=>this.map(s,n))}}mapFacet(t,n){return{...t,spec:this.map(t.spec,n)}}mapRepeat(t,n){return{...t,spec:this.map(t.spec,n)}}}const hm={zero:1,center:1,normalize:1};function mm(e){return e in hm}const ym=new Set([bc,ji,Di,Wi,Bi,vs,ws,Ui,xc,Ss]),bm=new Set([ji,Di,bc]);function kn(e){return S(e)&&vn(e)==="quantitative"&&!e.bin}function Cu(e,t,{orient:n,type:i}){const r=t==="x"?"y":"radius",s=t==="x"&&["bar","area"].includes(i),o=e[t],a=e[r];if(S(o)&&S(a))if(kn(o)&&kn(a)){if(o.stack)return t;if(a.stack)return r;const c=S(o)&&!!o.aggregate,u=S(a)&&!!a.aggregate;if(c!==u)return c?t:r;if(s){if(n==="vertical")return r;if(n==="horizontal")return t}}else{if(kn(o))return t;if(kn(a))return r}else{if(kn(o))return s&&n==="vertical"?void 0:t;if(kn(a))return s&&n==="horizontal"?void 0:r}return}function xm(e){switch(e){case"x":return"y";case"y":return"x";case"theta":return"radius";case"radius":return"theta"}}function Fu(e,t){const n=Ye(e)?e:{type:e},i=n.type;if(!ym.has(i))return null;const r=Cu(t,"x",n)||Cu(t,"theta",n);if(!r)return null;const s=t[r],o=S(s)?w(s,{}):void 0,a=xm(r),c=[],u=new Set;if(t[a]){const g=t[a],m=S(g)?w(g,{}):void 0;m&&m!==o&&(c.push(a),u.add(m))}const l=a==="x"?"xOffset":"yOffset",f=t[l],d=S(f)?w(f,{}):void 0;d&&d!==o&&(c.push(l),u.add(d));const p=Ad.reduce((g,m)=>{if(m!=="tooltip"&&Kt(t,m)){const y=t[m];for(const v of V(y)){const k=Ie(v);if(k.aggregate)continue;const _=w(k,{});(!_||!u.has(_))&&g.push({channel:m,fieldDef:k})}}return g},[]);let h;return s.stack!==void 0?Un(s.stack)?h=s.stack?"zero":null:h=s.stack:bm.has(i)&&(h="zero"),!h||!mm(h)||eu(t)&&p.length===0?null:(s?.scale?.type&&s?.scale?.type!==se.LINEAR&&(s?.stack&&x(qp(s.scale.type))),F(t[He(r)])?(s.stack!==void 0&&x(Hp(r)),null):(S(s)&&s.aggregate&&!Wd.has(s.aggregate)&&x(Gp(s.aggregate)),{groupbyChannels:c,groupbyFields:u,fieldChannel:r,impute:s.impute===null?!1:Ft(i),stackBy:p,offset:h}))}function Nu(e,t,n){const i=oe(e),r=R("orient",i,n);if(i.orient=$m(i.type,t,r),r!==void 0&&r!==i.orient&&x(Fp(i.orient,r)),i.type==="bar"&&i.orient){const c=R("cornerRadiusEnd",i,n);if(c!==void 0){const u=i.orient==="horizontal"&&t.x2||i.orient==="vertical"&&t.y2?["cornerRadius"]:Xg[i.orient];for(const l of u)i[l]=c;i.cornerRadiusEnd!==void 0&&delete i.cornerRadiusEnd}}const s=R("opacity",i,n),o=R("fillOpacity",i,n);s===void 0&&o===void 0&&(i.opacity=vm(i.type,t));const a=R("cursor",i,n);return a===void 0&&(i.cursor=Sm(i,t,n)),i}function Sm(e,t,n){return t.href||e.href||R("href",e,n)?"pointer":e.cursor}function vm(e,t){return A([Bi,Ss,vs,ws],e)&&!eu(t)?.7:void 0}function wm(e,t,{graticule:n}){if(n)return!1;const i=Ge("filled",e,t),r=e.type;return X(i,r!==Bi&&r!==Ui&&r!==Wi)}function $m(e,t,n){switch(e){case Bi:case vs:case ws:case xc:case Mg:case Lg:return}const{x:i,y:r,x2:s,y2:o}=t;switch(e){case ji:if(S(i)&&(re(i.bin)||S(r)&&r.aggregate&&!i.aggregate))return"vertical";if(S(r)&&(re(r.bin)||S(i)&&i.aggregate&&!r.aggregate))return"horizontal";if(o||s){if(n)return n;if(!s)return(S(i)&&i.type===qt&&!U(i.bin)||Xi(i))&&(S(r)&&re(r.bin))?"horizontal":"vertical";if(!o)return(S(r)&&r.type===qt&&!U(r.bin)||Xi(r))&&(S(i)&&re(i.bin))?"vertical":"horizontal"}case Wi:if(s&&!(S(i)&&re(i.bin))&&o&&!(S(r)&&re(r.bin)))return;case Di:if(o)return S(r)&&re(r.bin)?"horizontal":"vertical";if(s)return S(i)&&re(i.bin)?"vertical":"horizontal";if(e===Wi){if(i&&!r)return"vertical";if(r&&!i)return"horizontal"}case Ui:case Ss:{const a=Dc(i),c=Dc(r);if(n)return n;if(a&&!c)return e!=="tick"?"horizontal":"vertical";if(!a&&c)return e!=="tick"?"vertical":"horizontal";if(a&&c)return"vertical";{const u=fe(i)&&i.type===bn,l=fe(r)&&r.type===bn;if(u&&!l)return"vertical";if(!u&&l)return"horizontal"}return}}return"vertical"}function Em(e){const{point:t,line:n,...i}=e;return b(i).length>1?i:i.type}function _m(e){for(const t of["line","area","rule","trail"])e[t]&&(e={...e,[t]:pe(e[t],["point","line"])});return e}function Vs(e,t={},n){return e.point==="transparent"?{opacity:0}:e.point?z(e.point)?e.point:{}:e.point!==void 0?null:t.point||n.shape?z(t.point)?t.point:{}:void 0}function Tu(e,t={}){return e.line?e.line===!0?{}:e.line:e.line!==void 0?null:t.line?t.line===!0?{}:t.line:void 0}class km{constructor(){this.name="path-overlay"}hasMatchingType(t,n){if(ft(t)){const{mark:i,encoding:r}=t,s=Ye(i)?i:{type:i};switch(s.type){case"line":case"rule":case"trail":return!!Vs(s,n[s.type],r);case"area":return!!Vs(s,n[s.type],r)||!!Tu(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=tr(u,r),d=Ye(a)?a:{type:a},p=Vs(d,r[d.type],f),h=d.type==="area"&&Tu(d,r[d.type]),g=[{name:c,...s?{params:s}:{},mark:Em({...d.type==="area"&&d.opacity===void 0&&d.fillOpacity===void 0?{opacity:.7}:{},...d}),encoding:pe(f,["shape"])}],m=Fu(Nu(d,f,r),f);let y=f;if(m){const{fieldChannel:v,offset:k}=m;y={...f,[v]:{...f[v],...k?{stack:k}:{}}}}return y=pe(y,["y2","x2"]),h&&g.push({...o?{projection:o}:{},mark:{type:"line",...ln(d,["clip","interpolate","tension","tooltip"]),...h},encoding:y}),p&&g.push({...o?{projection:o}:{},mark:{type:"point",opacity:1,filled:!0,...ln(d,["clip","tooltip"]),...p},encoding:y}),i({...l,layer:g},{...n,config:_m(r)})}}function Cm(e,t){return t?ei(e)?zu(e,t):Au(e,t):e}function Xs(e,t){return t?zu(e,t):e}function Ys(e,t,n){const i=t[e];if(uh(i)){if(i.repeat in n)return{...t,[e]:n[i.repeat]};x(cp(i.repeat));return}return t}function Au(e,t){if(e=Ys("field",e,t),e===void 0)return;if(e===null)return null;if(Ns(e)&<(e.sort)){const n=Ys("field",e.sort,t);e={...e,...n?{sort:n}:{}}}return e}function Ou(e,t){if(S(e))return Au(e,t);{const n=Ys("datum",e,t);return n!==e&&!n.type&&(n.type="nominal"),n}}function Pu(e,t){if(F(e)){const n=Ou(e,t);if(n)return n;if(ti(e))return{condition:e.condition}}else{if(ni(e)){const n=Ou(e.condition,t);if(n)return{...e,condition:n};{const{condition:i,...r}=e;return r}}return e}return}function zu(e,t){const n={};for(const i in e)if(on(e,i)){const r=e[i];if(E(r))n[i]=r.map(s=>Pu(s,t)).filter(s=>s);else{const s=Pu(r,t);s!==void 0&&(n[i]=s)}}return n}class Fm{constructor(){this.name="RuleForRangedLine"}hasMatchingType(t){if(ft(t)){const{encoding:n,mark:i}=t;if(i==="line"||Ye(i)&&i.type==="line")for(const r of Fd){const s=jt(r),o=n[s];if(n[r]&&(S(o)&&!re(o.bin)||Ke(o)))return!0}}return!1}run(t,n,i){const{encoding:r,mark:s}=t;return x(Cp(!!r.x2,!!r.y2)),i({...t,mark:z(s)?{...s,type:"rule"}:"rule"},n)}}class Nm extends Gs{constructor(){super(...arguments);this.nonFacetUnitNormalizers=[Ah,zh,Uh,new km,new Fm]}map(t,n){if(ft(t)){const i=Kt(t.encoding,tt),r=Kt(t.encoding,nt),s=Kt(t.encoding,_i);if(i||r||s)return this.mapFacetedUnit(t,n)}return super.map(t,n)}mapUnit(t,n){const{parentEncoding:i,parentProjection:r}=n,s=Xs(t.encoding,n.repeater),o={...t,...t.name?{name:[n.repeaterPrefix,t.name].filter(c=>c).join("_")}:{},...s?{encoding:s}:{}};if(i||r)return this.mapUnitWithParentEncodingOrProjection(o,n);const a=this.mapLayerOrUnit.bind(this);for(const c of this.nonFacetUnitNormalizers)if(c.hasMatchingType(o,n.config))return c.run(o,n,a);return o}mapRepeat(t,n){return gm(t)?this.mapLayerRepeat(t,n):this.mapNonLayerRepeat(t,n)}mapLayerRepeat(t,n){const{repeat:i,spec:r,...s}=t,{row:o,column:a,layer:c}=i,{repeater:u={},repeaterPrefix:l=""}=n;return o||a?this.mapRepeat({...t,repeat:{...o?{row:o}:{},...a?{column:a}:{}},spec:{repeat:{layer:c},spec:r}},n):{...s,layer:c.map(f=>{const d={...u,layer:f},p=`${(r.name?`${r.name}_`:"")+l}child__layer_${W(f)}`,h=this.mapLayerOrUnit(r,{...n,repeater:d,repeaterPrefix:p});return h.name=p,h})}}mapNonLayerRepeat(t,n){const{repeat:i,spec:r,data:s,...o}=t;!E(i)&&t.columns&&(t=pe(t,["columns"]),x(Ba("repeat")));const a=[],{repeater:c={},repeaterPrefix:u=""}=n,l=!E(i)&&i.row||[c?c.row:null],f=!E(i)&&i.column||[c?c.column:null],d=E(i)&&i||[c?c.repeat:null];for(const h of d)for(const g of l)for(const m of f){const y={repeat:h,row:g,column:m,layer:c.layer},v=(r.name?`${r.name}_`:"")+u+"child__"+(E(i)?`${W(h)}`:(i.row?`row_${W(g)}`:"")+(i.column?`column_${W(m)}`:"")),k=this.map(r,{...n,repeater:y,repeaterPrefix:v});k.name=v,a.push(pe(k,["data"]))}const p=E(i)?t.columns:i.column?i.column.length:1;return{data:r.data??s,align:"all",...o,columns:p,concat:a}}mapFacet(t,n){const{facet:i}=t;return ei(i)&&t.columns&&(t=pe(t,["columns"]),x(Ba("facet"))),super.mapFacet(t,n)}mapUnitWithParentEncodingOrProjection(t,n){const{encoding:i,projection:r}=t,{parentEncoding:s,parentProjection:o,config:a}=n,c=Iu({parentProjection:o,projection:r}),u=Ru({parentEncoding:s,encoding:Xs(i,n.repeater)});return this.mapUnit({...t,...c?{projection:c}:{},...u?{encoding:u}:{}},{config:a})}mapFacetedUnit(t,n){const{row:i,column:r,facet:s,...o}=t.encoding,{mark:a,width:c,projection:u,height:l,view:f,params:d,encoding:p,...h}=t,{facetMapping:g,layout:m}=this.getFacetMappingAndLayout({row:i,column:r,facet:s},n),y=Xs(o,n.repeater);return this.mapFacet({...h,...m,facet:g,spec:{...c?{width:c}:{},...l?{height:l}:{},...f?{view:f}:{},...u?{projection:u}:{},mark:a,encoding:y,...d?{params:d}:{}}},n)}getFacetMappingAndLayout(t,n){const{row:i,column:r,facet:s}=t;if(i||r){s&&x(_p([...i?[tt]:[],...r?[nt]:[]]));const o={},a={};for(const c of[tt,nt]){const u=t[c];if(u){const{align:l,center:f,spacing:d,columns:p,...h}=u;o[c]=h;for(const g of["align","center","spacing"])u[g]!==void 0&&(a[g]??(a[g]={}),a[g][c]=u[g])}}return{facetMapping:o,layout:a}}else{const{align:o,center:a,spacing:c,columns:u,...l}=s;return{facetMapping:Cm(l,n.repeater),layout:{...o?{align:o}:{},...a?{center:a}:{},...c?{spacing:c}:{},...u?{columns:u}:{}}}}}mapLayer(t,{parentEncoding:n,parentProjection:i,...r}){const{encoding:s,projection:o,...a}=t,c={...r,parentEncoding:Ru({parentEncoding:n,encoding:s,layer:!0}),parentProjection:Iu({parentProjection:i,projection:o})};return super.mapLayer({...a,...t.name?{name:[c.repeaterPrefix,t.name].filter(u=>u).join("_")}:{}},c)}}function Ru({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 ni(o)?i[s]={...o,condition:{...a,...o.condition}}:o||o===null?i[s]=o:(n||Re(a)||$(a)||F(a)||E(a))&&(i[s]=a)}}else i=t;return!i||M(i)?void 0:i}function Iu(e){const{parentProjection:t,projection:n}=e;return t&&n&&x(gp({parentProjection:t,projection:n})),n??t}function Ks(e){return"filter"in e}function Tm(e){return e?.stop!==void 0}function Lu(e){return"lookup"in e}function Am(e){return"data"in e}function Om(e){return"param"in e}function Pm(e){return"pivot"in e}function zm(e){return"density"in e}function Rm(e){return"quantile"in e}function Im(e){return"regression"in e}function Lm(e){return"loess"in e}function Mm(e){return"sample"in e}function Dm(e){return"window"in e}function jm(e){return"joinaggregate"in e}function Um(e){return"flatten"in e}function Bm(e){return"calculate"in e}function Mu(e){return"bin"in e}function Wm(e){return"impute"in e}function Hm(e){return"timeUnit"in e}function qm(e){return"aggregate"in e}function Gm(e){return"stack"in e}function Vm(e){return"fold"in e}function Xm(e){return"extent"in e&&!("density"in e)&&!("regression"in e)}function Ym(e){return e.map(t=>Ks(t)?{filter:un(t.filter,Sg)}:t)}class Km extends Gs{map(t,n){return n.emptySelections??(n.emptySelections={}),n.selectionPredicates??(n.selectionPredicates={}),t=Du(t,n),super.map(t,n)}mapLayerOrUnit(t,n){if(t=Du(t,n),t.encoding){const i={};for(const[r,s]of bt(t.encoding))i[r]=ju(s,n);t={...t,encoding:i}}return super.mapLayerOrUnit(t,n)}mapUnit(t,n){const{selection:i,...r}=t;return i?{...r,params:bt(i).map(([s,o])=>{const{init:a,bind:c,empty:u,...l}=o;l.type==="single"?(l.type="point",l.toggle=!1):l.type==="multi"&&(l.type="point"),n.emptySelections[s]=u!=="none";for(const f of ie(n.selectionPredicates[s]??{}))f.empty=u!=="none";return{name:s,value:a,select:l,bind:c}})}:t}}function Du(e,t){const{transform:n,...i}=e;if(n){const r=n.map(s=>{if(Ks(s))return{filter:Qs(s,t)};if(Mu(s)&&Ut(s.bin))return{...s,bin:Uu(s.bin)};if(Lu(s)){const{selection:o,...a}=s.from;return o?{...s,from:{param:o,...a}}:s}return s});return{...i,transform:r}}return e}function ju(e,t){const n=C(e);if(S(n)&&Ut(n.bin)&&(n.bin=Uu(n.bin)),Yt(n)&&n.scale?.domain?.selection){const{selection:i,...r}=n.scale.domain;n.scale.domain={...r,...i?{param:i}:{}}}if(ti(n))if(ia(n.condition))n.condition=n.condition.map(i=>{const{selection:r,param:s,test:o,...a}=i;return s?i:{...a,test:Qs(i,t)}});else{const{selection:i,param:r,test:s,...o}=ju(n.condition,t);n.condition=r?n.condition:{...o,test:Qs(n.condition,t)}}return n}function Uu(e){const t=e.extent;if(t?.selection){const{selection:n,...i}=t;return{...e,extent:{...i,param:n}}}return e}function Qs(e,t){const n=i=>un(i,r=>{var s;const o=t.emptySelections[r]??!0,a={param:r,empty:o};return(s=t.selectionPredicates)[r]??(s[r]=[]),t.selectionPredicates[r].push(a),a});return e.selection?n(e.selection):un(e.test||e.filter,i=>i.selection?n(i.selection):i)}class Zs extends Gs{map(t,n){const i=n.selections??[];if(t.params&&!ft(t)){const r=[];for(const s of t.params)Bs(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)(vi(a)&&(a===t.name||r.includes(a))||ia(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=Zs.prototype[e];Zs.prototype[e]=function(n,i){return t.call(this,n,Qm(n,i))}}function Qm(e,t){return e.name?{...t,path:(t.path??[]).concat(e.name)}:t}function Bu(e,t){t===void 0&&(t=ku(e.config));const n=ty(e,t),{width:i,height:r}=e,s=ny(n,{width:i,height:r,autosize:e.autosize},t);return{...n,...s?{autosize:s}:{}}}const Zm=new Nm,Jm=new Km,ey=new Zs;function ty(e,t={}){const n={config:t};return ey.map(Zm.map(Jm.map(e,n),n),n)}function Wu(e){return N(e)?{type:e}:e??{}}function ny(e,t,n){let{width:i,height:r}=t;const s=ft(e)||ar(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(La("width")),i=void 0),r=="container"&&(x(La("height")),r=void 0));const a={type:"pad",...o,...n?Wu(n.autosize):{},...Wu(e.autosize)};return a.type==="fit"&&!s&&(x(Qd),a.type="pad"),i=="container"&&!(a.type=="fit"||a.type=="fit-x")&&x(Ma("width")),r=="container"&&!(a.type=="fit"||a.type=="fit-y")&&x(Ma("height")),be(a,{type:"pad"})?void 0:a}function iy(e){return e==="fit"||e==="fit-x"||e==="fit-y"}function ry(e){return e?`fit-${Ai(e)}`:"fit"}const sy=["background","padding"];function Hu(e,t){const n={};for(const i of sy)e&&e[i]!==void 0&&(n[i]=xe(e[i]));return t&&(n.params=e.params),n}class pt{constructor(t={},n={}){this.explicit=t,this.implicit=n}clone(){return new pt(C(this.explicit),C(this.implicit))}combine(){return{...this.explicit,...this.implicit}}get(t){return X(this.explicit[t],this.implicit[t])}getWithExplicit(t){return this.explicit[t]!==void 0?{explicit:!0,value:this.explicit[t]}:this.implicit[t]!==void 0?{explicit:!1,value:this.implicit[t]}:{explicit:!1,value:void 0}}setWithExplicit(t,{value:n,explicit:i}){n!==void 0&&this.set(t,n,i)}set(t,n,i){return delete this[i?"implicit":"explicit"][t],this[i?"explicit":"implicit"][t]=n,this}copyKeyFromSplit(t,{explicit:n,implicit:i}){n[t]!==void 0?this.set(t,n[t],!0):i[t]!==void 0&&this.set(t,i[t],!1)}copyKeyFromObject(t,n){n[t]!==void 0&&this.set(t,n[t],!0)}copyAll(t){for(const n of b(t.combine())){const i=t.getWithExplicit(n);this.setWithExplicit(n,i)}}}function Ze(e){return{explicit:!0,value:e}}function Se(e){return{explicit:!1,value:e}}function qu(e){return(t,n,i,r)=>{const s=e(t.value,n.value);return s>0?t:s<0?n:cr(t,n,i,r)}}function cr(e,t,n,i){return e.explicit&&t.explicit&&x(Lp(n,i,e.value,t.value)),e}function At(e,t,n,i,r=cr){return e===void 0||e.value===void 0?t:e.explicit&&!t.explicit?e:t.explicit&&!e.explicit?t:be(e.value,t.value)?e:r(e,t,n,i)}class oy extends pt{constructor(t={},n={},i=!1){super(t,n);this.explicit=t,this.implicit=n,this.parseNothing=i}clone(){const t=super.clone();return t.parseNothing=this.parseNothing,t}}function Cn(e){return"url"in e}function si(e){return"values"in e}function Gu(e){return"name"in e&&!Cn(e)&&!si(e)&&!Ot(e)}function Ot(e){return e&&(Vu(e)||Xu(e)||Js(e))}function Vu(e){return"sequence"in e}function Xu(e){return"sphere"in e}function Js(e){return"graticule"in e}var G;(function(e){e[e.Raw=0]="Raw",e[e.Main=1]="Main",e[e.Row=2]="Row",e[e.Column=3]="Column",e[e.Lookup=4]="Lookup",e[e.PreFilterInvalid=5]="PreFilterInvalid",e[e.PostFilterInvalid=6]="PostFilterInvalid"})(G||(G={}));function Yu({invalid:e,isPath:t}){const n=Ec(e,{isPath:t});switch(n){case"filter":return{marks:"exclude-invalid-values",scales:"exclude-invalid-values"};case"break-paths-show-domains":return{marks:t?"include-invalid-values":"exclude-invalid-values",scales:"include-invalid-values"};case"break-paths-filter-domains":return{marks:t?"include-invalid-values":"exclude-invalid-values",scales:"exclude-invalid-values"};case"show":return{marks:"include-invalid-values",scales:"include-invalid-values"}}}function ay(e){const{marks:t,scales:n}=Yu(e);return t===n?G.Main:n==="include-invalid-values"?G.PreFilterInvalid:G.PostFilterInvalid}function Ku(e){const{signals:t,hasLegend:n,index:i,...r}=e;return r.field=we(r.field),r}function Qt(e,t=!0,n=qf){if(E(e)){const i=e.map(r=>Qt(r,t,n));return t?`[${i.join(", ")}]`:i}else if(Bt(e))return n(t?Wt(e):cg(e));return t?n(D(e)):e}function cy(e,t){for(const n of ie(e.component.selection??{})){const i=n.name;let r=`${i}${zt}, ${n.resolve==="global"?"true":`{unit: ${Jt(e)}}`}`;for(const s of hr){if(!s.defined(n))continue;s.signals&&(t=s.signals(e,n,t)),s.modifyExpr&&(r=s.modifyExpr(e,n,r))}t.push({name:i+My,on:[{events:{signal:n.name+zt},update:`modify(${O(n.name+Zt)}, ${r})`}]})}return eo(t)}function uy(e,t){if(e.component.selection&&b(e.component.selection).length){const n=O(e.getName("cell"));t.unshift({name:"facet",value:{},on:[{events:cn("pointermove","scope"),update:`isTuple(facet) ? facet : group(${n}).datum`}]})}return eo(t)}function ly(e,t){let n=!1;for(const i of ie(e.component.selection??{})){const r=i.name,s=O(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:`${_l}(${s}, ${O(a)}${c}`})}n=!0;for(const a of hr)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 eo(t)}function fy(e,t){const n=[...t],i=Jt(e,{escape:!1});for(const r of ie(e.component.selection??{})){const s={name:r.name+Zt};if(r.project.hasSelectionId&&(s.transform=[{type:"collect",sort:{field:Le}}]),r.init){const a=r.project.items.map(Ku);s.values=r.project.hasSelectionId?r.init.map(c=>({unit:i,[Le]:Qt(c,!1)[0]})):r.init.map(c=>({unit:i,fields:a,values:Qt(c,!1)}))}const o=n.filter(a=>a.name===r.name+Zt);o.length||n.push(s)}return n}function Qu(e,t){for(const n of ie(e.component.selection??{}))for(const i of hr)i.defined(n)&&i.marks&&(t=i.marks(e,n,t));return t}function dy(e,t){for(const n of e.children)q(n)&&(t=Qu(n,t));return t}function py(e,t,n,i){const r=Tl(e,t.param,t);return{signal:Pe(n.get("type"))&&E(i)&&i[0]>i[1]?`isValid(${r}) && reverse(${r})`:r}}function eo(e){return e.map(t=>(t.on&&!t.on.length&&delete t.on,t))}class I{constructor(t,n){this.debugName=n,this._children=[],this._parent=null,t&&(this.parent=t)}clone(){throw new Error("Cannot clone node")}get parent(){return this._parent}set parent(t){this._parent=t,t&&t.addChild(this)}get children(){return this._children}numChildren(){return this._children.length}addChild(t,n){if(this._children.includes(t)){x(fp);return}n!==void 0?this._children.splice(n,0,t):this._children.push(t)}removeChild(t){const n=this._children.indexOf(t);return this._children.splice(n,1),n}remove(){let t=this._parent.removeChild(this);for(const n of this._children)n._parent=this._parent,this._parent.addChild(n,t++)}insertAsParentOf(t){const n=t.parent;n.removeChild(this),this.parent=n,t.parent=this}swapWithParent(){const t=this._parent,n=t.parent;for(const r of this._children)r.parent=t;this._children=[],t.removeChild(this);const i=t.parent.removeChild(t);this._parent=n,n.addChild(this,i),t.parent=this}}class ye extends I{clone(){const t=new this.constructor;return t.debugName=`clone_${this.debugName}`,t._source=this._source,t._name=`clone_${this._name}`,t.type=this.type,t.refCounts=this.refCounts,t.refCounts[t._name]=0,t}constructor(t,n,i,r){super(t,n);this.type=i,this.refCounts=r,this._source=this._name=n,this.refCounts&&!(this._name in this.refCounts)&&(this.refCounts[this._name]=0)}dependentFields(){return new Set}producedFields(){return new Set}hash(){return this._hash===void 0&&(this._hash=`Output ${ua()}`),this._hash}getSource(){return this.refCounts[this._name]++,this._source}isRequired(){return!!this.refCounts[this._name]}setSource(t){this._source=t}}function to(e){return e.as!==void 0}function Zu(e){return`${e}_end`}class Je extends I{clone(){return new Je(null,C(this.timeUnits))}constructor(t,n){super(t);this.timeUnits=n}static makeFromEncoding(t,n){const i=n.reduceFieldDef((r,s,o)=>{const{field:a,timeUnit:c}=s;if(c){let u;if(Ht(c)){if(q(n)){const{mark:l,markDef:f,config:d}=n,p=Nt({fieldDef:s,markDef:f,config:d});(Qn(l)||!!p)&&(u={timeUnit:Z(c),field:a})}}else u={as:w(s,{forAs:!0}),field:a,timeUnit:c};if(q(n)){const{mark:l,markDef:f,config:d}=n,p=Nt({fieldDef:s,markDef:f,config:d});Qn(l)&&Y(o)&&p!==.5&&(u.rectBandPosition=p)}u&&(r[P(u)]=u)}return r},{});return M(i)?null:new Je(t,i)}static makeFromTransform(t,n){const{timeUnit:i,...r}={...n},s=Z(i),o={...r,timeUnit:s};return new Je(t,{[P(o)]:o})}merge(t){this.timeUnits={...this.timeUnits};for(const n in t.timeUnits)this.timeUnits[n]||(this.timeUnits[n]=t.timeUnits[n]);for(const n of t.children)t.removeChild(n),n.parent=this;t.remove()}removeFormulas(t){const n={};for(const[i,r]of bt(this.timeUnits)){const s=to(r)?r.as:`${r.field}_end`;t.has(s)||(n[i]=r)}this.timeUnits=n}producedFields(){return new Set(ie(this.timeUnits).map(t=>to(t)?t.as:Zu(t.field)))}dependentFields(){return new Set(ie(this.timeUnits).map(t=>t.field))}hash(){return`TimeUnit ${P(this.timeUnits)}`}assemble(){const t=[];for(const n of ie(this.timeUnits)){const{rectBandPosition:i}=n,r=Z(n.timeUnit);if(to(n)){const{field:s,as:o}=n,{unit:a,utc:c,...u}=r,l=[o,`${o}_end`];t.push({field:we(s),type:"timeunit",...a?{units:Li(a)}:{},...c?{timezone:"utc"}:{},...u,as:l}),t.push(...el(l,i,r))}else if(n){const{field:s}=n,o=s.replaceAll("\\.","."),a=Ju({timeUnit:r,field:o}),c=Zu(o);t.push({type:"formula",expr:a,as:c}),t.push(...el([o,c],i,r))}}return t}}const ur="offsetted_rect_start",lr="offsetted_rect_end";function Ju({timeUnit:e,field:t,reverse:n}){const{unit:i,utc:r}=e,s=ic(i),{part:o,step:a}=ac(s,e.step),c=r?"utcOffset":"timeOffset",u=`${c}('${o}', datum['${t}'], ${n?-a:a})`;return u}function el([e,t],n,i){if(n!==void 0&&n!==.5){const r=`datum['${e}']`,s=`datum['${t}']`;return[{type:"formula",expr:tl([Ju({timeUnit:i,field:e,reverse:!0}),r],n+.5),as:`${e}_${ur}`},{type:"formula",expr:tl([r,s],n+.5),as:`${e}_${lr}`}]}return[]}function tl([e,t],n){return`${1-n} * ${e} + ${n} * ${t}`}const oi="_tuple_fields";class gy{constructor(...t){this.items=t,this.hasChannel={},this.hasField={},this.hasSelectionId=!1}}const hy={defined:()=>!0,parse:(e,t,n)=>{const i=t.name,r=t.project??(t.project=new gy),s={},o={},a=new Set,c=(h,g)=>{const m=g==="visual"?h.channel:h.field;let y=W(`${i}_${m}`);for(let v=1;a.has(y);v++)y=W(`${i}_${m}_${v}`);return a.add(y),{[g]:y}},u=t.type,l=e.config.selection[u],f=n.value!==void 0?V(n.value):null;let{fields:d,encodings:p}=z(n.select)?n.select:{};if(!d&&!p&&f)for(const h of f){if(!z(h))continue;for(const g of b(h))Cd(g)?(p||(p=[])).push(g):u==="interval"?(x(ap),p=l.encodings):(d??(d=[])).push(g)}!d&&!p&&(p=l.encodings,"fields"in l&&(d=l.fields));for(const h of p??[]){const g=e.fieldDef(h);if(g){let m=g.field;if(g.aggregate){x(Zd(h,g.aggregate));continue}else if(!m){x(ja(h));continue}if(g.timeUnit&&!Ht(g.timeUnit)){m=e.vgField(h);const y={timeUnit:g.timeUnit,as:m,field:g.field};o[P(y)]=y}if(!s[m]){const y=u==="interval"&&qe(h)&&Pe(e.getScaleComponent(h).get("type"))?"R":g.bin?"R-RE":"E",v={field:m,channel:h,type:y,index:r.items.length};v.signals={...c(v,"data"),...c(v,"visual")},r.items.push(s[m]=v),r.hasField[m]=s[m],r.hasSelectionId=r.hasSelectionId||m===Le,ma(h)?(v.geoChannel=h,v.channel=ha(h),r.hasChannel[v.channel]=s[m]):r.hasChannel[h]=s[m]}}else x(ja(h))}for(const h of d??[]){if(r.hasField[h])continue;const g={type:"E",field:h,index:r.items.length};g.signals={...c(g,"data")},r.items.push(g),r.hasField[h]=g,r.hasSelectionId=r.hasSelectionId||h===Le}f&&(t.init=f.map(h=>r.items.map(g=>z(h)?h[g.geoChannel||g.channel]!==void 0?h[g.geoChannel||g.channel]:h[g.field]:h))),M(o)||(r.timeUnit=new Je(null,o))},signals:(e,t,n)=>{const i=t.name+oi,r=n.filter(s=>s.name===i);return r.length>0||t.project.hasSelectionId?n:n.concat({name:i,value:t.project.items.map(Ku)})}},gt={defined:e=>e.type==="interval"&&e.resolve==="global"&&e.bind&&e.bind==="scales",parse:(e,t)=>{const n=t.scales=[];for(const i of t.project.items){const r=i.channel;if(!qe(r))continue;const s=e.getScaleComponent(r),o=s?s.get("type"):void 0;if(o=="sequential"&&x(np),!s||!Pe(o)){x(tp);continue}s.set("selectionExtent",{param:t.name,field:i.field},!0),n.push(i)}},topLevelSignals:(e,t,n)=>{const i=t.scales.filter(o=>n.filter(a=>a.name===o.signals.data).length===0);if(!e.parent||io(e)||i.length===0)return n;const r=n.find(o=>o.name===t.name);let s=r.update;if(s.includes(_l))r.update=`{${i.map(o=>`${O(we(o.field))}: ${o.signals.data}`).join(", ")}}`;else{for(const o of i){const a=`${O(we(o.field))}: ${o.signals.data}`;s.includes(a)||(s=`${s.substring(0,s.length-1)}, ${a}}`)}r.update=s}return n.concat(i.map(o=>({name:o.signals.data})))},signals:(e,t,n)=>{if(e.parent&&!io(e))for(const i of t.scales){const r=n.find(s=>s.name===i.signals.data);r.push="outer",delete r.value,delete r.update}return n}};function no(e,t){const n=O(e.scaleName(t));return`domain(${n})`}function io(e){return e.parent&&Mn(e.parent)&&(!e.parent.parent??io(e.parent.parent))}const Fn="_brush",nl="_scale_trigger",ai="geo_interval_init_tick",il="_init",my="_center",yy={defined:e=>e.type==="interval",parse:(e,t,n)=>{var i;if(e.hasProjection){const r={...Rr(n.select)?n.select:{}};r.fields=[Le],r.encodings||(r.encodings=n.value?b(n.value):[Te,Ne]),n.select={type:"interval",...r}}if(t.translate&&!gt.defined(t)){const r=`!event.item || event.item.mark.name !== ${O(t.name+Fn)}`;for(const s of t.events){if(!s.between){x(`${s} is not an ordered event stream for interval selections.`);continue}const o=V((i=s.between[0]).filter??(i.filter=[]));o.includes(r)||o.push(r)}}},signals:(e,t,n)=>{const i=t.name,r=i+zt,s=ie(t.project.hasChannel).filter(a=>a.channel===H||a.channel===Q),o=t.init?t.init[0]:null;if(n.push(...s.reduce((a,c)=>a.concat(by(e,t,c,o&&o[c.index])),[])),e.hasProjection){const a=O(e.projectionName()),c=e.projectionName()+my,{x:u,y:l}=t.project.hasChannel,f=u&&u.signals.visual,d=l&&l.signals.visual,p=u?o&&o[u.index]:`${c}[0]`,h=l?o&&o[l.index]:`${c}[1]`,g=T=>e.getSizeSignalRef(T).signal,m=`[[${f?f+"[0]":"0"}, ${d?d+"[0]":"0"}],[${f?f+"[1]":g("width")}, ${d?d+"[1]":g("height")}]]`;if(o&&(n.unshift({name:i+il,init:`[scale(${a}, [${u?p[0]:p}, ${l?h[0]:h}]), scale(${a}, [${u?p[1]:p}, ${l?h[1]:h}])]`}),!u||!l)){const T=n.find(L=>L.name===c);T||n.unshift({name:c,update:`invert(${a}, [${g("width")}/2, ${g("height")}/2])`})}const y=`intersect(${m}, {markname: ${O(e.getName("marks"))}}, unit.mark)`,v=`{unit: ${Jt(e)}}`,k=`vlSelectionTuples(${y}, ${v})`,_=s.map(T=>T.signals.visual);return n.concat({name:r,on:[{events:[..._.length?[{signal:_.join(" || ")}]:[],...o?[{signal:ai}]:[]],update:k}]})}else{if(!gt.defined(t)){const u=i+nl,l=s.map(f=>{const d=f.channel,{data:p,visual:h}=f.signals,g=O(e.scaleName(d)),m=e.getScaleComponent(d).get("type"),y=Pe(m)?"+":"";return`(!isArray(${p}) || (${y}invert(${g}, ${h})[0] === ${y}${p}[0] && ${y}invert(${g}, ${h})[1] === ${y}${p}[1]))`});l.length&&n.push({name:u,value:{},on:[{events:s.map(f=>({scale:e.scaleName(f.channel)})),update:l.join(" && ")+` ? ${u} : {}`}]})}const a=s.map(u=>u.signals.data),c=`unit: ${Jt(e)}, fields: ${i+oi}, values`;return n.concat({name:r,...o?{init:`{${c}: ${Qt(o)}}`}:{},...a.length?{on:[{events:[{signal:a.join(" || ")}],update:`${a.join(" && ")} ? {${c}: [${a}]} : null`}]}:{}})}},topLevelSignals:(e,t,n)=>{if(q(e)&&e.hasProjection&&t.init){const i=n.filter(r=>r.name===ai);i.length||n.unshift({name:ai,value:null,on:[{events:"timer{1}",update:`${ai} === null ? {} : ${ai}`}]})}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(${O(t.name+Zt)})`;if(gt.defined(t)||!r&&!s)return n;const u={x:r!==void 0?{signal:`${o}[0]`}:{value:0},y:s!==void 0?{signal:`${a}[0]`}:{value:0},x2:r!==void 0?{signal:`${o}[1]`}:{field:{group:"width"}},y2:s!==void 0?{signal:`${a}[1]`}:{field:{group:"height"}}};if(t.resolve==="global")for(const m of b(u))u[m]=[{test:`${c}.length && ${c}[0].unit === ${Jt(e)}`,...u[m]},{value:0}];const{fill:l,fillOpacity:f,cursor:d,...p}=t.mark,h=b(p).reduce((m,y)=>(m[y]=[{test:[r!==void 0&&`${o}[0] !== ${o}[1]`,s!==void 0&&`${a}[0] !== ${a}[1]`].filter(v=>v).join(" && "),value:p[y]},{value:null}],m),{}),g=d??(t.translate?"move":null);return[{name:`${i+Fn}_bg`,type:"rect",clip:!0,encode:{enter:{fill:{value:l},fillOpacity:{value:f}},update:u}},...n,{name:i+Fn,type:"rect",clip:!0,encode:{enter:{...g?{cursor:{value:g}}:{},fill:{value:"transparent"}},update:{...u,...h}}}]}};function by(e,t,n,i){const r=!e.hasProjection,s=n.channel,o=n.signals.visual,a=O(r?e.scaleName(s):e.projectionName()),c=d=>`scale(${a}, ${d})`,u=e.getSizeSignalRef(s===H?"width":"height").signal,l=`${s}(unit)`,f=t.events.reduce((d,p)=>[...d,{events:p.between[0],update:`[${l}, ${l}]`},{events:p,update:`[${o}[0], clamp(${l}, 0, ${u})]`}],[]);if(r){const d=n.signals.data,p=gt.defined(t),h=e.getScaleComponent(s),g=h?h.get("type"):void 0,m=i?{init:Qt(i,!0,c)}:{value:[]};return f.push({events:{signal:t.name+nl},update:Pe(g)?`[${c(`${d}[0]`)}, ${c(`${d}[1]`)}]`:"[0, 0]"}),p?[{name:d,on:[]}]:[{name:o,...m,on:f},{name:d,...i?{init:Qt(i)}:{},on:[{events:{signal:o},update:`${o}[0] === ${o}[1] ? null : invert(${a}, ${o})`}]}]}else{const d=s===H?0:1,p=t.name+il,h=i?{init:`[${p}[0][${d}], ${p}[1][${d}]]`}:{value:[]};return[{name:o,...h,on:f}]}}const xy={defined:e=>e.type==="point",signals:(e,t,n)=>{const i=t.name,r=i+oi,s=t.project,o="(item().isVoronoi ? datum.datum : datum)",a=ie(e.component.selection??{}).reduce((f,d)=>d.type==="interval"?f.concat(d.name+Fn):f,[]).map(f=>`indexof(item().mark.name, '${f}') < 0`).join(" && "),c=`datum && item().mark.marktype !== 'group' && indexof(item().mark.role, 'legend') < 0${a?` && ${a}`:""}`;let u=`unit: ${Jt(e)}, `;if(t.project.hasSelectionId)u+=`${Le}: ${o}[${O(Le)}]`;else{const f=s.items.map(d=>{const p=e.fieldDef(d.channel);return p?.bin?`[${o}[${O(e.vgField(d.channel,{}))}], ${o}[${O(e.vgField(d.channel,{binSuffix:"end"}))}]]`:`${o}[${O(d.field)}]`}).join(", ");u+=`fields: ${r}, values: [${f}]`}const l=t.events;return n.concat([{name:i+zt,on:l?[{events:l,update:`${c} ? {${u}} : null`,force:!0}]:[]}])}};function Nn({model:e,channelDef:t,vgChannel:n,invalidValueRef:i,mainRefFn:r}){const s=ti(t)&&t.condition;let o=[];if(s){const c=V(s);o=c.map(u=>{const l=r(u);if(ch(u)){const{param:f,empty:d}=u,p=Nl(e,{param:f,empty:d});return{test:p,...l}}else{const f=mr(e,u.test);return{test:f,...l}}})}i!==void 0&&o.push(i);const a=r(t);return a!==void 0&&o.push(a),o.length>1||o.length===1&&Boolean(o[0].test)?{[n]:o}:o.length===1?{[n]:o[0]}:{}}function ro(e,t="text"){const n=e.encoding[t];return Nn({model:e,channelDef:n,vgChannel:t,mainRefFn:i=>fr(i,e.config),invalidValueRef:void 0})}function fr(e,t,n="datum"){if(e){if(Re(e))return B(e.value);if(F(e)){const{format:i,formatType:r}=Ki(e);return ks({fieldOrDatumDef:e,format:i,formatType:r,expr:n,config:t})}}return}function rl(e,t={}){const{encoding:n,markDef:i,config:r,stack:s}=e,o=n.tooltip;if(E(o))return{tooltip:ol({tooltip:o},s,r,t)};{const a=t.reactiveGeom?"datum.datum":"datum",c=u=>{const l=fr(u,r,a);if(l)return l;if(u===null)return;let f=R("tooltip",i,r);return f===!0&&(f={content:"encoding"}),N(f)?{value:f}:z(f)?$(f)?f:f.content==="encoding"?ol(n,s,r,t):{signal:a}:void 0};return Nn({model:e,channelDef:o,vgChannel:"tooltip",mainRefFn:c,invalidValueRef:void 0})}}function sl(e,t,n,{reactiveGeom:i}={}){const r={...n,...n.tooltipFormat},s={},o=i?"datum.datum":"datum",a=[];function c(l,f){const d=jt(f),p=fe(l)?l:{...l,type:e[d].type},h=p.title||As(p,r),g=V(h).join(", ").replaceAll(/"/g,'\\"');let m;if(Y(f)){const y=f==="x"?"x2":"y2",v=Ie(e[y]);if(re(p.bin)&&v){const k=w(p,{expr:o}),_=w(v,{expr:o}),{format:T,formatType:L}=Ki(p);m=Jn(k,_,T,L,r),s[y]=!0}}if((Y(f)||f===$e||f===Fe)&&t&&t.fieldChannel===f&&t.offset==="normalize"){const{format:y,formatType:v}=Ki(p);m=ks({fieldOrDatumDef:p,format:y,formatType:v,expr:o,config:r,normalizeStack:!0}).signal}m??(m=fr(p,r,o).signal),a.push({channel:f,key:g,value:m})}Ps(e,(l,f)=>{S(l)?c(l,f):Vi(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 ol(e,t,n,{reactiveGeom:i}={}){const r=sl(e,t,n,{reactiveGeom:i}),s=bt(r).map(([o,a])=>`"${o}": ${a}`);return s.length>0?{signal:`{${s.join(", ")}}`}:void 0}function Sy(e){const{markDef:t,config:n}=e,i=R("aria",t,n);return i===!1?{}:{...i?{aria:i}:{},...vy(e),...wy(e)}}function vy(e){const{mark:t,markDef:n,config:i}=e;if(i.aria===!1)return{};const r=R("ariaRoleDescription",n,i);return r!=null?{ariaRoleDescription:{value:r}}:t in Yd?{}:{ariaRoleDescription:{value:t}}}function wy(e){const{encoding:t,markDef:n,config:i,stack:r}=e,s=t.description;if(s)return Nn({model:e,channelDef:s,vgChannel:"description",mainRefFn:c=>fr(c,e.config),invalidValueRef:void 0});const o=R("description",n,i);if(o!=null)return{description:B(o)};if(i.aria===!1)return{};const a=sl(t,r,i);return M(a)?void 0:{description:{signal:bt(a).map(([c,u],l)=>`"${l>0?"; ":""}${c}: " + (${u})`).join(" + ")}}}function ee(e,t,n={}){const{markDef:i,encoding:r,config:s}=t,{vgChannel:o}=n;let{defaultRef:a,defaultValue:c}=n;const u=r[e];a===void 0&&(c??(c=R(e,i,s,{vgChannel:o,ignoreVgConfig:!ti(u)})),c!==void 0&&(a=B(c)));const l={markDef:i,config:s,scaleName:t.scaleName(e),scale:t.getScaleComponent(e)},f=kc({...l,scaleChannel:e,channelDef:u}),d=p=>_s({...l,channel:e,channelDef:p,stack:null,defaultRef:a});return Nn({model:t,channelDef:u,vgChannel:o??e,invalidValueRef:f,mainRefFn:d})}function al(e,t={filled:void 0}){const{markDef:n,encoding:i,config:r}=e,{type:s}=n,o=t.filled??R("filled",n,r),a=A(["bar","point","circle","square","geoshape"],s)?"transparent":void 0,c=R(o===!0?"color":void 0,n,r,{vgChannel:"fill"})??r.mark[o===!0&&"color"]??a,u=R(o===!1?"color":void 0,n,r,{vgChannel:"stroke"})??r.mark[o===!1&&"color"],l=o?"fill":"stroke",f={...c?{fill:B(c)}:{},...u?{stroke:B(u)}:{}};return n.color&&(o?n.fill:n.stroke)&&x(Ga("property",{fill:"fill"in n,stroke:"stroke"in n})),{...f,...ee("color",e,{vgChannel:l,defaultValue:o?c:u}),...ee("fill",e,{defaultValue:i.fill?c:void 0}),...ee("stroke",e,{defaultValue:i.stroke?u:void 0})}}function $y(e){const{encoding:t,mark:n}=e,i=t.order;return!Ft(n)&&Re(i)?Nn({model:e,channelDef:i,vgChannel:"zindex",mainRefFn:r=>B(r.value),invalidValueRef:void 0}):{}}function Tn({channel:e,markDef:t,encoding:n={},model:i,bandPosition:r}){const s=`${e}Offset`,o=t[s],a=n[s];if((s==="xOffset"||s==="yOffset")&&a){const u=_s({channel:s,channelDef:a,markDef:t,config:i?.config,scaleName:i.scaleName(s),scale:i.getScaleComponent(s),stack:null,defaultRef:B(o),bandPosition:r});return{offsetType:"encoding",offset:u}}const c=t[s];return c?{offsetType:"visual",offset:c}:{}}function ae(e,t,{defaultPos:n,vgChannel:i}){const{encoding:r,markDef:s,config:o,stack:a}=t,c=r[e],u=r[He(e)],l=t.scaleName(e),f=t.getScaleComponent(e),{offset:d,offsetType:p}=Tn({channel:e,markDef:s,encoding:r,model:t,bandPosition:.5}),h=so({model:t,defaultPos:n,channel:e,scaleName:l,scale:f}),g=!c&&Y(e)&&(r.latitude||r.longitude)?{field:t.getName(e)}:Ey({channel:e,channelDef:c,channel2Def:u,markDef:s,config:o,scaleName:l,scale:f,stack:a,offset:d,defaultRef:h,bandPosition:p==="encoding"?0:void 0});return g?{[i||e]:g}:void 0}function Ey(e){const{channel:t,channelDef:n,scaleName:i,stack:r,offset:s,markDef:o}=e;if(F(n)&&r&&t===r.fieldChannel){if(S(n)){let a=n.bandPosition;if(a===void 0&&o.type==="text"&&(t==="radius"||t==="theta")&&(a=.5),a!==void 0)return Hi({scaleName:i,fieldOrDatumDef:n,startSuffix:"start",bandPosition:a,offset:s})}return Vt(n,i,{suffix:"end"},{offset:s})}return Es(e)}function so({model:e,defaultPos:t,channel:n,scaleName:i,scale:r}){const{markDef:s,config:o}=e;return()=>{const a=jt(n),c=Et(n),u=R(n,s,o,{vgChannel:c});if(u!==void 0)return Zn(n,u);switch(t){case"zeroOrMin":return cl({scaleName:i,scale:r,mode:"zeroOrMin",mainChannel:a,config:o});case"zeroOrMax":return cl({scaleName:i,scale:r,mode:{zeroOrMax:{widthSignal:e.width.signal,heightSignal:e.height.signal}},mainChannel:a,config:o});case"mid":{const l=e[me(n)];return{...l,mult:.5}}}return}}function cl({mainChannel:e,config:t,...n}){const i=_c(n),{mode:r}=n;if(i)return i;switch(e){case"radius":{if(r==="zeroOrMin")return{value:0};const{widthSignal:s,heightSignal:o}=r.zeroOrMax;return{signal:`min(${s},${o})/2`}}case"theta":return r==="zeroOrMin"?{value:0}:{signal:"2*PI"};case"x":return r==="zeroOrMin"?{value:0}:{field:{group:"width"}};case"y":return r==="zeroOrMin"?{field:{group:"height"}}:{value:0}}}const _y={left:"x",center:"xc",right:"x2"},ky={top:"y",middle:"yc",bottom:"y2"};function ul(e,t,n,i="middle"){if(e==="radius"||e==="theta")return Et(e);const r=e==="x"?"align":"baseline",s=R(r,t,n);let o;return $(s)?(x(kp(r)),o=void 0):o=s,e==="x"?_y[o||(i==="top"?"left":"center")]:ky[o||i]}function dr(e,t,{defaultPos:n,defaultPos2:i,range:r}){return r?ll(e,t,{defaultPos:n,defaultPos2:i}):ae(e,t,{defaultPos:n})}function ll(e,t,{defaultPos:n,defaultPos2:i}){const{markDef:r,config:s}=t,o=He(e),a=me(e),c=Cy(t,i,o),u=c[a]?ul(e,r,s):Et(e);return{...ae(e,t,{defaultPos:n,vgChannel:u}),...c}}function Cy(e,t,n){const{encoding:i,mark:r,markDef:s,stack:o,config:a}=e,c=jt(n),u=me(n),l=Et(n),f=i[c],d=e.scaleName(c),p=e.getScaleComponent(c),{offset:h}=n in i||n in s?Tn({channel:n,markDef:s,encoding:i,model:e}):Tn({channel:c,markDef:s,encoding:i,model:e});if(!f&&(n==="x2"||n==="y2")&&(i.latitude||i.longitude)){const m=me(n),y=e.markDef[m];return y!=null?{[m]:{value:y}}:{[l]:{field:e.getName(n)}}}const g=Fy({channel:n,channelDef:f,channel2Def:i[n],markDef:s,config:a,scaleName:d,scale:p,stack:o,offset:h,defaultRef:void 0});return g!==void 0?{[l]:g}:pr(n,s)||pr(n,{[n]:zi(n,s,a.style),[u]:zi(u,s,a.style)})||pr(n,a[r])||pr(n,a.mark)||{[l]:so({model:e,defaultPos:t,channel:n,scaleName:d,scale:p})()}}function Fy({channel:e,channelDef:t,channel2Def:n,markDef:i,config:r,scaleName:s,scale:o,stack:a,offset:c,defaultRef:u}){return F(t)&&a&&e.charAt(0)===a.fieldChannel.charAt(0)?Vt(t,s,{suffix:"start"},{offset:c}):Es({channel:e,channelDef:n,scaleName:s,scale:o,stack:a,markDef:i,config:r,offset:c,defaultRef:u})}function pr(e,t){const n=me(e),i=Et(e);if(t[i]!==void 0)return{[i]:Zn(e,t[i])};if(t[e]!==void 0)return{[i]:Zn(e,t[e])};if(t[n]){const r=t[n];if(Gt(r))x(Sp(n));else return{[n]:Zn(e,r)}}return}function Pt(e,t){const{config:n,encoding:i,markDef:r}=e,s=r.type,o=He(t),a=me(t),c=i[t],u=i[o],l=e.getScaleComponent(t),f=l?l.get("type"):void 0,d=r.orient,p=i[a]??i.size??R("size",r,n,{vgChannel:a}),h=Sa(t),g=s==="bar"&&(t==="x"?d==="vertical":d==="horizontal");return S(c)&&(U(c.bin)||re(c.bin)||c.timeUnit&&!u)&&!(p&&!Gt(p))&&!i[h]&&!J(f)?Ay({fieldDef:c,fieldDef2:u,channel:t,model:e}):(F(c)&&J(f)||g)&&!u?Ty(c,t,e):ll(t,e,{defaultPos:"zeroOrMax",defaultPos2:"zeroOrMin"})}function Ny(e,t,n,i,r,s,o){if(Gt(r))if(n){const c=n.get("type");if(c==="band"){let u=`bandwidth('${t}')`;r.band!==1&&(u=`${r.band} * ${u}`);const l=Ge("minBandSize",{type:o},i);return{signal:l?`max(${Oe(l)}, ${u})`:u}}else r.band!==1&&(x(Tp(c)),r=void 0)}else return{mult:r.band,field:{group:e}};else{if($(r))return r;if(r)return{value:r}}if(n){const c=n.get("range");if(Ct(c)&&j(c.step))return{value:c.step-2}}if(!s){const{bandPaddingInner:c,barBandPaddingInner:u,rectBandPaddingInner:l}=i.scale,f=X(c,o==="bar"?u:l);if($(f))return{signal:`(1 - (${f.signal})) * ${e}`};if(j(f))return{signal:`${1-f} * ${e}`}}const a=sr(i.view,e);return{value:a-2}}function Ty(e,t,n){const{markDef:i,encoding:r,config:s,stack:o}=n,a=i.orient,c=n.scaleName(t),u=n.getScaleComponent(t),l=me(t),f=He(t),d=Sa(t),p=n.scaleName(d),h=n.getScaleComponent(Ti(t)),g=a==="horizontal"&&t==="y"||a==="vertical"&&t==="x";let m;(r.size||i.size)&&(g?m=ee("size",n,{vgChannel:l,defaultRef:B(i.size)}):x(zp(i.type)));const y=!!m,v=Ic({channel:t,fieldDef:e,markDef:i,config:s,scaleType:(u||h)?.get("type"),useVlSizeChannel:g});m=m||{[l]:Ny(l,p||c,h||u,s,v,!!e,i.type)};const k=(u||h)?.get("type")==="band"&&Gt(v)&&!y?"top":"middle",_=ul(t,i,s,k),T=_==="xc"||_==="yc",{offset:L,offsetType:ue}=Tn({channel:t,markDef:i,encoding:r,model:n,bandPosition:T?.5:0}),ne=Es({channel:t,channelDef:e,markDef:i,config:s,scaleName:c,scale:u,stack:o,offset:L,defaultRef:so({model:n,defaultPos:"mid",channel:t,scaleName:c,scale:u}),bandPosition:T?ue==="encoding"?0:.5:$(v)?{signal:`(1-${v})/2`}:Gt(v)?(1-v.band)/2:0});if(l)return{[_]:ne,...m};{const mt=Et(f),de=m[l],yt=L?{...de,offset:L}:de;return{[_]:ne,[mt]:E(ne)?[ne[0],{...ne[1],offset:yt}]:{...ne,offset:yt}}}}function fl(e,t,n,i,r,s,o){if(ga(e))return 0;const a=e==="x"||e==="y2",c=a?-t/2:t/2;if($(n)||$(r)||$(i)||s){const u=Oe(n),l=Oe(r),f=Oe(i),d=Oe(s),p=a?"":"-",h=s?`(${o} < ${d} ? ${p}0.5 * (${d} - (${o})) : ${c})`:c,g=f?`${f} + `:"",m=u?`(${u} ? -1 : 1) * `:"",y=l?`(${l} + ${h})`:h;return{signal:g+m+y}}else return r=r||0,i+(n?-r-c:+r+c)}function Ay({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=Ic({channel:n,fieldDef:e,markDef:s,config:r,scaleType:u}),d=i.component.axes[n]?.[0],p=d?.get("translate")??.5,h=Y(n)?R("binSpacing",s,r)??0:0,g=He(n),m=Et(n),y=Et(g),v=Ge("minBandSize",s,r),{offset:k}=Tn({channel:n,markDef:s,encoding:o,model:i,bandPosition:0}),{offset:_}=Tn({channel:g,markDef:s,encoding:o,model:i,bandPosition:0}),T=nh({fieldDef:e,scaleName:c}),L=fl(n,h,l,p,k,v,T),ue=fl(g,h,l,p,_??k,v,T),ne=$(f)?{signal:`(1-${f.signal})/2`}:Gt(f)?(1-f.band)/2:.5,mt=Nt({fieldDef:e,fieldDef2:t,markDef:s,config:r});if(U(e.bin)||e.timeUnit){const de=e.timeUnit&&mt!==.5;return{[y]:dl({fieldDef:e,scaleName:c,bandPosition:ne,offset:ue,useRectOffsetField:de}),[m]:dl({fieldDef:e,scaleName:c,bandPosition:$(ne)?{signal:`1-${ne.signal}`}:1-ne,offset:L,useRectOffsetField:de})}}else if(re(e.bin)){const de=Vt(e,c,{},{offset:ue});if(S(t))return{[y]:de,[m]:Vt(t,c,{},{offset:L})};if(Ut(e.bin)&&e.bin.step)return{[y]:de,[m]:{signal:`scale("${c}", ${w(e,{expr:"datum"})} + ${e.bin.step})`,offset:L}}}x(Qa(g));return}function dl({fieldDef:e,scaleName:t,bandPosition:n,offset:i,useRectOffsetField:r}){return Hi({scaleName:t,fieldOrDatumDef:e,bandPosition:n,offset:i,...r?{startSuffix:ur,endSuffix:lr}:{}})}const Oy=new Set(["aria","width","height"]);function ke(e,t){const{fill:n=void 0,stroke:i=void 0}=t.color==="include"?al(e):{};return{...Py(e.markDef,t),...pl("fill",n),...pl("stroke",i),...ee("opacity",e),...ee("fillOpacity",e),...ee("strokeOpacity",e),...ee("strokeWidth",e),...ee("strokeDash",e),...$y(e),...rl(e),...ro(e,"href"),...Sy(e)}}function pl(e,t){return t?{[e]:t}:{}}function Py(e,t){return Xd.reduce((n,i)=>(!Oy.has(i)&&e[i]!==void 0&&t[i]!=="ignore"&&(n[i]=B(e[i])),n),{})}function oo(e){const{config:t,markDef:n}=e,i=new Set;if(e.forEachFieldDef((r,s)=>{let o;if(!qe(s)||!(o=e.getScaleType(s)))return;const a=Oi(r.aggregate),c=$s({scaleChannel:s,markDef:n,config:t,scaleType:o,isCountAggregate:a});if(Jg(c)){const u=e.vgField(s,{expr:"datum",binSuffix:e.stack?.impute?"mid":void 0});u&&i.add(u)}}),i.size>0){const r=[...i].map(s=>Mi(s,!0)).join(" && ");return{defined:{signal:r}}}return}function gl(e,t){return t!==void 0?{[e]:B(t)}:void 0}const ao="voronoi",hl={defined:e=>e.type==="point"&&e.nearest,parse:(e,t)=>{if(t.events)for(const n of t.events)n.markname=e.getName(ao)},marks:(e,t,n)=>{const{x:i,y:r}=t.project.hasChannel,s=e.mark;if(Ft(s))return x(Jd(s)),n;const o={name:e.getName(ao),type:"path",interactive:!0,from:{data:e.getName("marks")},encode:{update:{fill:{value:"transparent"},strokeWidth:{value:.35},stroke:{value:"transparent"},isVoronoi:{value:!0},...rl(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.includes(ao)&&(c=!0)}),c||n.splice(a+1,0,o),n}},ml={defined:e=>e.type==="point"&&e.resolve==="global"&&e.bind&&e.bind!=="scales"&&!js(e.bind),parse:(e,t,n)=>kl(t,n),topLevelSignals:(e,t,n)=>{const i=t.name,r=t.project,s=t.bind,o=t.init&&t.init[0],a=hl.defined(t)?"(item().isVoronoi ? datum.datum : datum)":"datum";return r.items.forEach((c,u)=>{const l=W(`${i}_${c.field}`),f=n.filter(d=>d.name===l);f.length||n.unshift({name:l,...o?{init:Qt(o[u])}:{value:null},on:t.events?[{events:t.events,update:`datum && item().mark.marktype !== 'group' ? ${a}[${O(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.find(u=>u.name===i+zt),o=i+oi,a=r.items.map(u=>W(`${i}_${u.field}`)),c=a.map(u=>`${u} !== null`).join(" && ");return a.length&&(s.update=`${c} ? {fields: ${o}, values: [${a.join(", ")}]} : null`),delete s.value,delete s.on,n}},gr="_toggle",yl={defined:e=>e.type==="point"&&!!e.toggle,signals:(e,t,n)=>n.concat({name:t.name+gr,value:!1,on:[{events:t.events,update:t.toggle}]}),modifyExpr:(e,t)=>{const n=t.name+zt,i=t.name+gr;return`${i} ? null : ${n}, `+(t.resolve==="global"?`${i} ? null : true, `:`${i} ? null : {unit: ${Jt(e)}}, `)+`${i} ? ${n} : null`}},zy={defined:e=>e.clear!==void 0&&e.clear!==!1,parse:(e,t)=>{t.clear&&(t.clear=N(t.clear)?cn(t.clear,"view"):t.clear)},topLevelSignals:(e,t,n)=>{if(ml.defined(t))for(const i of t.project.items){const r=n.findIndex(s=>s.name===W(`${t.name}_${i.field}`));r!==-1&&n[r].on.push({events:t.clear,update:"null"})}return n},signals:(e,t,n)=>{function i(r,s){r!==-1&&n[r].on&&n[r].on.push({events:t.clear,update:s})}if(t.type==="interval")for(const r of t.project.items){const s=n.findIndex(o=>o.name===r.signals.visual);if(i(s,"[0, 0]"),s===-1){const o=n.findIndex(a=>a.name===r.signals.data);i(o,"null")}}else{let r=n.findIndex(s=>s.name===t.name+zt);i(r,"null"),yl.defined(t)&&(r=n.findIndex(s=>s.name===t.name+gr),i(r,"false"))}return n}},bl={defined:e=>{const t=e.resolve==="global"&&e.bind&&js(e.bind),n=e.project.items.length===1&&e.project.items[0].field!==Le;return t&&!n&&x(ip),t&&n},parse:(e,t,n)=>{const i=C(n);if(i.select=N(i.select)?{type:i.select,toggle:t.toggle}:{...i.select,toggle:t.toggle},kl(t,i),Rr(n.select)&&(n.select.on||n.select.clear)){const o='event.item && indexof(event.item.mark.role, "legend") < 0';for(const a of t.events)a.filter=V(a.filter??[]),a.filter.includes(o)||a.filter.push(o)}const r=Us(t.bind)?t.bind.legend:"click",s=N(r)?cn(r,"view"):V(r);t.bind={legend:{merge:s}}},topLevelSignals:(e,t,n)=>{const i=t.name,r=Us(t.bind)&&t.bind.legend,s=o=>a=>{const c=C(a);return c.markname=o,c};for(const o of t.project.items){if(!o.hasLegend)continue;const a=`${W(o.field)}_legend`,c=`${i}_${a}`,u=n.filter(l=>l.name===c);if(u.length===0){const l=r.merge.map(s(`${a}_symbols`)).concat(r.merge.map(s(`${a}_labels`))).concat(r.merge.map(s(`${a}_entries`)));n.unshift({name:c,...t.init?{}:{value:null},on:[{events:l,update:"isDefined(datum.value) ? datum.value : item().items[0].items[0].datum.value",force:!0},{events:r.merge,update:`!event.item || !datum ? null : ${c}`,force:!0}]})}}return n},signals:(e,t,n)=>{const i=t.name,r=t.project,s=n.find(d=>d.name===i+zt),o=i+oi,a=r.items.filter(d=>d.hasLegend).map(d=>W(`${i}_${W(d.field)}_legend`)),c=a.map(d=>`${d} !== null`).join(" && "),u=`${c} ? {fields: ${o}, values: [${a.join(", ")}]} : null`;t.events&&a.length>0?s.on.push({events:a.map(d=>({signal:d})),update:u}):a.length>0&&(s.update=u,delete s.value,delete s.on);const l=n.find(d=>d.name===i+gr),f=Us(t.bind)&&t.bind.legend;return l&&(t.events?l.on.push({...l.on[0],events:f}):l.on[0].events=f),n}};function Ry(e,t,n){const i=e.fieldDef(t)?.field;for(const r of ie(e.component.selection??{})){const s=r.project.hasField[i]??r.project.hasChannel[t];if(s&&bl.defined(r)){const o=n.get("selections")??[];o.push(r.name),n.set("selections",o,!1),s.hasLegend=!0}}}const xl="_translate_anchor",Sl="_translate_delta",Iy={defined:e=>e.type==="interval"&&e.translate,signals:(e,t,n)=>{const i=t.name,r=gt.defined(t),s=i+xl,{x:o,y:a}=t.project.hasChannel;let c=cn(t.translate,"scope");return r||(c=c.map(u=>(u.between[0].markname=i+Fn,u))),n.push({name:s,value:{},on:[{events:c.map(u=>u.between[0]),update:"{x: x(unit), y: y(unit)"+(o!==void 0?`, extent_x: ${r?no(e,H):`slice(${o.signals.visual})`}`:"")+(a!==void 0?`, extent_y: ${r?no(e,Q):`slice(${a.signals.visual})`}`:"")+"}"}]},{name:i+Sl,value:{},on:[{events:c,update:`{x: ${s}.x - x(unit), y: ${s}.y - y(unit)}`}]}),o!==void 0&&vl(e,t,o,"width",n),a!==void 0&&vl(e,t,a,"height",n),n}};function vl(e,t,n,i,r){const s=t.name,o=s+xl,a=s+Sl,c=n.channel,u=gt.defined(t),l=r.find(T=>T.name===n.signals[u?"data":"visual"]),f=e.getSizeSignalRef(i).signal,d=e.getScaleComponent(c),p=d&&d.get("type"),h=d&&d.get("reverse"),g=u?c===H?h?"":"-":h?"-":"":"",m=`${o}.extent_${c}`,y=`${g}${a}.${c} / ${u?`${f}`:`span(${m})`}`,v=!u||!d?"panLinear":p==="log"?"panLog":p==="symlog"?"panSymlog":p==="pow"?"panPow":"panLinear",k=u?p==="pow"?`, ${d.get("exponent")??1}`:p==="symlog"?`, ${d.get("constant")??1}`:"":"",_=`${v}(${m}, ${y}${k})`;l.on.push({events:{signal:a},update:u?_:`clampRange(${_}, 0, ${f})`})}const wl="_zoom_anchor",$l="_zoom_delta",Ly={defined:e=>e.type==="interval"&&e.zoom,signals:(e,t,n)=>{const i=t.name,r=gt.defined(t),s=i+$l,{x:o,y:a}=t.project.hasChannel,c=O(e.scaleName(H)),u=O(e.scaleName(Q));let l=cn(t.zoom,"scope");return r||(l=l.map(f=>(f.markname=i+Fn,f))),n.push({name:i+wl,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&&El(e,t,o,"width",n),a!==void 0&&El(e,t,a,"height",n),n}};function El(e,t,n,i,r){const s=t.name,o=n.channel,a=gt.defined(t),c=r.find(v=>v.name===n.signals[a?"data":"visual"]),u=e.getSizeSignalRef(i).signal,l=e.getScaleComponent(o),f=l&&l.get("type"),d=a?no(e,o):c.name,p=s+$l,h=`${s}${wl}.${o}`,g=!a||!l?"zoomLinear":f==="log"?"zoomLog":f==="symlog"?"zoomSymlog":f==="pow"?"zoomPow":"zoomLinear",m=a?f==="pow"?`, ${l.get("exponent")??1}`:f==="symlog"?`, ${l.get("constant")??1}`:"":"",y=`${g}(${d}, ${h}, ${p}${m})`;c.on.push({events:{signal:p},update:a?y:`clampRange(${y}, 0, ${u})`})}const Zt="_store",zt="_tuple",My="_modify",_l="vlSelectionResolve",hr=[xy,yy,hy,yl,ml,gt,bl,zy,Iy,Ly,hl];function Dy(e){let t=e.parent;for(;t&&!ve(t);)t=t.parent;return t}function Jt(e,{escape:t}={escape:!0}){let n=t?O(e.name):e.name;const i=Dy(e);if(i){const{facet:r}=i;for(const s of _e)r[s]&&(n+=` + '__facet_${s}_' + (facet[${O(i.vgField(s))}])`)}return n}function co(e){return ie(e.component.selection??{}).reduce((t,n)=>t||n.project.hasSelectionId,!1)}function kl(e,t){(vi(t.select)||!t.select.on)&&delete e.events,(vi(t.select)||!t.select.clear)&&delete e.clear,(vi(t.select)||!t.select.toggle)&&delete e.toggle}function uo(e){const t=[];return e.type==="Identifier"?[e.name]:e.type==="Literal"?[e.value]:(e.type==="MemberExpression"&&(t.push(...uo(e.object)),t.push(...uo(e.property))),t)}function Cl(e){return e.object.type==="MemberExpression"?Cl(e.object):e.object.name==="datum"}function Fl(e){const t=Vf(e),n=new Set;return t.visit(i=>{i.type==="MemberExpression"&&Cl(i)&&n.add(uo(i).slice(1).join("."))}),n}class An extends I{clone(){return new An(null,this.model,C(this.filter))}constructor(t,n,i){super(t);this.model=n,this.filter=i,this.expr=mr(this.model,this.filter,this),this._dependentFields=Fl(this.expr)}dependentFields(){return this._dependentFields}producedFields(){return new Set}assemble(){return{type:"filter",expr:this.expr}}hash(){return`Filter ${this.expr}`}}function jy(e,t){const n={},i=e.config.selection;if(!t||!t.length)return n;for(const r of t){const s=W(r.name),o=r.select,a=N(o)?o:o.type,c=z(o)?C(o):{type:a},u=i[a];for(const d in u){if(d==="fields"||d==="encodings")continue;d==="mark"&&(c[d]={...u[d],...c[d]}),(c[d]===void 0||c[d]===!0)&&(c[d]=C(u[d]??c[d]))}const l=n[s]={...c,name:s,type:a,init:r.value,bind:r.bind,events:N(c.on)?cn(c.on,"scope"):V(C(c.on))},f=C(r);for(const d of hr)d.defined(l)&&d.parse&&d.parse(e,l,f)}return n}function Nl(e,t,n,i="datum"){const r=N(t)?t:t.param,s=W(r),o=O(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"?")":`, ${O(a.resolve)})`,l=`${c}${o}, ${i}${u}`,f=`length(data(${o}))`;return t.empty===!1?`${f} && ${l}`:`!${f} || ${l}`}function Tl(e,t,n){const i=W(t),r=n.encoding;let s=n.field,o;try{o=e.getSelectionComponent(i,t)}catch(a){return i}if(!r&&!s)s=o.project.items[0].field,o.project.items.length>1&&x(`A "field" or "encoding" must be specified when using a selection as a scale domain. Using "field": ${O(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 ${O(r)} encoding found for selection ${O(n.param)}. Using "field": ${O(s)}.`)):s=a[0].field}return`${o.name}[${O(we(s))}]`}function Uy(e,t){for(const[n,i]of bt(e.component.selection??{})){const r=e.getName(`lookup_${n}`);e.component.data.outputNodes[r]=i.materialized=new ye(new An(t,e,{param:n}),r,G.Lookup,e.component.data.outputNodeRefCounts)}}function mr(e,t,n){return Wn(t,i=>N(i)?i:yg(i)?Nl(e,i,n):uc(i))}function By(e,t){return e?E(e)&&!kt(e)?e.map(n=>As(n,t)).join(", "):e:void 0}function lo(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 ci(e,t,n,i={header:!1}){const{disable:r,orient:s,scale:o,labelExpr:a,title:c,zindex:u,...l}=e.combine();if(r)return;for(const f in l){const d=wh[f],p=l[f];if(d&&d!==t&&d!=="both")delete l[f];else if(ri(p)){const{condition:h,...g}=p,m=V(h),y=Vc[f];if(y){const{vgProp:v,part:k}=y,_=[...m.map(T=>{const{test:L,...ue}=T;return{test:mr(null,L),...ue}}),g];lo(l,k,v,_),delete l[f]}else if(y===null){const v={signal:m.map(k=>{const{test:_,...T}=k;return`${mr(null,_)} ? ${Ta(T)} : `}).join("")+Ta(g)};l[f]=v}}else if($(p)){const h=Vc[f];if(h){const{vgProp:g,part:m}=h;lo(l,m,g,p),delete l[f]}}A(["labelAlign","labelBaseline"],f)&&l[f]===null&&delete l[f]}if(t==="grid"){if(!l.grid)return;if(l.encode){const{grid:f}=l.encode;l.encode={...f?{grid:f}:{}},M(l.encode)&&delete l.encode}return{scale:o,orient:s,...l,domain:!1,labels:!1,aria:!1,maxExtent:0,minExtent:0,ticks:!1,zindex:X(u,0)}}else{if(!i.header&&e.mainExtracted)return;if(a!==void 0){let d=a;l.encode?.labels?.update&&$(l.encode.labels.update.text)&&(d=Lt(a,"datum.label",l.encode.labels.update.text.signal)),lo(l,"labels","text",{signal:d})}if(l.labelAlign===null&&delete l.labelAlign,l.encode){for(const d of Xc)e.hasAxisPart(d)||delete l.encode[d];M(l.encode)&&delete l.encode}const f=By(c,n);return{scale:o,orient:s,grid:!1,...f?{title:f}:{},...l,...n.aria===!1?{aria:!1}:{},zindex:X(u,0)}}}function Al(e){const{axes:t}=e.component,n=[];for(const i of at)if(t[i]){for(const r of t[i])if(!r.get("disable")&&!r.get("gridScale")){const s=i==="x"?"height":"width",o=e.getSizeSignalRef(s).signal;s!==o&&n.push({name:s,update:o})}}return n}function Wy(e,t){const{x:n=[],y:i=[]}=e;return[...n.map(r=>ci(r,"grid",t)),...i.map(r=>ci(r,"grid",t)),...n.map(r=>ci(r,"main",t)),...i.map(r=>ci(r,"main",t))].filter(r=>r)}function Ol(e,t,n,i){return Object.assign.apply(null,[{},...e.map(r=>{if(r==="axisOrient"){const s=n==="x"?"bottom":"left",o=t[n==="x"?"axisBottom":"axisLeft"]||{},a=t[n==="x"?"axisTop":"axisRight"]||{},c=new Set([...b(o),...b(a)]),u={};for(const l of c.values())u[l]={signal:`${i.signal} === "${s}" ? ${Oe(o[l])} : ${Oe(a[l])}`};return u}return t[r]})])}function Hy(e,t,n,i){const r=t==="band"?["axisDiscrete","axisBand"]:t==="point"?["axisDiscrete","axisPoint"]:gc(t)?["axisQuantitative"]:t==="time"||t==="utc"?["axisTemporal"]:[],s=e==="x"?"axisX":"axisY",o=$(n)?"axisOrient":`axis${Hn(n)}`,a=[...r,...r.map(u=>s+u.substr(4))],c=["axis",o,s];return{vlOnlyAxisConfig:Ol(a,i,e,n),vgAxisConfig:Ol(c,i,e,n),axisConfigStyle:qy([...c,...a],i)}}function qy(e,t){const n=[{}];for(const i of e){let r=t[i]?.style;if(r){r=V(r);for(const s of r)n.push(t.style[s])}}return Object.assign.apply(null,n)}function fo(e,t,n,i={}){const r=Oa(e,n,t);if(r!==void 0)return{configFrom:"style",configValue:r};for(const s of["vlOnlyAxisConfig","vgAxisConfig","axisConfigStyle"])if(i[s]?.[e]!==void 0)return{configFrom:s,configValue:i[s][e]};return{}}const Pl={scale:({model:e,channel:t})=>e.scaleName(t),format:({format:e})=>e,formatType:({formatType:e})=>e,grid:({fieldOrDatumDef:e,axis:t,scaleType:n})=>t.grid??Gy(n,e),gridScale:({model:e,channel:t})=>Vy(e,t),labelAlign:({axis:e,labelAngle:t,orient:n,channel:i})=>e.labelAlign||Rl(t,n,i),labelAngle:({labelAngle:e})=>e,labelBaseline:({axis:e,labelAngle:t,orient:n,channel:i})=>e.labelBaseline||zl(t,n,i),labelFlush:({axis:e,fieldOrDatumDef:t,channel:n})=>e.labelFlush??Yy(t.type,n),labelOverlap:({axis:e,fieldOrDatumDef:t,scaleType:n})=>e.labelOverlap??Ky(t.type,n,S(t)&&!!t.timeUnit,S(t)?t.sort:void 0),orient:({orient:e})=>e,tickCount:({channel:e,model:t,axis:n,fieldOrDatumDef:i,scaleType:r})=>{const s=e==="x"?"width":e==="y"?"height":void 0,o=s?t.getSizeSignalRef(s):void 0;return n.tickCount??Zy({fieldOrDatumDef:i,scaleType:r,size:o,values:n.values})},tickMinStep:Jy,title:({axis:e,model:t,channel:n})=>{if(e.title!==void 0)return e.title;const i=Il(t,n);if(i!==void 0)return i;const r=t.typedFieldDef(n),s=n==="x"?"x2":"y2",o=t.fieldDef(s);return za(r?[Rc(r)]:[],S(o)?[Rc(o)]:[])},values:({axis:e,fieldOrDatumDef:t})=>eb(e,t),zindex:({axis:e,fieldOrDatumDef:t,mark:n})=>e.zindex??tb(n,t)};function Gy(e,t){return!J(e)&&S(t)&&!U(t?.bin)&&!re(t?.bin)}function Vy(e,t){const n=t==="x"?"y":"x";return e.getScaleComponent(n)?e.scaleName(n):void 0}function Xy(e,t,n,i,r){const s=t?.labelAngle;if(s!==void 0)return $(s)?s:qn(s);{const{configValue:o}=fo("labelAngle",i,t?.style,r);return o!==void 0?qn(o):n===H&&A([ys,ms],e.type)&&!(S(e)&&e.timeUnit)?270:void 0}}function po(e){return`(((${e.signal} % 360) + 360) % 360)`}function zl(e,t,n,i){if(e!==void 0)if(n==="x"){if($(e)){const r=po(e),s=$(t)?`(${t.signal} === "top")`:t==="top";return{signal:`(45 < ${r} && ${r} < 135) || (225 < ${r} && ${r} < 315) ? "middle" :(${r} <= 45 || 315 <= ${r}) === ${s} ? "bottom" : "top"`}}if(45{if(!Yt(i))return;if(zc(i.sort)){const{field:s,timeUnit:o}=i,a=i.sort,c=a.map((u,l)=>`${uc({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 ${P(this.transform)}`}}function Pn(e,t,n){return w(e,{prefix:t,suffix:"sort_index",...n})}function yr(e,t){return A(["top","bottom"],t)?"column":A(["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 br(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 go=["row","column"],ho=["header","footer"];function nb(e,t){const n=e.component.layoutHeaders[t].title,i=e.config?e.config:void 0,r=e.component.layoutHeaders[t].facetFieldDef?e.component.layoutHeaders[t].facetFieldDef:void 0,{titleAnchor:s,titleAngle:o,titleOrient:a}=br(["titleAnchor","titleAngle","titleOrient"],r.header,i,t),c=yr(t,a),u=qn(o);return{name:`${t}-title`,type:"group",role:`${c}-title`,title:{text:n,...t==="row"?{orient:"left"}:{},style:"guide-title",...Ml(u,c),...Ll(c,u,s),...Dl(i,r,t,Hh,gu)}}}function Ll(e,t,n="middle"){switch(n){case"start":return{align:"left"};case"end":return{align:"right"}}const i=Rl(t,e==="row"?"left":"top",e==="row"?"y":"x");return i?{align:i}:{}}function Ml(e,t){const n=zl(e,t==="row"?"left":"top",t==="row"?"y":"x",!0);return n?{baseline:n}:{}}function ib(e,t){const n=e.component.layoutHeaders[t],i=[];for(const r of ho)if(n[r])for(const s of n[r]){const o=sb(e,t,r,n,s);o!=null&&i.push(o)}return i}function rb(e,t){const{sort:n}=e;return lt(n)?{field:w(n,{expr:"datum"}),order:n.order??"ascending"}:E(n)?{field:Pn(e,t,{expr:"datum"}),order:"ascending"}:{field:w(e,{expr:"datum"}),order:n??"ascending"}}function mo(e,t,n){const{format:i,formatType:r,labelAngle:s,labelAnchor:o,labelOrient:a,labelExpr:c}=br(["format","formatType","labelAngle","labelAnchor","labelOrient","labelExpr"],e.header,n,t),u=ks({fieldOrDatumDef:e,format:i,formatType:r,expr:"parent",config:n}).signal,l=yr(t,a);return{text:{signal:c?Lt(Lt(c,"datum.label",u),"datum.value",w(e,{expr:"parent"})):u},...t==="row"?{orient:"left"}:{},style:"guide-label",frame:"group",...Ml(s,l),...Ll(l,s,o),...Dl(n,e,t,qh,hu)}}function sb(e,t,n,i,r){if(r){let s=null;const{facetFieldDef:o}=i,a=e.config?e.config:void 0;if(o&&r.labels){const{labelOrient:f}=br(["labelOrient"],o.header,a,t);(t==="row"&&!A(["top","bottom"],f)||t==="column"&&!A(["left","right"],f))&&(s=mo(o,t,a))}const c=ve(e)&&!ei(e.facet),u=r.axes,l=u?.length>0;if(s||l){const f=t==="row"?"height":"width";return{name:e.getName(`${t}_${n}`),type:"group",role:`${t}-${n}`,...i.facetFieldDef?{from:{data:e.getName(`${t}_domain`)},sort:rb(o,t)}:{},...l&&c?{from:{data:e.getName(`facet_domain_${t}`)}}:{},...s?{title:s}:{},...r.sizeSignal?{encode:{update:{[f]:r.sizeSignal}}}:{},...l?{axes:u}:{}}}}return null}const ob={column:{start:0,end:1},row:{start:1,end:0}};function ab(e,t){return ob[t][e]}function cb(e,t){const n={};for(const i of _e){const r=e[i];if(r?.facetFieldDef){const{titleAnchor:s,titleOrient:o}=br(["titleAnchor","titleOrient"],r.facetFieldDef.header,t,i),a=yr(i,o),c=ab(s,a);c!==void 0&&(n[a]=c)}}return M(n)?void 0:n}function Dl(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 yo(e){return[...xr(e,"width"),...xr(e,"height"),...xr(e,"childWidth"),...xr(e,"childHeight")]}function xr(e,t){const n=t==="width"?"x":"y",i=e.component.layoutSize.get(t);if(!i||i==="merged")return[];const r=e.getSizeSignalRef(t).signal;if(i==="step"){const s=e.getScaleComponent(n);if(s){const o=s.get("type"),a=s.get("range");if(J(o)&&Ct(a)){const c=e.scaleName(n);if(ve(e.parent)){const u=e.parent.component.resolve;if(u.scale[n]==="independent")return[jl(c,a)]}return[jl(c,a),{name:r,update:Ul(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=qs(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 jl(e,t){const n=`${e}_step`;return $(t.step)?{name:n,update:t.step.signal}:{name:n,value:t.step}}function Ul(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 Bl(e){return e==="childWidth"?"width":e==="childHeight"?"height":e}function Wl(e,t){return b(e).reduce((n,i)=>({...n,...Nn({model:t,channelDef:e[i],vgChannel:i,mainRefFn:r=>B(r.value),invalidValueRef:void 0})}),{})}function Hl(e,t){if(ve(t))return e==="theta"?"independent":"shared";if(Mn(t))return"shared";if(Po(t))return Y(e)||e==="theta"||e==="radius"?"independent":"shared";throw new Error("invalid model type for resolve")}function bo(e,t){const n=e.scale[t],i=Y(t)?"axis":"legend";return n==="independent"?(e[i][t]==="shared"&&x(Dp(t)),"independent"):e[i][t]||"shared"}const ub={...Xh,disable:1,labelExpr:1,selections:1,opacity:1,shape:1,stroke:1,fill:1,size:1,strokeWidth:1,strokeDash:1,encode:1},ql=b(ub);class lb extends pt{}const Gl={symbols:fb,gradient:db,labels:pb,entries:gb};function fb(e,{fieldOrDatumDef:t,model:n,channel:i,legendCmpt:r,legendType:s}){if(s!=="symbol")return;const{markDef:o,encoding:a,config:c,mark:u}=n,l=o.filled&&u!=="trail";let f={...Kd({},n,Wg),...al(n,{filled:l})};const d=r.get("symbolOpacity")??c.legend.symbolOpacity,p=r.get("symbolFillColor")??c.legend.symbolFillColor,h=r.get("symbolStrokeColor")??c.legend.symbolStrokeColor,g=d===void 0?Vl(a.opacity)??o.opacity:void 0;if(f.fill){if(i==="fill"||l&&i===ge)delete f.fill;else if(f.fill.field)p?delete f.fill:(f.fill=B(c.legend.symbolBaseFillColor??"black"),f.fillOpacity=B(g??1));else if(E(f.fill)){const m=xo(a.fill??a.color)??o.fill??(l&&o.color);m&&(f.fill=B(m))}}if(f.stroke){if(i==="stroke"||!l&&i===ge)delete f.stroke;else if(f.stroke.field||h)delete f.stroke;else if(E(f.stroke)){const m=X(xo(a.stroke||a.color),o.stroke,l?o.color:void 0);m&&(f.stroke={value:m})}}if(i!==ot){const m=S(t)&&Yl(n,r,t);m?f.opacity=[{test:m,...B(g??1)},B(c.legend.unselectedOpacity)]:g&&(f.opacity=B(g))}return f={...f,...e},M(f)?void 0:f}function db(e,{model:t,legendType:n,legendCmpt:i}){if(n!=="gradient")return;const{config:r,markDef:s,encoding:o}=t;let a={};const c=i.get("gradientOpacity")??r.legend.gradientOpacity,u=c===void 0?Vl(o.opacity)||s.opacity:void 0;return u&&(a.opacity=B(u)),a={...a,...e},M(a)?void 0:a}function pb(e,{fieldOrDatumDef:t,model:n,channel:i,legendCmpt:r}){const s=n.legend(i)||{},o=n.config,a=S(t)?Yl(n,r,t):void 0,c=a?[{test:a,value:1},{value:o.legend.unselectedOpacity}]:void 0,{format:u,formatType:l}=s;let f;Xt(l)?f=ze({fieldOrDatumDef:t,field:"datum.value",format:u,formatType:l,config:o}):u===void 0&&l===void 0&&o.customFormatTypes&&(t.type==="quantitative"&&o.numberFormatType?f=ze({fieldOrDatumDef:t,field:"datum.value",format:o.numberFormat,formatType:o.numberFormatType,config:o}):t.type==="temporal"&&o.timeFormatType&&S(t)&&t.timeUnit===void 0&&(f=ze({fieldOrDatumDef:t,field:"datum.value",format:o.timeFormat,formatType:o.timeFormatType,config:o})));const d={...c?{opacity:c}:{},...f?{text:f}:{},...e};return M(d)?void 0:d}function gb(e,{legendCmpt:t}){const n=t.get("selections");return n?.length?{...e,fill:{value:"transparent"}}:e}function Vl(e){return Xl(e,(t,n)=>Math.max(t,n.value))}function xo(e){return Xl(e,(t,n)=>X(t,n.value))}function Xl(e,t){return lh(e)?V(e.condition).reduce(t,e.value):Re(e)?e.value:void 0}function Yl(e,t,n){const i=t.get("selections");if(!i?.length)return;const r=O(n.field);return i.map(s=>{const o=O(W(s)+Zt);return`(!length(data(${o})) || (${s}[${r}] && indexof(${s}[${r}], datum.value) >= 0))`}).join(" || ")}const Kl={direction:({direction:e})=>e,format:({fieldOrDatumDef:e,legend:t,config:n})=>{const{format:i,formatType:r}=t;return Nc(e,e.type,i,r,n,!1)},formatType:({legend:e,fieldOrDatumDef:t,scaleType:n})=>{const{formatType:i}=e;return Tc(i,t,n)},gradientLength:e=>{const{legend:t,legendConfig:n}=e;return t.gradientLength??n.gradientLength??vb(e)},labelOverlap:({legend:e,legendConfig:t,scaleType:n})=>e.labelOverlap??t.labelOverlap??wb(n),symbolType:({legend:e,markDef:t,channel:n,encoding:i})=>e.symbolType??mb(t.type,n,i.shape,t.shape),title:({fieldOrDatumDef:e,config:t})=>$n(e,t,{allowDisabling:!0}),type:({legendType:e,scaleType:t,channel:n})=>{if(mn(n)&&Xe(t)){if(e==="gradient")return}else if(e==="symbol")return;return e},values:({fieldOrDatumDef:e,legend:t})=>hb(t,e)};function hb(e,t){const n=e.values;return E(n)?Gc(t,n):$(n)?n:void 0}function mb(e,t,n,i){if(t!=="shape"){const r=xo(n)??i;if(r)return r}switch(e){case"bar":case"rect":case"image":case"square":return"square";case"line":case"trail":case"rule":return"stroke";case"arc":case"point":case"circle":case"tick":case"geoshape":case"area":case"text":return"circle"}}function yb(e){const{legend:t}=e;return X(t.type,bb(e))}function bb({channel:e,timeUnit:t,scaleType:n}){if(mn(e)){if(A(["quarter","month","day"],t))return"symbol";if(Xe(n))return"gradient"}return"symbol"}function xb({legendConfig:e,legendType:t,orient:n,legend:i}){return i.direction??e[t?"gradientDirection":"symbolDirection"]??Sb(n,t)}function Sb(e,t){switch(e){case"top":case"bottom":return"horizontal";case"left":case"right":case"none":case void 0:return;default:return t==="gradient"?"horizontal":void 0}}function vb({legendConfig:e,model:t,direction:n,orient:i,scaleType:r}){const{gradientHorizontalMaxLength:s,gradientHorizontalMinLength:o,gradientVerticalMaxLength:a,gradientVerticalMinLength:c}=e;return Xe(r)?n==="horizontal"?i==="top"||i==="bottom"?Ql(t,"width",o,s):o:Ql(t,"height",c,a):void 0}function Ql(e,t,n,i){const r=e.getSizeSignalRef(t).signal;return{signal:`clamp(${r}, ${n}, ${i})`}}function wb(e){return A(["quantile","threshold","log","symlog"],e)?"greedy":void 0}function Zl(e){const t=q(e)?$b(e):Cb(e);return e.component.legends=t,t}function $b(e){const{encoding:t}=e,n={};for(const i of[ge,...yu]){const r=K(t[i]);if(!r||!e.getScaleComponent(i))continue;if(i===he&&S(r)&&r.type===xn)continue;n[i]=kb(e,i)}return n}function Eb(e,t){const n=e.scaleName(t);if(e.mark==="trail"){if(t==="color")return{stroke:n};if(t==="size")return{strokeWidth:n}}return t==="color"?e.markDef.filled?{fill:n}:{stroke:n}:{[t]:n}}function _b(e,t,n,i){switch(t){case"disable":return n!==void 0;case"values":return!!n?.values;case"title":if(t==="title"&&e===i?.title)return!0}return e===(n||{})[t]}function kb(e,t){let n=e.legend(t);const{markDef:i,encoding:r,config:s}=e,o=s.legend,a=new lb({},Eb(e,t));Ry(e,t,a);const c=n!==void 0?!n:o.disable;if(a.set("disable",c,n!==void 0),c)return a;n=n||{};const u=e.getScaleComponent(t).get("type"),l=K(r[t]),f=S(l)?Z(l.timeUnit)?.unit:void 0,d=n.orient||s.legend.orient||"right",p=yb({legend:n,channel:t,timeUnit:f,scaleType:u}),h=xb({legend:n,legendType:p,orient:d,legendConfig:o}),g={legend:n,channel:t,model:e,markDef:i,encoding:r,fieldOrDatumDef:l,legendConfig:o,config:s,scaleType:u,orient:d,legendType:p,direction:h};for(const _ of ql){if(p==="gradient"&&_.startsWith("symbol")||p==="symbol"&&_.startsWith("gradient"))continue;const T=_ in Kl?Kl[_](g):n[_];if(T!==void 0){const L=_b(T,_,n,e.fieldDef(t));(L||s.legend[_]===void 0)&&a.set(_,T,L)}}const m=n?.encoding??{},y=a.get("selections"),v={},k={fieldOrDatumDef:l,model:e,channel:t,legendCmpt:a,legendType:p};for(const _ of["labels","legend","title","symbols","gradient","entries"]){const T=Wl(m[_]??{},e),L=_ in Gl?Gl[_](T,k):T;L!==void 0&&!M(L)&&(v[_]={...y?.length&&S(l)?{name:`${W(l.field)}_legend_${_}`}:{},...y?.length?{interactive:!!y}:{},update:L})}return M(v)||a.set("encode",v,!!n?.encoding),a}function Cb(e){const{legends:t,resolve:n}=e.component;for(const i of e.children){Zl(i);for(const r of b(i.component.legends))n.legend[r]=bo(e.component.resolve,r),n.legend[r]==="shared"&&(t[r]=Jl(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 Jl(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 ql){const o=At(e.getWithExplicit(s),t.getWithExplicit(s),s,"legend",(a,c)=>{switch(s){case"symbolType":return Fb(a,c);case"title":return Ia(a,c);case"type":return r=!0,Se("symbol")}return cr(a,c,s,"legend")});e.setWithExplicit(s,o)}return r&&(e.implicit?.encode?.gradient&&$i(e.implicit,["encode","gradient"]),e.explicit?.encode?.gradient&&$i(e.explicit,["encode","gradient"])),e}function Fb(e,t){return t.value==="circle"?t:e}function Nb(e,t,n,i){var r,s;e.encode??(e.encode={}),(r=e.encode)[t]??(r[t]={}),(s=e.encode[t]).update??(s.update={}),e.encode[t].update[n]=i}function ef(e){const t=e.component.legends,n={};for(const r of b(t)){const s=e.getScaleComponent(r),o=D(s.get("domains"));if(n[o])for(const a of n[o]){const c=Jl(a,t[r]);c||n[o].push(t[r])}else n[o]=[t[r].clone()]}const i=ie(n).flat().map(r=>Tb(r,e.config)).filter(r=>r!==void 0);return i}function Tb(e,t){const{disable:n,labelExpr:i,selections:r,...s}=e.combine();if(n)return;if(t.aria===!1&&s.aria==null&&(s.aria=!1),s.encode?.symbols){const o=s.encode.symbols.update;o.fill&&o.fill.value!=="transparent"&&!o.stroke&&!s.stroke&&(o.stroke={value:"transparent"});for(const a of yu)s[a]&&delete o[a]}if(s.title||delete s.title,i!==void 0){let o=i;s.encode?.labels?.update&&$(s.encode.labels.update.text)&&(o=Lt(i,"datum.label",s.encode.labels.update.text.signal)),Nb(s,"labels","text",{signal:o})}return s}function Ab(e){return Mn(e)||Po(e)?Ob(e):tf(e)}function Ob(e){return e.children.reduce((t,n)=>t.concat(n.assembleProjections()),tf(e))}function tf(e){const t=e.component.projection;if(!t||t.merged)return[];const n=t.combine(),{name:i}=n;if(t.data){const r={signal:`[${t.size.map(o=>o.signal).join(", ")}]`},s=t.data.reduce((o,a)=>{const c=$(a)?a.signal:`data('${e.lookupDataSource(a)}')`;return A(o,c)||o.push(c),o},[]);if(s.length<=0)throw new Error("Projection's fit didn't find any data sources");return[{name:i,size:r,fit:{signal:s.length>1?`[${s.join(", ")}]`:s[0]},...n}]}else return[{name:i,translate:{signal:"[width / 2, height / 2]"},...n}]}const Pb=["type","clipAngle","clipExtent","center","rotate","precision","reflectX","reflectY","coefficient","distance","fraction","lobes","parallel","radius","ratio","spacing","tilt"];class nf extends pt{constructor(t,n,i,r){super({...n},{name:t});this.specifiedProjection=n,this.size=i,this.data=r,this.merged=!1}get isFit(){return!!this.data}}function rf(e){e.component.projection=q(e)?zb(e):Lb(e)}function zb(e){if(e.hasProjection){const t=oe(e.specifiedProjection),n=!(t&&(t.scale!=null||t.translate!=null)),i=n?[e.getSizeSignalRef("width"),e.getSizeSignalRef("height")]:void 0,r=n?Rb(e):void 0,s=new nf(e.projectionName(!0),{...oe(e.config.projection),...t},i,r);return s.get("type")||s.set("type","equalEarth",!1),s}return}function Rb(e){const t=[],{encoding:n}=e;for(const i of[[Te,Ne],[Ee,Ae]])(K(n[i[0]])||K(n[i[1]]))&&t.push({signal:e.getName(`geojson_${t.length}`)});return e.channelHasField(he)&&e.typedFieldDef(he).type===xn&&t.push({signal:e.getName(`geojson_${t.length}`)}),t.length===0&&t.push(e.requestDataName(G.Main)),t}function Ib(e,t){const n=jr(Pb,r=>!on(e.explicit,r)&&!on(t.explicit,r)?!0:!!(on(e.explicit,r)&&on(t.explicit,r)&&be(e.get(r),t.get(r)))),i=be(e.size,t.size);if(i){if(n)return e;if(be(e.explicit,{}))return t;if(be(t.explicit,{}))return e}return null}function Lb(e){if(e.children.length===0)return;let t;for(const i of e.children)rf(i);const n=jr(e.children,i=>{const r=i.component.projection;if(r)if(t){const s=Ib(t,r);return s&&(t=s),!!s}else return t=r,!0;else return!0});if(t&&n){const i=e.projectionName(!0),r=new nf(i,t.specifiedProjection,t.size,C(t.data));for(const s of e.children){const o=s.component.projection;o&&(o.isFit&&r.data.push(...s.component.projection.data),s.renameProjection(o.get("name"),i),o.merged=!0)}return r}return}function Mb(e,t,n,i){if(ii(t,n)){const r=q(e)?e.axis(n)??e.legend(n)??{}:{},s=w(t,{expr:"datum"}),o=w(t,{expr:"datum",binSuffix:"end"});return{formulaAs:w(t,{binSuffix:"range",forAs:!0}),formula:Jn(s,o,r.format,r.formatType,i)}}return{}}function sf(e,t){return`${_a(e)}_${t}`}function Db(e,t){return{signal:e.getName(`${t}_bins`),extentSignal:e.getName(`${t}_extent`)}}function So(e,t,n){const i=Zi(n,void 0)??{},r=sf(i,t);return e.getName(`${r}_bins`)}function jb(e){return"as"in e}function of(e,t,n){let i,r;jb(e)?i=N(e.as)?[e.as,`${e.as}_end`]:[e.as[0],e.as[1]]:i=[w(e,{forAs:!0}),w(e,{binSuffix:"end",forAs:!0})];const s={...Zi(t,void 0)},o=sf(s,e.field),{signal:a,extentSignal:c}=Db(n,o);if(Pi(s.extent)){const l=s.extent;r=Tl(n,l.param,l),delete s.extent}const u={bin:s,field:e.field,as:[i],...a?{signal:a}:{},...c?{extentSignal:c}:{},...r?{span:r}:{}};return{key:o,binComponent:u}}class et extends I{clone(){return new et(null,C(this.bins))}constructor(t,n){super(t);this.bins=n}static makeFromEncoding(t,n){const i=n.reduceFieldDef((r,s,o)=>{if(fe(s)&&U(s.bin)){const{key:a,binComponent:c}=of(s,s.bin,n);r[a]={...c,...r[a],...Mb(n,s,o,n.config)}}return r},{});return M(i)?null:new et(t,i)}static makeFromTransform(t,n,i){const{key:r,binComponent:s}=of(n,n.bin,i);return new et(t,{[r]:s})}merge(t,n){for(const i of b(t.bins))i in this.bins?(n(t.bins[i].signal,this.bins[i].signal),this.bins[i].as=je([...this.bins[i].as,...t.bins[i].as],P)):this.bins[i]=t.bins[i];for(const i of t.children)t.removeChild(i),i.parent=this;t.remove()}producedFields(){return new Set(ie(this.bins).map(t=>t.as).flat(2))}dependentFields(){return new Set(ie(this.bins).map(t=>t.field))}hash(){return`Bin ${P(this.bins)}`}assemble(){return ie(this.bins).flatMap(t=>{const n=[],[i,...r]=t.as,{extent:s,...o}=t.bin,a={type:"bin",field:we(t.field),as:i,signal:t.signal,...Pi(s)?{extent:null}:{extent:s},...t.span?{span:{signal:`span(${t.span})`}}:{},...o};!s&&t.extentSignal&&(n.push({type:"extent",field:we(t.field),signal:t.extentSignal}),a.extent={signal:t.extentSignal}),n.push(a);for(const c of r)for(let u=0;u<2;u++)n.push({type:"formula",expr:w({field:i[u]},{expr:"datum"}),as:c[u]});return t.formula&&n.push({type:"formula",expr:t.formula,as:t.formulaAs}),n})}}function Ub(e,t,n,i){const r=q(i)?i.encoding[He(t)]:void 0;if(fe(n)&&q(i)&&Lc(n,r,i.markDef,i.config)){e.add(w(n,{})),e.add(w(n,{suffix:"end"}));const{mark:s,markDef:o,config:a}=i,c=Nt({fieldDef:n,markDef:o,config:a});Qn(s)&&c!==.5&&Y(t)&&(e.add(w(n,{suffix:ur})),e.add(w(n,{suffix:lr}))),n.bin&&ii(n,t)&&e.add(w(n,{binSuffix:"range"}))}else if(ma(t)){const s=ha(t);e.add(i.getName(s))}else e.add(w(n));return Yt(n)&&Tg(n.scale?.range)&&e.add(n.scale.range.field),e}function Bb(e,t){for(const n of b(t)){const i=t[n];for(const r of b(i))n in e?e[n][r]=new Set([...e[n][r]??[],...i[r]]):e[n]={[r]:i[r]}}}class Me extends I{clone(){return new Me(null,new Set(this.dimensions),C(this.measures))}constructor(t,n,i){super(t);this.dimensions=n,this.measures=i}get groupBy(){return this.dimensions}static makeFromEncoding(t,n){let i=!1;n.forEachFieldDef(o=>{o.aggregate&&(i=!0)});const r={},s=new Set;return i?(n.forEachFieldDef((o,a)=>{const{aggregate:c,field:u}=o;if(c)if(c==="count")r["*"]??(r["*"]={}),r["*"].count=new Set([w(o,{forAs:!0})]);else{if(ct(c)||_t(c)){const l=ct(c)?"argmin":"argmax",f=c[l];r[f]??(r[f]={}),r[f][l]=new Set([w({op:l,field:f},{forAs:!0})])}else r[u]??(r[u]={}),r[u][c]=new Set([w(o,{forAs:!0})]);qe(a)&&n.scaleDomain(a)==="unaggregated"&&(r[u]??(r[u]={}),r[u].min=new Set([w({field:u,aggregate:"min"},{forAs:!0})]),r[u].max=new Set([w({field:u,aggregate:"max"},{forAs:!0})]))}else Ub(s,a,o,n)}),s.size+b(r).length===0?null:new Me(t,s,r)):null}static makeFromTransform(t,n){var i;const r=new Set,s={};for(const o of n.aggregate){const{op:a,field:c,as:u}=o;a&&(a==="count"?(s["*"]??(s["*"]={}),s["*"].count=new Set([u||w(o,{forAs:!0})])):(s[c]??(s[c]={}),(i=s[c])[a]??(i[a]=new Set),s[c][a].add(u||w(o,{forAs:!0}))))}for(const o of n.groupby??[])r.add(o);return r.size+b(s).length===0?null:new Me(t,r,s)}merge(t){return oa(this.dimensions,t.dimensions)?(Bb(this.measures,t.measures),!0):(tg("different dimensions, cannot merge"),!1)}addDimensions(t){t.forEach(this.dimensions.add,this.dimensions)}dependentFields(){return new Set([...this.dimensions,...b(this.measures)])}producedFields(){const t=new Set;for(const n of b(this.measures))for(const i of b(this.measures[n])){const r=this.measures[n][i];r.size===0?t.add(`${i}_${n}`):r.forEach(t.add,t)}return t}hash(){return`Aggregate ${P({dimensions:this.dimensions,measures:this.measures})}`}assemble(){const t=[],n=[],i=[];for(const s of b(this.measures))for(const o of b(this.measures[s]))for(const a of this.measures[s][o])i.push(a),t.push(o),n.push(s==="*"?null:we(s));const r={type:"aggregate",groupby:[...this.dimensions].map(we),ops:t,fields:n,as:i};return r}}class Rn extends I{constructor(t,n,i,r){super(t);this.model=n,this.name=i,this.data=r;for(const s of _e){const o=n.facet[s];if(o){const{bin:a,sort:c}=o;this[s]={name:n.getName(`${s}_domain`),fields:[w(o),...U(a)?[w(o,{binSuffix:"end"})]:[]],...lt(c)?{sortField:c}:E(c)?{sortIndexField:Pn(o,s)}:{}}}}this.childModel=n.child}hash(){let t="Facet";for(const n of _e)this[n]&&(t+=` ${n.charAt(0)}:${P(this[n])}`);return t}get fields(){const t=[];for(const n of _e)this[n]?.fields&&t.push(...this[n].fields);return t}dependentFields(){const t=new Set(this.fields);for(const n of _e)this[n]&&(this[n].sortField&&t.add(this[n].sortField.field),this[n].sortIndexField&&t.add(this[n].sortIndexField));return t}producedFields(){return new Set}getSource(){return this.name}getChildIndependentFieldsWithStep(){const t={};for(const n of at){const i=this.childModel.component.scales[n];if(i&&!i.merged){const r=i.get("type"),s=i.get("range");if(J(r)&&Ct(s)){const o=vr(this.childModel,n),a=Ao(o);a?t[n]=a:x(is(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=qi,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 go){for(const u of ho){const l=(i[c]&&i[c][u])??[];for(const f of l)if(f.axes?.length>0){s[c]=!0;break}}if(s[c]){const u=`length(data("${this.facet.name}"))`,l=c==="row"?n?{signal:`ceil(${u} / ${n})`}:1:n?{signal:`min(${u}, ${n})`}:{signal:u};r.push({name:`${this.facet.name}_${c}`,transform:[{type:"sequence",start:0,stop:l}]})}}const{row:o,column:a}=s;return(o||a)&&r.unshift(this.assembleRowColumnHeaderData("facet",null,t)),r}assemble(){const t=[];let n=null;const i=this.getChildIndependentFieldsWithStep(),{column:r,row:s,facet:o}=this;if(r&&s&&(i.x||i.y)){n=`cross_${this.column.name}_${this.row.name}`;const a=[].concat(i.x??[],i.y??[]),c=a.map(()=>"distinct");t.push({name:n,source:this.data,transform:[{type:"aggregate",groupby:this.fields,fields:a,ops:c}]})}for(const a of[nt,tt])this[a]&&t.push(this.assembleRowColumnHeaderData(a,n,i));if(o){const a=this.assembleFacetHeaderData(i);a&&t.push(...a)}return t}}function af(e){return e.startsWith("'")&&e.endsWith("'")||e.startsWith('"')&&e.endsWith('"')?e.slice(1,-1):e}function Wb(e,t){const n=Hr(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=af(t.slice(5,t.length));return`timeParse(${n},'${i}')`}else if(t.startsWith("utc:")){const i=af(t.slice(4,t.length));return`utcParse(${n},'${i}')`}else return x(lp(t)),null}function Hb(e){const t={};return wi(e.filter,n=>{if(cc(n)){let i=null;us(n)?i=xe(n.equal):fs(n)?i=xe(n.lte):ls(n)?i=xe(n.lt):ds(n)?i=xe(n.gt):ps(n)?i=xe(n.gte):gs(n)?i=n.range[0]:hs(n)&&(i=(n.oneOf??n.in)[0]),i&&(Bt(i)?t[n.field]="date":j(i)?t[n.field]="number":N(i)&&(t[n.field]="string")),n.timeUnit&&(t[n.field]="date")}}),t}function qb(e){const t={};function n(i){_n(i)?t[i.field]="date":i.type==="quantitative"&&Bd(i.aggregate)?t[i.field]="number":pn(i.field)>1?i.field in t||(t[i.field]="flatten"):Yt(i)&<(i.sort)&&pn(i.sort.field)>1&&(i.sort.field in t||(t[i.sort.field]="flatten"))}if((q(e)||ve(e))&&e.forEachFieldDef((i,r)=>{if(fe(i))n(i);else{const s=jt(r),o=e.fieldDef(s);n({...i,type:o.type})}}),q(e)){const{mark:i,markDef:r,encoding:s}=e;if(Ft(i)&&!e.encoding.order){const o=r.orient==="horizontal"?"y":"x",a=s[o];S(a)&&a.type==="quantitative"&&!(a.field in t)&&(t[a.field]="number")}}return t}function Gb(e){const t={};if(q(e)&&e.component.selection)for(const n of b(e.component.selection)){const i=e.component.selection[n];for(const r of i.project.items)!r.channel&&pn(r.field)>1&&(t[r.field]="flatten")}return t}class ce extends I{clone(){return new ce(null,C(this._parse))}constructor(t,n){super(t);this._parse=n}hash(){return`Parse ${P(this._parse)}`}static makeExplicit(t,n,i){let r={};const s=n.data;return!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(Wa(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(Wa(a,n[a],c)))}const s=new pt(n,i);r.copyAll(s);const o={};for(const a of b(s.combine())){const c=s.get(a);c!==null&&(o[a]=c)}return b(o).length===0||r.parseNothing?null:new ce(t,o)}get parse(){return this._parse}merge(t){this._parse={...this._parse,...t.parse},t.remove()}assembleFormatParse(){const t={};for(const n of b(this._parse)){const i=this._parse[n];pn(n)===1&&(t[n]=i)}return t}producedFields(){return new Set(b(this._parse))}dependentFields(){return new Set(b(this._parse))}assembleTransforms(t=!1){return b(this._parse).filter(n=>t?pn(n)>1:!0).map(n=>{const i=Wb(n,this._parse[n]);if(!i)return null;const r={type:"formula",expr:i,as:dn(n)};return r}).filter(n=>n!==null)}}class Rt extends I{clone(){return new Rt(null)}constructor(t){super(t)}dependentFields(){return new Set}producedFields(){return new Set([Le])}hash(){return"Identifier"}assemble(){return{type:"identifier",as:Le}}}class ui extends I{clone(){return new ui(null,this.params)}constructor(t,n){super(t);this.params=n}dependentFields(){return new Set}producedFields(){return}hash(){return`Graticule ${P(this.params)}`}assemble(){return{type:"graticule",...this.params===!0?{}:this.params}}}class li extends I{clone(){return new li(null,this.params)}constructor(t,n){super(t);this.params=n}dependentFields(){return new Set}producedFields(){return new Set([this.params.as??"data"])}hash(){return`Hash ${P(this.params)}`}assemble(){return{type:"sequence",...this.params}}}class en extends I{constructor(t){super(null);t??(t={name:"source"});let n;if(Ot(t)||(n=t.format?{...pe(t.format,["parse"])}:{}),si(t))this._data={values:t.values};else if(Cn(t)){if(this._data={url:t.url},!n.type){let i=/(?:\.([^.]+))?$/.exec(t.url)[1];A(["json","csv","tsv","dsv","topojson"],i)||(i="json"),n.type=i}}else Xu(t)?this._data={values:[{type:"Sphere"}]}:(Gu(t)||Ot(t))&&(this._data={});this._generator=Ot(t),t.name&&(this._name=t.name),n&&!M(n)&&(this._data.format=n)}dependentFields(){return new Set}producedFields(){return}get data(){return this._data}hasName(){return!!this._name}get isGenerator(){return this._generator}get dataName(){return this._name}set dataName(t){this._name=t}set parent(t){throw new Error("Source nodes have to be roots.")}remove(){throw new Error("Source nodes are roots and cannot be removed.")}hash(){throw new Error("Cannot hash sources")}assemble(){return{name:this._name,...this._data,transform:[]}}}var cf=function(e,t,n,i,r){if(i==="m")throw new TypeError("Private method is not writable");if(i==="a"&&!r)throw new TypeError("Private accessor was defined without a setter");if(typeof t=="function"?e!==t||!r:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return i==="a"?r.call(e,n):r?r.value=n:t.set(e,n),n},Vb=function(e,t,n,i){if(n==="a"&&!i)throw new TypeError("Private accessor was defined without a getter");if(typeof t=="function"?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return n==="m"?i:n==="a"?i.call(e):i?i.value:t.get(e)},fi;function vo(e){return e instanceof en||e instanceof ui||e instanceof li}class wo{constructor(){fi.set(this,void 0),cf(this,fi,!1,"f")}setModified(){cf(this,fi,!0,"f")}get modifiedFlag(){return Vb(this,fi,"f")}}fi=new WeakMap;class tn extends wo{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 $o extends wo{optimize(t){this.run(t);for(const n of t.children)this.optimize(n);return this.modifiedFlag}}class Xb extends $o{mergeNodes(t,n){const i=n.shift();for(const r of n)t.removeChild(r),r.parent=i,r.remove()}run(t){const n=t.children.map(r=>r.hash()),i={};for(let r=0;r1&&(this.setModified(),this.mergeNodes(t,i[r]))}}class Yb extends $o{constructor(t){super();this.requiresSelectionId=t&&co(t)}run(t){t instanceof Rt&&(this.requiresSelectionId&&(vo(t.parent)||t.parent instanceof Me||t.parent instanceof ce)||(this.setModified(),t.remove()))}}class Kb extends wo{optimize(t){return this.run(t,new Set),this.modifiedFlag}run(t,n){let i=new Set;t instanceof Je&&(i=t.producedFields(),Ur(i,n)&&(this.setModified(),t.removeFormulas(n),t.producedFields.length===0&&t.remove()));for(const r of t.children)this.run(r,new Set([...n,...i]))}}class Qb extends $o{constructor(){super()}run(t){t instanceof ye&&!t.isRequired()&&(this.setModified(),t.remove())}}class Zb extends tn{run(t){if(vo(t))return;if(t.numChildren()>1)return;for(const n of t.children)if(n instanceof ce)if(t instanceof ce)this.setModified(),t.merge(n);else{if(Wr(t.producedFields(),n.dependentFields()))continue;this.setModified(),n.swapWithParent()}return}}class Jb extends tn{run(t){const n=[...t.children],i=t.children.filter(r=>r instanceof ce);if(t.numChildren()>1&&i.length>=1){const r={},s=new Set;for(const o of i){const a=o.parse;for(const c of b(a))c in r?r[c]!==a[c]&&s.add(c):r[c]=a[c]}for(const o of s)delete r[o];if(!M(r)){this.setModified();const o=new ce(t,r);for(const a of n){if(a instanceof ce)for(const c of b(r))delete a.parse[c];t.removeChild(a),a.parent=o,a instanceof ce&&b(a.parse).length===0&&a.remove()}}}}}class ex extends tn{run(t){t instanceof ye||t.numChildren()>0||t instanceof Rn||(t instanceof en||(this.setModified(),t.remove()))}}class tx extends tn{run(t){const n=t.children.filter(r=>r instanceof Je),i=n.pop();for(const r of n)this.setModified(),i.merge(r)}}class nx extends tn{run(t){const n=t.children.filter(r=>r instanceof Me),i={};for(const r of n){const s=P(r.groupBy);s in i||(i[s]=[]),i[s].push(r)}for(const r of b(i)){const s=i[r];if(s.length>1){const o=s.pop();for(const a of s)o.merge(a)&&(t.removeChild(a),a.parent=o,a.remove(),this.setModified())}}}}class ix extends tn{constructor(t){super();this.model=t}run(t){const n=!(vo(t)||t instanceof An||t instanceof ce||t instanceof Rt),i=[],r=[];for(const s of t.children)s instanceof et&&(n&&!Wr(t.producedFields(),s.dependentFields())?i.push(s):r.push(s));if(i.length>0){const s=i.pop();for(const o of i)s.merge(o,this.model.renameSignal.bind(this.model));this.setModified(),t instanceof et?t.merge(s,this.model.renameSignal.bind(this.model)):s.swapWithParent()}if(r.length>1){const s=r.pop();for(const o of r)s.merge(o,this.model.renameSignal.bind(this.model));this.setModified()}}}class rx extends tn{run(t){const n=[...t.children],i=fn(n,o=>o instanceof ye);if(!i||t.numChildren()<=1)return;const r=[];let s;for(const o of n)if(o instanceof ye){let a=o;for(;a.numChildren()===1;){const[c]=a.children;if(c instanceof ye)a=c;else break}r.push(...a.children),s?(t.removeChild(o),o.parent=s.parent,s.parent.removeChild(s),s.parent=a,this.setModified()):s=a}else r.push(o);if(r.length){this.setModified();for(const o of r)o.parent.removeChild(o),o.parent=s}}}class nn extends I{clone(){return new nn(null,C(this.transform))}constructor(t,n){super(t);this.transform=n}addDimensions(t){this.transform.groupby=je(this.transform.groupby.concat(t),n=>n)}dependentFields(){const t=new Set;return this.transform.groupby&&this.transform.groupby.forEach(t.add,t),this.transform.joinaggregate.map(n=>n.field).filter(n=>n!==void 0).forEach(t.add,t),t}producedFields(){return new Set(this.transform.joinaggregate.map(this.getDefaultName))}getDefaultName(t){return t.as??w(t)}hash(){return`JoinAggregateTransform ${P(this.transform)}`}assemble(){const t=[],n=[],i=[];for(const s of this.transform.joinaggregate)n.push(s.op),i.push(this.getDefaultName(s)),t.push(s.field===void 0?null:s.field);const r=this.transform.groupby;return{type:"joinaggregate",as:i,ops:n,fields:t,...r!==void 0?{groupby:r}:{}}}}class In extends I{clone(){return new In(null,{...this.filter})}constructor(t,n){super(t);this.filter=n}static make(t,n,i){const{config:r,markDef:s}=n,{marks:o,scales:a}=i;if(o==="include-invalid-values"&&a==="include-invalid-values")return null;const c=n.reduceFieldDef((u,l,f)=>{const d=qe(f)&&n.getScaleComponent(f);if(d){const p=d.get("type"),{aggregate:h}=l,g=$s({scaleChannel:f,markDef:s,config:r,scaleType:p,isCountAggregate:Oi(h)});g!=="show"&&g!=="always-valid"&&(u[l.field]=l)}return u},{});return b(c).length?new In(t,c):null}dependentFields(){return new Set(b(this.filter))}producedFields(){return new Set}hash(){return`FilterInvalid ${P(this.filter)}`}assemble(){const t=b(this.filter).reduce((n,i)=>{const r=this.filter[i],s=w(r,{expr:"datum"});return r!==null&&(r.type==="temporal"?n.push(`(isDate(${s}) || (${Eo(s)}))`):r.type==="quantitative"&&n.push(Eo(s))),n},[]);return t.length>0?{type:"filter",expr:t.join(" && ")}:null}}function Eo(e){return`isValid(${e}) && isFinite(+${e})`}function sx(e){return e.stack.stackBy.reduce((t,n)=>{const i=n.fieldDef,r=w(i);return r&&t.push(r),t},[])}function ox(e){return E(e)&&e.every(t=>N(t))&&e.length>1}class ht extends I{clone(){return new ht(null,C(this._stack))}constructor(t,n){super(t);this._stack=n}static makeFromTransform(t,n){const{stack:i,groupby:r,as:s,offset:o="zero"}=n,a=[],c=[];if(n.sort!==void 0)for(const f of n.sort)a.push(f.field),c.push(X(f.order,"ascending"));const u={field:a,order:c};let l;return ox(s)?l=s:N(s)?l=[s,`${s}_end`]:l=[`${n.stack}_start`,`${n.stack}_end`],new ht(t,{dimensionFieldDefs:[],stackField:i,groupby:r,offset:o,sort:u,facetby:[],as:l})}static makeFromEncoding(t,n){const i=n.stack,{encoding:r}=n;if(!i)return null;const{groupbyChannels:s,fieldChannel:o,offset:a,impute:c}=i,u=s.map(p=>{const h=r[p];return Ie(h)}).filter(p=>!!p),l=sx(n),f=n.encoding.order;let d;if(E(f)||S(f))d=Pa(f);else{const p=Mc(f)?f.sort:o==="y"?"descending":"ascending";d=l.reduce((h,g)=>(h.field.includes(g)||(h.field.push(g),h.order.push(p)),h),{field:[],order:[]})}return new ht(t,{dimensionFieldDefs:u,stackField:n.vgField(o),facetby:[],stackby:l,sort:d,offset:a,impute:c,as:[n.vgField(o,{suffix:"start",forAs:!0}),n.vgField(o,{suffix:"end",forAs:!0})]})}get stack(){return this._stack}addDimensions(t){this._stack.facetby.push(...t)}dependentFields(){const t=new Set;return t.add(this._stack.stackField),this.getGroupbyFields().forEach(t.add,t),this._stack.facetby.forEach(t.add,t),this._stack.sort.field.forEach(t.add,t),t}producedFields(){return new Set(this._stack.as)}hash(){return`Stack ${P(this._stack)}`}getGroupbyFields(){const{dimensionFieldDefs:t,impute:n,groupby:i}=this._stack;return t.length>0?t.map(r=>r.bin?n?[w(r,{binSuffix:"mid"})]:[w(r,{}),w(r,{binSuffix:"end"})]:[w(r)]).flat():i??[]}assemble(){const t=[],{facetby:n,dimensionFieldDefs:i,stackField:r,stackby:s,sort:o,offset:a,impute:c,as:u}=this._stack;if(c)for(const l of i){const{bandPosition:f=.5,bin:d}=l;if(d){const p=w(l,{expr:"datum"}),h=w(l,{expr:"datum",binSuffix:"end"});t.push({type:"formula",expr:`${Eo(p)} ? ${f}*${p}+${1-f}*${h} : ${p}`,as:w(l,{binSuffix:"mid",forAs:!0})})}t.push({type:"impute",field:r,groupby:[...s,...n],key:w(l,{binSuffix:"mid"}),method:"value",value:0})}return t.push({type:"stack",groupby:[...this.getGroupbyFields(),...n],field:r,sort:o,as:u,offset:a}),t}}class Ln extends I{clone(){return new Ln(null,C(this.transform))}constructor(t,n){super(t);this.transform=n}addDimensions(t){this.transform.groupby=je(this.transform.groupby.concat(t),n=>n)}dependentFields(){const t=new Set;return(this.transform.groupby??[]).forEach(t.add,t),(this.transform.sort??[]).forEach(n=>t.add(n.field)),this.transform.window.map(n=>n.field).filter(n=>n!==void 0).forEach(t.add,t),t}producedFields(){return new Set(this.transform.window.map(this.getDefaultName))}getDefaultName(t){return t.as??w(t)}hash(){return`WindowTransform ${P(this.transform)}`}assemble(){const t=[],n=[],i=[],r=[];for(const f of this.transform.window)n.push(f.op),i.push(this.getDefaultName(f)),r.push(f.param===void 0?null:f.param),t.push(f.field===void 0?null:f.field);const s=this.transform.frame,o=this.transform.groupby;if(s&&s[0]===null&&s[1]===null&&n.every(f=>Jr(f)))return{type:"joinaggregate",as:i,ops:n,fields:t,...o!==void 0?{groupby:o}:{}};const a=[],c=[];if(this.transform.sort!==void 0)for(const f of this.transform.sort)a.push(f.field),c.push(f.order??"ascending");const u={field:a,order:c},l=this.transform.ignorePeers;return{type:"window",params:r,as:i,ops:n,fields:t,sort:u,...l!==void 0?{ignorePeers:l}:{},...o!==void 0?{groupby:o}:{},...s!==void 0?{frame:s}:{}}}}function ax(e){function t(n){if(!(n instanceof Rn)){const i=n.clone();if(i instanceof ye){const r=ko+i.getSource();i.setSource(r),e.model.component.data.outputNodes[r]=i}else(i instanceof Me||i instanceof ht||i instanceof Ln||i instanceof nn)&&i.addDimensions(e.fields);for(const r of n.children.flatMap(t))r.parent=i;return[i]}return n.children.flatMap(t)}return t}function _o(e){if(e instanceof Rn)if(e.numChildren()===1&&!(e.children[0]instanceof ye)){const t=e.children[0];(t instanceof Me||t instanceof ht||t instanceof Ln||t instanceof nn)&&t.addDimensions(e.fields),t.swapWithParent(),_o(e)}else{const t=e.model.component.data.main;uf(t);const n=ax(e),i=e.children.map(n).flat();for(const r of i)r.parent=t}else e.children.map(_o)}function uf(e){if(e instanceof ye&&e.type===G.Main&&e.numChildren()===1){const t=e.children[0];t instanceof Rn||(t.swapWithParent(),uf(e))}}const ko="scale_",Sr=5;function Co(e){for(const t of e){for(const n of t.children)if(n.parent!==t)return!1;if(!Co(t.children))return!1}return!0}function De(e,t){let n=!1;for(const i of t)n=e.optimize(i)||n;return n}function lf(e,t,n){let i=e.sources,r=!1;return r=De(new Qb,i)||r,r=De(new Yb(t),i)||r,i=i.filter(s=>s.numChildren()>0),r=De(new ex,i)||r,i=i.filter(s=>s.numChildren()>0),n||(r=De(new Zb,i)||r,r=De(new ix(t),i)||r,r=De(new Kb,i)||r,r=De(new Jb,i)||r,r=De(new nx,i)||r,r=De(new tx,i)||r,r=De(new Xb,i)||r,r=De(new rx,i)||r),e.sources=i,r}function cx(e,t){Co(e.sources);let n=0,i=0;for(let r=0;rt(n))}}function ff(e){q(e)?ux(e):lx(e)}function ux(e){const t=e.component.scales;for(const n of b(t)){const i=dx(e,n),r=t[n];if(r.setWithExplicit("domains",i),gx(e,n),e.component.data.isFaceted){let s=e;for(;!ve(s)&&s.parent;)s=s.parent;const o=s.component.resolve.scale[n];if(o==="shared")for(const a of i.value)ut(a)&&(a.data=ko+a.data.replace(ko,""))}}}function lx(e){for(const n of e.children)ff(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",To);const a=o.get("selectionExtent");r&&a&&r.param!==a.param&&x(op),r=a}}t[n].setWithExplicit("domains",i),r&&t[n].set("selectionExtent",r,!0)}}function fx(e,t,n,i){if(e==="unaggregated"){const{valid:r,reason:s}=df(t,n);if(!r){x(s);return}}else if(e===void 0&&i.useUnaggregatedDomain){const{valid:r}=df(t,n);if(r)return"unaggregated"}return e}function dx(e,t){const n=e.getScaleComponent(t).get("type"),{encoding:i}=e,r=fx(e.scaleDomain(t),e.typedFieldDef(t),n,e.config.scale);return r!==e.scaleDomain(t)&&(e.specifiedScales[t]={...e.specifiedScales[t],domain:r}),t==="x"&&K(i.x2)?K(i.x)?At(It(n,r,e,"x"),It(n,r,e,"x2"),"domain","scale",To):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",To):It(n,r,e,"y2"):It(n,r,e,t)}function px(e,t,n){return e.map(i=>{const r=Ji(i,{timeUnit:n,type:t});return{signal:`{data: ${r}}`}})}function Fo(e,t,n){const i=Z(n)?.unit;return t==="temporal"||i?px(e,t,i):[e]}function It(e,t,n,i){const{encoding:r,markDef:s,mark:o,config:a,stack:c}=n,u=K(r[i]),{type:l}=u,f=u.timeUnit,d=ay({invalid:Ge("invalid",s,a),isPath:Ft(o)});if(Ng(t)){const g=It(e,void 0,n,i),m=Fo(t.unionWith,l,f);return Ze([...m,...g.value])}else{if($(t))return Ze([t]);if(t&&t!=="unaggregated"&&!mc(t))return Ze(Fo(t,l,f))}if(c&&i===c.fieldChannel){if(c.offset==="normalize")return Se([[0,1]]);const g=n.requestDataName(d);return Se([{data:g,field:n.vgField(i,{suffix:"start"})},{data:g,field:n.vgField(i,{suffix:"end"})}])}const p=qe(i)&&S(u)?hx(n,i,e):void 0;if(Ke(u)){const g=Fo([u.datum],l,f);return Se(g)}const h=u;if(t==="unaggregated"){const{field:g}=u;return Se([{data:n.requestDataName(d),field:w({field:g,aggregate:"min"})},{data:n.requestDataName(d),field:w({field:g,aggregate:"max"})}])}else if(U(h.bin)){if(J(e))return e==="bin-ordinal"?Se([]):Se([{data:Bn(p)?n.requestDataName(d):n.requestDataName(G.Raw),field:n.vgField(i,ii(h,i)?{binSuffix:"range"}:{}),sort:p===!0||!z(p)?{field:n.vgField(i,{}),op:"min"}:p}]);{const{bin:g}=h;if(U(g)){const m=So(n,h.field,g);return Se([new te(()=>{const y=n.getSignalName(m);return`[${y}.start, ${y}.stop]`})])}else return Se([{data:n.requestDataName(d),field:n.vgField(i,{})}])}}else if(h.timeUnit&&A(["time","utc"],e)){const g=r[He(i)];if(Lc(h,g,s,a)){const m=n.requestDataName(d),y=Nt({fieldDef:h,fieldDef2:g,markDef:s,config:a}),v=Qn(o)&&y!==.5&&Y(i);return Se([{data:m,field:n.vgField(i,v?{suffix:ur}:{})},{data:m,field:n.vgField(i,{suffix:v?lr:"end"})}])}}return Se(p?[{data:Bn(p)?n.requestDataName(d):n.requestDataName(G.Raw),field:n.vgField(i),sort:p}]:[{data:n.requestDataName(d),field:n.vgField(i)}])}function No(e,t){const{op:n,field:i,order:r}=e;return{op:n??(t?"sum":qi),...i?{field:we(i)}:{},...r?{order:r}:{}}}function gx(e,t){const n=e.component.scales[t],i=e.specifiedScales[t].domain,r=e.fieldDef(t)?.bin,s=mc(i)&&i,o=Ut(r)&&Pi(r.extent)&&r.extent;(s||o)&&n.set("selectionExtent",s??o,!0)}function hx(e,t,n){if(!J(n))return;const i=e.fieldDef(t),r=i.sort;if(zc(r))return{op:"min",field:Pn(i,t),order:"ascending"};const{stack:s}=e,o=s?new Set([...s.groupbyFields,...s.stackBy.map(a=>a.fieldDef.field)]):void 0;if(lt(r)){const a=s&&!o.has(r.field);return No(r,a)}else if(ah(r)){const{encoding:a,order:c}=r,u=e.fieldDef(a),{aggregate:l,field:f}=u,d=s&&!o.has(f);if(ct(l)||_t(l))return No({field:w(u),order:c},d);if(Jr(l)||!l)return No({op:l,field:f,order:c},d)}else{if(r==="descending")return{op:"min",field:e.vgField(t),order:"descending"};if(A(["ascending",void 0],r))return!0}return}function df(e,t){const{aggregate:n,type:i}=e;return n?N(n)&&!Hd.has(n)?{valid:!1,reason:Op(n)}:i==="quantitative"&&t==="log"?{valid:!1,reason:Pp(e)}:{valid:!0}:{valid:!1,reason:Ap(e)}}function To(e,t,n,i){return e.explicit&&t.explicit&&x(Mp(n,i,e.value,t.value)),{explicit:e.explicit,value:[...e.value,...t.value]}}function mx(e){const t=je(e.map(o=>{if(ut(o)){const{sort:a,...c}=o;return c}return o}),P),n=je(e.map(o=>{if(ut(o)){const a=o.sort;return a!==void 0&&!Bn(a)&&("op"in a&&a.op==="count"&&delete a.field,a.order==="ascending"&&delete a.order),a}return}).filter(o=>o!==void 0),P);if(t.length===0)return;if(t.length===1){const o=e[0];if(ut(o)&&n.length>0){let a=n[0];if(n.length>1){x(Ya);const c=n.filter(u=>z(u)&&"op"in u&&u.op!=="min");n.every(u=>z(u)&&"op"in u)&&c.length===1?a=c[0]:a=!0}else if(z(a)&&"field"in a){const c=a.field;o.field===c&&(a=a.order?{order:a.order}:!0)}return{...o,sort:a}}return o}const i=je(n.map(o=>Bn(o)||!("op"in o)||N(o.op)&&o.op in jd?o:(x(jp(o)),!0)),P);let r;i.length===1?r=i[0]:i.length>1&&(x(Ya),r=!0);const s=je(e.map(o=>ut(o)?o.data:null),o=>o);if(s.length===1&&s[0]!==null){const o={data:s[0],fields:t.map(a=>a.field),...r?{sort:r}:{}};return o}return{fields:t,...r?{sort:r}:{}}}function Ao(e){if(ut(e)&&N(e.field))return e.field;if(qd(e)){let t;for(const n of e.fields)if(ut(n)&&N(n.field)){if(!t)t=n.field;else if(t!==n.field)return x(Up),t}return x(Bp),t}else if(Gd(e)){x(Wp);const t=e.fields[0];return N(t)?t:void 0}return}function vr(e,t){const n=e.component.scales[t],i=n.get("domains").map(r=>(ut(r)&&(r.data=e.lookupDataSource(r.data)),r));return mx(i)}function pf(e){return Mn(e)||Po(e)?e.children.reduce((t,n)=>t.concat(pf(n)),gf(e)):gf(e)}function gf(e){return b(e.component.scales).reduce((t,n)=>{const i=e.component.scales[n];if(i.merged)return t;const r=i.combine(),{name:s,type:o,selectionExtent:a,domains:c,range:u,reverse:l,...f}=r,d=yx(r.range,s,n,e),p=vr(e,n),h=a?py(e,a,i,p):null;return t.push({name:s,type:o,...p?{domain:p}:{},...h?{domainRaw:h}:{},range:d,...l!==void 0?{reverse:l}:{},...f}),t},[])}function yx(e,t,n,i){if(Y(n)){if(Ct(e))return{step:{signal:`${t}_step`}}}else if(z(e)&&ut(e))return{...e,data:i.lookupDataSource(e.data)};return e}class hf extends pt{constructor(t,n){super({},{name:t});this.merged=!1,this.setWithExplicit("type",n)}domainHasZero(){const t=this.get("type");if(A([se.LOG,se.TIME,se.UTC],t))return"definitely-not";const n=this.get("zero");if(n===!0||n===void 0&&A([se.LINEAR,se.SQRT,se.POW],t))return"definitely";const i=this.get("domains");if(i.length>0){let r=!1,s=!1,o=!1;for(const a of i){if(E(a)){const c=a[0],u=a[a.length-1];if(j(c)&&j(u))if(c<=0&&u>=0){r=!0;continue}else{s=!0;continue}}o=!0}if(r)return"definitely";if(s&&!o)return"definitely-not"}return"maybe"}}const bx=["range","scheme"];function xx(e){const t=e.component.scales;for(const n of Qr){const i=t[n];if(!i)continue;const r=Sx(n,e);i.setWithExplicit("range",r)}}function mf(e,t){const n=e.fieldDef(t);if(n?.bin){const{bin:i,field:r}=n,s=me(t),o=e.getName(s);if(z(i)&&i.binned&&i.step!==void 0)return new te(()=>{const a=e.scaleName(t),c=`(domain("${a}")[1] - domain("${a}")[0]) / ${i.step}`;return`${e.getSignalName(o)} / (${c})`});if(U(i)){const a=So(e,r,i);return new te(()=>{const c=e.getSignalName(a),u=`(${c}.stop - ${c}.start) / ${c}.step`;return`${e.getSignalName(o)} / (${u})`})}}return}function Sx(e,t){const n=t.specifiedScales[e],{size:i}=t,r=t.getScaleComponent(e),s=r.get("type");for(const f of bx)if(n[f]!==void 0){const d=xs(s,f),p=yc(e,f);if(!d)x(Va(s,f,e));else if(p)x(p);else switch(f){case"range":{const h=n.range;if(E(h)){if(Y(e))return Ze(h.map(g=>{if(g==="width"||g==="height"){const m=t.getName(g),y=t.getSignalName.bind(t);return te.fromName(y,m)}return g}))}else if(z(h))return Ze({data:t.requestDataName(G.Main),field:h.field,sort:{op:"min",field:t.vgField(e)}});return Ze(h)}case"scheme":return Ze(vx(n[f]))}}const o=e===H||e==="xOffset"?"width":"height",a=i[o];if(Qe(a)){if(Y(e))if(J(s)){const f=bf(a,t,e);if(f)return Ze({step:f})}else x(Xa(o));else if(Xn(e)){const f=e===xt?"x":"y",d=t.getScaleComponent(f),p=d.get("type");if(p==="band"){const h=xf(a,s);if(h)return Ze(h)}}}const{rangeMin:c,rangeMax:u}=n,l=wx(e,t);return(c!==void 0||u!==void 0)&&xs(s,"rangeMin")&&E(l)&&l.length===2?Ze([c??l[0],u??l[1]]):Se(l)}function vx(e){return Fg(e)?{scheme:e.name,...pe(e,["name"])}:{scheme:e}}function yf(e,t,n,{center:i}={}){const r=me(e),s=t.getName(r),o=t.getSignalName.bind(t);return e===Q&&Pe(n)?i?[te.fromName(a=>`${o(a)}/2`,s),te.fromName(a=>`-${o(a)}/2`,s)]:[te.fromName(o,s),0]:i?[te.fromName(a=>`-${o(a)}/2`,s),te.fromName(a=>`${o(a)}/2`,s)]:[0,te.fromName(o,s)]}function wx(e,t){const{size:n,config:i,mark:r,encoding:s}=t,{type:o}=K(s[e]),a=t.getScaleComponent(e),c=a.get("type"),{domain:u,domainMid:l}=t.specifiedScales[e];switch(e){case H:case Q:{if(A(["point","band"],c)){const f=Sf(e,n,i.view);if(Qe(f)){const d=bf(f,t,e);return{step:d}}}return yf(e,t,c)}case xt:case gn:return $x(e,t,c);case st:{const f=kx(r,i),d=Cx(r,n,t,i);return Sn(c)?_x(f,d,Ex(c,i,u,e)):[f,d]}case $e:return[0,Math.PI*2];case Mt:return[0,360];case Fe:return[0,new te(()=>{const f=t.getSignalName(ve(t.parent)?"child_width":"width"),d=t.getSignalName(ve(t.parent)?"child_height":"height");return`min(${f},${d})/2`})];case wt:return[i.scale.minStrokeWidth,i.scale.maxStrokeWidth];case $t:return[[1,0],[4,2],[2,1],[1,1],[1,2,4,2]];case he:return"symbol";case ge:case Be:case We:return c==="ordinal"?o==="nominal"?"category":"ordinal":l!==void 0?"diverging":r==="rect"||r==="geoshape"?"heatmap":"ramp";case ot:case St:case vt:return[i.scale.minOpacity,i.scale.maxOpacity]}}function bf(e,t,n){const{encoding:i}=t,r=t.getScaleComponent(n),s=Ti(n),o=i[s],a=xu({step:e,offsetIsDiscrete:F(o)&&lc(o.type)});if(a==="offset"&&Zc(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-${ts(f)})`}}else return e.step}function xf(e,t){const n=xu({step:e,offsetIsDiscrete:J(t)});return n==="offset"?{step:e.step}:void 0}function $x(e,t,n){const i=e===xt?"x":"y",r=t.getScaleComponent(i);if(!r)return yf(i,t,n,{center:!0});const s=r.get("type"),o=t.scaleName(i),{markDef:a,config:c}=t;if(s==="band"){const u=Sf(i,t.size,t.config.view);if(Qe(u)){const l=xf(u,n);if(l)return l}return[0,{signal:`bandwidth('${o}')`}]}else{const u=t.encoding[i];if(S(u)&&u.timeUnit){const l=oc(u.timeUnit,h=>`scale('${o}', ${h})`),f=t.config.scale.bandWithNestedOffsetPaddingInner,d=Nt({fieldDef:u,markDef:a,config:c})-.5,p=d!==0?` + ${d}`:"";if(f){const h=$(f)?`${f.signal}/2`+p:`${f/2+d}`,g=$(f)?`(1 - ${f.signal}/2)`+p:`${1-f/2+d}`;return[{signal:`${h} * (${l})`},{signal:`${g} * (${l})`}]}return[0,{signal:l}]}return ra(`Cannot use ${e} scale if ${i} scale is not discrete.`)}}function Sf(e,t,n){const i=e===H?"width":"height",r=t[i];return r||or(n,i)}function Ex(e,t,n,i){switch(e){case"quantile":return t.scale.quantileCount;case"quantize":return t.scale.quantizeCount;case"threshold":return n!==void 0&&E(n)?n.length+1:(x(Zp(i)),3)}}function _x(e,t,n){const i=()=>{const r=Oe(t),s=Oe(e),o=`(${r} - ${s}) / (${n} - 1)`;return`sequence(${s}, ${r} + ${o}, ${o})`};return $(t)?new te(i):{signal:i()}}function kx(e,t){switch(e){case"bar":case"tick":return t.scale.minBandSize;case"line":case"trail":case"rule":return t.scale.minStrokeWidth;case"text":return t.scale.minFontSize;case"point":case"square":case"circle":return t.scale.minSize}throw new Error(Ri("size",e))}const vf=.95;function Cx(e,t,n,i){const r={x:mf(n,"x"),y:mf(n,"y")};switch(e){case"bar":case"tick":{if(i.scale.maxBandSize!==void 0)return i.scale.maxBandSize;const s=wf(t,r,i.view);return j(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=wf(t,r,i.view);return j(s)?Math.pow(vf*s,2):new te(()=>`pow(${vf} * ${s.signal}, 2)`)}}throw new Error(Ri("size",e))}function wf(e,t,n){const i=Qe(e.width)?e.width.step:sr(n,"width"),r=Qe(e.height)?e.height.step:sr(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 $f(e,t){q(e)?Fx(e,t):kf(e,t)}function Fx(e,t){const n=e.component.scales,{config:i,encoding:r,markDef:s,specifiedScales:o}=e;for(const a of b(n)){const c=o[a],u=n[a],l=e.getScaleComponent(a),f=K(r[a]),d=c[t],p=l.get("type"),h=l.get("padding"),g=l.get("paddingInner"),m=xs(p,t),y=yc(a,t);if(d!==void 0&&(m?y&&x(y):x(Va(p,t,a))),m&&y===void 0)if(d!==void 0){const v=f.timeUnit,k=f.type;switch(t){case"domainMax":case"domainMin":Bt(c[t])||k==="temporal"||v?u.set(t,{signal:Ji(c[t],{type:k,timeUnit:v})},!0):u.set(t,c[t],!0);break;default:u.copyKeyFromObject(t,c)}}else{const v=t in Ef?Ef[t]({model:e,channel:a,fieldOrDatumDef:f,scaleType:p,scalePadding:h,scalePaddingInner:g,domain:c.domain,domainMin:c.domainMin,domainMax:c.domainMax,markDef:s,config:i,hasNestedOffsetScale:Jc(r,a),hasSecondaryRangeChannel:!!r[He(a)]}):i.scale[t];v!==void 0&&u.set(t,v,!1)}}}const Ef={bins:({model:e,fieldOrDatumDef:t})=>S(t)?Nx(e,t):void 0,interpolate:({channel:e,fieldOrDatumDef:t})=>Tx(e,t.type),nice:({scaleType:e,channel:t,domain:n,domainMin:i,domainMax:r,fieldOrDatumDef:s})=>Ax(e,t,n,i,r,s),padding:({channel:e,scaleType:t,fieldOrDatumDef:n,markDef:i,config:r})=>Ox(e,t,r.scale,n,i,r.bar),paddingInner:({scalePadding:e,channel:t,markDef:n,scaleType:i,config:r,hasNestedOffsetScale:s})=>Px(e,t,n.type,i,r.scale,s),paddingOuter:({scalePadding:e,channel:t,scaleType:n,scalePaddingInner:i,config:r,hasNestedOffsetScale:s})=>zx(e,t,n,i,r.scale,s),reverse:({fieldOrDatumDef:e,scaleType:t,channel:n,config:i})=>{const r=S(e)?e.sort:void 0;return Rx(t,r,n,i.scale)},zero:({channel:e,fieldOrDatumDef:t,domain:n,markDef:i,scaleType:r,config:s,hasSecondaryRangeChannel:o})=>Ix(e,t,n,i,r,s.scale,o)};function _f(e){q(e)?xx(e):kf(e,"range")}function kf(e,t){const n=e.component.scales;for(const i of e.children)t==="range"?_f(i):$f(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",qu((c,u)=>{switch(t){case"range":return c.step&&u.step?c.step-u.step:0}return 0}))}}n[i].setWithExplicit(t,r)}}function Nx(e,t){const n=t.bin;if(U(n)){const i=So(e,t.field,n);return new te(()=>e.getSignalName(i))}else if(re(n)&&Ut(n)&&n.step!==void 0)return{step:n.step};return}function Tx(e,t){return A([ge,Be,We],e)&&t!=="nominal"?"hcl":void 0}function Ax(e,t,n,i,r,s){return Ie(s)?.bin||E(n)||r!=null||i!=null||A([se.TIME,se.UTC],e)?void 0:Y(t)?!0:void 0}function Ox(e,t,n,i,r,s){if(Y(e)){if(Xe(t)){if(n.continuousPadding!==void 0)return n.continuousPadding;const{type:o,orient:a}=r;if(o==="bar"&&!(S(i)&&(i.bin||i.timeUnit))&&(a==="vertical"&&e==="x"||a==="horizontal"&&e==="y"))return s.continuousBandSize}if(t===se.POINT)return n.pointPadding}return}function Px(e,t,n,i,r,s=!1){if(e!==void 0)return;if(Y(t)){const{bandPaddingInner:o,barBandPaddingInner:a,rectBandPaddingInner:c,tickBandPaddingInner:u,bandWithNestedOffsetPaddingInner:l}=r;return s?l:X(o,n==="bar"?a:n==="tick"?u:c)}else if(Xn(t)&&i===se.BAND)return r.offsetBandPaddingInner;return}function zx(e,t,n,i,r,s=!1){if(e!==void 0)return;if(Y(t)){const{bandPaddingOuter:o,bandWithNestedOffsetPaddingOuter:a}=r;if(s)return a;if(n===se.BAND)return X(o,$(i)?{signal:`${i.signal}/2`}:i/2)}else if(Xn(t)){if(n===se.POINT)return .5;if(n===se.BAND)return r.offsetBandPaddingOuter}return}function Rx(e,t,n,i){return n==="x"&&i.xReverse!==void 0?Pe(e)&&t==="descending"?$(i.xReverse)?{signal:`!${i.xReverse.signal}`}:!i.xReverse:i.xReverse:Pe(e)&&t==="descending"?!0:void 0}function Ix(e,t,n,i,r,s,o){const a=!!n&&n!=="unaggregated";if(a&&Pe(r)){if(E(n)){const c=n[0],u=n[n.length-1];if(j(c)&&c<=0&&j(u)&&u>=0)return!0}return!1}if(e==="size"&&t.type==="quantitative"&&!Sn(r))return!0;if(!(S(t)&&t.bin)&&A([...at,...Od],e)){const{orient:c,type:u}=i;return A(["bar","area","line","trail"],u)&&(c==="horizontal"&&e==="y"||c==="vertical"&&e==="x")?!1:A(["bar","area"],u)&&!o?!0:s?.zero}return!1}function Lx(e,t,n,i,r=!1){const s=Mx(t,n,i,r),{type:o}=e;return qe(t)?o!==void 0?Rg(t,o)?S(n)&&!zg(o,n.type)?(x(Ip(o,s)),s):o:(x(Rp(t,o,s)),s):s:null}function Mx(e,t,n,i){switch(t.type){case"nominal":case"ordinal":{if(mn(e)||Zr(e)==="discrete")return e==="shape"&&t.type==="ordinal"&&x(ss(e,"ordinal")),"ordinal";if(Y(e)||Xn(e)){if(A(["rect","bar","image","rule","tick"],n.type))return"band";if(i)return"band"}else if(n.type==="arc"&&e in Kr)return"band";const r=n[me(e)];return Gt(r)||wn(t)&&t.axis?.tickBand?"band":"point"}case"temporal":return mn(e)?"time":Zr(e)==="discrete"?(x(ss(e,"temporal")),"ordinal"):S(t)&&t.timeUnit&&Z(t.timeUnit).utc?"utc":"time";case"quantitative":return mn(e)?S(t)&&U(t.bin)?"bin-ordinal":"linear":Zr(e)==="discrete"?(x(ss(e,"quantitative")),"ordinal"):"linear";case"geojson":return}throw new Error(qa(t.type))}function Dx(e,{ignoreRange:t}={}){Cf(e),ff(e);for(const n of Pg)$f(e,n);t||_f(e)}function Cf(e){q(e)?e.component.scales=jx(e):e.component.scales=Bx(e)}function jx(e){const{encoding:t,mark:n,markDef:i}=e,r={};for(const s of Qr){const o=K(t[s]);if(o&&n===Sc&&s===he&&o.type===xn)continue;let a=o&&o.scale;if(o&&a!==null&&a!==!1){a??(a={});const c=Jc(t,s),u=Lx(a,s,o,i,c);r[s]=new hf(e.scaleName(`${s}`,!0),{value:u,explicit:a.type===u})}}return r}const Ux=qu((e,t)=>fc(e)-fc(t));function Bx(e){var t;const n=e.component.scales={},i={},r=e.component.resolve;for(const s of e.children){Cf(s);for(const o of b(s.component.scales))if((t=r.scale)[o]??(t[o]=Hl(o,e)),r.scale[o]==="shared"){const a=i[o],c=s.component.scales[o].getWithExplicit("type");a?$g(a.value,c.value)?i[o]=At(a,c,"type","scale",Ux):(r.scale[o]="independent",delete i[o]):i[o]=c}}for(const s of b(i)){const o=e.scaleName(s,!0),a=i[s];n[s]=new hf(o,a);for(const c of e.children){const u=c.component.scales[s];u&&(c.renameScale(u.get("name"),o),u.merged=!0)}}return n}class Oo{constructor(){this.nameMap={}}rename(t,n){this.nameMap[t]=n}has(t){return this.nameMap[t]!==void 0}get(t){for(;this.nameMap[t]&&t!==this.nameMap[t];)t=this.nameMap[t];return t}}function q(e){return e?.type==="unit"}function ve(e){return e?.type==="facet"}function Po(e){return e?.type==="concat"}function Mn(e){return e?.type==="layer"}class zo{constructor(t,n,i,r,s,o,a){this.type=n,this.parent=i,this.config=s,this.correctDataNames=c=>(c.from?.data&&(c.from.data=this.lookupDataSource(c.from.data)),c.from?.facet?.data&&(c.from.facet.data=this.lookupDataSource(c.from.facet.data)),c),this.parent=i,this.config=s,this.view=oe(a),this.name=t.name??r,this.title=kt(t.title)?{text:t.title}:t.title?oe(t.title):void 0,this.scaleNameMap=i?i.scaleNameMap:new Oo,this.projectionNameMap=i?i.projectionNameMap:new Oo,this.signalNameMap=i?i.signalNameMap:new Oo,this.data=t.data,this.description=t.description,this.transforms=Ym(t.transform??[]),this.layout=n==="layer"||n==="unit"?{}:Jh(t,n,s),this.component={data:{sources:i?i.component.data.sources:[],outputNodes:i?i.component.data.outputNodes:{},outputNodeRefCounts:i?i.component.data.outputNodeRefCounts:{},isFaceted:Gi(t)||i?.component.data.isFaceted&&t.data===void 0},layoutSize:new pt,layoutHeaders:{row:{},column:{},facet:{}},mark:null,resolve:{scale:{},axis:{},legend:{},...o?C(o):{}},selection:null,scales:null,projection:null,axes:{},legends:{}}}get width(){return this.getSizeSignalRef("width")}get height(){return this.getSizeSignalRef("height")}parse(){this.parseScale(),this.parseLayoutSize(),this.renameTopLevelLayoutSizeSignal(),this.parseSelections(),this.parseProjection(),this.parseData(),this.parseAxesAndHeaders(),this.parseLegends(),this.parseMarkGroup()}parseScale(){Dx(this)}parseProjection(){rf(this)}renameTopLevelLayoutSizeSignal(){this.getName("width")!=="width"&&this.renameSignal(this.getName("width"),"width"),this.getName("height")!=="height"&&this.renameSignal(this.getName("height"),"height")}parseLegends(){Zl(this)}assembleEncodeFromView(t){const{style:n,...i}=t,r={};for(const s of b(i)){const o=i[s];o!==void 0&&(r[s]=B(o))}return r}assembleGroupEncodeEntry(t){let n={};return this.view&&(n=this.assembleEncodeFromView(this.view)),!t&&(this.description&&(n.description=B(this.description)),this.type==="unit"||this.type==="layer")?{width:this.getSizeSignalRef("width"),height:this.getSizeSignalRef("height"),...n}:M(n)?void 0:n}assembleLayout(){if(!this.layout)return;const{spacing:t,...n}=this.layout,{component:i,config:r}=this,s=cb(i.layoutHeaders,r);return{padding:t,...this.assembleDefaultLayout(),...n,...s?{titleBand:s}:{}}}assembleDefaultLayout(){return{}}assembleHeaderMarks(){const{layoutHeaders:t}=this.component;let n=[];for(const i of _e)t[i].title&&n.push(nb(this,i));for(const i of go)n=n.concat(ib(this,i));return n}assembleAxes(){return Wy(this.component.axes,this.config)}assembleLegends(){return ef(this)}assembleProjections(){return Ab(this)}assembleTitle(){const{encoding:t,...n}=this.title??{},i={...Ca(this.config.title).nonMarkTitleProperties,...n,...t?{encode:{update:t}}:{}};return i.text?(A(["unit","layer"],this.type)?A(["middle",void 0],i.anchor)&&(i.frame??(i.frame="group")):i.anchor??(i.anchor="start"),M(i)?void 0:i):void 0}assembleGroup(t=[]){const n={};t=t.concat(this.assembleSignals()),t.length>0&&(n.signals=t);const i=this.assembleLayout();i&&(n.layout=i),n.marks=[].concat(this.assembleHeaderMarks(),this.assembleMarks());const r=!this.parent||ve(this.parent)?pf(this):[];r.length>0&&(n.scales=r);const s=this.assembleAxes();s.length>0&&(n.axes=s);const o=this.assembleLegends();return o.length>0&&(n.legends=o),n}getName(t){return W((this.name?`${this.name}_`:"")+t)}getDataName(t){return this.getName(G[t].toLowerCase())}requestDataName(t){const n=this.getDataName(t),i=this.component.data.outputNodeRefCounts;return i[n]=(i[n]||0)+1,n}getSizeSignalRef(t){if(ve(this.parent)){const n=Bl(t),i=Ai(n),r=this.component.scales[i];if(r&&!r.merged){const s=r.get("type"),o=r.get("range");if(J(s)&&Ct(o)){const a=r.get("name"),c=vr(this,i),u=Ao(c);if(u){const l=w({aggregate:"distinct",field:u},{expr:"datum"});return{signal:Ul(a,r,l)}}else return x(is(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):ba(t)&&qe(t)&&this.component.scales[t]||this.scaleNameMap.has(this.getName(t))?this.scaleNameMap.get(this.getName(t)):void 0}projectionName(t){return t?this.getName("projection"):this.component.projection&&!this.component.projection.merged||this.projectionNameMap.has(this.getName("projection"))?this.projectionNameMap.get(this.getName("projection")):void 0}getScaleComponent(t){if(!this.component.scales)throw new Error("getScaleComponent cannot be called before parseScale(). Make sure you have called parseScale or use parseUnitModelWithScale().");const n=this.component.scales[t];return n&&!n.merged?n:this.parent?this.parent.getScaleComponent(t):void 0}getScaleType(t){const n=this.getScaleComponent(t);return n?n.get("type"):void 0}getSelectionComponent(t,n){let i=this.component.selection[t];if(!i&&this.parent&&(i=this.parent.getSelectionComponent(t,n)),!i)throw new Error(ep(n));return i}hasAxisOrientSignalRef(){return this.component.axes.x?.some(t=>t.hasOrientSignalRef())||this.component.axes.y?.some(t=>t.hasOrientSignalRef())}}class Ff extends zo{vgField(t,n={}){const i=this.fieldDef(t);return i?w(i,n):void 0}reduceFieldDef(t,n){return Fh(this.getMapping(),(i,r,s)=>{const o=Ie(r);return o?t(i,o,s):i},n)}forEachFieldDef(t,n){Ps(this.getMapping(),(i,r)=>{const s=Ie(i);s&&t(s,r)},n)}}class wr extends I{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]??"value",i[1]??"density"];const r=this.transform.resolve??"shared";this.transform.resolve=r}dependentFields(){return new Set([this.transform.density,...this.transform.groupby??[]])}producedFields(){return new Set(this.transform.as)}hash(){return`DensityTransform ${P(this.transform)}`}assemble(){const{density:t,...n}=this.transform,i={type:"kde",field:t,...n};return i.resolve=this.transform.resolve,i}}class $r extends I{clone(){return new $r(null,C(this.transform))}constructor(t,n){super(t);this.transform=n,this.transform=C(n)}dependentFields(){return new Set([this.transform.extent])}producedFields(){return new Set([])}hash(){return`ExtentTransform ${P(this.transform)}`}assemble(){const{extent:t,param:n}=this.transform,i={type:"extent",field:t,signal:n};return i}}class Er extends I{clone(){return new Er(this.parent,C(this.transform))}constructor(t,n){super(t);this.transform=n,this.transform=C(n);const{flatten:i,as:r=[]}=this.transform;this.transform.as=i.map((s,o)=>r[o]??s)}dependentFields(){return new Set(this.transform.flatten)}producedFields(){return new Set(this.transform.as)}hash(){return`FlattenTransform ${P(this.transform)}`}assemble(){const{flatten:t,as:n}=this.transform,i={type:"flatten",fields:t,as:n};return i}}class _r extends I{clone(){return new _r(null,C(this.transform))}constructor(t,n){super(t);this.transform=n,this.transform=C(n);const i=this.transform.as??[void 0,void 0];this.transform.as=[i[0]??"key",i[1]??"value"]}dependentFields(){return new Set(this.transform.fold)}producedFields(){return new Set(this.transform.as)}hash(){return`FoldTransform ${P(this.transform)}`}assemble(){const{fold:t,as:n}=this.transform,i={type:"fold",fields:t,as:n};return i}}class Dn extends I{clone(){return new Dn(null,C(this.fields),this.geojson,this.signal)}static parseAll(t,n){if(n.component.projection&&!n.component.projection.isFit)return t;let i=0;for(const r of[[Te,Ne],[Ee,Ae]]){const s=r.map(o=>{const a=K(n.encoding[o]);return S(a)?a.field:Ke(a)?{expr:`${a.datum}`}:Re(a)?{expr:`${a.value}`}:void 0});(s[0]||s[1])&&(t=new Dn(t,s,null,n.getName(`geojson_${i++}`)))}if(n.channelHasField(he)){const r=n.typedFieldDef(he);r.type===xn&&(t=new Dn(t,null,r.field,n.getName(`geojson_${i++}`)))}return t}constructor(t,n,i,r){super(t);this.fields=n,this.geojson=i,this.signal=r}dependentFields(){const t=(this.fields??[]).filter(N);return new Set([...this.geojson?[this.geojson]:[],...t])}producedFields(){return new Set}hash(){return`GeoJSON ${this.geojson} ${this.signal} ${P(this.fields)}`}assemble(){return[...this.geojson?[{type:"filter",expr:`isValid(datum["${this.geojson}"])`}]:[],{type:"geojson",...this.fields?{fields:this.fields}:{},...this.geojson?{geojson:this.geojson}:{},signal:this.signal}]}}class di extends I{clone(){return new di(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:Ke(a)?{expr:`${a.datum}`}:Re(a)?{expr:`${a.value}`}:void 0}),s=i[0]===Ee?"2":"";(r[0]||r[1])&&(t=new di(t,n.projectionName(),r,[n.getName(`x${s}`),n.getName(`y${s}`)]))}return t}dependentFields(){return new Set(this.fields.filter(N))}producedFields(){return new Set(this.as)}hash(){return`Geopoint ${this.projection} ${P(this.fields)} ${P(this.as)}`}assemble(){return{type:"geopoint",projection:this.projection,fields:this.fields,as:this.as}}}class rn extends I{clone(){return new rn(null,C(this.transform))}constructor(t,n){super(t);this.transform=n}dependentFields(){return new Set([this.transform.impute,this.transform.key,...this.transform.groupby??[]])}producedFields(){return new Set([this.transform.impute])}processSequence(t){const{start:n=0,stop:i,step:r}=t,s=[n,i,...r?[r]:[]].join(",");return{signal:`sequence(${s})`}}static makeFromTransform(t,n){return new rn(t,n)}static makeFromEncoding(t,n){const i=n.encoding,r=i.x,s=i.y;if(S(r)&&S(s)){const o=r.impute?r:s.impute?s:void 0;if(o===void 0)return;const a=r.impute?s:s.impute?r:void 0,{method:c,value:u,frame:l,keyvals:f}=o.impute,d=nu(n.mark,i);return new rn(t,{impute:o.field,key:a.field,...c?{method:c}:{},...u!==void 0?{value:u}:{},...l?{frame:l}:{},...f!==void 0?{keyvals:f}:{},...d.length?{groupby:d}:{}})}return null}hash(){return`Impute ${P(this.transform)}`}assemble(){const{impute:t,key:n,keyvals:i,method:r,groupby:s,value:o,frame:a=[null,null]}=this.transform,c={type:"impute",field:t,key:n,...i?{keyvals:Tm(i)?this.processSequence(i):i}:{},method:"value",...s?{groupby:s}:{},value:!r||r==="value"?o:null};if(r&&r!=="value"){const u={type:"window",as:[`imputed_${t}_value`],ops:[r],fields:[t],frame:a,ignorePeers:!1,...s?{groupby:s}:{}},l={type:"formula",expr:`datum.${t} === null ? datum.imputed_${t}_value : datum.${t}`,as:t};return[c,u,l]}else return[c]}}class kr extends I{clone(){return new kr(null,C(this.transform))}constructor(t,n){super(t);this.transform=n,this.transform=C(n);const i=this.transform.as??[void 0,void 0];this.transform.as=[i[0]??n.on,i[1]??n.loess]}dependentFields(){return new Set([this.transform.loess,this.transform.on,...this.transform.groupby??[]])}producedFields(){return new Set(this.transform.as)}hash(){return`LoessTransform ${P(this.transform)}`}assemble(){const{loess:t,on:n,...i}=this.transform,r={type:"loess",x:n,y:t,...i};return r}}class pi extends I{clone(){return new pi(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(Am(o)){let c=Of(o.data,s);c||(c=new en(o.data),s.push(c));const u=n.getName(`lookup_${r}`);a=new ye(c,u,G.Lookup,n.component.data.outputNodeRefCounts),n.component.data.outputNodes[u]=a}else if(Om(o)){const c=o.param;i={as:c,...i};let u;try{u=n.getSelectionComponent(W(c),c)}catch(l){throw new Error(rp(c))}if(a=u.materialized,!a)throw new Error(sp(c))}return new pi(t,i,a.getSource())}dependentFields(){return new Set([this.transform.lookup])}producedFields(){return new Set(this.transform.as?V(this.transform.as):this.transform.from.fields)}hash(){return`Lookup ${P({transform:this.transform,secondary:this.secondary})}`}assemble(){let t;if(this.transform.from.fields)t={values:this.transform.from.fields,...this.transform.as?{as:V(this.transform.as)}:{}};else{let n=this.transform.as;N(n)||(x(pp),n="_lookup"),t={as:[n]}}return{type:"lookup",from:this.secondary,key:this.transform.from.key,fields:[this.transform.lookup],...t,...this.transform.default?{default:this.transform.default}:{}}}}class Cr extends I{clone(){return new Cr(null,C(this.transform))}constructor(t,n){super(t);this.transform=n,this.transform=C(n);const i=this.transform.as??[void 0,void 0];this.transform.as=[i[0]??"prob",i[1]??"value"]}dependentFields(){return new Set([this.transform.quantile,...this.transform.groupby??[]])}producedFields(){return new Set(this.transform.as)}hash(){return`QuantileTransform ${P(this.transform)}`}assemble(){const{quantile:t,...n}=this.transform,i={type:"quantile",field:t,...n};return i}}class Fr extends I{clone(){return new Fr(null,C(this.transform))}constructor(t,n){super(t);this.transform=n,this.transform=C(n);const i=this.transform.as??[void 0,void 0];this.transform.as=[i[0]??n.on,i[1]??n.regression]}dependentFields(){return new Set([this.transform.regression,this.transform.on,...this.transform.groupby??[]])}producedFields(){return new Set(this.transform.as)}hash(){return`RegressionTransform ${P(this.transform)}`}assemble(){const{regression:t,on:n,...i}=this.transform,r={type:"regression",x:n,y:t,...i};return r}}class Nr extends I{clone(){return new Nr(null,C(this.transform))}constructor(t,n){super(t);this.transform=n}addDimensions(t){this.transform.groupby=je((this.transform.groupby??[]).concat(t),n=>n)}producedFields(){return}dependentFields(){return new Set([this.transform.pivot,this.transform.value,...this.transform.groupby??[]])}hash(){return`PivotTransform ${P(this.transform)}`}assemble(){const{pivot:t,value:n,groupby:i,limit:r,op:s}=this.transform;return{type:"pivot",field:t,value:n,...r!==void 0?{limit:r}:{},...s!==void 0?{op:s}:{},...i!==void 0?{groupby:i}:{}}}}class Tr extends I{clone(){return new Tr(null,C(this.transform))}constructor(t,n){super(t);this.transform=n}dependentFields(){return new Set}producedFields(){return new Set}hash(){return`SampleTransform ${P(this.transform)}`}assemble(){return{type:"sample",size:this.transform.sample}}}function Nf(e){let t=0;function n(i,r){if(i instanceof en&&(!i.isGenerator&&!Cn(i.data))){e.push(r);const s={name:null,source:r.name,transform:[]};r=s}if(i instanceof ce&&(i.parent instanceof en&&!r.source?(r.format={...r.format,parse:i.assembleFormatParse()},r.transform.push(...i.assembleTransforms(!0))):r.transform.push(...i.assembleTransforms())),i instanceof Rn){r.name||(r.name=`data_${t++}`),!r.source||r.transform.length>0?(e.push(r),i.data=r.name):i.data=r.source,e.push(...i.assemble());return}if((i instanceof ui||i instanceof li||i instanceof In||i instanceof An||i instanceof On||i instanceof di||i instanceof Me||i instanceof pi||i instanceof Ln||i instanceof nn||i instanceof _r||i instanceof Er||i instanceof wr||i instanceof kr||i instanceof Cr||i instanceof Fr||i instanceof Rt||i instanceof Tr||i instanceof Nr||i instanceof $r)&&r.transform.push(i.assemble()),(i instanceof et||i instanceof Je||i instanceof rn||i instanceof ht||i instanceof Dn)&&r.transform.push(...i.assemble()),i instanceof ye){if(r.source&&r.transform.length===0)i.setSource(r.source);else if(i.parent instanceof ye)i.setSource(r.name);else if(r.name||(r.name=`data_${t++}`),i.setSource(r.name),i.numChildren()===1){e.push(r);const s={name:null,source:r.name,transform:[]};r=s}}switch(i.numChildren()){case 0:i instanceof ye&&(!r.source||r.transform.length>0)&&e.push(r);break;case 1:n(i.children[0],r);break;default:{r.name||(r.name=`data_${t++}`);let s=r.name;!r.source||r.transform.length>0?e.push(r):s=r.source;for(const o of i.children){const a={name:null,source:s,transform:[]};n(o,a)}break}}}return n}function Wx(e){const t=[],n=Nf(t);for(const i of e.children)n(i,{source:e.name,name:null,transform:[]});return t}function Hx(e,t){const n=[],i=Nf(n);let r=0;for(const o of e.sources){o.hasName()||(o.dataName=`source_${r++}`);const a=o.assemble();i(o,a)}for(const o of n)o.transform.length===0&&delete o.transform;let s=0;for(const[o,a]of n.entries())(a.transform??[]).length===0&&!a.source&&n.splice(s++,0,n.splice(o,1)[0]);for(const o of n)for(const a of o.transform??[])a.type==="lookup"&&(a.from=e.outputNodes[a.from].getSource());for(const o of n)o.name in t&&(o.values=t[o.name]);return n}function qx(e){return e==="top"||e==="left"||$(e)?"header":"footer"}function Gx(e){for(const t of _e)Vx(e,t);Af(e,"x"),Af(e,"y")}function Vx(e,t){const{facet:n,config:i,child:r,component:s}=e;if(e.channelHasField(t)){const o=n[t],a=zn("title",null,i,t);let c=$n(o,i,{allowDisabling:!0,includeDefault:a===void 0||!!a});r.component.layoutHeaders[t].title&&(c=E(c)?c.join(", "):c,c+=` / ${r.component.layoutHeaders[t].title}`,r.component.layoutHeaders[t].title=null);const u=zn("labelOrient",o.header,i,t),l=o.header!==null?X(o.header?.labels,i.header.labels,!0):!1,f=A(["bottom","right"],u)?"footer":"header";s.layoutHeaders[t]={title:o.header!==null?c:null,facetFieldDef:o,[f]:t==="facet"?[]:[Tf(e,t,l)]}}}function Tf(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 Af(e,t){const{child:n}=e;if(n.component.axes[t]){const{layoutHeaders:i,resolve:r}=e.component;if(r.axis[t]=bo(r,t),r.axis[t]==="shared"){const s=t==="x"?"column":"row",o=i[s];for(const a of n.component.axes[t]){const c=qx(a.get("orient"));o[c]??(o[c]=[Tf(e,s,!1)]);const u=ci(a,"main",e.config,{header:!0});u&&o[c][0].axes.push(u),a.mainExtracted=!0}}}}function Xx(e){Ro(e),Ar(e,"width"),Ar(e,"height")}function Yx(e){Ro(e);const t=e.layout.columns===1?"width":"childWidth",n=e.layout.columns===void 0?"height":"childHeight";Ar(e,t),Ar(e,n)}function Ro(e){for(const t of e.children)t.parseLayoutSize()}function Ar(e,t){const n=Bl(t),i=Ai(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]??Hl(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 Kx(e){const{size:t,component:n}=e;for(const i of at){const r=me(i);if(t[r]){const s=t[r];n.layoutSize.set(r,Qe(s)?"step":s,!0)}else{const s=Qx(e,r);n.layoutSize.set(r,s,!1)}}}function Qx(e,t){const n=t==="width"?"x":"y",i=e.config,r=e.getScaleComponent(n);if(r){const s=r.get("type"),o=r.get("range");if(J(s)){const a=or(i.view,t);return Ct(o)||Qe(a)?"step":a}else return qs(i.view,t)}else{if(e.hasProjection||e.mark==="arc")return qs(i.view,t);{const s=or(i.view,t);return Qe(s)?s.step:s}}}function Io(e,t,n){return w(t,{suffix:`by_${w(e)}`,...n})}class gi extends Ff{constructor(t,n,i,r){super(t,"facet",n,i,r,t.resolve);this.child=Uo(t.spec,this,this.getName("child"),void 0,r),this.children=[this.child],this.facet=this.initFacet(t.facet)}initFacet(t){if(!ei(t))return{facet:this.initFacetFieldDef(t,"facet")};const n=b(t),i={};for(const r of n){if(![tt,nt].includes(r)){x(Ri(r,"facet"));break}const s=t[r];if(s.field===void 0){x(rs(s,r));break}i[r]=this.initFacetFieldDef(s,r)}return i}initFacetFieldDef(t,n){const i=Os(t,n);return i.header?i.header=oe(i.header):i.header===null&&(i.header=null),i}channelHasField(t){return!!this.facet[t]}fieldDef(t){return this.facet[t]}parseData(){this.component.data=Or(this),this.child.parseData()}parseLayoutSize(){Ro(this)}parseSelections(){this.child.parseSelections(),this.component.selection=this.child.component.selection}parseMarkGroup(){this.child.parseMarkGroup()}parseAxesAndHeaders(){this.child.parseAxesAndHeaders(),Gx(this)}assembleSelectionTopLevelSignals(t){return this.child.assembleSelectionTopLevelSignals(t)}assembleSignals(){return this.child.assembleSignals(),[]}assembleSelectionData(t){return this.child.assembleSelectionData(t)}getHeaderLayoutMixins(){const t={};for(const n of _e)for(const i of ho){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=yr(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 gi)return;{const t=this.getName("column_domain");return{signal:`length(data('${t}'))`}}}assembleGroupStyle(){return}assembleGroup(t){return this.parent&&this.parent instanceof gi?{...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 gi){if(this.child.channelHasField("column")){const r=w(this.child.facet.column);t.push(r),n.push("distinct"),i.push(`distinct_${r}`)}}else for(const r of at){const s=this.child.component.scales[r];if(s&&!s.merged){const o=s.get("type"),a=s.get("range");if(J(o)&&Ct(a)){const c=vr(this.child,r),u=Ao(c);u?(t.push(u),n.push("distinct"),i.push(`distinct_${u}`)):x(is(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(U(d)&&c.push(w(f,{binSuffix:"end"})),lt(p)){const{field:h,op:g=qi}=p,m=Io(f,p);i&&r?(s.push(m),o.push("max"),a.push(m)):(s.push(h),o.push(g),a.push(m))}else if(E(p)){const h=Pn(f,l);s.push(h),o.push("max"),a.push(h)}}}const u=!!i&&!!r;return{name:t,data:n,groupby:c,...u||s.length>0?{aggregate:{...u?{cross:u}:{},...s.length?{fields:s,ops:o,as:a}:{}}}:{}}}facetSortFields(t){const{facet:n}=this,i=n[t];return i?lt(i.sort)?[Io(i,i.sort,{expr:"datum"})]:E(i.sort)?[Pn(i,t,{expr:"datum"})]:[w(i,{expr:"datum"})]:[]}facetSortOrder(t){const{facet:n}=this,i=n[t];if(i){const{sort:r}=i,s=(lt(r)?r.order:!E(r)&&r)||"ascending";return[s]}return[]}assembleLabelTitle(){const{facet:t,config:n}=this;if(t.facet)return mo(t.facet,"facet",n);const i={row:["top","bottom"],column:["left","right"]};for(const r of go)if(t[r]){const s=zn("labelOrient",t[r]?.header,n,r);if(i[r].includes(s))return mo(t[r],r,n)}return}assembleMarks(){const{child:t}=this,n=this.component.data.facetRoot,i=Wx(n),r=t.assembleGroupEncodeEntry(!1),s=this.assembleLabelTitle()||t.assembleTitle(),o=t.assembleGroupStyle(),a={name:this.getName("cell"),type:"group",...s?{title:s}:{},...o?{style:o}:{},from:{facet:this.assembleFacet()},sort:{field:_e.map(c=>this.facetSortFields(c)).flat(),order:_e.map(c=>this.facetSortOrder(c)).flat()},...i.length>0?{data:i}:{},...r?{encode:{update:r}}:{},...t.assembleGroup(uy(this,[]))};return[a]}getMapping(){return this.facet}}function Zx(e,t){const{row:n,column:i}=t;if(n&&i){let r=null;for(const s of[n,i])if(lt(s.sort)){const{field:o,op:a=qi}=s.sort;e=r=new nn(e,{joinaggregate:[{op:a,field:o,as:Io(s,s.sort,{forAs:!0})}],groupby:[w(s)]})}return r}return null}function Of(e,t){for(const n of t){const i=n.data;if(e.name&&n.hasName()&&e.name!==n.dataName)continue;const r=e.format?.mesh,s=i.format?.feature;if(r&&s)continue;const o=e.format?.feature;if((o||s)&&o!==s)continue;const a=i.format?.mesh;if((r||a)&&r!==a)continue;if(si(e)&&si(i)){if(be(e.values,i.values))return n}else if(Cn(e)&&Cn(i)){if(e.url===i.url)return n}else if(Gu(e)&&e.name===n.dataName)return n}return null}function Jx(e,t){if(e.data||!e.parent){if(e.data===null){const i=new en({values:[]});return t.push(i),i}const n=Of(e.data,t);if(n)return Ot(e.data)||(n.data.format=sa({},e.data.format,n.data.format)),!n.hasName()&&e.data.name&&(n.dataName=e.data.name),n;{const i=new en(e.data);return t.push(i),i}}else return e.parent.component.data.facetRoot?e.parent.component.data.facetRoot:e.parent.component.data.main}function eS(e,t,n){let i=0;for(const r of t.transforms){let s,o;if(Bm(r))o=e=new On(e,r),s="derived";else if(Ks(r)){const a=Hb(r);o=e=ce.makeWithAncestors(e,{},a,n)??e,e=new An(e,t,r.filter)}else if(Mu(r))o=e=et.makeFromTransform(e,r,t),s="number";else if(Hm(r)){s="date";const a=n.getWithExplicit(r.field);a.value===void 0&&(e=new ce(e,{[r.field]:s}),n.set(r.field,s,!1)),o=e=Je.makeFromTransform(e,r)}else if(qm(r))o=e=Me.makeFromTransform(e,r),s="number",co(t)&&(e=new Rt(e));else if(Lu(r))o=e=pi.make(e,t,r,i++),s="derived";else if(Dm(r))o=e=new Ln(e,r),s="number";else if(jm(r))o=e=new nn(e,r),s="number";else if(Gm(r))o=e=ht.makeFromTransform(e,r),s="derived";else if(Vm(r))o=e=new _r(e,r),s="derived";else if(Xm(r))o=e=new $r(e,r),s="derived";else if(Um(r))o=e=new Er(e,r),s="derived";else if(Pm(r))o=e=new Nr(e,r),s="derived";else if(Mm(r))e=new Tr(e,r);else if(Wm(r))o=e=rn.makeFromTransform(e,r),s="derived";else if(zm(r))o=e=new wr(e,r),s="derived";else if(Rm(r))o=e=new Cr(e,r),s="derived";else if(Im(r))o=e=new Fr(e,r),s="derived";else if(Lm(r))o=e=new kr(e,r),s="derived";else{x(dp(r));continue}if(o&&s!==void 0)for(const a of o.producedFields()??[])n.set(a,s,!1)}return e}function Or(e){let t=Jx(e,e.component.data.sources);const{outputNodes:n,outputNodeRefCounts:i}=e.component.data,r=e.data,s=r&&(Ot(r)||Cn(r)||si(r)),o=!s&&e.parent?e.parent.component.data.ancestorParse.clone():new oy;Ot(r)?(Vu(r)?t=new li(t,r.sequence):Js(r)&&(t=new ui(t,r.graticule)),o.parseNothing=!0):r?.format?.parse===null&&(o.parseNothing=!0),t=ce.makeExplicit(t,e,o)??t,t=new Rt(t);const a=e.parent&&Mn(e.parent);(q(e)||ve(e))&&(a&&(t=et.makeFromEncoding(t,e)??t)),e.transforms.length>0&&(t=eS(t,e,o));const c=Gb(e),u=qb(e);t=ce.makeWithAncestors(t,{},{...c,...u},o)??t,q(e)&&(t=Dn.parseAll(t,e),t=di.parseAll(t,e)),(q(e)||ve(e))&&(a||(t=et.makeFromEncoding(t,e)??t),t=Je.makeFromEncoding(t,e)??t,t=On.parseAllForSortIndex(t,e));const l=t=Pr(G.Raw,e,t);if(q(e)){const m=Me.makeFromEncoding(t,e);m&&(t=m,co(e)&&(t=new Rt(t))),t=rn.makeFromEncoding(t,e)??t,t=ht.makeFromEncoding(t,e)??t}let f,d;if(q(e)){const{markDef:m,mark:y,config:v}=e,k=R("invalid",m,v),{marks:_,scales:T}=d=Yu({invalid:k,isPath:Ft(y)});_!==T&&T==="include-invalid-values"&&(f=t=Pr(G.PreFilterInvalid,e,t)),_==="exclude-invalid-values"&&(t=In.make(t,e,d)??t)}const p=t=Pr(G.Main,e,t);let h;if(q(e)&&d){const{marks:m,scales:y}=d;m==="include-invalid-values"&&y==="exclude-invalid-values"&&(t=In.make(t,e,d)??t,h=t=Pr(G.PostFilterInvalid,e,t))}q(e)&&Uy(e,p);let g=null;if(ve(e)){const m=e.getName("facet");t=Zx(t,e.facet)??t,g=new Rn(t,e,m,p.getSource()),n[m]=g}return{...e.component.data,outputNodes:n,outputNodeRefCounts:i,raw:l,main:p,facetRoot:g,ancestorParse:o,preFilterInvalid:f,postFilterInvalid:h}}function Pr(e,t,n){const{outputNodes:i,outputNodeRefCounts:r}=t.component.data,s=t.getDataName(e),o=new ye(n,s,e,r);return i[s]=o,o}class tS extends zo{constructor(t,n,i,r){super(t,"concat",n,i,r,t.resolve);(t.resolve?.axis?.x==="shared"||t.resolve?.axis?.y==="shared")&&x(up),this.children=this.getChildren(t).map((s,o)=>Uo(s,this,this.getName(`concat_${o}`),void 0,r))}parseData(){this.component.data=Or(this);for(const t of this.children)t.parseData()}parseSelections(){this.component.selection={};for(const t of this.children){t.parseSelections();for(const n of b(t.component.selection))this.component.selection[n]=t.component.selection[n]}}parseMarkGroup(){for(const t of this.children)t.parseMarkGroup()}parseAxesAndHeaders(){for(const t of this.children)t.parseAxesAndHeaders()}getChildren(t){return rr(t)?t.vconcat:Hs(t)?t.hconcat:t.concat}parseLayoutSize(){Yx(this)}parseAxisGroup(){return null}assembleSelectionTopLevelSignals(t){return this.children.reduce((n,i)=>i.assembleSelectionTopLevelSignals(n),t)}assembleSignals(){return this.children.forEach(t=>t.assembleSignals()),[]}assembleLayoutSignals(){const t=yo(this);for(const n of this.children)t.push(...n.assembleLayoutSignals());return t}assembleSelectionData(t){return this.children.reduce((n,i)=>i.assembleSelectionData(n),t)}assembleMarks(){return this.children.map(t=>{const n=t.assembleTitle(),i=t.assembleGroupStyle(),r=t.assembleGroupEncodeEntry(!1);return{type:"group",name:t.getName("group"),...n?{title:n}:{},...i?{style:i}:{},...r?{encode:{update:r}}:{},...t.assembleGroup()}})}assembleGroupStyle(){return}assembleDefaultLayout(){const t=this.layout.columns;return{...t!=null?{columns:t}:{},bounds:"full",align:"each"}}}function nS(e){return e===!1||e===null}const iS={disable:1,gridScale:1,scale:1,...Yc,labelExpr:1,encode:1},Pf=b(iS);class Lo extends pt{constructor(t={},n={},i=!1){super();this.explicit=t,this.implicit=n,this.mainExtracted=i}clone(){return new Lo(C(this.explicit),C(this.implicit),this.mainExtracted)}hasAxisPart(t){return t==="axis"?!0:t==="grid"||t==="title"?!!this.get(t):!nS(this.get(t))}hasOrientSignalRef(){return $(this.explicit.orient)}}function rS(e,t,n){const{encoding:i,config:r}=e,s=K(i[t])??K(i[He(t)]),o=e.axis(t)||{},{format:a,formatType:c}=o;if(Xt(c))return{text:ze({fieldOrDatumDef:s,field:"datum.value",format:a,formatType:c,config:r}),...n};if(a===void 0&&c===void 0&&r.customFormatTypes){if(vn(s)==="quantitative"){if(wn(s)&&s.stack==="normalize"&&r.normalizedNumberFormatType)return{text:ze({fieldOrDatumDef:s,field:"datum.value",format:r.normalizedNumberFormat,formatType:r.normalizedNumberFormatType,config:r}),...n};if(r.numberFormatType)return{text:ze({fieldOrDatumDef:s,field:"datum.value",format:r.numberFormat,formatType:r.numberFormatType,config:r}),...n}}if(vn(s)==="temporal"&&r.timeFormatType&&S(s)&&!s.timeUnit)return{text:ze({fieldOrDatumDef:s,field:"datum.value",format:r.timeFormat,formatType:r.timeFormatType,config:r}),...n}}return n}function sS(e){return at.reduce((t,n)=>(e.component.scales[n]&&(t[n]=[dS(n,e)]),t),{})}const oS={bottom:"top",top:"bottom",left:"right",right:"left"};function aS(e){const{axes:t,resolve:n}=e.component,i={top:0,bottom:0,right:0,left:0};for(const r of e.children){r.parseAxesAndHeaders();for(const s of b(r.component.axes))n.axis[s]=bo(e.component.resolve,s),n.axis[s]==="shared"&&(t[s]=cS(t[s],r.component.axes[s]),t[s]||(n.axis[s]="independent",delete t[s]))}for(const r of at){for(const s of e.children){if(!s.component.axes[r])continue;if(n.axis[r]==="independent"){t[r]=(t[r]??[]).concat(s.component.axes[r]);for(const o of s.component.axes[r]){const{value:a,explicit:c}=o.getWithExplicit("orient");if($(a))continue;if(i[a]>0&&!c){const u=oS[a];i[a]>i[u]&&o.set("orient",u,!1)}i[a]++}}delete s.component.axes[r]}if(n.axis[r]==="independent"&&t[r]&&t[r].length>1)for(const[s,o]of(t[r]||[]).entries())s>0&&!!o.get("grid")&&!o.explicit.grid&&(o.implicit.grid=!1)}}function cS(e,t){if(e){if(e.length!==t.length)return;const n=e.length;for(let i=0;in.clone());return e}function uS(e,t){for(const n of Pf){const i=At(e.getWithExplicit(n),t.getWithExplicit(n),n,"axis",(r,s)=>{switch(n){case"title":return Ia(r,s);case"gridScale":return{explicit:r.explicit,value:X(r.value,s.value)}}return cr(r,s,n,"axis")});e.setWithExplicit(n,i)}return e}function lS(e,t,n,i,r){if(t==="disable")return n!==void 0;n=n||{};switch(t){case"titleAngle":case"labelAngle":return e===($(n.labelAngle)?n.labelAngle:qn(n.labelAngle));case"values":return!!n.values;case"encode":return!!n.encoding||!!n.labelAngle;case"title":if(e===Il(i,r))return!0}return e===n[t]}const fS=new Set(["grid","translate","format","formatType","orient","labelExpr","tickCount","position","tickMinStep"]);function dS(e,t){let n=t.axis(e);const i=new Lo,r=K(t.encoding[e]),{mark:s,config:o}=t,a=n?.orient||o[e==="x"?"axisX":"axisY"]?.orient||o.axis?.orient||Qy(e),c=t.getScaleComponent(e).get("type"),u=Hy(e,c,a,t.config),l=n!==void 0?!n:fo("disable",o.style,n?.style,u).configValue;if(i.set("disable",l,n!==void 0),l)return i;n=n||{};const f=Xy(r,n,e,o.style,u),d=Tc(n.formatType,r,c),p=Nc(r,r.type,n.format,n.formatType,o,!0),h={fieldOrDatumDef:r,axis:n,channel:e,model:t,scaleType:c,orient:a,labelAngle:f,format:p,formatType:d,mark:s,config:o};for(const y of Pf){const v=y in Pl?Pl[y](h):Kc(y)?n[y]:void 0,k=v!==void 0,_=lS(v,y,n,t,e);if(k&&_)i.set(y,v,_);else{const{configValue:T=void 0,configFrom:L=void 0}=Kc(y)&&y!=="values"?fo(y,o.style,n.style,u):{},ue=T!==void 0;k&&!ue?i.set(y,v,_):(!(L==="vgAxisConfig")||fS.has(y)&&ue||ri(T)||$(T))&&i.set(y,T,!1)}}const g=n.encoding??{},m=Xc.reduce((y,v)=>{if(!i.hasAxisPart(v))return y;const k=Wl(g[v]??{},t),_=v==="labels"?rS(t,e,k):k;return _!==void 0&&!M(_)&&(y[v]={update:_}),y},{});return M(m)||i.set("encode",m,!!n.encoding||n.labelAngle!==void 0),i}function pS({encoding:e,size:t}){for(const n of at){const i=me(n);Qe(t[i])&&(Tt(e[n])&&(delete t[i],x(Xa(i))))}return t}const gS={vgMark:"arc",encodeEntry:e=>({...ke(e,{align:"ignore",baseline:"ignore",color:"include",size:"ignore",orient:"ignore",theta:"ignore"}),...ae("x",e,{defaultPos:"mid"}),...ae("y",e,{defaultPos:"mid"}),...Pt(e,"radius"),...Pt(e,"theta")})},hS={vgMark:"area",encodeEntry:e=>({...ke(e,{align:"ignore",baseline:"ignore",color:"include",orient:"include",size:"ignore",theta:"ignore"}),...dr("x",e,{defaultPos:"zeroOrMin",defaultPos2:"zeroOrMin",range:e.markDef.orient==="horizontal"}),...dr("y",e,{defaultPos:"zeroOrMin",defaultPos2:"zeroOrMin",range:e.markDef.orient==="vertical"}),...oo(e)})},mS={vgMark:"rect",encodeEntry:e=>({...ke(e,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"}),...Pt(e,"x"),...Pt(e,"y")})},yS={vgMark:"shape",encodeEntry:e=>({...ke(e,{align:"ignore",baseline:"ignore",color:"include",size:"ignore",orient:"ignore",theta:"ignore"})}),postEncodingTransform:e=>{const{encoding:t}=e,n=t.shape,i={type:"geoshape",projection:e.projectionName(),...n&&S(n)&&n.type===xn?{field:w(n,{expr:"datum"})}:{}};return[i]}},bS={vgMark:"image",encodeEntry:e=>({...ke(e,{align:"ignore",baseline:"ignore",color:"ignore",orient:"ignore",size:"ignore",theta:"ignore"}),...Pt(e,"x"),...Pt(e,"y"),...ro(e,"url")})},xS={vgMark:"line",encodeEntry:e=>({...ke(e,{align:"ignore",baseline:"ignore",color:"include",size:"ignore",orient:"ignore",theta:"ignore"}),...ae("x",e,{defaultPos:"mid"}),...ae("y",e,{defaultPos:"mid"}),...ee("size",e,{vgChannel:"strokeWidth"}),...oo(e)})},SS={vgMark:"trail",encodeEntry:e=>({...ke(e,{align:"ignore",baseline:"ignore",color:"include",size:"include",orient:"ignore",theta:"ignore"}),...ae("x",e,{defaultPos:"mid"}),...ae("y",e,{defaultPos:"mid"}),...ee("size",e),...oo(e)})};function Mo(e,t){const{config:n}=e;return{...ke(e,{align:"ignore",baseline:"ignore",color:"include",size:"include",orient:"ignore",theta:"ignore"}),...ae("x",e,{defaultPos:"mid"}),...ae("y",e,{defaultPos:"mid"}),...ee("size",e),...ee("angle",e),...vS(e,n,t)}}function vS(e,t,n){return n?{shape:{value:n}}:ee("shape",e)}const wS={vgMark:"symbol",encodeEntry:e=>Mo(e)},$S={vgMark:"symbol",encodeEntry:e=>Mo(e,"circle")},ES={vgMark:"symbol",encodeEntry:e=>Mo(e,"square")},_S={vgMark:"rect",encodeEntry:e=>({...ke(e,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"}),...Pt(e,"x"),...Pt(e,"y")})},kS={vgMark:"rule",encodeEntry:e=>{const{markDef:t}=e,n=t.orient;return!e.encoding.x&&!e.encoding.y&&!e.encoding.latitude&&!e.encoding.longitude?{}:{...ke(e,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"}),...dr("x",e,{defaultPos:n==="horizontal"?"zeroOrMax":"mid",defaultPos2:"zeroOrMin",range:n!=="vertical"}),...dr("y",e,{defaultPos:n==="vertical"?"zeroOrMax":"mid",defaultPos2:"zeroOrMin",range:n!=="horizontal"}),...ee("size",e,{vgChannel:"strokeWidth"})}}},CS={vgMark:"text",encodeEntry:e=>{const{config:t,encoding:n}=e;return{...ke(e,{align:"include",baseline:"include",color:"include",size:"ignore",orient:"ignore",theta:"include"}),...ae("x",e,{defaultPos:"mid"}),...ae("y",e,{defaultPos:"mid"}),...ro(e),...ee("size",e,{vgChannel:"fontSize"}),...ee("angle",e),...gl("align",FS(e.markDef,n,t)),...gl("baseline",NS(e.markDef,n,t)),...ae("radius",e,{defaultPos:null}),...ae("theta",e,{defaultPos:null})}}};function FS(e,t,n){const i=R("align",e,n);return i===void 0?"center":void 0}function NS(e,t,n){const i=R("baseline",e,n);return i===void 0?"middle":void 0}const TS={vgMark:"rect",encodeEntry:e=>{const{config:t,markDef:n}=e,i=n.orient,r=i==="horizontal"?"width":"height",s=i==="horizontal"?"height":"width";return{...ke(e,{align:"ignore",baseline:"ignore",color:"include",orient:"ignore",size:"ignore",theta:"ignore"}),...ae("x",e,{defaultPos:"mid",vgChannel:"xc"}),...ae("y",e,{defaultPos:"mid",vgChannel:"yc"}),...ee("size",e,{defaultRef:AS(e),vgChannel:r}),[s]:B(R("thickness",n,t))}}};function AS(e){const{config:t,markDef:n}=e,{orient:i}=n,r=i==="horizontal"?"width":"height",s=i==="horizontal"?"x":"y",o=Ti(s),a=e.getScaleComponent(o)||e.getScaleComponent(s),c=e.scaleName(o)||e.scaleName(s),u=R("size",n,t,{vgChannel:r})??t.tick.bandSize;if(u!==void 0)return B(u);if(a?.get("type")==="band")return{scale:c,band:1};const l=a?.get("range"),{tickBandPaddingInner:f}=t.scale,d=l&&Ct(l)?l.step:sr(t.view,r);return j(d)&&j(f)?{value:d*(1-f)}:{signal:`${ts(f)} * ${ts(d)}`}}const zr={arc:gS,area:hS,bar:mS,circle:$S,geoshape:yS,image:bS,line:xS,point:wS,rect:_S,rule:kS,square:ES,text:CS,tick:TS,trail:SS};function OS(e){if(A([Ui,Di,Dg],e.mark)){const t=nu(e.mark,e.encoding);if(t.length>0)return PS(e,t)}else if(e.mark===ji){const t=es.some(n=>R(n,e.markDef,e.config));if(e.stack&&!e.fieldDef("size")&&t)return zS(e)}return Do(e)}const zf="faceted_path_";function PS(e,t){return[{name:e.getName("pathgroup"),type:"group",from:{facet:{name:zf+e.requestDataName(G.Main),data:e.requestDataName(G.Main),groupby:t}},encode:{update:{width:{field:{group:"width"}},height:{field:{group:"height"}}}},marks:Do(e,{fromPrefix:zf})}]}const Rf="stack_group_";function zS(e){const[t]=Do(e,{fromPrefix:Rf}),n=e.scaleName(e.stack.fieldChannel),i=(u={})=>e.vgField(e.stack.fieldChannel,u),r=(u,l)=>{const f=[i({prefix:"min",suffix:"start",expr:l}),i({prefix:"max",suffix:"start",expr:l}),i({prefix:"min",suffix:"end",expr:l}),i({prefix:"max",suffix:"end",expr:l})];return`${u}(${f.map(d=>`scale('${n}',${d})`).join(",")})`};let s,o;e.stack.fieldChannel==="x"?(s={...ln(t.encode.update,["y","yc","y2","height",...es]),x:{signal:r("min","datum")},x2:{signal:r("max","datum")},clip:{value:!0}},o={x:{field:{group:"x"},mult:-1},height:{field:{group:"height"}}},t.encode.update={...pe(t.encode.update,["y","yc","y2"]),height:{field:{group:"height"}}}):(s={...ln(t.encode.update,["x","xc","x2","width"]),y:{signal:r("min","datum")},y2:{signal:r("max","datum")},clip:{value:!0}},o={y:{field:{group:"y"},mult:-1},width:{field:{group:"width"}}},t.encode.update={...pe(t.encode.update,["x","xc","x2"]),width:{field:{group:"width"}}});for(const u of es){const l=Ge(u,e.markDef,e.config);t.encode.update[u]?(s[u]=t.encode.update[u],delete t.encode.update[u]):l&&(s[u]=B(l)),l&&(t.encode.update[u]={value:0})}const a=[];if(e.stack.groupbyChannels?.length>0)for(const u of e.stack.groupbyChannels){const l=e.fieldDef(u),f=w(l);f&&a.push(f),(l?.bin||l?.timeUnit)&&a.push(w(l,{binSuffix:"end"}))}const c=["stroke","strokeWidth","strokeJoin","strokeCap","strokeDash","strokeDashOffset","strokeMiterLimit","strokeOpacity"];return s=c.reduce((u,l)=>{if(t.encode.update[l])return{...u,[l]:t.encode.update[l]};{const f=Ge(l,e.markDef,e.config);return f!==void 0?{...u,[l]:B(f)}:u}},s),s.stroke&&(s.strokeForeground={value:!0},s.strokeOffset={value:0}),[{type:"group",from:{facet:{data:e.requestDataName(G.Main),name:Rf+e.requestDataName(G.Main),groupby:a,aggregate:{fields:[i({suffix:"start"}),i({suffix:"start"}),i({suffix:"end"}),i({suffix:"end"})],ops:["min","max","min","max"]}}},encode:{update:s},marks:[{type:"group",encode:{update:o},marks:[t]}]}]}function RS(e){const{encoding:t,stack:n,mark:i,markDef:r,config:s}=e,o=t.order;if(!E(o)&&Re(o)&&Dr(o.value)||!o&&Dr(R("order",r,s)))return;if((E(o)||S(o))&&!n)return Pa(o,{expr:"datum"});if(Ft(i)){const a=r.orient==="horizontal"?"y":"x",c=t[a];if(S(c))return{field:a}}return}function Do(e,t={fromPrefix:""}){const{mark:n,markDef:i,encoding:r,config:s}=e,o=X(i.clip,IS(e),LS(e)),a=Aa(i),c=r.key,u=RS(e),l=MS(e),f=R("aria",i,s),d=zr[n].postEncodingTransform?zr[n].postEncodingTransform(e):null;return[{name:e.getName("marks"),type:zr[n].vgMark,...o?{clip:o}:{},...a?{style:a}:{},...c?{key:c.field}:{},...u?{sort:u}:{},...l||{},...f===!1?{aria:f}:{},from:{data:t.fromPrefix+e.requestDataName(G.Main)},encode:{update:zr[n].encodeEntry(e)},...d?{transform:d}:{}}]}function IS(e){const t=e.getScaleComponent("x"),n=e.getScaleComponent("y");return t?.get("selectionExtent")||n?.get("selectionExtent")?!0:void 0}function LS(e){const t=e.component.projection;return t&&!t.isFit?!0:void 0}function MS(e){if(!e.component.selection)return null;const t=b(e.component.selection).length;let n=t,i=e.parent;for(;i&&n===0;)n=b(i.component.selection).length,i=i.parent;return n?{interactive:t>0||e.mark==="geoshape"||!!e.encoding.tooltip||!!e.markDef.tooltip}:null}class If extends Ff{constructor(t,n,i,r={},s){super(t,"unit",n,i,s,void 0,Su(t)?t.view:void 0);this.specifiedScales={},this.specifiedAxes={},this.specifiedLegends={},this.specifiedProjection={},this.selection=[],this.children=[];const o=Ye(t.mark)?{...t.mark}:{type:t.mark},a=o.type;o.filled===void 0&&(o.filled=wm(o,s,{graticule:t.data&&Js(t.data)}));const c=this.encoding=kh(t.encoding||{},a,o.filled,s);this.markDef=Nu(o,c,s),this.size=pS({encoding:c,size:Su(t)?{...r,...t.width?{width:t.width}:{},...t.height?{height:t.height}:{}}:r}),this.stack=Fu(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=>Bs(u))}get hasProjection(){const{encoding:t}=this,n=this.mark===Sc,i=t&&$d.some(r=>F(t[r]));return n||i}scaleDomain(t){const n=this.specifiedScales[t];return n?n.domain:void 0}axis(t){return this.specifiedAxes[t]}legend(t){return this.specifiedLegends[t]}initScales(t,n){return Qr.reduce((i,r)=>{const s=K(n[r]);return s&&(i[r]=this.initScale(s.scale??{})),i},{})}initScale(t){const{domain:n,range:i}=t,r=oe(t);return E(n)&&(r.domain=n.map(xe)),E(i)&&(r.range=i.map(xe)),r}initAxes(t){return at.reduce((n,i)=>{const r=t[i];if(F(r)||i===H&&F(t.x2)||i===Q&&F(t.y2)){const s=F(r)?r.axis:void 0;n[i]=s&&this.initAxis({...s})}return n},{})}initAxis(t){const n=b(t),i={};for(const r of n){const s=t[r];i[r]=ri(s)?Fa(s):xe(s)}return i}initLegends(t){return Pd.reduce((n,i)=>{const r=K(t[i]);if(r&&Rd(i)){const s=r.legend;n[i]=s&&oe(s)}return n},{})}parseData(){this.component.data=Or(this)}parseLayoutSize(){Kx(this)}parseSelections(){this.component.selection=jy(this,this.selection)}parseMarkGroup(){this.component.mark=OS(this)}parseAxesAndHeaders(){this.component.axes=sS(this)}assembleSelectionTopLevelSignals(t){return ly(this,t)}assembleSignals(){return[...Al(this),...cy(this,[])]}assembleSelectionData(t){return fy(this,t)}assembleLayout(){return null}assembleLayoutSignals(){return yo(this)}assembleMarks(){let t=this.component.mark??[];return(!this.parent||!Mn(this.parent))&&(t=Qu(this,t)),t.map(this.correctDataNames)}assembleGroupStyle(){const{style:t}=this.view||{};return t!==void 0?t:this.encoding.x||this.encoding.y?"cell":"view"}getMapping(){return this.encoding}get mark(){return this.markDef.type}channelHasField(t){return Kt(this.encoding,t)}fieldDef(t){const n=this.encoding[t];return Ie(n)}typedFieldDef(t){const n=this.fieldDef(t);return fe(n)?n:null}}class jo extends zo{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(ar(a))return new jo(a,this,this.getName(`layer_${c}`),o,s);if(ft(a))return new If(a,this,this.getName(`layer_${c}`),o,s);throw new Error(ns(a))})}parseData(){this.component.data=Or(this);for(const t of this.children)t.parseData()}parseLayoutSize(){Xx(this)}parseSelections(){this.component.selection={};for(const t of this.children){t.parseSelections();for(const n of b(t.component.selection))this.component.selection[n]=t.component.selection[n]}}parseMarkGroup(){for(const t of this.children)t.parseMarkGroup()}parseAxesAndHeaders(){aS(this)}assembleSelectionTopLevelSignals(t){return this.children.reduce((n,i)=>i.assembleSelectionTopLevelSignals(n),t)}assembleSignals(){return this.children.reduce((t,n)=>t.concat(n.assembleSignals()),Al(this))}assembleLayoutSignals(){return this.children.reduce((t,n)=>t.concat(n.assembleLayoutSignals()),yo(this))}assembleSelectionData(t){return this.children.reduce((n,i)=>i.assembleSelectionData(n),t)}assembleGroupStyle(){const t=new Set;for(const i of this.children)for(const r of V(i.assembleGroupStyle()))t.add(r);const n=Array.from(t);return n.length>1?n:n.length===1?n[0]:void 0}assembleTitle(){let t=super.assembleTitle();if(t)return t;for(const n of this.children)if(t=n.assembleTitle(),t)return t;return}assembleLayout(){return null}assembleMarks(){return dy(this,this.children.flatMap(t=>t.assembleMarks()))}assembleLegends(){return this.children.reduce((t,n)=>t.concat(n.assembleLegends()),ef(this))}}function Uo(e,t,n,i,r){if(Gi(e))return new gi(e,t,n,r);if(ar(e))return new jo(e,t,n,i,r);if(ft(e))return new If(e,t,n,i,r);if(Kh(e))return new tS(e,t,n,r);throw new Error(ns(e))}function DS(e,t={}){t.logger&&Jp(t.logger),t.fieldTitle&&Hc(t.fieldTitle);try{const n=ku(na(t.config,e.config)),i=Bu(e,n),r=Uo(i,null,"",void 0,n);r.parse(),cx(r.component.data,r);const s=US(r,jS(e,i.autosize,n,r),e.datasets,e.usermeta);return{spec:s,normalized:i}}finally{t.logger&&eg(),t.fieldTitle&&yh()}}function jS(e,t,n,i){const r=i.component.layoutSize.get("width"),s=i.component.layoutSize.get("height");if(t===void 0?(t={type:"pad"},i.hasAxisOrientSignalRef()&&(t.resize=!0)):N(t)&&(t={type:t}),r&&s&&iy(t.type)){if(r==="step"&&s==="step")x(Da()),t.type="pad";else if(r==="step"||s==="step"){const o=r==="step"?"width":"height";x(Da(Ai(o)));const a=o==="width"?"height":"width";t.type=ry(a)}}return{...b(t).length===1&&t.type?t.type==="pad"?{}:{autosize:t.type}:{autosize:t},...Hu(n,!1),...Hu(e,!0)}}function US(e,t,n={},i){const r=e.config?lm(e.config):void 0,s=[].concat(e.assembleSelectionData([]),Hx(e.component.data,n)),o=e.assembleProjections(),a=e.assembleTitle(),c=e.assembleGroupStyle(),u=e.assembleGroupEncodeEntry(!0);let l=e.assembleLayoutSignals();l=l.filter(p=>(p.name==="width"||p.name==="height")&&p.value!==void 0?(t[p.name]=+p.value,!1):!0);const{params:f,...d}=t;return{$schema:"https://vega.github.io/schema/vega/v5.json",...e.description?{description:e.description}:{},...d,...a?{title:a}:{},...c?{style:c}:{},...u?{encode:{update:u}}:{},data:s,...o.length>0?{projections:o}:{},...e.assembleGroup([...l,...e.assembleSelectionTopLevelSignals([]),...bu(f)]),...r?{config:r}:{},...i?{usermeta:i}:{}}}const BS=yd.version;export{pn as accessPathDepth,Hr as accessPathWithDatum,DS as compile,A as contains,be as deepEqual,$i as deleteNestedProperty,C as duplicate,bt as entries,jr as every,Wr as fieldIntersection,aa as flatAccessWithDatum,X as getFirstDefined,Ur as hasIntersection,P as hash,la as internalField,Bn as isBoolean,M as isEmpty,xd as isEqual,fa as isInternalField,Dr as isNullOrFalse,Ei as isNumeric,b as keys,Wn as logicalExpr,sa as mergeDeep,ra as never,Bu as normalize,qn as normalizeAngle,pe as omit,ln as pick,Br as prefixGenerator,dn as removePathFromField,Lt as replaceAll,we as replacePathInField,vd as resetIdCounter,oa as setEqual,fn as some,D as stringify,Hn as titleCase,je as unique,ua as uniqueId,ie as vals,W as varName,BS as version};export default null;