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