!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vega-util"),require("vega-dataflow"),require("vega-statistics"),require("d3-array"),require("vega-time")):"function"==typeof define&&define.amd?define(["exports","vega-util","vega-dataflow","vega-statistics","d3-array","vega-time"],t):t(((e=e||self).vega=e.vega||{},e.vega.transforms={}),e.vega,e.vega,e.vega,e.d3,e.vega)}(this,(function(e,t,n,i,a,r){"use strict";function s(e){return e&&e.length?1===e.length?e[0]:(t=e,function(e){for(var n=t.length,i=1,a=String(t[0](e));i 1 ? this.dev / (this.valid-1) : undefined",req:["mean"],idx:1}),variancep:f({name:"variancep",set:"this.valid > 1 ? this.dev / this.valid : undefined",req:["variance"],idx:2}),stdev:f({name:"stdev",set:"this.valid > 1 ? Math.sqrt(this.dev / (this.valid-1)) : undefined",req:["variance"],idx:2}),stdevp:f({name:"stdevp",set:"this.valid > 1 ? Math.sqrt(this.dev / this.valid) : undefined",req:["variance"],idx:2}),stderr:f({name:"stderr",set:"this.valid > 1 ? Math.sqrt(this.dev / (this.valid * (this.valid-1))) : undefined",req:["variance"],idx:2}),distinct:f({name:"distinct",set:"cell.data.distinct(this.get)",req:["values"],idx:3}),ci0:f({name:"ci0",set:"cell.data.ci0(this.get)",req:["values"],idx:3}),ci1:f({name:"ci1",set:"cell.data.ci1(this.get)",req:["values"],idx:3}),median:f({name:"median",set:"cell.data.q2(this.get)",req:["values"],idx:3}),q1:f({name:"q1",set:"cell.data.q1(this.get)",req:["values"],idx:3}),q3:f({name:"q3",set:"cell.data.q3(this.get)",req:["values"],idx:3}),argmin:f({name:"argmin",init:"this.argmin = undefined;",add:"if (v < this.min) this.argmin = t;",rem:"if (v <= this.min) this.argmin = undefined;",set:"this.argmin || cell.data.argmin(this.get)",req:["min"],str:["values"],idx:3}),argmax:f({name:"argmax",init:"this.argmax = undefined;",add:"if (v > this.max) this.argmax = t;",rem:"if (v >= this.max) this.argmax = undefined;",set:"this.argmax || cell.data.argmax(this.get)",req:["max"],str:["values"],idx:3}),min:f({name:"min",init:"this.min = undefined;",add:"if (v < this.min || this.min === undefined) this.min = v;",rem:"if (v <= this.min) this.min = NaN;",set:"this.min = (Number.isNaN(this.min) ? cell.data.min(this.get) : this.min)",str:["values"],idx:4}),max:f({name:"max",init:"this.max = undefined;",add:"if (v > this.max || this.max === undefined) this.max = v;",rem:"if (v >= this.max) this.max = NaN;",set:"this.max = (Number.isNaN(this.max) ? cell.data.max(this.get) : this.max)",str:["values"],idx:4})},l=Object.keys(o);function d(e,t){return o[e](t)}function f(e){return function(n){var i=t.extend({init:"",add:"",rem:"",idx:0},e);return i.out=n||e.name,i}}function m(e,t){return e.idx-t.idx}function c(e,n){var i=n||t.identity,a=function(e,t){var n,i=e.reduce((function e(n,i){function a(t){n[t]||e(n,n[t]=o[t]())}return i.req&&i.req.forEach(a),t&&i.str&&i.str.forEach(a),n}),e.reduce((function(e,t){return e[t.name]=t,e}),{})),a=[];for(n in i)a.push(i[n]);return a.sort(m)}(e,!0),r="var cell = this.cell; this.valid = 0; this.missing = 0;",s="this.cell = cell; this.init();",u="if(v==null){++this.missing; return;} if(v!==v) return; ++this.valid;",l="if(v==null){--this.missing; return;} if(v!==v) return; --this.valid;",d="var cell = this.cell;";return a.forEach((function(e){r+=e.init,u+=e.add,l+=e.rem})),e.slice().sort(m).forEach((function(e){d+="t["+t.stringValue(e.out)+"]="+e.set+";"})),d+="return t;",(s=Function("cell",s)).prototype.init=Function(r),s.prototype.add=Function("v","t",u),s.prototype.rem=Function("v","t",l),s.prototype.set=Function("t",d),s.prototype.get=i,s.fields=e.map((function(e){return e.out})),s}function h(e){this._key=e?t.field(e):n.tupleid,this.reset()}var p=h.prototype;function v(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}p.reset=function(){this._add=[],this._rem=[],this._ext=null,this._get=null,this._q=null},p.add=function(e){this._add.push(e)},p.rem=function(e){this._rem.push(e)},p.values=function(){if(this._get=null,0===this._rem.length)return this._add;var e,t,n,i=this._add,a=this._rem,r=this._key,s=i.length,u=a.length,o=Array(s-u),l={};for(e=0;e=0;)n=e(i[a])+"",t.hasOwnProperty(r,n)||(r[n]=1,++s);return s},p.extent=function(e){if(this._get!==e||!this._ext){var n=this.values(),i=t.extentIndex(n,e);this._ext=[n[i[0]],n[i[1]]],this._get=e}return this._ext},p.argmin=function(e){return this.extent(e)[0]||{}},p.argmax=function(e){return this.extent(e)[1]||{}},p.min=function(e){var t=this.extent(e)[0];return null!=t?e(t):void 0},p.max=function(e){var t=this.extent(e)[1];return null!=t?e(t):void 0},p.quartile=function(e){return this._get===e&&this._q||(this._q=i.quartiles(this.values(),e),this._get=e),this._q},p.q1=function(e){return this.quartile(e)[0]},p.q2=function(e){return this.quartile(e)[1]},p.q3=function(e){return this.quartile(e)[2]},p.ci=function(e){return this._get===e&&this._ci||(this._ci=i.bootstrapCI(this.values(),1e3,.05,e),this._get=e),this._ci},p.ci0=function(e){return this.ci(e)[0]},p.ci1=function(e){return this.ci(e)[1]},v.Definition={type:"Aggregate",metadata:{generates:!0,changes:!0},params:[{name:"groupby",type:"field",array:!0},{name:"ops",type:"enum",array:!0,values:l},{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"}]};var g=t.inherits(v,n.Transform);g.transform=function(e,t){var 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()),n.changes(i)},g.cross=function(){var e=this,t=e.value,n=e._dnames,i=n.map((function(){return{}})),a=n.length;function r(e){var t,r,s,u;for(t in e)for(s=e[t].tuple,r=0;rl?1/0:(t=Math.max(o,Math.min(+t,l-u)),o+u*Math.floor(1e-14+(t-o)/u))};return d.start=o,d.stop=s.stop,d.step=u,this.value=t.accessor(d,t.accessorFields(r),e.name||"bin_"+t.accessorName(r))},b.Definition={type:"Collect",metadata:{source:!0},params:[{name:"sort",type:"compare"}]},t.inherits(b,n.Transform).transform=function(e,t){var i=t.fork(t.ALL),a=x(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(O,n.Operator),E.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"]}]};var k=t.inherits(E,n.Transform);function q(e){n.Transform.call(this,null,e)}k.transform=function(e,t){function n(t){return function(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)}(u(n),e.case,r)||[],o=0,l=a.length;o{var 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=m}return r};function F(e){n.Transform.call(this,null,e)}function z(e){n.Operator.call(this,null,L,e),this.modified(!0)}function L(e){var n=e.expr;return this.value&&!e.modified("expr")?this.value:t.accessor(t=>n(t,e),t.accessorFields(n),t.accessorName(n))}function I(e){n.Transform.call(this,[void 0,void 0],e)}function P(e,t){n.Operator.call(this,e),this.parent=t}F.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"}]},t.inherits(F,n.Transform).transform=function(e,a){if(this.value&&!e.modified()&&!a.changed())return a;const r=a.materialize(a.SOURCE).source,s=A(a.source,e.groupby,t.identity),u=e.smooth||!1,o=e.field,l=e.step||function(e,n){return t.span(t.extent(e,n))/30}(r,o),d=n.stableCompare((e,t)=>o(e)-o(t)),f=e.as||"bin",m=s.length;let c,h=1/0,p=-1/0,v=0;for(;vp&&(p=t),e[++c][f]=t}return this.value={start:h,stop:p,step:l},a.reflow(!0).modifies(f)},t.inherits(z,n.Operator),I.Definition={type:"Extent",metadata:{},params:[{name:"field",type:"field",required:!0}]},t.inherits(I,n.Transform).transform=function(e,n){var i,a=this.value,r=e.field,s=a[0],u=a[1];if(((i=n.changed()||n.modified(r.fields)||e.modified("field"))||null==s)&&(s=1/0,u=-1/0),n.visit(i?n.SOURCE:n.ADD,(function(e){var t=r(e);null!=t&&((t=+t)u&&(u=t))})),!Number.isFinite(s)||!Number.isFinite(u)){let e=t.accessorName(r);e&&(e=` for field "${e}"`),n.dataflow.warn(`Infinite extent${e}: [${s}, ${u}]`),s=u=void 0}this.value=[s,u]};var j=t.inherits(P,n.Operator);function $(e){n.Transform.call(this,{},e),this._keys=t.fastmap();var i=this._targets=[];i.active=0,i.forEach=function(e){for(var t=0,n=i.active;ti.cleanThreshold&&i.runAfter(u.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=function(e,t){var i=t.dataflow,a=this.value,r=t.fork(),s=r.add,u=r.rem,o=r.mod,l=e.expr,d=!0;function f(t){var i=n.tupleid(t),r=l(t,e),f=a.get(i);r&&f?(a.delete(i),s.push(t)):r||f?d&&r&&!f&&o.push(t):(a.set(i,1),u.push(t))}return t.visit(t.REM,(function(e){var t=n.tupleid(e);a.has(t)?a.delete(t):u.push(e)})),t.visit(t.ADD,(function(t){l(t,e)?s.push(t):a.set(n.tupleid(t),1)})),t.visit(t.MOD,f),e.modified()&&(d=!1,t.visit(t.REFLOW,f)),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=function(e,t){var i=t.fork(t.NO_SOURCE),a=e.fields,r=U(a,e.as||[]),s=e.index||null,u=r.length;return i.rem=this.value,t.visit(t.SOURCE,(function(e){for(var t,o,l,d=a.map(t=>t(e)),f=d.reduce((e,t)=>Math.max(e,t.length),0),m=0;mt[i]=n(t,e))},t.inherits(H,n.Transform).transform=function(e,t){var i,a,r,s=this.value,u=t.fork(t.ALL),o=e.size-s.length,l=e.generator;if(o>0){for(i=[];--o>=0;)i.push(r=n.ingest(l(e))),s.push(r);u.add=u.add.length?u.materialize(u.ADD).add.concat(i):i}else a=s.slice(0,-o),u.rem=u.rem.length?u.materialize(u.REM).rem.concat(a):a,s=s.slice(-o);return u.source=this.value=s,u};var X={value:"value",median:a.median,mean:a.mean,min:a.min,max:a.max},Y=[];function Z(e){n.Transform.call(this,[],e)}function ee(e){v.call(this,e)}Z.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(Z,n.Transform).transform=function(e,i){var a,r,s,u,o,l,d,f,m,c,h=i.fork(i.ALL),p=function(e){var n,i=e.method||X.value;if(null!=X[i])return i===X.value?(n=void 0!==e.value?e.value:0,function(){return n}):X[i];t.error("Unrecognized imputation method: "+i)}(e),v=function(e){var t=e.field;return function(e){return 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,u,o,l,d,f,m=function(e){return e(f)},c=[],h=i?i.slice():[],p={},v={};for(h.forEach((function(e,t){p[e]=t+1})),u=0,d=e.length;ur&&(r=i[1]);return[a,r]}function de(e){n.Operator.call(this,null,fe,e)}function fe(e){return this.value&&!e.modified()?this.value:e.values.reduce((function(e,t){return e.concat(t)}),[])}function me(e){n.Transform.call(this,null,e)}function ce(e){v.call(this,e)}te.transform=function(e,n){var i,a=this,r=e.modified();return a.value&&(r||n.modified(a._inputs,!0))?(i=a.value=r?a.init(e):{},n.visit(n.SOURCE,(function(e){a.add(e)}))):(i=a.value=a.value||this.init(e),n.visit(n.REM,(function(e){a.rem(e)})),n.visit(n.ADD,(function(e){a.add(e)}))),a.changes(),n.visit(n.SOURCE,(function(e){t.extend(e,i[a.cellkey(e)].tuple)})),n.reflow(r).modifies(this._outputs)},te.changes=function(){var e,t,n=this._adds,i=this._mods;for(e=0,t=this._alen;e{const r=i.randomKDE(a,l)[d],s=e.counts?a.length:1,u=c||t.extent(a);i.sampleCurve(r,u,h,p).forEach(e=>{const t={};for(let e=0;e(this._pending=t.array(e.data),e=>e.touch(this)))}}return i.request(e.url,e.format).then(e=>se(this,n,t.array(e.data)))},ue.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(ue,n.Transform).transform=function(e,n){var i,a,r=n,s=e.as,u=e.fields,o=e.index,l=e.values,d=null==e.default?null:e.default,f=e.modified(),m=f?n.SOURCE:n.ADD,c=u.length;return l?(a=l.length,c>1&&!s&&t.error('Multi-field lookup requires explicit "as" parameter.'),s&&s.length!==c*a&&t.error('The "as" parameter has too few output field names.'),s=s||l.map(t.accessorName),i=function(e){for(var t,n,i=0,r=0;it||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?a.slice(0,t):a}(i,e.limit||0,n);n.changed()&&e.set("__pivot__",null,null,!0);return{key:e.key,groupby:e.groupby,ops:u.map((function(){return r})),fields:u.map((function(e){return function(e,n,i,a){return t.accessor((function(t){return n(t)===e?i(t):NaN}),a,e+"")}(e,i,a,s)})),as:u.map((function(e){return e+""})),modified:e.modified.bind(e)}}(e,n),n)},t.inherits(pe,$).transform=function(e,i){var a=this,r=e.subflow,s=e.field;return(e.modified("field")||s&&i.modified(t.accessorFields(s)))&&t.error("PreFacet does not support field modification."),this._targets.active=0,i.visit(i.MOD,(function(e){var t=a.subflow(n.tupleid(e),r,i,e);s?s(e).forEach((function(e){t.mod(e)})):t.mod(e)})),i.visit(i.ADD,(function(e){var t=a.subflow(n.tupleid(e),r,i,e);s?s(e).forEach((function(e){t.add(n.ingest(e))})):t.add(e)})),i.visit(i.REM,(function(e){var t=a.subflow(n.tupleid(e),r,i,e);s?s(e).forEach((function(e){t.rem(e)})):t.rem(e)})),i},ve.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(ve,n.Transform).transform=function(e,t){var i,a,r=e.fields,s=U(e.fields,e.as||[]),u=r?function(e,t){return function(e,t,n,i){for(var a=0,r=n.length;a{const t=i.quantiles(e,m);for(let i=0;i{var t=n.tupleid(e);i.rem.push(a[t]),a[t]=null}),t.visit(t.ADD,e=>{var t=n.derive(e);a[n.tupleid(e)]=t,i.add.push(t)}),t.visit(t.MOD,e=>{var t,r=a[n.tupleid(e)];for(t in e)r[t]=e[t],i.modifies(t);i.mod.push(r)})),i},be.Definition={type:"Sample",metadata:{},params:[{name:"size",type:"number",default:1e3}]},t.inherits(be,n.Transform).transform=function(e,t){var a=t.fork(t.NO_SOURCE),r=e.modified("size"),s=e.size,u=this.value,o=this.count,l=0,d=u.reduce((function(e,t){return e[n.tupleid(t)]=1,e}),{});function f(e){var t,r;u.length=l&&(t=u[r],d[n.tupleid(t)]&&a.rem.push(t),u[r]=e),++o}if(t.rem.length&&(t.visit(t.REM,(function(e){var t=n.tupleid(e);d[t]&&(d[t]=-1,a.rem.push(e)),--o})),u=u.filter((function(e){return-1!==d[n.tupleid(e)]}))),(t.rem.length||r)&&u.lengths){for(var m=0,c=u.length-s;mc&&(c=n))})),u.start=m,u.stop=c,n.modifies(a?l:d)},qe._floor=function(e,n){const i="utc"===e.timezone;let{units:a,step:s}=e.units?{units:e.units,step:e.step||1}:r.timeBin({extent:t.extent(n.materialize(n.SOURCE).source,e.field),maxbins:e.maxbins});a=r.timeUnits(a);const u=this.value||{},o=(i?r.utcFloor:r.timeFloor)(a,s);return o.unit=t.peek(a),o.units=a,o.step=s,o.start=u.start,o.stop=u.stop,this.value=o},t.inherits(we,n.Transform).transform=function(e,t){var n=t.dataflow,i=e.field,a=this.value,r=!0;function s(e){a.set(i(e),e)}return e.modified("field")||t.modified(i.fields)?(a.clear(),t.visit(t.SOURCE,s)):t.changed()?(t.visit(t.REM,(function(e){a.delete(i(e))})),t.visit(t.ADD,s)):r=!1,this.modified(r),a.empty>n.cleanThreshold&&n.runAfter(a.clean),t.fork()},t.inherits(Ne,n.Transform).transform=function(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 Te={row_number:function(){return{next:e=>e.index+1}},rank:function(){let e;return{init:()=>e=1,next:t=>{let 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=>{let n=t.index,i=t.data;return n&&t.compare(i[n-1],i[n])?++e:e}}},percent_rank:function(){let e=Te.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=>{let n=t.index,i=t.data,a=t.compare;if(e0||t.error("ntile num must be greater than zero.");let i=Te.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=>{let i=n.index-t;return i>=0?e(n.data[i]):null}}},lead:function(e,t){return t=+t||1,{next:n=>{let i=n.index+t,a=n.data;return ie(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=>{let i=t.i0+(n-1);return i{let i=e(n.data[n.index]);return null!=i?t=i:t}}},next_value:function(e){let t=null,n=-1;return{next:i=>{let a=i.data;return i.index<=n?t:(n=function(e,t,n){for(let i=t.length;nf[e]=1)}y(e.sort),i.forEach((function(e,n){let i=a[n],f=t.accessorName(i),c=u(e,f,s[n]);if(y(i),o.push(c),t.hasOwnProperty(Te,e))l.push(function(e,n,i,a){let r=Te[e](n,i);return{init:r.init||t.zero,update:function(e,t){t[a]=r.next(e)}}}(e,a[n],r[n],c));else{if(null==i&&"count"!==e&&t.error("Null aggregate field specified."),"count"===e)return void v.push(c);p=!1;let n=m[f];n||(n=m[f]=[],n.field=i,g.push(n)),n.push(d(e,c))}})),(v.length||g.length)&&(n.cell=function(e,t,n){e=e.map(e=>c(e,e.field));let i={num:0,agg:null,store:!1,count:t};if(!n)for(var a=e.length,r=i.agg=Array(a),s=0;se.init()),this.cell&&this.cell.init()},Ce.update=function(e,t){let n,i=this.cell,a=this.windows,r=e.data,s=a&&a.length;if(i){for(n=e.p0;n0&&!a(r[n],r[n-1])&&(e.i0=t.left(r,r[n])),i