UNPKG

compassql

Version:

CompassQL visualization query language

1 lines 116 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).cql={})}(this,function(e){"use strict";function t(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&(n[r[i]]=e[r[i]])}return n}"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;function n(e,t){return e(t={exports:{}},t.exports),t.exports}n(function(e){var t=function(){function e(e,t){return null!=t&&e instanceof t}var t,n,r;try{t=Map}catch(e){t=function(){}}try{n=Set}catch(e){n=function(){}}try{r=Promise}catch(e){r=function(){}}function i(o,s,c,u,l){"object"==typeof s&&(c=s.depth,u=s.prototype,l=s.includeNonEnumerable,s=s.circular);var d=[],f=[],p="undefined"!=typeof Buffer;return void 0===s&&(s=!0),void 0===c&&(c=1/0),function o(c,h){if(null===c)return null;if(0===h)return c;var g,m;if("object"!=typeof c)return c;if(e(c,t))g=new t;else if(e(c,n))g=new n;else if(e(c,r))g=new r(function(e,t){c.then(function(t){e(o(t,h-1))},function(e){t(o(e,h-1))})});else if(i.__isArray(c))g=[];else if(i.__isRegExp(c))g=new RegExp(c.source,a(c)),c.lastIndex&&(g.lastIndex=c.lastIndex);else if(i.__isDate(c))g=new Date(c.getTime());else{if(p&&Buffer.isBuffer(c))return g=Buffer.allocUnsafe?Buffer.allocUnsafe(c.length):new Buffer(c.length),c.copy(g),g;e(c,Error)?g=Object.create(c):void 0===u?(m=Object.getPrototypeOf(c),g=Object.create(m)):(g=Object.create(u),m=u)}if(s){var y=d.indexOf(c);if(-1!=y)return f[y];d.push(c),f.push(g)}for(var v in e(c,t)&&c.forEach(function(e,t){var n=o(t,h-1),r=o(e,h-1);g.set(n,r)}),e(c,n)&&c.forEach(function(e){var t=o(e,h-1);g.add(t)}),c){var E;m&&(E=Object.getOwnPropertyDescriptor(m,v)),E&&null==E.set||(g[v]=o(c[v],h-1))}if(Object.getOwnPropertySymbols){var b=Object.getOwnPropertySymbols(c);for(v=0;v<b.length;v++){var T=b[v];(!(C=Object.getOwnPropertyDescriptor(c,T))||C.enumerable||l)&&(g[T]=o(c[T],h-1),C.enumerable||Object.defineProperty(g,T,{enumerable:!1}))}}if(l){var S=Object.getOwnPropertyNames(c);for(v=0;v<S.length;v++){var C,A=S[v];(C=Object.getOwnPropertyDescriptor(c,A))&&C.enumerable||(g[A]=o(c[A],h-1),Object.defineProperty(g,A,{enumerable:!1}))}}return g}(o,c)}function o(e){return Object.prototype.toString.call(e)}function a(e){var t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),t}return i.clonePrototype=function(e){if(null===e)return null;var t=function(){};return t.prototype=e,new t},i.__objToStr=o,i.__isDate=function(e){return"object"==typeof e&&"[object Date]"===o(e)},i.__isArray=function(e){return"object"==typeof e&&"[object Array]"===o(e)},i.__isRegExp=function(e){return"object"==typeof e&&"[object RegExp]"===o(e)},i.__getRegExpFlags=a,i}();e.exports&&(e.exports=t)});var r=function(e,t){t||(t={}),"function"==typeof t&&(t={cmp:t});var n,r="boolean"==typeof t.cycles&&t.cycles,i=t.cmp&&(n=t.cmp,function(e){return function(t,r){var i={key:t,value:e[t]},o={key:r,value:e[r]};return n(i,o)}}),o=[];return function e(t){if(t&&t.toJSON&&"function"==typeof t.toJSON&&(t=t.toJSON()),void 0!==t){if("number"==typeof t)return isFinite(t)?""+t:"null";if("object"!=typeof t)return JSON.stringify(t);var n,a;if(Array.isArray(t)){for(a="[",n=0;n<t.length;n++)n&&(a+=","),a+=e(t[n])||"null";return a+"]"}if(null===t)return"null";if(-1!==o.indexOf(t)){if(r)return JSON.stringify("__cycle__");throw new TypeError("Converting circular structure to JSON")}var s=o.push(t)-1,c=Object.keys(t).sort(i&&i(t));for(a="",n=0;n<c.length;n++){var u=c[n],l=e(t[u]);l&&(a&&(a+=","),a+=JSON.stringify(u)+":"+l)}return o.splice(s,1),"{"+a+"}"}}(e)};function i(e,t,n){return e.fields=t||[],e.fname=n,e}function o(e){throw Error(e)}function a(e){var t,n,r,i=[],a=null,s=0,c=e.length,u="";function l(){i.push(u+e.substring(t,n)),u="",t=n+1}for(e+="",t=n=0;n<c;++n)if("\\"===(r=e[n]))u+=e.substring(t,n),t=++n;else if(r===a)l(),a=null,s=-1;else{if(a)continue;t===s&&'"'===r?(t=n+1,a=r):t===s&&"'"===r?(t=n+1,a=r):"."!==r||s?"["===r?(n>t&&l(),s=t=n+1):"]"===r&&(s||o("Access path missing open bracket: "+e),s>0&&l(),s=0,t=n+1):n>t?l():t=n+1}return s&&o("Access path missing closing bracket: "+e),a&&o("Access path missing closing quote: "+e),n>t&&(n++,l()),i}var s=Array.isArray;function c(e){return e===Object(e)}function u(e){return"string"==typeof e}function l(e){return s(e)?"["+e.map(l)+"]":c(e)||u(e)?JSON.stringify(e).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):e}var d=[];(function(e,t){var n=a(e),r="return _["+n.map(l).join("][")+"];";i(Function("_",r),[e=1===n.length?n[0]:e],t||e)})("id"),i(function(e){return e},d,"identity"),i(function(){return 0},d,"zero"),i(function(){return 1},d,"one"),i(function(){return!0},d,"true"),i(function(){return!1},d,"false");function f(e,t,n){var r=[t].concat([].slice.call(n));console[e](...r)}var p=0,h=1,g=2,m=3,y=4;function v(e){return"boolean"==typeof e}function E(e){for(var t={},n=0,r=e.length;n<r;++n)t[e[n]]=!0;return t}Set.prototype.toJSON=function(){return`Set(${[...this].map(e=>r(e)).join(",")})`};const b=r;function T(e,t){return e.indexOf(t)>-1}const S=Object.keys;function C(e){return S(e)}function A(...e){for(const t of e)if(void 0!==t)return t}const N="row",w="column",O="facet",x="x",I="y",M="x2",k="y2",U="latitude",F="longitude",D="latitude2",_="longitude2",P="color",R="fill",L="stroke",$="shape",B="size",W="opacity",H="fillOpacity",G="strokeOpacity",j="strokeWidth",z="text",q="order",Y="detail",Q="key",V="tooltip",K="href",J=Object.assign({x:1,y:1,x2:1,y2:1},{longitude:1,longitude2:1,latitude:1,latitude2:1},{color:1,fill:1,stroke:1,opacity:1,fillOpacity:1,strokeOpacity:1,strokeWidth:1,size:1,shape:1,order:1,text:1,detail:1,key:1,tooltip:1,href:1});function X(e){return"color"===e||"fill"===e||"stroke"===e}const Z=Object.assign({},J,{row:1,column:1,facet:1}),ee=C(Z);t(Z,["order","detail"]),t(Z,["order","detail","row","column","facet"]);const te=t(J,["x","y","x2","y2","latitude","longitude","latitude2","longitude2"]),ne=C(te),re={x:1,y:1},ie=(C(re),t(te,["text","tooltip","href","detail","key","order"])),oe=Object.assign({},re,ie);function ae(e){return!!oe[e]}function se(e,t){return function(e){switch(e){case P:case R:case L:case Y:case Q:case V:case K:case q:case W:case H:case G:case j:case O:case N:case w:return{point:"always",tick:"always",rule:"always",circle:"always",square:"always",bar:"always",rect:"always",line:"always",trail:"always",area:"always",text:"always",geoshape:"always"};case x:case I:case U:case F:return{point:"always",tick:"always",rule:"always",circle:"always",square:"always",bar:"always",rect:"always",line:"always",trail:"always",area:"always",text:"always"};case M:case k:case D:case _:return{rule:"always",bar:"always",rect:"always",area:"always",circle:"binned",point:"binned",square:"binned",tick:"binned"};case B:return{point:"always",tick:"always",rule:"always",circle:"always",square:"always",bar:"always",text:"always",line:"always",trail:"always"};case $:return{point:"always",geoshape:"always"};case z:return{text:"always"}}}(e)[t]}function ce(e){switch(e){case x:case I:case B:case j:case W:case H:case G:case M:case k:return;case O:case N:case w:case $:case z:case V:case K:return"discrete";case P:case R:case L:return"flexible";case U:case F:case D:case _:case Y:case Q:case q:return}throw new Error("rangeType not implemented for "+e)}const ue={orient:1,bandPosition:1,domain:1,domainColor:1,domainDash:1,domainDashOffset:1,domainOpacity:1,domainWidth:1,format:1,formatType:1,grid: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,labelOpacity:1,labelOverlap:1,labelPadding:1,labels:1,labelSeparation:1,maxExtent:1,minExtent:1,offset:1,position: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,titleOpacity:1,titlePadding:1,titleX:1,titleY:1,values:1,zindex:1},le=Object.assign({},ue,{encoding:1}),de=(Object.assign({gridScale:1,scale:1},ue,{encode:1}),C(le)),fe={clipHeight:1,columnPadding:1,columns:1,cornerRadius: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,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,titleOpacity:1,titleOrient:1,titlePadding:1,type:1,values:1,zindex:1},pe=(Object.assign({},fe,{opacity:1,shape:1,stroke:1,fill:1,size:1,strokeWidth:1,encode:1}),C(fe));const he=Object.freeze({INVALID_SPEC:"Invalid spec",FIT_NON_SINGLE:'Autosize "fit" only works for single views and layered views.',CANNOT_FIX_RANGE_STEP_WITH_FIT:'Cannot use a fixed value of "rangeStep" when "autosize" is "fit".',cannotProjectOnChannelWithoutField:function(e){return`Cannot project a selection on encoding channel "${e}", which has no field.`},nearestNotSupportForContinuous:function(e){return`The "nearest" transform is not supported for ${e} marks.`},selectionNotSupported:function(e){return`Selection not supported for ${e} yet`},selectionNotFound:function(e){return`Cannot find a selection named "${e}"`},SCALE_BINDINGS_CONTINUOUS:"Scale bindings are currently only supported for scales with unbinned, continuous domains.",NO_INIT_SCALE_BINDINGS:"Selections bound to scales cannot be separately initialized.",noSuchRepeatedValue:function(e){return`Unknown repeated value "${e}".`},columnsNotSupportByRowCol:function(e){return`The "columns" property cannot be used when "${e}" has nested row/column.`},CONCAT_CANNOT_SHARE_AXIS:"Axes cannot be shared in concatenated views yet (https://github.com/vega/vega-lite/issues/2415).",REPEAT_CANNOT_SHARE_AXIS:"Axes cannot be shared in repeated views yet (https://github.com/vega/vega-lite/issues/2415).",unrecognizedParse:function(e){return`Unrecognized parse "${e}".`},differentParse:function(e,t,n){return`An ancestor parsed field "${e}" as ${n} but a child wants to parse the field as ${t}.`},invalidTransformIgnored:function(e){return`Ignoring an invalid transform: ${b(e)}.`},NO_FIELDS_NEEDS_AS:'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.',encodingOverridden:function(e){return`Layer's shared ${e.join(",")} channel ${1===e.length?"is":"are"} overriden`},projectionOverridden:function(e){const{parentProjection:t,projection:n}=e;return`Layer's shared projection ${b(t)} is overridden by a child projection ${b(n)}.`},primitiveChannelDef:function(e,t,n){return`Channel ${e} is a ${t}. Converted to {value: ${b(n)}}.`},invalidFieldType:function(e){return`Invalid field type "${e}"`},nonZeroScaleUsedWithLengthMark:function(e,t,n){return`A ${n.scaleType?`${n.scaleType} scale`:n.zeroFalse?"scale with zero=false":"scale with custom domain that excludes zero"} is used to encode ${e}'s ${t}. This can be misleading as the ${"x"===t?"width":"height"} of the ${e} can be arbitrary based on the scale domain. You may want to use point mark instead.`},invalidFieldTypeForCountAggregate:function(e,t){return`Invalid field type "${e}" for aggregate: "${t}", using "quantitative" instead.`},invalidAggregate:function(e){return`Invalid aggregation operator "${e}"`},missingFieldType:function(e,t){return`Missing type for channel "${e}", using "${t}" instead.`},droppingColor:function(e,t){const{fill:n,stroke:r}=t;return`Dropping color ${e} as the plot also has `+(n&&r?"fill and stroke":n?"fill":"stroke")},emptyFieldDef:function(e,t){return`Dropping ${b(e)} from channel "${t}" since it does not contain data field or value.`},latLongDeprecated:function(e,t,n){return`${e}-encoding with type ${t} is deprecated. Replacing with ${n}-encoding.`},LINE_WITH_VARYING_SIZE:"Line marks cannot encode size with a non-groupby field. You may want to use trail marks instead.",incompatibleChannel:function(e,t,n){return`${e} dropped as it is incompatible with "${t}"${n?` when ${n}`:""}.`},invalidEncodingChannel:function(e){return`${e}-encoding is dropped as ${e} is not a valid encoding channel.`},facetChannelShouldBeDiscrete:function(e){return`${e} encoding should be discrete (ordinal / nominal / binned).`},facetChannelDropped:function(e){return`Facet encoding dropped as ${e.join(" and ")} ${e.length>1?"are":"is"} also specified.`},discreteChannelCannotEncode:function(e,t){return`Using discrete channel "${e}" to encode "${t}" field can be misleading as it does not encode ${"ordinal"===t?"order":"magnitude"}.`},BAR_WITH_POINT_SCALE_AND_RANGESTEP_NULL:"Bar mark should not be used with point scale when rangeStep is null. Please use band scale instead.",lineWithRange:function(e,t){return`Line mark is for continuous lines and thus cannot be used with ${e&&t?"x2 and y2":e?"x2":"y2"}. We will use the rule mark (line segments) instead.`},orientOverridden:function(e,t){return`Specified orient "${e}" overridden with "${t}"`},CANNOT_UNION_CUSTOM_DOMAIN_WITH_FIELD_DOMAIN:"custom domain scale cannot be unioned with default field-based domain",cannotUseScalePropertyWithNonColor:function(e){return`Cannot use the scale property "${e}" with non-color channel.`},unaggregateDomainHasNoEffectForRawField:function(e){return`Using unaggregated domain with raw field has no effect (${b(e)}).`},unaggregateDomainWithNonSharedDomainOp:function(e){return`Unaggregated domain not applicable for "${e}" since it produces values outside the origin domain of the source data.`},unaggregatedDomainWithLogScale:function(e){return`Unaggregated domain is currently unsupported for log scale (${b(e)}).`},cannotApplySizeToNonOrientedMark:function(e){return`Cannot apply size to non-oriented mark "${e}".`},rangeStepDropped:function(e){return`rangeStep for "${e}" is dropped as top-level ${"x"===e?"width":"height"} is provided.`},scaleTypeNotWorkWithChannel:function(e,t,n){return`Channel "${e}" does not work with "${t}" scale. We are using "${n}" scale instead.`},scaleTypeNotWorkWithFieldDef:function(e,t){return`FieldDef does not work with "${e}" scale. We are using "${t}" scale instead.`},scalePropertyNotWorkWithScaleType:function(e,t,n){return`${n}-scale's "${t}" is dropped as it does not work with ${e} scale.`},scaleTypeNotWorkWithMark:function(e,t){return`Scale type "${t}" does not work with mark "${e}".`},mergeConflictingProperty:function(e,t,n,r){return`Conflicting ${t.toString()} property "${e.toString()}" (${b(n)} and ${b(r)}). Using ${b(n)}.`},independentScaleMeansIndependentGuide:function(e){return`Setting the scale to be independent for "${e}" means we also have to set the guide (axis or legend) to be independent.`},domainSortDropped:function(e){return`Dropping sort property ${b(e)} as unioned domains only support boolean or op 'count'.`},UNABLE_TO_MERGE_DOMAINS:"Unable to merge domains",MORE_THAN_ONE_SORT:"Domains that should be unioned has conflicting sort properties. Sort will be set to true.",INVALID_CHANNEL_FOR_AXIS:"Invalid channel for axis.",cannotStackRangedMark:function(e){return`Cannot stack "${e}" if there is already "${e}2"`},cannotStackNonLinearScale:function(e){return`Cannot stack non-linear scale (${e})`},stackNonSummativeAggregate:function(e){return`Stacking is applied even though the aggregate function is non-summative ("${e}")`},invalidTimeUnit:function(e,t){return`Invalid ${e}: ${b(t)}`},dayReplacedWithDate:function(e){return`Time unit "${e}" is not supported. We are replacing it with ${e.replace("day","date")}.`},droppedDay:function(e){return`Dropping day from datetime ${b(e)} as day cannot be combined with other units.`},errorBarCenterAndExtentAreNotNeeded:function(e,t){return`${t?"extent ":""}${t&&e?"and ":""}${e?"center ":""}${t&&e?"are ":"is "}not needed when data are aggregated.`},errorBarCenterIsUsedWithWrongExtent:function(e,t,n){return`${e} is not usually used with ${t} for ${n}.`},errorBarContinuousAxisHasCustomizedAggregate:function(e,t){return`Continuous axis should not have customized aggregation function ${e}; ${t} already agregates the axis.`},errorBarCenterIsNotNeeded:function(e,t){return`Center is not needed to be specified in ${t} when extent is ${e}.`},errorBand1DNotSupport:function(e){return`1D error band does not support ${e}`},channelRequiredForBinned:function(e){return`Channel ${e} is required for "binned" bin`},domainRequiredForThresholdScale:function(e){return`Domain for ${e} is required for threshold scale`}}),ge=(ye=g||p,{level:function(e){return arguments.length?(ye=+e,this):ye},error:function(){return ye>=h&&f(me||"error","ERROR",arguments),this},warn:function(){return ye>=g&&f(me||"warn","WARN",arguments),this},info:function(){return ye>=m&&f(me||"log","INFO",arguments),this},debug:function(){return ye>=y&&f(me||"log","DEBUG",arguments),this}});var me,ye;let ve=ge;function Ee(...e){ve.warn.apply(ve,arguments)}const be={quantitative:1,ordinal:1,temporal:1,nominal:1,geojson:1},Te="quantitative",Se="ordinal",Ce="temporal",Ae="nominal",Ne="geojson";function we(e){if(e)switch(e=e.toLowerCase()){case"q":case Te:return"quantitative";case"t":case Ce:return"temporal";case"o":case Se:return"ordinal";case"n":case Ae:return"nominal";case Ne:return"geojson"}}var Oe;!function(e){e.LINEAR="linear",e.LOG="log",e.POW="pow",e.SQRT="sqrt",e.SYMLOG="symlog",e.TIME="time",e.UTC="utc",e.QUANTILE="quantile",e.QUANTIZE="quantize",e.THRESHOLD="threshold",e.BIN_ORDINAL="bin-ordinal",e.ORDINAL="ordinal",e.POINT="point",e.BAND="band"}(Oe||(Oe={}));const xe=S({linear:"numeric",log:"numeric",pow:"numeric",sqrt:"numeric",symlog:"numeric",time:"time",utc:"time",ordinal:"ordinal","bin-ordinal":"bin-ordinal",point:"ordinal-position",band:"ordinal-position",quantile:"discretizing",quantize:"discretizing",threshold:"discretizing"}),Ie=["linear","log","pow","sqrt","symlog","time","utc"],Me=E(Ie),ke=E(["quantile","quantize","threshold"]),Ue=E(Ie.concat(["quantile","quantize","threshold"])),Fe=E(["ordinal","bin-ordinal","point","band"]);function De(e){return e in Fe}function _e(e){return e in Me}const Pe={type:1,domain:1,range:1,rangeStep: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},Re=C(Pe);t(Pe,["type","domain","range","rangeStep","scheme"]),function(){const e={};for(const t of ee)for(const n of S(be))for(const r of xe){const i=He(t,n);We(t,r)&&Be(r,n)&&(e[i]=e[i]||[],e[i].push(r))}}();function Le(e,t){switch(t){case"type":case"domain":case"reverse":case"range":return!0;case"scheme":case"interpolate":return!T(["point","band","identity"],e);case"bins":return!T(["point","band","identity","ordinal"],e);case"round":return _e(e)||"band"===e||"point"===e;case"padding":return _e(e)||T(["point","band"],e);case"paddingOuter":case"rangeStep":return T(["point","band"],e);case"paddingInner":return"band"===e;case"clamp":return _e(e);case"nice":return _e(e)||"quantize"===e||"threshold"===e;case"exponent":return"pow"===e;case"base":return"log"===e;case"constant":return"symlog"===e;case"zero":return e in Ue&&!T(["log","time","utc","threshold","quantile"],e)}throw new Error(`Invalid scale property ${t}.`)}function $e(e,t){switch(t){case"interpolate":case"scheme":return X(e)?void 0:he.cannotUseScalePropertyWithNonColor(e);case"type":case"bins":case"domain":case"range":case"base":case"exponent":case"constant":case"nice":case"padding":case"paddingInner":case"paddingOuter":case"rangeStep":case"reverse":case"round":case"clamp":case"zero":return}throw new Error(`Invalid scale property "${t}".`)}function Be(e,t){return T([Se,Ae],t)?void 0===e||De(e):t===Ce?T([Oe.TIME,Oe.UTC,void 0],e):t!==Te||T([Oe.LOG,Oe.POW,Oe.SQRT,Oe.SYMLOG,Oe.QUANTILE,Oe.QUANTIZE,Oe.THRESHOLD,Oe.LINEAR,void 0],e)}function We(e,t){switch(e){case x:case I:return _e(t)||T(["band","point"],t);case B:case j:case W:case H:case G:return _e(t)||t in ke||T(["band","point"],t);case P:case R:case L:return"band"!==t;case $:return"ordinal"===t}return!1}function He(e,t){return e+"_"+t}var Ge=n(function(e){var t=e.exports;t.namedfunc=function(e,t){return t.__name__=e,t},t.name=function(e){return null==e?null:e.__name__},t.identity=function(e){return e},t.true=t.namedfunc("true",function(){return!0}),t.false=t.namedfunc("false",function(){return!1}),t.duplicate=function(e){return JSON.parse(JSON.stringify(e))},t.equal=function(e,t){return JSON.stringify(e)===JSON.stringify(t)},t.extend=function(e){for(var t,n,r=1,i=arguments.length;r<i;++r)for(n in t=arguments[r])e[n]=t[n];return e},t.length=function(e){return null!=e&&null!=e.length?e.length:null},t.keys=function(e){var t,n=[];for(t in e)n.push(t);return n},t.vals=function(e){var t,n=[];for(t in e)n.push(e[t]);return n},t.toMap=function(e,n){return(n=t.$(n))?e.reduce(function(e,t){return e[n(t)]=1,e},{}):e.reduce(function(e,t){return e[t]=1,e},{})},t.keystr=function(e){var t=e.length;if(!t)return"";for(var n=String(e[0]),r=1;r<t;++r)n+="|"+String(e[r]);return n};var n=Object.prototype.toString;t.isObject=function(e){return e===Object(e)},t.isFunction=function(e){return"[object Function]"===n.call(e)},t.isString=function(e){return"string"==typeof value||"[object String]"===n.call(e)},t.isArray=Array.isArray||function(e){return"[object Array]"===n.call(e)},t.isNumber=function(e){return"number"==typeof e||"[object Number]"===n.call(e)},t.isBoolean=function(e){return!0===e||!1===e||"[object Boolean]"==n.call(e)},t.isDate=function(e){return"[object Date]"===n.call(e)},t.isValid=function(e){return null!=e&&e==e},t.isBuffer="function"==typeof Buffer&&Buffer.isBuffer||t.false,t.number=function(e){return null==e||""===e?null:+e},t.boolean=function(e){return null==e||""===e?null:"false"!==e&&!!e},t.date=function(e,t){var n=t||Date;return null==e||""===e?null:n.parse(e)},t.array=function(e){return null!=e?t.isArray(e)?e:[e]:[]},t.str=function(e){return t.isArray(e)?"["+e.map(t.str)+"]":t.isObject(e)||t.isString(e)?JSON.stringify(e).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):e};var r=/\[(.*?)\]|[^.\[]+/g;function i(e,t){var n,r="";for(n=0;n<e;++n)r+=t;return r}function o(e,t,n){var r=0,i=e.split(a);return(e=n?(i=i.reverse()).filter(function(e){return(r+=e.length)<=t}).reverse():i.filter(function(e){return(r+=e.length)<=t})).length?e.join("").trim():i[0].slice(0,t)}t.field=function(e){return String(e).match(r).map(function(e){return"["!==e[0]?e:"'"!==e[1]&&'"'!==e[1]?e.slice(1,-1):e.slice(2,-2).replace(/\\(["'])/g,"$1")})},t.accessor=function(e){return null==e||t.isFunction(e)?e:t.namedfunc(e,Function("x","return x["+t.field(e).map(t.str).join("][")+"];"))},t.$=t.accessor,t.mutator=function(e){var n;return t.isString(e)&&(n=t.field(e)).length>1?function(e,t){for(var r=0;r<n.length-1;++r)e=e[n[r]];e[n[r]]=t}:function(t,n){t[e]=n}},t.$func=function(e,n){return function(r){r=t.$(r)||t.identity;var i=e+(t.name(r)?"_"+t.name(r):"");return t.namedfunc(i,function(e){return n(r(e))})}},t.$valid=t.$func("valid",t.isValid),t.$length=t.$func("length",t.length),t.$in=function(e,n){e=t.$(e);var r=t.isArray(n)?t.toMap(n):n;return function(t){return!!r[e(t)]}},t.comparator=function(e){var n=[];return void 0===e&&(e=[]),e=t.array(e).map(function(e){var r=1;return"-"===e[0]?(r=-1,e=e.slice(1)):"+"===e[0]&&(r=1,e=e.slice(1)),n.push(r),t.accessor(e)}),function(r,i){var o,a,s,c;for(o=0,a=e.length;o<a;++o)if(s=e[o],c=t.cmp(s(r),s(i)))return c*n[o];return 0}},t.cmp=function(e,t){return(e<t||null==e)&&null!=t?-1:(e>t||null==t)&&null!=e?1:(t=t instanceof Date?+t:t,(e=e instanceof Date?+e:e)!==e&&t==t?-1:t!=t&&e==e?1:0)},t.numcmp=function(e,t){return e-t},t.stablesort=function(e,t,n){var r=e.reduce(function(e,t,r){return e[n(t)]=r,e},{});return e.sort(function(e,i){var o=t(e),a=t(i);return o<a?-1:o>a?1:r[n(e)]-r[n(i)]}),e},t.permute=function(e){for(var t,n,r=e.length;r;)n=Math.floor(Math.random()*r--),t=e[r],e[r]=e[n],e[n]=t},t.pad=function(e,t,n,r){r=r||" ";var o=t-e.length;if(o<=0)return e;switch(n){case"left":return i(o,r)+e;case"middle":case"center":return i(Math.floor(o/2),r)+e+i(Math.ceil(o/2),r);default:return e+i(o,r)}},t.truncate=function(e,t,n,r,i){var a=e.length;if(a<=t)return e;i=void 0!==i?String(i):"…";var s=Math.max(0,t-i.length);switch(n){case"left":return i+(r?o(e,s,1):e.slice(a-s));case"middle":case"center":var c=Math.ceil(s/2),u=Math.floor(s/2);return(r?o(e,c):e.slice(0,c))+i+(r?o(e,u,1):e.slice(a-u));default:return(r?o(e,s):e.slice(0,s))+i}};var a=/([\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u2028\u2029\u3000\uFEFF])/}),je=Ge.isArray,ze=Ge.cmp,qe=Ge.keys,Ye=Ge.duplicate,Qe=Ge.extend,Ve=Ge.isObject,Ke=Ge.isBoolean,Je=Ge.toMap,Xe=Ge.isString;function Ze(e,t){return-1!==e.indexOf(t)}function et(e,t){for(let n=0;n<e.length;n++)if(!t(e[n],n))return!1;return!0}function tt(e,t,n){if(e.forEach)e.forEach.call(n,t);else for(let r in e)t.call(n,e[r],r,e)}function nt(e,t){let n,r=0;for(n in e)if(t(e[n],n,r++))return!0;return!1}function rt(e,t){return e.filter(function(e){return!Ze(t,e)})}function it(e){return Object.keys(e)}var ot=Object.freeze({isArray:je,contains:Ze,every:et,forEach:tt,some:nt,nestedMap:function e(t,n){return t.map(t=>je(t)?e(t,n):n(t))},without:rt,flagKeys:it,cmp:ze,keys:qe,duplicate:Ye,extend:Qe,isObject:Ve,isBoolean:Ke,toMap:Je});function at(e){return!!e.parent}const st={channel:1,aggregate:1,autoCount:1,bin:1,timeUnit:1,hasFn:1,sort:1,stack:1,field:1,type:1,format:1,scale:1,axis:1,legend:1,value:1},ct=it(st);function ut(e){return e in st}const lt={bin:1,scale:1,sort:1,axis:1,legend:1};function dt(e){return lt[e]}const ft=["maxbins","divide","extent","base","step","steps","minstep"],pt=["field","op","order"],ht=ft.map(e=>({parent:"bin",child:e})),gt=pt.map(e=>({parent:"sort",child:e})),mt=Re.map(e=>({parent:"scale",child:e})),yt=de.map(e=>({parent:"axis",child:e})),vt=pe.map(e=>({parent:"legend",child:e})),Et=[].concat(ht,gt,mt,yt,vt),bt=["width","height","background","padding","title"],Tt=".";function St(e){return at(e)?e.parent+Tt+e.child:e}function Ct(e){const t=e.split(Tt);if(1===t.length)return e;if(2===t.length)return{parent:t[0],child:t[1]};throw"Invalid property key with "+t.length+" dots: "+e}const At=Et.reduce((e,t)=>(e[t.parent]=e[t.parent]||[],e[t.parent][t.child]=t,e),{});function Nt(e,t){return(At[e]||{})[t]}function wt(e){return ut(e)||at(e)}const Ot=[].concat(ct,Et),xt=["type","field","bin","timeUnit","aggregate","autoCount","channel","mark","stack","scale","sort","axis","legend"].concat(ht,mt,yt,vt,gt);var It;!function(e){e.MARK="mark",e.TRANSFORM="transform",e.STACK="stack",e.FORMAT="format",e.CHANNEL="channel",e.AGGREGATE="aggregate",e.AUTOCOUNT="autoCount",e.BIN="bin",e.HAS_FN="hasFn",e.TIMEUNIT="timeUnit",e.FIELD="field",e.TYPE="type",e.SORT="sort",e.SCALE="scale",e.AXIS="axis",e.LEGEND="legend",e.WIDTH="width",e.HEIGHT="height",e.BACKGROUND="background",e.PADDING="padding",e.TITLE="title"}(It||(It={}));var Mt=Object.freeze({isEncodingNestedProp:at,ENCODING_TOPLEVEL_PROPS:ct,isEncodingTopLevelProperty:ut,isEncodingNestedParent:dt,BIN_CHILD_PROPS:ft,SORT_CHILD_PROPS:pt,SORT_PROPS:gt,SCALE_PROPS:mt,ENCODING_NESTED_PROPS:Et,VIEW_PROPS:bt,toKey:St,fromKey:Ct,getEncodingNestedProp:Nt,isEncodingProperty:wt,ALL_ENCODING_PROPS:Ot,DEFAULT_PROP_PRECEDENCE:xt,get Property(){return It}});const kt="area",Ut="bar",Ft="point",Dt="circle",_t="square";function Pt(e){return T(["line","area","trail"],e)}E(C({area:1,bar:1,line:1,point:1,text:1,tick:1,trail:1,rect:1,geoshape:1,rule:1,circle:1,square:1}));const Rt=["january","february","march","april","may","june","july","august","september","october","november","december"],Lt=(Rt.map(e=>e.substr(0,3)),["sunday","monday","tuesday","wednesday","thursday","friday","saturday"]);Lt.map(e=>e.substr(0,3));var $t;!function(e){e.YEAR="year",e.MONTH="month",e.DAY="day",e.DATE="date",e.HOURS="hours",e.MINUTES="minutes",e.SECONDS="seconds",e.MILLISECONDS="milliseconds",e.YEARMONTH="yearmonth",e.YEARMONTHDATE="yearmonthdate",e.YEARMONTHDATEHOURS="yearmonthdatehours",e.YEARMONTHDATEHOURSMINUTES="yearmonthdatehoursminutes",e.YEARMONTHDATEHOURSMINUTESSECONDS="yearmonthdatehoursminutesseconds",e.MONTHDATE="monthdate",e.MONTHDATEHOURS="monthdatehours",e.HOURSMINUTES="hoursminutes",e.HOURSMINUTESSECONDS="hoursminutesseconds",e.MINUTESSECONDS="minutesseconds",e.SECONDSMILLISECONDS="secondsmilliseconds",e.QUARTER="quarter",e.YEARQUARTER="yearquarter",e.QUARTERMONTH="quartermonth",e.YEARQUARTERMONTH="yearquartermonth",e.UTCYEAR="utcyear",e.UTCMONTH="utcmonth",e.UTCDAY="utcday",e.UTCDATE="utcdate",e.UTCHOURS="utchours",e.UTCMINUTES="utcminutes",e.UTCSECONDS="utcseconds",e.UTCMILLISECONDS="utcmilliseconds",e.UTCYEARMONTH="utcyearmonth",e.UTCYEARMONTHDATE="utcyearmonthdate",e.UTCYEARMONTHDATEHOURS="utcyearmonthdatehours",e.UTCYEARMONTHDATEHOURSMINUTES="utcyearmonthdatehoursminutes",e.UTCYEARMONTHDATEHOURSMINUTESSECONDS="utcyearmonthdatehoursminutesseconds",e.UTCMONTHDATE="utcmonthdate",e.UTCMONTHDATEHOURS="utcmonthdatehours",e.UTCHOURSMINUTES="utchoursminutes",e.UTCHOURSMINUTESSECONDS="utchoursminutesseconds",e.UTCMINUTESSECONDS="utcminutesseconds",e.UTCSECONDSMILLISECONDS="utcsecondsmilliseconds",e.UTCQUARTER="utcquarter",e.UTCYEARQUARTER="utcyearquarter",e.UTCQUARTERMONTH="utcquartermonth",e.UTCYEARQUARTERMONTH="utcyearquartermonth"}($t||($t={}));const Bt={year:1,quarter:1,month:1,day:1,date:1,hours:1,minutes:1,seconds:1,milliseconds:1},Wt=C(Bt);function Ht(e){return!!Bt[e]}const Gt={utcyear:1,utcquarter:1,utcmonth:1,utcday:1,utcdate:1,utchours:1,utcminutes:1,utcseconds:1,utcmilliseconds:1};function jt(e){return!!Gt[e]}const zt={utcyearquarter:1,utcyearquartermonth:1,utcyearmonth:1,utcyearmonthdate:1,utcyearmonthdatehours:1,utcyearmonthdatehoursminutes:1,utcyearmonthdatehoursminutesseconds:1,utcquartermonth:1,utcmonthdate:1,utcmonthdatehours:1,utchoursminutes:1,utchoursminutesseconds:1,utcminutesseconds:1,utcsecondsmilliseconds:1},qt=Object.assign({},Gt,zt);const Yt=Object.assign({},Bt,Gt,{yearquarter:1,yearquartermonth:1,yearmonth:1,yearmonthdate:1,yearmonthdatehours:1,yearmonthdatehoursminutes:1,yearmonthdatehoursminutesseconds:1,quartermonth:1,monthdate:1,monthdatehours:1,hoursminutes:1,hoursminutesseconds:1,minutesseconds:1,secondsmilliseconds:1},zt);const Qt={year:"setFullYear",month:"setMonth",date:"setDate",hours:"setHours",minutes:"setMinutes",seconds:"setSeconds",milliseconds:"setMilliseconds",quarter:null,day:null};function Vt(e,t){const n=!!qt[e];const r=n?new Date(Date.UTC(1972,0,1,0,0,0,0)):new Date(1972,0,1,0,0,0,0);for(const i of Wt)if(Jt(e,i))switch(i){case $t.DAY:throw new Error("Cannot convert to TimeUnits containing 'day'");case $t.QUARTER:{const{getDateMethod:e,setDateMethod:i}=Kt("month",n);r[i](3*Math.floor(t[e]()/3));break}default:{const{getDateMethod:e,setDateMethod:o}=Kt(i,n);r[o](t[e]())}}return r}function Kt(e,t){const n=Qt[e];return{setDateMethod:t?"setUTC"+n.substr(3):n,getDateMethod:"get"+(t?"UTC":"")+n.substr(3)}}function Jt(e,t){const n=e.indexOf(t);return n>-1&&(t!==$t.SECONDS||0===n||"i"!==e.charAt(n-1))}const Xt="?";function Zt(e){return en(e)||tn(e)}function en(e){return e===Xt}function tn(e){return!(void 0===e||null==e||!e.enum&&!e.name||je(e))}function nn(e,t,n){return Qe({},{name:t,enum:n},e===Xt?{}:e)}function rn(e){let t={},n={};for(const r of e){const e=[0];for(let t=0;t<r.length;t++)r.charAt(t).toUpperCase()===r.charAt(t)&&e.push(t);let i=e.map(e=>r.charAt(e)).join("").toLowerCase();if(n[i])if(e[e.length-1]===r.length-1||n[i=e.concat([r.length-1]).map(e=>r.charAt(e)).join("").toLowerCase()])for(let e=1;!t[r];e++){let o=i+"_"+e;if(!n[o]){t[r]=o,n[o]=!0;break}}else t[r]=i,n[i]=!0;else t[r]=i,n[i]=!0}return t}const on={mark:"m",channel:"c",aggregate:"a",autoCount:"#",hasFn:"h",bin:"b",sort:"so",stack:"st",scale:"s",format:"f",axis:"ax",legend:"l",value:"v",timeUnit:"tu",field:"f",type:"t",binProps:{maxbins:"mb",min:"mi",max:"ma",base:"b",step:"s",steps:"ss",minstep:"ms",divide:"d"},sortProps:{field:"f",op:"o",order:"or"},scaleProps:rn(Re),axisProps:rn(de),legendProps:rn(pe)};function an(e){if(at(e))return on[e.parent]+"-"+on[e.parent+"Props"][e.child];if(on[e])return on[e];throw new Error("Default name undefined for "+e)}const sn=[!1,!0],cn={maxbins:[5,10,20],extent:[void 0],base:[10],step:[void 0],steps:[void 0],minstep:[void 0],divide:[[5,2]],binned:[!1],anchor:[void 0],nice:[!0]},un={field:[void 0],op:["min","mean"],order:["ascending","descending"]},ln={type:[void 0,Oe.LOG],domain:[void 0],base:[void 0],exponent:[1,2],constant:[void 0],bins:[void 0],clamp:sn,nice:sn,reverse:sn,round:sn,zero:sn,padding:[void 0],paddingInner:[void 0],paddingOuter:[void 0],interpolate:[void 0],range:[void 0],rangeStep:[17,21],scheme:[void 0]},dn={zindex:[1,0],offset:[void 0],orient:[void 0],values:[void 0],bandPosition:[void 0],encoding:[void 0],domain:sn,domainColor:[void 0],domainDash:[void 0],domainDashOffset:[void 0],domainOpacity:[void 0],domainWidth:[void 0],formatType:[void 0],grid:sn,gridColor:[void 0],gridDash:[void 0],gridDashOffset:[void 0],gridOpacity:[void 0],gridWidth:[void 0],format:[void 0],labels:sn,labelAlign:[void 0],labelAngle:[void 0],labelBaseline:[void 0],labelColor:[void 0],labelFlushOffset:[void 0],labelFont:[void 0],labelFontSize:[void 0],labelFontStyle:[void 0],labelFontWeight:[void 0],labelLimit:[void 0],labelOpacity:[void 0],labelSeparation:[void 0],labelOverlap:[void 0],labelPadding:[void 0],labelBound:[void 0],labelFlush:[void 0],maxExtent:[void 0],minExtent:[void 0],position:[void 0],ticks:sn,tickColor:[void 0],tickCount:[void 0],tickDash:[void 0],tickExtra:[void 0],tickDashOffset:[void 0],tickMinStep:[void 0],tickOffset:[void 0],tickOpacity:[void 0],tickRound:[void 0],tickSize:[void 0],tickWidth:[void 0],title:[void 0],titleAlign:[void 0],titleAnchor:[void 0],titleAngle:[void 0],titleBaseline:[void 0],titleColor:[void 0],titleFont:[void 0],titleFontSize:[void 0],titleFontStyle:[void 0],titleFontWeight:[void 0],titleLimit:[void 0],titleOpacity:[void 0],titlePadding:[void 0],titleX:[void 0],titleY:[void 0]},fn={orient:["left","right"],format:[void 0],type:[void 0],values:[void 0],zindex:[void 0],clipHeight:[void 0],columnPadding:[void 0],columns:[void 0],cornerRadius:[void 0],direction:[void 0],encoding:[void 0],fillColor:[void 0],formatType:[void 0],gridAlign:[void 0],offset:[void 0],padding:[void 0],rowPadding:[void 0],strokeColor:[void 0],labelAlign:[void 0],labelBaseline:[void 0],labelColor:[void 0],labelFont:[void 0],labelFontSize:[void 0],labelFontStyle:[void 0],labelFontWeight:[void 0],labelLimit:[void 0],labelOffset:[void 0],labelOpacity:[void 0],labelOverlap:[void 0],labelPadding:[void 0],labelSeparation:[void 0],legendX:[void 0],legendY:[void 0],gradientLength:[void 0],gradientOpacity:[void 0],gradientStrokeColor:[void 0],gradientStrokeWidth:[void 0],gradientThickness:[void 0],symbolDash:[void 0],symbolDashOffset:[void 0],symbolFillColor:[void 0],symbolOffset:[void 0],symbolOpacity:[void 0],symbolSize:[void 0],symbolStrokeColor:[void 0],symbolStrokeWidth:[void 0],symbolType:[void 0],tickCount:[void 0],tickMinStep:[void 0],title:[void 0],titleAnchor:[void 0],titleAlign:[void 0],titleBaseline:[void 0],titleColor:[void 0],titleFont:[void 0],titleFontSize:[void 0],titleFontStyle:[void 0],titleFontWeight:[void 0],titleLimit:[void 0],titleOpacity:[void 0],titleOrient:[void 0],titlePadding:[void 0]},pn={mark:[Ft,Ut,"line",kt,"rect","tick","text"],channel:[x,I,N,w,B,P],aggregate:[void 0,"mean"],autoCount:sn,bin:sn,hasFn:sn,timeUnit:[void 0,$t.YEAR,$t.MONTH,$t.MINUTES,$t.SECONDS],field:[void 0],type:[Ae,Se,Te,Ce],sort:["ascending","descending"],stack:["zero","normalize","center",null],value:[void 0],format:[void 0],title:[void 0],scale:[!0],axis:sn,legend:sn,binProps:cn,sortProps:un,scaleProps:ln,axisProps:dn,legendProps:fn};function hn(e,t,n){if("field"===e||at(e)&&"sort"===e.parent&&"field"===e.child)return t.fieldNames();let r;if(void 0!==(r=at(e)?n.enum[e.parent+"Props"][e.child]:n.enum[e]))return r;throw new Error("No default enumValues for "+JSON.stringify(e))}var gn=Object.freeze({SHORT_WILDCARD:Xt,isWildcard:Zt,isShortWildcard:en,isWildcardDef:tn,initWildcard:nn,DEFAULT_NAME:on,getDefaultName:an,DEFAULT_ENUM_INDEX:pn,getDefaultEnumValues:hn});const mn={verbose:!1,defaultSpecConfig:{line:{point:!0},scale:{useUnaggregatedDomain:!0}},propertyPrecedence:xt.map(St),enum:pn,numberNominalProportion:.05,numberNominalLimit:40,constraintManuallySpecifiedValue:!1,autoAddCount:!1,hasAppropriateGraphicTypeForMark:!0,omitAggregate:!1,omitAggregatePlotWithDimensionOnlyOnFacet:!0,omitAggregatePlotWithoutDimension:!1,omitBarLineAreaWithOcclusion:!0,omitBarTickWithSize:!0,omitMultipleNonPositionalChannels:!0,omitRaw:!1,omitRawContinuousFieldForAggregatePlot:!0,omitRepeatedField:!0,omitNonPositionalOrFacetOverPositionalChannels:!0,omitTableWithOcclusionIfAutoAddCount:!0,omitVerticalDotPlot:!1,omitInvalidStackSpec:!0,omitNonSumStack:!0,preferredBinAxis:x,preferredTemporalAxis:x,preferredOrdinalAxis:I,preferredNominalAxis:I,preferredFacet:N,minCardinalityForBin:15,maxCardinalityForCategoricalColor:20,maxCardinalityForFacet:20,maxCardinalityForShape:6,timeUnitShouldHaveVariation:!0,typeMatchesSchemaType:!0,stylize:!0,smallRangeStepForHighCardinalityOrFacet:{maxCardinality:10,rangeStep:12},nominalColorScaleForHighCardinality:{maxCardinality:10,palette:"category20"},xAxisOnTopForHighYCardinalityWithoutColumn:{maxCardinality:30},maxGoodCardinalityForFacet:5,maxGoodCardinalityForColor:7,minPercentUniqueForKey:.8,minCardinalityForKey:50};function yn(e,t){return Object.assign({},pn[t+"Props"],e[t+"Props"])}var vn=Object.freeze({DEFAULT_QUERY_CONFIG:mn,extendConfig:function(e){return Object.assign({},mn,e,{enum:(t=e.enum,Object.assign({},pn,t,{binProps:yn(t,"bin"),scaleProps:yn(t,"scale"),axisProps:yn(t,"axis"),legendProps:yn(t,"legend")}))});var t}});const En={argmax:1,argmin:1,average:1,count:1,distinct:1,max:1,mean:1,median:1,min:1,missing:1,q1:1,q3:1,ci0:1,ci1:1,stderr:1,stdev:1,stdevp:1,sum:1,valid:1,values:1,variance:1,variancep:1};function bn(e){return!!e&&!!e.argmin}function Tn(e){return!!e&&!!e.argmax}function Sn(e){return u(e)&&!!En[e]}const Cn=["count","sum","distinct","valid","missing"];E(["mean","average","median","q1","q3","min","max"]);function An(e){return!0===e||Nn(e)&&!e.binned}function Nn(e){return c(e)}function wn(e){switch(e){case N:case w:case B:case P:case R:case L:case j:case W:case H:case G:case $:return 6;default:return 10}}function On(e){return!!e&&!!e.condition&&!s(e.condition)&&xn(e.condition)}function xn(e){return!(!e||!e.field&&"count"!==e.aggregate)}function In(e){return xn(e)&&u(e.field)}function Mn(e,t={}){let n=e.field;const r=t.prefix;let i=t.suffix,o="";if(Fn(e))n=function(e){return 0===e.indexOf("__")}(s="count")?s:`__${s}`;else{let r;if(!t.nofn)if(function(e){return!!e.op}(e))r=e.op;else{const{bin:a,aggregate:s,timeUnit:c}=e;An(a)?(r=function(e){return v(e)&&(e=_n(e,void 0)),"bin"+S(e).map(t=>(function(e){const t=e.replace(/\W/g,"_");return(e.match(/^\d+/)?"_":"")+t})(`_${t}_${e[t]}`)).join("")}(a),i=(t.binSuffix||"")+(t.suffix||"")):s?Tn(s)?(o=`.${n}`,n=`argmax_${s.argmax}`):bn(s)?(o=`.${n}`,n=`argmin_${s.argmin}`):r=String(s):c&&(r=String(c))}r&&(n=n?`${r}_${n}`:r)}var s;return i&&(n=`${n}_${i}`),r&&(n=`${r}_${n}`),t.forAs?n:t.expr?function(e,t="datum"){return`${t}[${l(a(e).join("."))}]`}(n,t.expr)+o:`${a(n).map(e=>e.replace(".","\\.")).join("\\.")}`+o}function kn(e){switch(e.type){case"nominal":case"ordinal":case"geojson":return!0;case"quantitative":return!!e.bin;case"temporal":return!1}throw new Error(he.invalidFieldType(e.type))}function Un(e){return!kn(e)}function Fn(e){return"count"===e.aggregate}function Dn(e){return xn(e)?e:On(e)?e.condition:void 0}function _n(e,t){return v(e)?{maxbins:wn(t)}:"binned"===e?{binned:!0}:e.maxbins||e.step?e:Object.assign({},e,{maxbins:wn(t)})}const Pn={compatible:!0};function Rn(e,t){const n=e.type;if("geojson"===n&&"shape"!==t)return{compatible:!1,warning:`Channel ${t} should not be used with a geojson data.`};switch(t){case"row":case"column":case"facet":return Un(e)?{compatible:!1,warning:he.facetChannelShouldBeDiscrete(t)}:Pn;case"x":case"y":case"color":case"fill":case"stroke":case"text":case"detail":case"key":case"tooltip":case"href":return Pn;case"longitude":case"longitude2":case"latitude":case"latitude2":return n!==Te?{compatible:!1,warning:`Channel ${t} should be used with a quantitative field only, not ${e.type} field.`}:Pn;case"opacity":case"fillOpacity":case"strokeOpacity":case"strokeWidth":case"size":case"x2":case"y2":return"nominal"!==n||e.sort?Pn:{compatible:!1,warning:`Channel ${t} should not be used with an unsorted discrete field.`};case"shape":return T(["ordinal","nominal","geojson"],e.type)?Pn:{compatible:!1,warning:"Shape channel should be used with only either discrete or geojson data."};case"order":return"nominal"!==e.type||"sort"in e?Pn:{compatible:!1,warning:"Channel order is inappropriate for nominal field, which has no inherent order."}}throw new Error("channelCompatability not implemented for channel "+t)}var Ln;function $n(e,t,n,r){const i=function(e,t,n){switch(t.type){case"nominal":case"ordinal":if(X(e)||"discrete"===ce(e))return"shape"===e&&"ordinal"===t.type&&Ee(he.discreteChannelCannotEncode(e,"ordinal")),"ordinal";if(T(["x","y"],e)){if(T(["rect","bar","rule"],n))return"band";if("bar"===n)return"band"}return"point";case"temporal":return X(e)?"time":"discrete"===ce(e)?(Ee(he.discreteChannelCannotEncode(e,"temporal")),"ordinal"):"time";case"quantitative":return X(e)?An(t.bin)?"bin-ordinal":"linear":"discrete"===ce(e)?(Ee(he.discreteChannelCannotEncode(e,"quantitative")),"ordinal"):"linear";case"geojson":return}throw new Error(he.invalidFieldType(t.type))}(t,n,r),{type:o}=e;return ae(t)?void 0!==o?We(t,o)?Be(o,n.type)?o:(Ee(he.scaleTypeNotWorkWithFieldDef(o,i)),i):(Ee(he.scaleTypeNotWorkWithChannel(t,o,i)),i):i:null}function Bn(e){return e===Se||e===Ae||e===Ln.KEY}!function(e){e.QUANTITATIVE=Te,e.ORDINAL=Se,e.TEMPORAL=Ce,e.NOMINAL=Ae,e.KEY="key"}(Ln||(Ln={}));class Wn{constructor(e=null){this.index=e?Object.assign({},e):{}}has(e){return St(e)in this.index}get(e){return this.index[St(e)]}set(e,t){return this.index[St(e)]=t,this}setByKey(e,t){this.index[e]=t}map(e){const t=new Wn;for(const n in this.index)t.index[n]=e(this.index[n]);return t}size(){return qe(this.index).length}duplicate(){return new Wn(this.index)}}function Hn(e,t){const n=e&&e[t];return!!n&&(s(n)?function(e,t){let n=0;for(const[r,i]of e.entries())if(t(i,r,n++))return!0;return!1}(n,e=>!!e.field):xn(n)||On(n))}const Gn={zero:1,center:1,normalize:1};const jn=[Ut,kt,"rule",Ft,Dt,_t,"line","text","tick"],zn=[Ut,kt];function qn(e,t,n,r={}){const i=function(e){return e.type}(e)?e.type:e;if(!T(jn,i))return null;const o=function(e){const t=e.x,n=e.y;if(xn(t)&&xn(n))if("quantitative"===t.type&&"quantitative"===n.type){if(t.stack)return"x";if(n.stack)return"y";if(!!t.aggregate!=!!n.aggregate)return t.aggregate?"x":"y"}else{if("quantitative"===t.type)return"x";if("quantitative"===n.type)return"y"}else{if(xn(t)&&"quantitative"===t.type)return"x";if(xn(n)&&"quantitative"===n.type)return"y"}}(t);if(!o)return null;const a=t[o],c=In(a)?Mn(a,{}):void 0,u="x"===o?"y":"x",l=t[u],d=In(l)?Mn(l,{}):void 0,f=ne.reduce((e,n)=>{if("tooltip"!==n&&Hn(t,n)){const r=t[n];(s(r)?r:[r]).forEach(t=>{const r=Dn(t);if(r.aggregate)return;const i=In(r)?Mn(r,{}):void 0;(!i||i!==d&&i!==c)&&e.push({channel:n,fieldDef:r})})}return e},[]);if(0===f.length)return null;let p;if(!(p=void 0!==a.stack?v(a.stack)?a.stack?"zero":null:a.stack:T(zn,i)?A(n,"zero"):n)||!Gn[p])return null;if(a.scale&&a.scale.type&&a.scale.type!==Oe.LINEAR){if(r.disallowNonLinearStack)return null;Ee(he.cannotStackNonLinearScale(a.scale.type))}return Hn(t,o===x?M:k)?(void 0!==a.stack&&Ee(he.cannotStackRangedMark(o)),null):(a.aggregate&&!T(Cn,a.aggregate)&&Ee(he.stackNonSummativeAggregate(a.aggregate)),{groupbyChannel:l?u:void 0,fieldChannel:o,impute:Pt(i),stackBy:f,offset:p})}function Yn(e){return Qe(e.data?{data:e.data}:{},e.transform?{transform:e.transform}:{},e.width?{width:e.width}:{},e.height?{height:e.height}:{},e.background?{background:e.background}:{},e.padding?{padding:e.padding}:{},e.title?{title:e.title}:{},{mark:e.mark,encodings:qe(e.encoding).map(t=>{let n={channel:t},r=e.encoding[t];for(const e in r)ut(e)&&void 0!==r[e]&&(Ze(["bin","scale","axis","legend"],e)&&null===r[e]?n[e]=!1:n[e]=r[e]);return gr(n)&&"count"===n.aggregate&&!n.field&&(n.field="*"),n})},e.config?{config:e.config}:{})}function Qn(e){return nt(e.encodings,e=>gr(e)&&!Zt(e.aggregate)&&!!e.aggregate||vr(e))}function Vn(e){if(!Xn(e))return null;const t=br(e.encodings,{schema:null,wildcardMode:"null"});return qn(e.mark,t,void 0,{disallowNonLinearStack:!0})}function Kn(e){for(const t of e.encodings)if(void 0!==t[It.STACK]&&!Zt(t[It.STACK]))return t[It.STACK]}function Jn(e){for(const t of e.encodings)if(void 0!==t[It.STACK]&&!Zt(t.channel))return t.channel;return null}function Xn(e){if(Zt(e.mark))return!1;const t=[It.STACK,It.CHANNEL,It.MARK,It.FIELD,It.AGGREGATE,It.AUTOCOUNT,It.SCALE,Nt("scale","type"),It.TYPE],n=Je(rt(Ot,t)),r=e.encodings.filter(e=>!yr(e));for(const e of r)if(Zn(e,{exclude:n}))return!1;return!0}function Zn(e,t={}){if(!Ve(e))return!1;for(const n in e)if(e.hasOwnProperty(n)){if(Zt(e[n])&&(!t.exclude||!t.exclude[n])||Zn(e[n],t))return!0}return!1}var er=Object.freeze({fromSpec:Yn,isAggregate:Qn,getVlStack:Vn,getStackOffset:Kn,getStackChannel:Jn,hasRequiredStackProperties:Xn,hasWildcard:function(e,t={}){const n=t.exclude?Je(t.exclude.map(St)):{};if(Zt(e.mark)&&!n.mark)return!0;for(const t of e.encodings)if(Zn(t,n))return!0;return!1}});function tr(e){return e.map(e=>nr(e))}function nr(e){return t=>void 0!==e[t]?e[t]:t}function rr(e,t){return Zt(e)?!en(e)&&e.enum?Xt+JSON.stringify(e.enum):Xt:t?t(e):e}function ir(e,t){return t?t(e):e}const or=new Wn,ar=[].concat(xt,gt,[It.TRANSFORM,It.STACK],bt).reduce((e,t)=>e.set(t,!0),new Wn);const sr={axis:{x:!0,y:!0,row:!0,column:!0},legend:{color:!0,opacity:!0,size:!0,shape:!0},scale:{x:!0,y:!0,color:!0,opacity:!0,row:!0,column:!0,size:!0,shape:!0},sort:{x:!0,y:!0,path:!0,order:!0},stack:{x:!0,y:!0}};function cr(e,t=ar,n=or){const r=[];let i;if(t.get(It.MARK)&&r.push(rr(e.mark,n.get(It.MARK))),e.transform&&e.transform.length>0&&r.push("transform:"+JSON.stringify(e.transform)),t.get(It.STACK)&&(i=Vn(e)),e.encodings){const o=e.encodings.reduce((e,r)=>{if(!yr(r)){let o;(o=i&&r.channel===i.fieldChannel?ur(Object.assign({},r,{stack:i.offset}),t,n):ur(r,t,n))&&e.push(o)}return e},[]).sort().join("|");o&&r.push(o)}for(let n of bt){const i=n.toString();if(t.get(n)&&e[i]){const t=e[i];r.push(`${i}=${JSON.stringify(t)}`)}}return r.join("|")}function ur(e,t=ar,n=or){const r=[];if(t.get(It.CHANNEL)&&r.push(rr(e.channel,n.get(It.CHANNEL))),gr(e)){const i=lr(e,t,n);i&&r.push(i)}else hr(e)?r.push(e.value):mr(e)&&r.push("autocount()");return r.join(":")}function lr(e,t=ar,n=or){if(t.get(It.AGGREGATE)&&yr(e))return"-";const r=function(e,t,n){if(t.get(It.AGGREGATE)&&e.aggregate&&!Zt(e.aggregate))return ir(e.aggregate,n.get(It.AGGREGATE));if(t.get(It.AGGREGATE)&&vr(e))return ir("count",n.get(It.AGGREGATE));if(t.get(It.TIMEUNIT)&&e.timeUnit&&!Zt(e.timeUnit))return ir(e.timeUnit,n.get(It.TIMEUNIT));if(t.get(It.BIN)&&e.bin&&!Zt(e.bin))return"bin";{let n=null;for(const r of[It.AGGREGATE,It.AUTOCOUNT,It.TIMEUNIT,It.BIN]){const i=e[r];t.get(r)&&e[r]&&Zt(i)&&((n=n||{})[r]=en(i)?i:i.enum)}return n&&e.hasFn&&(n.hasFn=!0),n}}(e,t,n),i=function(e,t,n){const r=[];if(!Ke(e.bin)&&!en(e.bin)){const i=e.bin;for(const e in i){const o=Nt("bin",e);o&&t.get(o)&&void 0!==i[e]&&r.push({key:e,value:rr(i[e],n.get(o))})}r.sort((e,t)=>e.key.localeCompare(t.key))}for(const i of[It.SCALE,It.SORT,It.STACK,It.AXIS,It.LEGEND])if((Zt(e.channel)||sr[i][e.channel])&&t.get(i)&&void 0!==e[i]){const o=e[i];if(Ke(o)||null===o)r.push({key:i+"",value:o||!1});else if(Xe(o))r.push({key:i+"",value:ir(JSON.stringify(o),n.get(i))});else{let e=[];for(const r in o){const a=Nt(i,r);a&&t.get(a)&&void 0!==o[r]&&e.push({key:r,value:rr(o[r],n.get(a))})}if(e.length>0){const t=e.sort((e,t)=>e.key.localeCompare(t.key)).reduce((e,t)=>(e[t.key]=t.value,e),{});r.push({key:i+"",value:JSON.stringify(t)})}}}return r}(e,t,n);let o;if(gr(e)){if(o=t.get("field")?rr(e.field,n.get("field")):"...",t.get(It.TYPE))if(Zt(e.type))o+=","+rr(e.type,n.get(It.TYPE));else{o+=","+rr(((e.type||Te)+"").substr(0,1),n.get(It.TYPE))}o+=i.map(e=>{let t=e.value instanceof Array?"["+e.value+"]":e.value;return","+e.key+"="+t}).join("")}else mr(e)&&(o="*,q");if(!o)return null;if(r){return(Xe(r)?r:Xt+(qe(r).length>0?JSON.stringify(r):""))+"("+o+")"}return o}function dr(e,t,n){let r=[],i=0;for(let o=0;o<n;o++){let n=e.indexOf(t,i);if(-1===n)break;r.push(e.substring(i,n)),i=n+1}if(r.push(e.substr(i)),r.length!==n+1)for(;r.length!==n+1;)r.push("");return r}var fr;!function(e){function t(e){const t={};t.field=e[0],t.type=we(e[1].toUpperCase())||"?";let r=e[2],i=0,o=0;for(;o<r.length;){let e,a=r.indexOf("=",o);if(-1===a)break;{let s=r.substring(o,a);if("{"===r[o+s.length+1]){let t=o+s.length+1;i=n(t,r,"}");c