UNPKG

45.5 kBJavaScriptView Raw
1!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vega-util"),require("vega-dataflow"),require("vega-statistics"),require("vega-time")):"function"==typeof define&&define.amd?define(["exports","vega-util","vega-dataflow","vega-statistics","vega-time"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).vega={},e.vega,e.vega,e.vega,e.vega)}(this,(function(e,t,n,i,a){"use strict";function r(e){return e&&e.length?1===e.length?e[0]:(t=e,e=>{const n=t.length;let i=1,a=String(t[0](e));for(;i<n;++i)a+="|"+t[i](e);return a}):function(){return""};var t}function s(e,t,n){return n||e+(t?"_"+t:"")}const l=()=>{},o={init:l,add:l,rem:l,idx:0},u={values:{init:e=>e.cell.store=!0,value:e=>e.cell.data.values(),idx:-1},count:{value:e=>e.cell.num},__count__:{value:e=>e.missing+e.valid},missing:{value:e=>e.missing},valid:{value:e=>e.valid},sum:{init:e=>e.sum=0,value:e=>e.sum,add:(e,t)=>e.sum+=+t,rem:(e,t)=>e.sum-=t},product:{init:e=>e.product=1,value:e=>e.valid?e.product:void 0,add:(e,t)=>e.product*=t,rem:(e,t)=>e.product/=t},mean:{init:e=>e.mean=0,value:e=>e.valid?e.mean:void 0,add:(e,t)=>(e.mean_d=t-e.mean,e.mean+=e.mean_d/e.valid),rem:(e,t)=>(e.mean_d=t-e.mean,e.mean-=e.valid?e.mean_d/e.valid:e.mean)},average:{value:e=>e.valid?e.mean:void 0,req:["mean"],idx:1},variance:{init:e=>e.dev=0,value:e=>e.valid>1?e.dev/(e.valid-1):void 0,add:(e,t)=>e.dev+=e.mean_d*(t-e.mean),rem:(e,t)=>e.dev-=e.mean_d*(t-e.mean),req:["mean"],idx:1},variancep:{value:e=>e.valid>1?e.dev/e.valid:void 0,req:["variance"],idx:2},stdev:{value:e=>e.valid>1?Math.sqrt(e.dev/(e.valid-1)):void 0,req:["variance"],idx:2},stdevp:{value:e=>e.valid>1?Math.sqrt(e.dev/e.valid):void 0,req:["variance"],idx:2},stderr:{value:e=>e.valid>1?Math.sqrt(e.dev/(e.valid*(e.valid-1))):void 0,req:["variance"],idx:2},distinct:{value:e=>e.cell.data.distinct(e.get),req:["values"],idx:3},ci0:{value:e=>e.cell.data.ci0(e.get),req:["values"],idx:3},ci1:{value:e=>e.cell.data.ci1(e.get),req:["values"],idx:3},median:{value:e=>e.cell.data.q2(e.get),req:["values"],idx:3},q1:{value:e=>e.cell.data.q1(e.get),req:["values"],idx:3},q3:{value:e=>e.cell.data.q3(e.get),req:["values"],idx:3},min:{init:e=>e.min=void 0,value:e=>e.min=Number.isNaN(e.min)?e.cell.data.min(e.get):e.min,add:(e,t)=>{(t<e.min||void 0===e.min)&&(e.min=t)},rem:(e,t)=>{t<=e.min&&(e.min=NaN)},req:["values"],idx:4},max:{init:e=>e.max=void 0,value:e=>e.max=Number.isNaN(e.max)?e.cell.data.max(e.get):e.max,add:(e,t)=>{(t>e.max||void 0===e.max)&&(e.max=t)},rem:(e,t)=>{t>=e.max&&(e.max=NaN)},req:["values"],idx:4},argmin:{init:e=>e.argmin=void 0,value:e=>e.argmin||e.cell.data.argmin(e.get),add:(e,t,n)=>{t<e.min&&(e.argmin=n)},rem:(e,t)=>{t<=e.min&&(e.argmin=void 0)},req:["min","values"],idx:3},argmax:{init:e=>e.argmax=void 0,value:e=>e.argmax||e.cell.data.argmax(e.get),add:(e,t,n)=>{t>e.max&&(e.argmax=n)},rem:(e,t)=>{t>=e.max&&(e.argmax=void 0)},req:["max","values"],idx:3}},d=Object.keys(u).filter((e=>"__count__"!==e));function m(e,t){return u[e](t)}function f(e,t){return e.idx-t.idx}function c(){this.valid=0,this.missing=0,this._ops.forEach((e=>e.init(this)))}function h(e,t){null!=e&&""!==e?e==e&&(++this.valid,this._ops.forEach((n=>n.add(this,e,t)))):++this.missing}function p(e,t){null!=e&&""!==e?e==e&&(--this.valid,this._ops.forEach((n=>n.rem(this,e,t)))):--this.missing}function v(e){return this._out.forEach((t=>e[t.out]=t.value(this))),e}function g(e,n){const i=n||t.identity,a=function(e){const t={};e.forEach((e=>t[e.name]=e));const n=e=>{e.req&&e.req.forEach((e=>{t[e]||n(t[e]=u[e]())}))};return e.forEach(n),Object.values(t).sort(f)}(e),r=e.slice().sort(f);function s(e){this._ops=a,this._out=r,this.cell=e,this.init()}return s.prototype.init=c,s.prototype.add=h,s.prototype.rem=p,s.prototype.set=v,s.prototype.get=i,s.fields=e.map((e=>e.out)),s}function y(e){this._key=e?t.field(e):n.tupleid,this.reset()}[...d,"__count__"].forEach((e=>{u[e]=function(e,n){return i=>t.extend({name:e,out:i||e},o,n)}(e,u[e])}));const _=y.prototype;function x(e){n.Transform.call(this,null,e),this._adds=[],this._mods=[],this._alen=0,this._mlen=0,this._drop=!0,this._cross=!1,this._dims=[],this._dnames=[],this._measures=[],this._countOnly=!1,this._counts=null,this._prev=null,this._inputs=null,this._outputs=null}_.reset=function(){this._add=[],this._rem=[],this._ext=null,this._get=null,this._q=null},_.add=function(e){this._add.push(e)},_.rem=function(e){this._rem.push(e)},_.values=function(){if(this._get=null,0===this._rem.length)return this._add;const e=this._add,t=this._rem,n=this._key,i=e.length,a=t.length,r=Array(i-a),s={};let l,o,u;for(l=0;l<a;++l)s[n(t[l])]=1;for(l=0,o=0;l<i;++l)s[n(u=e[l])]?s[n(u)]=0:r[o++]=u;return this._rem=[],this._add=r},_.distinct=function(e){const n=this.values(),i={};let a,r=n.length,s=0;for(;--r>=0;)a=e(n[r])+"",t.hasOwnProperty(i,a)||(i[a]=1,++s);return s},_.extent=function(e){if(this._get!==e||!this._ext){const n=this.values(),i=t.extentIndex(n,e);this._ext=[n[i[0]],n[i[1]]],this._get=e}return this._ext},_.argmin=function(e){return this.extent(e)[0]||{}},_.argmax=function(e){return this.extent(e)[1]||{}},_.min=function(e){const t=this.extent(e)[0];return null!=t?e(t):void 0},_.max=function(e){const t=this.extent(e)[1];return null!=t?e(t):void 0},_.quartile=function(e){return this._get===e&&this._q||(this._q=i.quartiles(this.values(),e),this._get=e),this._q},_.q1=function(e){return this.quartile(e)[0]},_.q2=function(e){return this.quartile(e)[1]},_.q3=function(e){return this.quartile(e)[2]},_.ci=function(e){return this._get===e&&this._ci||(this._ci=i.bootstrapCI(this.values(),1e3,.05,e),this._get=e),this._ci},_.ci0=function(e){return this.ci(e)[0]},_.ci1=function(e){return this.ci(e)[1]},x.Definition={type:"Aggregate",metadata:{generates:!0,changes:!0},params:[{name:"groupby",type:"field",array:!0},{name:"ops",type:"enum",array:!0,values:d},{name:"fields",type:"field",null:!0,array:!0},{name:"as",type:"string",null:!0,array:!0},{name:"drop",type:"boolean",default:!0},{name:"cross",type:"boolean",default:!1},{name:"key",type:"field"}]},t.inherits(x,n.Transform,{transform(e,t){const n=this,i=t.fork(t.NO_SOURCE|t.NO_FIELDS),a=e.modified();return n.stamp=i.stamp,n.value&&(a||t.modified(n._inputs,!0))?(n._prev=n.value,n.value=a?n.init(e):{},t.visit(t.SOURCE,(e=>n.add(e)))):(n.value=n.value||n.init(e),t.visit(t.REM,(e=>n.rem(e))),t.visit(t.ADD,(e=>n.add(e)))),i.modifies(n._outputs),n._drop=!1!==e.drop,e.cross&&n._dims.length>1&&(n._drop=!1,n.cross()),t.clean()&&n._drop&&i.clean(!0).runAfter((()=>this.clean())),n.changes(i)},cross(){const e=this,t=e.value,n=e._dnames,i=n.map((()=>({}))),a=n.length;function r(e){let t,r,s,l;for(t in e)for(s=e[t].tuple,r=0;r<a;++r)i[r][l=s[n[r]]]=l}r(e._prev),r(t),function r(s,l,o){const u=n[o],d=i[o++];for(const n in d){const i=s?s+"|"+n:n;l[u]=d[n],o<a?r(i,l,o):t[i]||e.cell(i,l)}}("",{},0)},init(e){const n=this._inputs=[],i=this._outputs=[],a={};function l(e){const i=t.array(t.accessorFields(e)),r=i.length;let s,l=0;for(;l<r;++l)a[s=i[l]]||(a[s]=1,n.push(s))}this._dims=t.array(e.groupby),this._dnames=this._dims.map((e=>{const n=t.accessorName(e);return l(e),i.push(n),n})),this.cellkey=e.key?e.key:r(this._dims),this._countOnly=!0,this._counts=[],this._measures=[];const o=e.fields||[null],u=e.ops||["count"],d=e.as||[],f=o.length,c={};let h,p,v,y,_,x;for(f!==u.length&&t.error("Unmatched number of fields and aggregate ops."),x=0;x<f;++x)h=o[x],p=u[x],null==h&&"count"!==p&&t.error("Null aggregate field specified."),y=t.accessorName(h),_=s(p,y,d[x]),i.push(_),"count"!==p?(v=c[y],v||(l(h),v=c[y]=[],v.field=h,this._measures.push(v)),"count"!==p&&(this._countOnly=!1),v.push(m(p,_))):this._counts.push(_);return this._measures=this._measures.map((e=>g(e,e.field))),{}},cellkey:r(),cell(e,t){let n=this.value[e];return n?0===n.num&&this._drop&&n.stamp<this.stamp?(n.stamp=this.stamp,this._adds[this._alen++]=n):n.stamp<this.stamp&&(n.stamp=this.stamp,this._mods[this._mlen++]=n):(n=this.value[e]=this.newcell(e,t),this._adds[this._alen++]=n),n},newcell(e,t){const n={key:e,num:0,agg:null,tuple:this.newtuple(t,this._prev&&this._prev[e]),stamp:this.stamp,store:!1};if(!this._countOnly){const e=this._measures,t=e.length;n.agg=Array(t);for(let i=0;i<t;++i)n.agg[i]=new e[i](n)}return n.store&&(n.data=new y),n},newtuple(e,t){const i=this._dnames,a=this._dims,r=a.length,s={};for(let t=0;t<r;++t)s[i[t]]=a[t](e);return t?n.replace(t.tuple,s):n.ingest(s)},clean(){const e=this.value;for(const t in e)0===e[t].num&&delete e[t]},add(e){const t=this.cellkey(e),n=this.cell(t,e);if(n.num+=1,this._countOnly)return;n.store&&n.data.add(e);const i=n.agg;for(let t=0,n=i.length;t<n;++t)i[t].add(i[t].get(e),e)},rem(e){const t=this.cellkey(e),n=this.cell(t,e);if(n.num-=1,this._countOnly)return;n.store&&n.data.rem(e);const i=n.agg;for(let t=0,n=i.length;t<n;++t)i[t].rem(i[t].get(e),e)},celltuple(e){const t=e.tuple,n=this._counts;e.store&&e.data.values();for(let i=0,a=n.length;i<a;++i)t[n[i]]=e.num;if(!this._countOnly){const n=e.agg;for(let e=0,i=n.length;e<i;++e)n[e].set(t)}return t},changes(e){const t=this._adds,n=this._mods,i=this._prev,a=this._drop,r=e.add,s=e.rem,l=e.mod;let o,u,d,m;if(i)for(u in i)o=i[u],a&&!o.num||s.push(o.tuple);for(d=0,m=this._alen;d<m;++d)r.push(this.celltuple(t[d])),t[d]=null;for(d=0,m=this._mlen;d<m;++d)o=n[d],(0===o.num&&a?s:l).push(this.celltuple(o)),n[d]=null;return this._alen=this._mlen=0,this._prev=null,e}});function b(e){n.Transform.call(this,null,e)}function O(e,n,i){const a=e;let r=n||[],s=i||[],l={},o=0;return{add:e=>s.push(e),remove:e=>l[a(e)]=++o,size:()=>r.length,data:(e,n)=>(o&&(r=r.filter((e=>!l[a(e)])),l={},o=0),n&&e&&r.sort(e),s.length&&(r=e?t.merge(e,r,s.sort(e)):r.concat(s),s=[]),r)}}function D(e){n.Transform.call(this,[],e)}function E(e){n.Operator.call(this,null,N,e)}function N(e){return this.value&&!e.modified()?this.value:t.compare(e.fields,e.orders)}function k(e){n.Transform.call(this,null,e)}function T(e){n.Transform.call(this,null,e)}b.Definition={type:"Bin",metadata:{modifies:!0},params:[{name:"field",type:"field",required:!0},{name:"interval",type:"boolean",default:!0},{name:"anchor",type:"number"},{name:"maxbins",type:"number",default:20},{name:"base",type:"number",default:10},{name:"divide",type:"number",array:!0,default:[5,2]},{name:"extent",type:"number",array:!0,length:2,required:!0},{name:"span",type:"number"},{name:"step",type:"number"},{name:"steps",type:"number",array:!0},{name:"minstep",type:"number",default:0},{name:"nice",type:"boolean",default:!0},{name:"name",type:"string"},{name:"as",type:"string",array:!0,length:2,default:["bin0","bin1"]}]},t.inherits(b,n.Transform,{transform(e,n){const i=!1!==e.interval,a=this._bins(e),r=a.start,s=a.step,l=e.as||["bin0","bin1"],o=l[0],u=l[1];let d;return d=e.modified()?(n=n.reflow(!0)).SOURCE:n.modified(t.accessorFields(e.field))?n.ADD_MOD:n.ADD,n.visit(d,i?e=>{const t=a(e);e[o]=t,e[u]=null==t?null:r+s*(1+(t-r)/s)}:e=>e[o]=a(e)),n.modifies(i?l:o)},_bins(e){if(this.value&&!e.modified())return this.value;const n=e.field,a=i.bin(e),r=a.step;let s,l,o=a.start,u=o+Math.ceil((a.stop-o)/r)*r;null!=(s=e.anchor)&&(l=s-(o+r*Math.floor((s-o)/r)),o+=l,u+=l);const d=function(e){let i=t.toNumber(n(e));return null==i?null:i<o?-1/0:i>u?1/0:(i=Math.max(o,Math.min(i,u-r)),o+r*Math.floor(1e-14+(i-o)/r))};return d.start=o,d.stop=a.stop,d.step=r,this.value=t.accessor(d,t.accessorFields(n),e.name||"bin_"+t.accessorName(n))}}),D.Definition={type:"Collect",metadata:{source:!0},params:[{name:"sort",type:"compare"}]},t.inherits(D,n.Transform,{transform(e,t){const i=t.fork(t.ALL),a=O(n.tupleid,this.value,i.materialize(i.ADD).add),r=e.sort,s=t.changed()||r&&(e.modified("sort")||t.modified(r.fields));return i.visit(i.REM,a.remove),this.modified(s),this.value=i.source=a.data(n.stableCompare(r),s),t.source&&t.source.root&&(this.value.root=t.source.root),i}}),t.inherits(E,n.Operator),k.Definition={type:"CountPattern",metadata:{generates:!0,changes:!0},params:[{name:"field",type:"field",required:!0},{name:"case",type:"enum",values:["upper","lower","mixed"],default:"mixed"},{name:"pattern",type:"string",default:'[\\w"]+'},{name:"stopwords",type:"string",default:""},{name:"as",type:"string",array:!0,length:2,default:["text","count"]}]},t.inherits(k,n.Transform,{transform(e,t){const n=t=>n=>{for(var i,a=function(e,t,n){switch(t){case"upper":e=e.toUpperCase();break;case"lower":e=e.toLowerCase()}return e.match(n)}(l(n),e.case,r)||[],o=0,u=a.length;o<u;++o)s.test(i=a[o])||t(i)},i=this._parameterCheck(e,t),a=this._counts,r=this._match,s=this._stop,l=e.field,o=e.as||["text","count"],u=n((e=>a[e]=1+(a[e]||0))),d=n((e=>a[e]-=1));return i?t.visit(t.SOURCE,u):(t.visit(t.ADD,u),t.visit(t.REM,d)),this._finish(t,o)},_parameterCheck(e,t){let n=!1;return!e.modified("stopwords")&&this._stop||(this._stop=new RegExp("^"+(e.stopwords||"")+"$","i"),n=!0),!e.modified("pattern")&&this._match||(this._match=new RegExp(e.pattern||"[\\w']+","g"),n=!0),(e.modified("field")||t.modified(e.field.fields))&&(n=!0),n&&(this._counts={}),n},_finish(e,t){const i=this._counts,a=this._tuples||(this._tuples={}),r=t[0],s=t[1],l=e.fork(e.NO_SOURCE|e.NO_FIELDS);let o,u,d;for(o in i)u=a[o],d=i[o]||0,!u&&d?(a[o]=u=n.ingest({}),u[r]=o,u[s]=d,l.add.push(u)):0===d?(u&&l.rem.push(u),i[o]=null,a[o]=null):u[s]!==d&&(u[s]=d,l.mod.push(u));return l.modifies(t)}}),T.Definition={type:"Cross",metadata:{generates:!0},params:[{name:"filter",type:"expr"},{name:"as",type:"string",array:!0,length:2,default:["a","b"]}]},t.inherits(T,n.Transform,{transform(e,i){const a=i.fork(i.NO_SOURCE),r=e.as||["a","b"],s=r[0],l=r[1],o=!this.value||i.changed(i.ADD_REM)||e.modified("as")||e.modified("filter");let u=this.value;return o?(u&&(a.rem=u),u=i.materialize(i.SOURCE).source,a.add=this.value=function(e,t,i,a){for(var r,s,l=[],o={},u=e.length,d=0;d<u;++d)for(o[t]=s=e[d],r=0;r<u;++r)o[i]=e[r],a(o)&&(l.push(n.ingest(o)),(o={})[t]=s);return l}(u,s,l,e.filter||t.truthy)):a.mod=u,a.source=this.value,a.modifies(r)}});const q={kde:i.randomKDE,mixture:i.randomMixture,normal:i.randomNormal,lognormal:i.randomLogNormal,uniform:i.randomUniform},w="distributions",M="function",R="field";function S(e,n){const i=e[M];t.hasOwnProperty(q,i)||t.error("Unknown distribution function: "+i);const a=q[i]();for(const t in e)t===R?a.data((e.from||n()).map(e[t])):t===w?a[t](e[t].map((e=>S(e,n)))):typeof a[t]===M&&a[t](e[t]);return a}function C(e){n.Transform.call(this,null,e)}const U=[{key:{function:"normal"},params:[{name:"mean",type:"number",default:0},{name:"stdev",type:"number",default:1}]},{key:{function:"lognormal"},params:[{name:"mean",type:"number",default:0},{name:"stdev",type:"number",default:1}]},{key:{function:"uniform"},params:[{name:"min",type:"number",default:0},{name:"max",type:"number",default:1}]},{key:{function:"kde"},params:[{name:"field",type:"field",required:!0},{name:"from",type:"data"},{name:"bandwidth",type:"number",default:0}]}],A={key:{function:"mixture"},params:[{name:"distributions",type:"param",array:!0,params:U},{name:"weights",type:"number",array:!0}]};function F(e,n){return e?e.map(((e,i)=>n[i]||t.accessorName(e))):null}function z(e,t,n){const i=[],a=e=>e(o);let r,s,l,o,u,d;if(null==t)i.push(e.map(n));else for(r={},s=0,l=e.length;s<l;++s)o=e[s],u=t.map(a),d=r[u],d||(r[u]=d=[],d.dims=u,i.push(d)),d.push(n(o));return i}C.Definition={type:"Density",metadata:{generates:!0},params:[{name:"extent",type:"number",array:!0,length:2},{name:"steps",type:"number"},{name:"minsteps",type:"number",default:25},{name:"maxsteps",type:"number",default:200},{name:"method",type:"string",default:"pdf",values:["pdf","cdf"]},{name:"distribution",type:"param",params:U.concat(A)},{name:"as",type:"string",array:!0,default:["value","density"]}]},t.inherits(C,n.Transform,{transform(e,a){const r=a.fork(a.NO_SOURCE|a.NO_FIELDS);if(!this.value||a.changed()||e.modified()){const s=S(e.distribution,function(e){return()=>e.materialize(e.SOURCE).source}(a)),l=e.steps||e.minsteps||25,o=e.steps||e.maxsteps||200;let u=e.method||"pdf";"pdf"!==u&&"cdf"!==u&&t.error("Invalid density method: "+u),e.extent||s.data||t.error("Missing density extent parameter."),u=s[u];const d=e.as||["value","density"],m=e.extent||t.extent(s.data()),f=i.sampleCurve(u,m,l,o).map((e=>{const t={};return t[d[0]]=e[0],t[d[1]]=e[1],n.ingest(t)}));this.value&&(r.rem=this.value),this.value=r.add=r.source=f}return r}});function L(e){n.Transform.call(this,null,e)}L.Definition={type:"DotBin",metadata:{modifies:!0},params:[{name:"field",type:"field",required:!0},{name:"groupby",type:"field",array:!0},{name:"step",type:"number"},{name:"smooth",type:"boolean",default:!1},{name:"as",type:"string",default:"bin"}]};function I(e){n.Operator.call(this,null,P,e),this.modified(!0)}function P(e){const n=e.expr;return this.value&&!e.modified("expr")?this.value:t.accessor((t=>n(t,e)),t.accessorFields(n),t.accessorName(n))}function j(e){n.Transform.call(this,[void 0,void 0],e)}function $(e,t){n.Operator.call(this,e),this.parent=t,this.count=0}function B(e){n.Transform.call(this,{},e),this._keys=t.fastmap();const i=this._targets=[];i.active=0,i.forEach=e=>{for(let t=0,n=i.active;t<n;++t)e(i[t],t,i)}}function K(e){n.Operator.call(this,null,W,e)}function W(e){return this.value&&!e.modified()?this.value:t.isArray(e.name)?t.array(e.name).map((e=>t.field(e))):t.field(e.name,e.as)}function J(e){n.Transform.call(this,t.fastmap(),e)}function Q(e){n.Transform.call(this,[],e)}function G(e){n.Transform.call(this,[],e)}function H(e){n.Transform.call(this,null,e)}function V(e){n.Transform.call(this,[],e)}function X(e,t){return null==e||null==t?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function Y(e,t){return null==e||null==t?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function Z(){return 0}function ee(e,t){return(null==e||!(e>=e))-(null==t||!(t>=t))||(e<t?-1:e>t?1:0)}function te(e,t){let n;if(void 0===t)for(const t of e)null!=t&&(n<t||void 0===n&&t>=t)&&(n=t);else{let i=-1;for(let a of e)null!=(a=t(a,++i,e))&&(n<a||void 0===n&&a>=a)&&(n=a)}return n}function ne(e,t){let n;if(void 0===t)for(const t of e)null!=t&&(n>t||void 0===n&&t>=t)&&(n=t);else{let i=-1;for(let a of e)null!=(a=t(a,++i,e))&&(n>a||void 0===n&&a>=a)&&(n=a)}return n}function ie(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1/0,a=arguments.length>4?arguments[4]:void 0;if(t=Math.floor(t),n=Math.floor(Math.max(0,n)),i=Math.floor(Math.min(e.length-1,i)),!(n<=t&&t<=i))return e;for(a=void 0===a?ee:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:X;if(e===X)return ee;if("function"!=typeof e)throw new TypeError("compare is not a function");return(t,n)=>{const i=e(t,n);return i||0===i?i:(0===e(n,n))-(0===e(t,t))}}(a);i>n;){if(i-n>600){const r=i-n+1,s=t-n+1,l=Math.log(r),o=.5*Math.exp(2*l/3),u=.5*Math.sqrt(l*o*(r-o)/r)*(s-r/2<0?-1:1);ie(e,t,Math.max(n,Math.floor(t-s*o/r+u)),Math.min(i,Math.floor(t+(r-s)*o/r+u)),a)}const r=e[t];let s=n,l=i;for(ae(e,n,t),a(e[i],r)>0&&ae(e,n,i);s<l;){for(ae(e,s,l),++s,--l;a(e[s],r)<0;)++s;for(;a(e[l],r)>0;)--l}0===a(e[n],r)?ae(e,n,l):(++l,ae(e,l,i)),l<=t&&(n=l+1),t<=l&&(i=l-1)}return e}function ae(e,t,n){const i=e[t];e[t]=e[n],e[n]=i}function re(e,t,n){e=+e,t=+t,n=(a=arguments.length)<2?(t=e,e=0,1):a<3?1:+n;for(var i=-1,a=0|Math.max(0,Math.ceil((t-e)/n)),r=new Array(a);++i<a;)r[i]=e+i*n;return r}t.inherits(L,n.Transform,{transform(e,a){if(this.value&&!e.modified()&&!a.changed())return a;const r=a.materialize(a.SOURCE).source,s=z(a.source,e.groupby,t.identity),l=e.smooth||!1,o=e.field,u=e.step||((e,n)=>t.span(t.extent(e,n))/30)(r,o),d=n.stableCompare(((e,t)=>o(e)-o(t))),m=e.as||"bin",f=s.length;let c,h=1/0,p=-1/0,v=0;for(;v<f;++v){const e=s[v].sort(d);c=-1;for(const t of i.dotbin(e,u,l,o))t<h&&(h=t),t>p&&(p=t),e[++c][m]=t}return this.value={start:h,stop:p,step:u},a.reflow(!0).modifies(m)}}),t.inherits(I,n.Operator),j.Definition={type:"Extent",metadata:{},params:[{name:"field",type:"field",required:!0}]},t.inherits(j,n.Transform,{transform(e,n){const i=this.value,a=e.field,r=n.changed()||n.modified(a.fields)||e.modified("field");let s=i[0],l=i[1];if((r||null==s)&&(s=1/0,l=-1/0),n.visit(r?n.SOURCE:n.ADD,(e=>{const n=t.toNumber(a(e));null!=n&&(n<s&&(s=n),n>l&&(l=n))})),!Number.isFinite(s)||!Number.isFinite(l)){let e=t.accessorName(a);e&&(e=` for field "${e}"`),n.dataflow.warn(`Infinite extent${e}: [${s}, ${l}]`),s=l=void 0}this.value=[s,l]}}),t.inherits($,n.Operator,{connect(e){return this.detachSubflow=e.detachSubflow,this.targets().add(e),e.source=this},add(e){this.count+=1,this.value.add.push(e)},rem(e){this.count-=1,this.value.rem.push(e)},mod(e){this.value.mod.push(e)},init(e){this.value.init(e,e.NO_SOURCE)},evaluate(){return this.value}}),t.inherits(B,n.Transform,{activate(e){this._targets[this._targets.active++]=e},subflow(e,n,i,a){const r=this.value;let s,l,o=t.hasOwnProperty(r,e)&&r[e];return o?o.value.stamp<i.stamp&&(o.init(i),this.activate(o)):(l=a||(l=this._group[e])&&l.tuple,s=i.dataflow,o=new $(i.fork(i.NO_SOURCE),this),s.add(o).connect(n(s,e,l)),r[e]=o,this.activate(o)),o},clean(){const e=this.value;let t=0;for(const n in e)if(0===e[n].count){const i=e[n].detachSubflow;i&&i(),delete e[n],++t}if(t){const e=this._targets.filter((e=>e&&e.count>0));this.initTargets(e)}},initTargets(e){const t=this._targets,n=t.length,i=e?e.length:0;let a=0;for(;a<i;++a)t[a]=e[a];for(;a<n&&null!=t[a];++a)t[a]=null;t.active=i},transform(e,t){const i=t.dataflow,a=e.key,r=e.subflow,s=this._keys,l=e.modified("key"),o=e=>this.subflow(e,r,t);return this._group=e.group||{},this.initTargets(),t.visit(t.REM,(e=>{const t=n.tupleid(e),i=s.get(t);void 0!==i&&(s.delete(t),o(i).rem(e))})),t.visit(t.ADD,(e=>{const t=a(e);s.set(n.tupleid(e),t),o(t).add(e)})),l||t.modified(a.fields)?t.visit(t.MOD,(e=>{const t=n.tupleid(e),i=s.get(t),r=a(e);i===r?o(r).mod(e):(s.set(t,r),o(i).rem(e),o(r).add(e))})):t.changed(t.MOD)&&t.visit(t.MOD,(e=>{o(s.get(n.tupleid(e))).mod(e)})),l&&t.visit(t.REFLOW,(e=>{const t=n.tupleid(e),i=s.get(t),r=a(e);i!==r&&(s.set(t,r),o(i).rem(e),o(r).add(e))})),t.clean()?i.runAfter((()=>{this.clean(),s.clean()})):s.empty>i.cleanThreshold&&i.runAfter(s.clean),t}}),t.inherits(K,n.Operator),J.Definition={type:"Filter",metadata:{changes:!0},params:[{name:"expr",type:"expr",required:!0}]},t.inherits(J,n.Transform,{transform(e,t){const i=t.dataflow,a=this.value,r=t.fork(),s=r.add,l=r.rem,o=r.mod,u=e.expr;let d=!0;function m(t){const i=n.tupleid(t),r=u(t,e),m=a.get(i);r&&m?(a.delete(i),s.push(t)):r||m?d&&r&&!m&&o.push(t):(a.set(i,1),l.push(t))}return t.visit(t.REM,(e=>{const t=n.tupleid(e);a.has(t)?a.delete(t):l.push(e)})),t.visit(t.ADD,(t=>{u(t,e)?s.push(t):a.set(n.tupleid(t),1)})),t.visit(t.MOD,m),e.modified()&&(d=!1,t.visit(t.REFLOW,m)),a.empty>i.cleanThreshold&&i.runAfter(a.clean),r}}),Q.Definition={type:"Flatten",metadata:{generates:!0},params:[{name:"fields",type:"field",array:!0,required:!0},{name:"index",type:"string"},{name:"as",type:"string",array:!0}]},t.inherits(Q,n.Transform,{transform(e,t){const i=t.fork(t.NO_SOURCE),a=e.fields,r=F(a,e.as||[]),s=e.index||null,l=r.length;return i.rem=this.value,t.visit(t.SOURCE,(e=>{const t=a.map((t=>t(e))),o=t.reduce(((e,t)=>Math.max(e,t.length)),0);let u,d,m,f=0;for(;f<o;++f){for(d=n.derive(e),u=0;u<l;++u)d[r[u]]=null==(m=t[u][f])?null:m;s&&(d[s]=f),i.add.push(d)}})),this.value=i.source=i.add,s&&i.modifies(s),i.modifies(r)}}),G.Definition={type:"Fold",metadata:{generates:!0},params:[{name:"fields",type:"field",array:!0,required:!0},{name:"as",type:"string",array:!0,length:2,default:["key","value"]}]},t.inherits(G,n.Transform,{transform(e,i){const a=i.fork(i.NO_SOURCE),r=e.fields,s=r.map(t.accessorName),l=e.as||["key","value"],o=l[0],u=l[1],d=r.length;return a.rem=this.value,i.visit(i.SOURCE,(e=>{for(let t,i=0;i<d;++i)t=n.derive(e),t[o]=s[i],t[u]=r[i](e),a.add.push(t)})),this.value=a.source=a.add,a.modifies(l)}}),H.Definition={type:"Formula",metadata:{modifies:!0},params:[{name:"expr",type:"expr",required:!0},{name:"as",type:"string",required:!0},{name:"initonly",type:"boolean"}]},t.inherits(H,n.Transform,{transform(e,t){const n=e.expr,i=e.as,a=e.modified(),r=e.initonly?t.ADD:a?t.SOURCE:t.modified(n.fields)||t.modified(i)?t.ADD_MOD:t.ADD;return a&&(t=t.materialize().reflow(!0)),e.initonly||t.modifies(i),t.visit(r,(t=>t[i]=n(t,e)))}}),t.inherits(V,n.Transform,{transform(e,t){const i=t.fork(t.ALL),a=e.generator;let r,s,l,o=this.value,u=e.size-o.length;if(u>0){for(r=[];--u>=0;)r.push(l=n.ingest(a(e))),o.push(l);i.add=i.add.length?i.materialize(i.ADD).add.concat(r):r}else s=o.slice(0,-u),i.rem=i.rem.length?i.materialize(i.REM).rem.concat(s):s,o=o.slice(-u);return i.source=this.value=o,i}});const se={value:"value",median:function(e,t){return function(e,t,n){if(e=Float64Array.from(function*(e,t){if(void 0===t)for(let t of e)null!=t&&(t=+t)>=t&&(yield t);else{let n=-1;for(let i of e)null!=(i=t(i,++n,e))&&(i=+i)>=i&&(yield i)}}(e,n)),(i=e.length)&&!isNaN(t=+t)){if(t<=0||i<2)return ne(e);if(t>=1)return te(e);var i,a=(i-1)*t,r=Math.floor(a),s=te(ie(e,r).subarray(0,r+1));return s+(ne(e.subarray(r+1))-s)*(a-r)}}(e,.5,t)},mean:function(e,t){let n=0,i=0;if(void 0===t)for(let t of e)null!=t&&(t=+t)>=t&&(++n,i+=t);else{let a=-1;for(let r of e)null!=(r=t(r,++a,e))&&(r=+r)>=r&&(++n,i+=r)}if(n)return i/n},min:ne,max:te},le=[];function oe(e){n.Transform.call(this,[],e)}function ue(e){x.call(this,e)}function de(e){n.Transform.call(this,null,e)}function me(e){n.Operator.call(this,null,fe,e)}function fe(e){return this.value&&!e.modified()?this.value:t.key(e.fields,e.flat)}function ce(e){n.Transform.call(this,[],e),this._pending=null}function he(e,t,i){i.forEach(n.ingest);const a=t.fork(t.NO_FIELDS&t.NO_SOURCE);return a.rem=e.value,e.value=a.source=a.add=i,e._pending=null,a.rem.length&&a.clean(!0),a}function pe(e){n.Transform.call(this,{},e)}function ve(e){n.Operator.call(this,null,ge,e)}function ge(e){if(this.value&&!e.modified())return this.value;const t=e.extents,n=t.length;let i,a,r=1/0,s=-1/0;for(i=0;i<n;++i)a=t[i],a[0]<r&&(r=a[0]),a[1]>s&&(s=a[1]);return[r,s]}function ye(e){n.Operator.call(this,null,_e,e)}function _e(e){return this.value&&!e.modified()?this.value:e.values.reduce(((e,t)=>e.concat(t)),[])}function xe(e){n.Transform.call(this,null,e)}function be(e){x.call(this,e)}function Oe(e){B.call(this,e)}function De(e){n.Transform.call(this,null,e)}function Ee(e){n.Transform.call(this,null,e)}function Ne(e){n.Transform.call(this,null,e)}oe.Definition={type:"Impute",metadata:{changes:!0},params:[{name:"field",type:"field",required:!0},{name:"key",type:"field",required:!0},{name:"keyvals",array:!0},{name:"groupby",type:"field",array:!0},{name:"method",type:"enum",default:"value",values:["value","mean","median","max","min"]},{name:"value",default:0}]},t.inherits(oe,n.Transform,{transform(e,i){var a,r,s,l,o,u,d,m,f,c,h=i.fork(i.ALL),p=function(e){var n,i=e.method||se.value;if(null!=se[i])return i===se.value?(n=void 0!==e.value?e.value:0,()=>n):se[i];t.error("Unrecognized imputation method: "+i)}(e),v=function(e){const t=e.field;return e=>e?t(e):NaN}(e),g=t.accessorName(e.field),y=t.accessorName(e.key),_=(e.groupby||[]).map(t.accessorName),x=function(e,t,n,i){var a,r,s,l,o,u,d,m,f=e=>e(m),c=[],h=i?i.slice():[],p={},v={};for(h.forEach(((e,t)=>p[e]=t+1)),l=0,d=e.length;l<d;++l)u=n(m=e[l]),o=p[u]||(p[u]=h.push(u)),(s=v[r=(a=t?t.map(f):le)+""])||(s=v[r]=[],c.push(s),s.values=a),s[o-1]=m;return c.domain=h,c}(i.source,e.groupby,e.key,e.keyvals),b=[],O=this.value,D=x.domain.length;for(o=0,m=x.length;o<m;++o)for(s=(a=x[o]).values,r=NaN,d=0;d<D;++d)if(null==a[d]){for(l=x.domain[d],c={_impute:!0},u=0,f=s.length;u<f;++u)c[_[u]]=s[u];c[y]=l,c[g]=Number.isNaN(r)?r=p(a,v):r,b.push(n.ingest(c))}return b.length&&(h.add=h.materialize(h.ADD).add.concat(b)),O.length&&(h.rem=h.materialize(h.REM).rem.concat(O)),this.value=b,h}}),ue.Definition={type:"JoinAggregate",metadata:{modifies:!0},params:[{name:"groupby",type:"field",array:!0},{name:"fields",type:"field",null:!0,array:!0},{name:"ops",type:"enum",array:!0,values:d},{name:"as",type:"string",null:!0,array:!0},{name:"key",type:"field"}]},t.inherits(ue,x,{transform(e,n){const i=this,a=e.modified();let r;return i.value&&(a||n.modified(i._inputs,!0))?(r=i.value=a?i.init(e):{},n.visit(n.SOURCE,(e=>i.add(e)))):(r=i.value=i.value||this.init(e),n.visit(n.REM,(e=>i.rem(e))),n.visit(n.ADD,(e=>i.add(e)))),i.changes(),n.visit(n.SOURCE,(e=>{t.extend(e,r[i.cellkey(e)].tuple)})),n.reflow(a).modifies(this._outputs)},changes(){const e=this._adds,t=this._mods;let n,i;for(n=0,i=this._alen;n<i;++n)this.celltuple(e[n]),e[n]=null;for(n=0,i=this._mlen;n<i;++n)this.celltuple(t[n]),t[n]=null;this._alen=this._mlen=0}}),de.Definition={type:"KDE",metadata:{generates:!0},params:[{name:"groupby",type:"field",array:!0},{name:"field",type:"field",required:!0},{name:"cumulative",type:"boolean",default:!1},{name:"counts",type:"boolean",default:!1},{name:"bandwidth",type:"number",default:0},{name:"extent",type:"number",array:!0,length:2},{name:"resolve",type:"enum",values:["shared","independent"],default:"independent"},{name:"steps",type:"number"},{name:"minsteps",type:"number",default:25},{name:"maxsteps",type:"number",default:200},{name:"as",type:"string",array:!0,default:["value","density"]}]},t.inherits(de,n.Transform,{transform(e,a){const r=a.fork(a.NO_SOURCE|a.NO_FIELDS);if(!this.value||a.changed()||e.modified()){const s=a.materialize(a.SOURCE).source,l=z(s,e.groupby,e.field),o=(e.groupby||[]).map(t.accessorName),u=e.bandwidth,d=e.cumulative?"cdf":"pdf",m=e.as||["value","density"],f=[];let c=e.extent,h=e.steps||e.minsteps||25,p=e.steps||e.maxsteps||200;"pdf"!==d&&"cdf"!==d&&t.error("Invalid density method: "+d),"shared"===e.resolve&&(c||(c=t.extent(s,e.field)),h=p=e.steps||p),l.forEach((a=>{const r=i.randomKDE(a,u)[d],s=e.counts?a.length:1,l=c||t.extent(a);i.sampleCurve(r,l,h,p).forEach((e=>{const t={};for(let e=0;e<o.length;++e)t[o[e]]=a.dims[e];t[m[0]]=e[0],t[m[1]]=e[1]*s,f.push(n.ingest(t))}))})),this.value&&(r.rem=this.value),this.value=r.add=r.source=f}return r}}),t.inherits(me,n.Operator),t.inherits(ce,n.Transform,{transform(e,n){const i=n.dataflow;if(this._pending)return he(this,n,this._pending);if(function(e){return e.modified("async")&&!(e.modified("values")||e.modified("url")||e.modified("format"))}(e))return n.StopPropagation;if(e.values)return he(this,n,i.parse(e.values,e.format));if(e.async){const n=i.request(e.url,e.format).then((e=>(this._pending=t.array(e.data),e=>e.touch(this))));return{async:n}}return i.request(e.url,e.format).then((e=>he(this,n,t.array(e.data))))}}),pe.Definition={type:"Lookup",metadata:{modifies:!0},params:[{name:"index",type:"index",params:[{name:"from",type:"data",required:!0},{name:"key",type:"field",required:!0}]},{name:"values",type:"field",array:!0},{name:"fields",type:"field",array:!0,required:!0},{name:"as",type:"string",array:!0},{name:"default",default:null}]},t.inherits(pe,n.Transform,{transform(e,n){const i=e.fields,a=e.index,r=e.values,s=null==e.default?null:e.default,l=e.modified(),o=i.length;let u,d,m,f=l?n.SOURCE:n.ADD,c=n,h=e.as;return r?(d=r.length,o>1&&!h&&t.error('Multi-field lookup requires explicit "as" parameter.'),h&&h.length!==o*d&&t.error('The "as" parameter has too few output field names.'),h=h||r.map(t.accessorName),u=function(e){for(var t,n,l=0,u=0;l<o;++l)if(null==(n=a.get(i[l](e))))for(t=0;t<d;++t,++u)e[h[u]]=s;else for(t=0;t<d;++t,++u)e[h[u]]=r[t](n)}):(h||t.error("Missing output field names."),u=function(e){for(var t,n=0;n<o;++n)t=a.get(i[n](e)),e[h[n]]=null==t?s:t}),l?c=n.reflow(!0):(m=i.some((e=>n.modified(e.fields))),f|=m?n.MOD:0),n.visit(f,u),c.modifies(h)}}),t.inherits(ve,n.Operator),t.inherits(ye,n.Operator),t.inherits(xe,n.Transform,{transform(e,t){return this.modified(e.modified()),this.value=e,t.fork(t.NO_SOURCE|t.NO_FIELDS)}}),be.Definition={type:"Pivot",metadata:{generates:!0,changes:!0},params:[{name:"groupby",type:"field",array:!0},{name:"field",type:"field",required:!0},{name:"value",type:"field",required:!0},{name:"op",type:"enum",values:d,default:"sum"},{name:"limit",type:"number",default:0},{name:"key",type:"field"}]},t.inherits(be,x,{_transform:x.prototype.transform,transform(e,n){return this._transform(function(e,n){const i=e.field,a=e.value,r=("count"===e.op?"__count__":e.op)||"sum",s=t.accessorFields(i).concat(t.accessorFields(a)),l=function(e,n,i){const a={},r=[];return i.visit(i.SOURCE,(t=>{const n=e(t);a[n]||(a[n]=1,r.push(n))})),r.sort(t.ascending),n?r.slice(0,n):r}(i,e.limit||0,n);n.changed()&&e.set("__pivot__",null,null,!0);return{key:e.key,groupby:e.groupby,ops:l.map((()=>r)),fields:l.map((e=>function(e,n,i,a){return t.accessor((t=>n(t)===e?i(t):NaN),a,e+"")}(e,i,a,s))),as:l.map((e=>e+"")),modified:e.modified.bind(e)}}(e,n),n)}}),t.inherits(Oe,B,{transform(e,i){const a=e.subflow,r=e.field,s=e=>this.subflow(n.tupleid(e),a,i,e);return(e.modified("field")||r&&i.modified(t.accessorFields(r)))&&t.error("PreFacet does not support field modification."),this.initTargets(),r?(i.visit(i.MOD,(e=>{const t=s(e);r(e).forEach((e=>t.mod(e)))})),i.visit(i.ADD,(e=>{const t=s(e);r(e).forEach((e=>t.add(n.ingest(e))))})),i.visit(i.REM,(e=>{const t=s(e);r(e).forEach((e=>t.rem(e)))}))):(i.visit(i.MOD,(e=>s(e).mod(e))),i.visit(i.ADD,(e=>s(e).add(e))),i.visit(i.REM,(e=>s(e).rem(e)))),i.clean()&&i.runAfter((()=>this.clean())),i}}),De.Definition={type:"Project",metadata:{generates:!0,changes:!0},params:[{name:"fields",type:"field",array:!0},{name:"as",type:"string",null:!0,array:!0}]},t.inherits(De,n.Transform,{transform(e,t){const i=t.fork(t.NO_SOURCE),a=e.fields,r=F(e.fields,e.as||[]),s=a?(e,t)=>function(e,t,n,i){for(let a=0,r=n.length;a<r;++a)t[i[a]]=n[a](e);return t}(e,t,a,r):n.rederive;let l;return this.value?l=this.value:(t=t.addAll(),l=this.value={}),t.visit(t.REM,(e=>{const t=n.tupleid(e);i.rem.push(l[t]),l[t]=null})),t.visit(t.ADD,(e=>{const t=s(e,n.ingest({}));l[n.tupleid(e)]=t,i.add.push(t)})),t.visit(t.MOD,(e=>{i.mod.push(s(e,l[n.tupleid(e)]))})),i}}),t.inherits(Ee,n.Transform,{transform(e,t){return this.value=e.value,e.modified("value")?t.fork(t.NO_SOURCE|t.NO_FIELDS):t.StopPropagation}}),Ne.Definition={type:"Quantile",metadata:{generates:!0,changes:!0},params:[{name:"groupby",type:"field",array:!0},{name:"field",type:"field",required:!0},{name:"probs",type:"number",array:!0},{name:"step",type:"number",default:.01},{name:"as",type:"string",array:!0,default:["prob","value"]}]};function ke(e){n.Transform.call(this,null,e)}function Te(e){n.Transform.call(this,[],e),this.count=0}function qe(e){n.Transform.call(this,null,e)}function we(e){n.Transform.call(this,null,e),this.modified(!0)}function Me(e){n.Transform.call(this,null,e)}t.inherits(Ne,n.Transform,{transform(e,a){const r=a.fork(a.NO_SOURCE|a.NO_FIELDS),s=e.as||["prob","value"];if(this.value&&!e.modified()&&!a.changed())return r.source=this.value,r;const l=z(a.materialize(a.SOURCE).source,e.groupby,e.field),o=(e.groupby||[]).map(t.accessorName),u=[],d=e.step||.01,m=e.probs||re(d/2,1-1e-14,d),f=m.length;return l.forEach((e=>{const t=i.quantiles(e,m);for(let i=0;i<f;++i){const a={};for(let t=0;t<o.length;++t)a[o[t]]=e.dims[t];a[s[0]]=m[i],a[s[1]]=t[i],u.push(n.ingest(a))}})),this.value&&(r.rem=this.value),this.value=r.add=r.source=u,r}}),t.inherits(ke,n.Transform,{transform(e,t){let i,a;return this.value?a=this.value:(i=t=t.addAll(),a=this.value={}),e.derive&&(i=t.fork(t.NO_SOURCE),t.visit(t.REM,(e=>{const t=n.tupleid(e);i.rem.push(a[t]),a[t]=null})),t.visit(t.ADD,(e=>{const t=n.derive(e);a[n.tupleid(e)]=t,i.add.push(t)})),t.visit(t.MOD,(e=>{const t=a[n.tupleid(e)];for(const n in e)t[n]=e[n],i.modifies(n);i.mod.push(t)}))),i}}),Te.Definition={type:"Sample",metadata:{},params:[{name:"size",type:"number",default:1e3}]},t.inherits(Te,n.Transform,{transform(e,t){const a=t.fork(t.NO_SOURCE),r=e.modified("size"),s=e.size,l=this.value.reduce(((e,t)=>(e[n.tupleid(t)]=1,e)),{});let o=this.value,u=this.count,d=0;function m(e){let t,r;o.length<s?o.push(e):(r=~~((u+1)*i.random()),r<o.length&&r>=d&&(t=o[r],l[n.tupleid(t)]&&a.rem.push(t),o[r]=e)),++u}if(t.rem.length&&(t.visit(t.REM,(e=>{const t=n.tupleid(e);l[t]&&(l[t]=-1,a.rem.push(e)),--u})),o=o.filter((e=>-1!==l[n.tupleid(e)]))),(t.rem.length||r)&&o.length<s&&t.source&&(d=u=o.length,t.visit(t.SOURCE,(e=>{l[n.tupleid(e)]||m(e)})),d=-1),r&&o.length>s){const e=o.length-s;for(let t=0;t<e;++t)l[n.tupleid(o[t])]=-1,a.rem.push(o[t]);o=o.slice(e)}return t.mod.length&&t.visit(t.MOD,(e=>{l[n.tupleid(e)]&&a.mod.push(e)})),t.add.length&&t.visit(t.ADD,m),(t.add.length||d<0)&&(a.add=o.filter((e=>!l[n.tupleid(e)]))),this.count=u,this.value=a.source=o,a}}),qe.Definition={type:"Sequence",metadata:{generates:!0,changes:!0},params:[{name:"start",type:"number",required:!0},{name:"stop",type:"number",required:!0},{name:"step",type:"number",default:1},{name:"as",type:"string",default:"data"}]},t.inherits(qe,n.Transform,{transform(e,t){if(this.value&&!e.modified())return;const i=t.materialize().fork(t.MOD),a=e.as||"data";return i.rem=this.value?t.rem.concat(this.value):t.rem,this.value=re(e.start,e.stop,e.step||1).map((e=>{const t={};return t[a]=e,n.ingest(t)})),i.add=t.add.concat(this.value),i}}),t.inherits(we,n.Transform,{transform(e,t){return this.value=t.source,t.changed()?t.fork(t.NO_SOURCE|t.NO_FIELDS):t.StopPropagation}});const Re=["unit0","unit1"];function Se(e){n.Transform.call(this,t.fastmap(),e)}function Ce(e){n.Transform.call(this,null,e)}Me.Definition={type:"TimeUnit",metadata:{modifies:!0},params:[{name:"field",type:"field",required:!0},{name:"interval",type:"boolean",default:!0},{name:"units",type:"enum",values:a.TIME_UNITS,array:!0},{name:"step",type:"number",default:1},{name:"maxbins",type:"number",default:40},{name:"extent",type:"date",array:!0},{name:"timezone",type:"enum",default:"local",values:["local","utc"]},{name:"as",type:"string",array:!0,length:2,default:Re}]},t.inherits(Me,n.Transform,{transform(e,n){const i=e.field,r=!1!==e.interval,s="utc"===e.timezone,l=this._floor(e,n),o=(s?a.utcInterval:a.timeInterval)(l.unit).offset,u=e.as||Re,d=u[0],m=u[1],f=l.step;let c=l.start||1/0,h=l.stop||-1/0,p=n.ADD;return(e.modified()||n.changed(n.REM)||n.modified(t.accessorFields(i)))&&(p=(n=n.reflow(!0)).SOURCE,c=1/0,h=-1/0),n.visit(p,(e=>{const t=i(e);let n,a;null==t?(e[d]=null,r&&(e[m]=null)):(e[d]=n=a=l(t),r&&(e[m]=a=o(n,f)),n<c&&(c=n),a>h&&(h=a))})),l.start=c,l.stop=h,n.modifies(r?u:d)},_floor(e,n){const i="utc"===e.timezone,{units:r,step:s}=e.units?{units:e.units,step:e.step||1}:a.timeBin({extent:e.extent||t.extent(n.materialize(n.SOURCE).source,e.field),maxbins:e.maxbins}),l=a.timeUnits(r),o=this.value||{},u=(i?a.utcFloor:a.timeFloor)(l,s);return u.unit=t.peek(l),u.units=l,u.step=s,u.start=o.start,u.stop=o.stop,this.value=u}}),t.inherits(Se,n.Transform,{transform(e,t){const n=t.dataflow,i=e.field,a=this.value,r=e=>a.set(i(e),e);let s=!0;return e.modified("field")||t.modified(i.fields)?(a.clear(),t.visit(t.SOURCE,r)):t.changed()?(t.visit(t.REM,(e=>a.delete(i(e)))),t.visit(t.ADD,r)):s=!1,this.modified(s),a.empty>n.cleanThreshold&&n.runAfter(a.clean),t.fork()}}),t.inherits(Ce,n.Transform,{transform(e,t){(!this.value||e.modified("field")||e.modified("sort")||t.changed()||e.sort&&t.modified(e.sort.fields))&&(this.value=(e.sort?t.source.slice().sort(n.stableCompare(e.sort)):t.source).map(e.field))}});const Ue={row_number:function(){return{next:e=>e.index+1}},rank:function(){let e;return{init:()=>e=1,next:t=>{const n=t.index,i=t.data;return n&&t.compare(i[n-1],i[n])?e=n+1:e}}},dense_rank:function(){let e;return{init:()=>e=1,next:t=>{const n=t.index,i=t.data;return n&&t.compare(i[n-1],i[n])?++e:e}}},percent_rank:function(){const e=Ue.rank(),t=e.next;return{init:e.init,next:e=>(t(e)-1)/(e.data.length-1)}},cume_dist:function(){let e;return{init:()=>e=0,next:t=>{const n=t.data,i=t.compare;let a=t.index;if(e<a){for(;a+1<n.length&&!i(n[a],n[a+1]);)++a;e=a}return(1+e)/n.length}}},ntile:function(e,n){(n=+n)>0||t.error("ntile num must be greater than zero.");const i=Ue.cume_dist(),a=i.next;return{init:i.init,next:e=>Math.ceil(n*a(e))}},lag:function(e,t){return t=+t||1,{next:n=>{const i=n.index-t;return i>=0?e(n.data[i]):null}}},lead:function(e,t){return t=+t||1,{next:n=>{const i=n.index+t,a=n.data;return i<a.length?e(a[i]):null}}},first_value:function(e){return{next:t=>e(t.data[t.i0])}},last_value:function(e){return{next:t=>e(t.data[t.i1-1])}},nth_value:function(e,n){return(n=+n)>0||t.error("nth_value nth must be greater than zero."),{next:t=>{const i=t.i0+(n-1);return i<t.i1?e(t.data[i]):null}}},prev_value:function(e){let t;return{init:()=>t=null,next:n=>{const i=e(n.data[n.index]);return null!=i?t=i:t}}},next_value:function(e){let t,n;return{init:()=>(t=null,n=-1),next:i=>{const a=i.data;return i.index<=n?t:(n=function(e,t,n){for(let i=t.length;n<i;++n){if(null!=e(t[n]))return n}return-1}(e,a,i.index))<0?(n=a.length,t=null):t=e(a[n])}}}};const Ae=Object.keys(Ue);function Fe(e){const n=t.array(e.ops),i=t.array(e.fields),a=t.array(e.params),r=t.array(e.as),l=this.outputs=[],o=this.windows=[],u={},d={},f=[],c=[];let h=!0;function p(e){t.array(t.accessorFields(e)).forEach((e=>u[e]=1))}p(e.sort),n.forEach(((e,n)=>{const u=i[n],v=t.accessorName(u),g=s(e,v,r[n]);if(p(u),l.push(g),t.hasOwnProperty(Ue,e))o.push(function(e,n,i,a){const r=Ue[e](n,i);return{init:r.init||t.zero,update:function(e,t){t[a]=r.next(e)}}}(e,i[n],a[n],g));else{if(null==u&&"count"!==e&&t.error("Null aggregate field specified."),"count"===e)return void f.push(g);h=!1;let n=d[v];n||(n=d[v]=[],n.field=u,c.push(n)),n.push(m(e,g))}})),(f.length||c.length)&&(this.cell=function(e,t,n){e=e.map((e=>g(e,e.field)));const i={num:0,agg:null,store:!1,count:t};if(!n)for(var a=e.length,r=i.agg=Array(a),s=0;s<a;++s)r[s]=new e[s](i);if(i.store)var l=i.data=new y;return i.add=function(e){if(i.num+=1,!n){l&&l.add(e);for(let t=0;t<a;++t)r[t].add(r[t].get(e),e)}},i.rem=function(e){if(i.num-=1,!n){l&&l.rem(e);for(let t=0;t<a;++t)r[t].rem(r[t].get(e),e)}},i.set=function(e){let a,s;for(l&&l.values(),a=0,s=t.length;a<s;++a)e[t[a]]=i.num;if(!n)for(a=0,s=r.length;a<s;++a)r[a].set(e)},i.init=function(){i.num=0,l&&l.reset();for(let e=0;e<a;++e)r[e].init()},i}(c,f,h)),this.inputs=Object.keys(u)}const ze=Fe.prototype;function Le(e){n.Transform.call(this,{},e),this._mlen=0,this._mods=[]}function Ie(e,n,i,a){const r=a.sort,s=r&&!a.ignorePeers,l=a.frame||[null,0],o=e.data(i),u=o.length,d=s?function(e){let t,n,i;function a(e,i){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:e.length;if(a<r){if(0!==t(i,i))return r;do{const t=a+r>>>1;n(e[t],i)<0?a=t+1:r=t}while(a<r)}return a}return 2!==e.length?(t=X,n=(t,n)=>X(e(t),n),i=(t,n)=>e(t)-n):(t=e===X||e===Y?e:Z,n=e,i=e),{left:a,center:function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;const r=a(e,t,n,(arguments.length>3&&void 0!==arguments[3]?arguments[3]:e.length)-1);return r>n&&i(e[r-1],t)>-i(e[r],t)?r-1:r},right:function(e,i){let a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:e.length;if(a<r){if(0!==t(i,i))return r;do{const t=a+r>>>1;n(e[t],i)<=0?a=t+1:r=t}while(a<r)}return a}}}(r):null,m={i0:0,i1:0,p0:0,p1:0,index:0,data:o,compare:r||t.constant(-1)};n.init();for(let e=0;e<u;++e)Pe(m,l,e,u),s&&je(m,d),n.update(m,o[e])}function Pe(e,t,n,i){e.p0=e.i0,e.p1=e.i1,e.i0=null==t[0]?0:Math.max(0,n-Math.abs(t[0])),e.i1=null==t[1]?i:Math.min(i,n+Math.abs(t[1])+1),e.index=n}function je(e,t){const n=e.i0,i=e.i1-1,a=e.compare,r=e.data,s=r.length-1;n>0&&!a(r[n],r[n-1])&&(e.i0=t.left(r,r[n])),i<s&&!a(r[i],r[i+1])&&(e.i1=t.right(r,r[i]))}ze.init=function(){this.windows.forEach((e=>e.init())),this.cell&&this.cell.init()},ze.update=function(e,t){const n=this.cell,i=this.windows,a=e.data,r=i&&i.length;let s;if(n){for(s=e.p0;s<e.i0;++s)n.rem(a[s]);for(s=e.p1;s<e.i1;++s)n.add(a[s]);n.set(t)}for(s=0;s<r;++s)i[s].update(e,t)},Le.Definition={type:"Window",metadata:{modifies:!0},params:[{name:"sort",type:"compare"},{name:"groupby",type:"field",array:!0},{name:"ops",type:"enum",array:!0,values:Ae.concat(d)},{name:"params",type:"number",null:!0,array:!0},{name:"fields",type:"field",null:!0,array:!0},{name:"as",type:"string",null:!0,array:!0},{name:"frame",type:"number",null:!0,array:!0,length:2,default:[null,0]},{name:"ignorePeers",type:"boolean",default:!1}]},t.inherits(Le,n.Transform,{transform(e,t){this.stamp=t.stamp;const i=e.modified(),a=n.stableCompare(e.sort),s=r(e.groupby),l=e=>this.group(s(e));let o=this.state;o&&!i||(o=this.state=new Fe(e)),i||t.modified(o.inputs)?(this.value={},t.visit(t.SOURCE,(e=>l(e).add(e)))):(t.visit(t.REM,(e=>l(e).remove(e))),t.visit(t.ADD,(e=>l(e).add(e))));for(let t=0,n=this._mlen;t<n;++t)Ie(this._mods[t],o,a,e);return this._mlen=0,this._mods=[],t.reflow(i).modifies(o.outputs)},group(e){let t=this.value[e];return t||(t=this.value[e]=O(n.tupleid),t.stamp=-1),t.stamp<this.stamp&&(t.stamp=this.stamp,this._mods[this._mlen++]=t),t}}),e.aggregate=x,e.bin=b,e.collect=D,e.compare=E,e.countpattern=k,e.cross=T,e.density=C,e.dotbin=L,e.expression=I,e.extent=j,e.facet=B,e.field=K,e.filter=J,e.flatten=Q,e.fold=G,e.formula=H,e.generate=V,e.impute=oe,e.joinaggregate=ue,e.kde=de,e.key=me,e.load=ce,e.lookup=pe,e.multiextent=ve,e.multivalues=ye,e.params=xe,e.pivot=be,e.prefacet=Oe,e.project=De,e.proxy=Ee,e.quantile=Ne,e.relay=ke,e.sample=Te,e.sequence=qe,e.sieve=we,e.subflow=$,e.timeunit=Me,e.tupleindex=Se,e.values=Ce,e.window=Le}));
2//# sourceMappingURL=vega-transforms.min.js.map