Socket
Socket
Sign inDemoInstall

vega-encode

Package Overview
Dependencies
Maintainers
1
Versions
70
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

vega-encode - npm Package Compare versions

Comparing version 3.2.2 to 4.0.0

223

build/vega-encode.js
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-format'), require('d3-array'), require('vega-scale'), require('d3-interpolate'), require('vega-dataflow'), require('vega-util')) :
typeof define === 'function' && define.amd ? define(['exports', 'd3-format', 'd3-array', 'vega-scale', 'd3-interpolate', 'vega-dataflow', 'vega-util'], factory) :
(factory((global.vega = global.vega || {}, global.vega.transforms = {}),global.d3,global.d3,global.vega,global.d3,global.vega,global.vega));
}(this, (function (exports,d3Format,d3Array,vegaScale,d3Interpolate,vegaDataflow,vegaUtil) { 'use strict';
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('vega-scale'), require('vega-util'), require('d3-format'), require('vega-dataflow'), require('d3-array'), require('d3-interpolate')) :
typeof define === 'function' && define.amd ? define(['exports', 'vega-scale', 'vega-util', 'd3-format', 'vega-dataflow', 'd3-array', 'd3-interpolate'], factory) :
(global = global || self, factory((global.vega = global.vega || {}, global.vega.transforms = {}), global.vega, global.vega, global.d3, global.vega, global.d3, global.d3));
}(this, function (exports, vegaScale, vegaUtil, d3Format, vegaDataflow, d3Array, d3Interpolate) { 'use strict';
var Log = 'log';
var Pow = 'pow';
var Utc = 'utc';
var Sqrt = 'sqrt';
var Band = 'band';
var Time = 'time';
var Point = 'point';
var Linear = 'linear';
var Ordinal = 'ordinal';
var Quantile = 'quantile';
var Quantize = 'quantize';
var Threshold = 'threshold';
var BinLinear = 'bin-linear';
var BinOrdinal = 'bin-ordinal';
var Sequential = 'sequential';
/**

@@ -27,7 +11,12 @@ * Determine the tick count or interval function.

* @param {*} count - The desired tick count or interval specifier.
* @param {number} minStep - The desired minimum step between tick values.
* @return {*} - The tick count or interval function.
*/
function tickCount(scale, count) {
function tickCount(scale, count, minStep) {
var step;
if (vegaUtil.isNumber(count) && minStep != null) {
count = Math.min(count, ~~(vegaUtil.span(scale.domain()) / minStep) || 1);
}
if (vegaUtil.isObject(count)) {

@@ -39,5 +28,4 @@ step = count.step;

if (vegaUtil.isString(count)) {
count = scale.type === 'time' ? vegaScale.timeInterval(count)
: scale.type === 'utc' ? vegaScale.utcInterval(count)
: vegaUtil.error('Only time and utc scales accept interval strings.');
count = vegaScale.timeInterval(count, scale.type)
|| vegaUtil.error('Only time and utc scales accept interval strings.');
if (step) count = count.every(step);

@@ -95,6 +83,23 @@ }

function tickValues(scale, count) {
return scale.ticks ? scale.ticks(count) : scale.domain();
return scale.bins ? binValues(scale.bins, count)
: scale.ticks ? scale.ticks(count)
: scale.domain();
}
/**
* Generate tick values for an array of bin values.
* @param {Array<*>} bins - An array of bin boundaries.
* @param {Number} [count] - The approximate number of desired ticks.
* @return {Array<*>} - The generated tick values.
*/
function binValues(bins, count) {
var n = bins.length,
stride = ~~(n / (count || n));
return stride < 2
? bins.slice()
: bins.filter(function(x, i) { return !(i % stride); });
}
/**
* Generate a label format function for a scale. If the scale has a

@@ -118,5 +123,8 @@ * 'tickFormat' method, it will be used to generate the formatter, with the

return (scale.type === Log)
? filter(format, variablePrecision(specifier))
: format;
if (vegaScale.isLogarithmic(scale.type)) {
var logfmt = variablePrecision(specifier);
format = scale.bins ? logfmt : filter(format, logfmt);
}
return format;
}

@@ -203,3 +211,4 @@

scale = _.scale,
count = _.count == null ? (_.values ? _.values.length : 10) : tickCount(scale, _.count),
tally = _.count == null ? (_.values ? _.values.length : 10) : _.count,
count = tickCount(scale, tally, _.minstep),
format = _.format || tickFormat(scale, count, _.formatSpecifier),

@@ -406,11 +415,14 @@ values = _.values ? validTicks(scale, _.values, count) : tickValues(scale, count);

var symbols = {};
symbols[Quantile] = quantileSymbols;
symbols[Quantize] = quantizeSymbols;
symbols[Threshold] = thresholdSymbols;
symbols[BinLinear] = symbols[BinOrdinal] = binSymbols;
const symbols = {
[vegaScale.Quantile]: quantileSymbols,
[vegaScale.Quantize]: quantizeSymbols,
[vegaScale.Threshold]: thresholdSymbols,
[vegaScale.BinOrdinal]: binSymbols
};
function labelValues(scale, count) {
var values = symbols[scale.type];
return values ? values(scale) : tickValues(scale, count);
return values ? values(scale)
: scale.bins ? binValues$1(scale.bins.slice())
: tickValues(scale, count);
}

@@ -448,10 +460,16 @@

function binSymbols(scale) {
var values = scale.domain();
values.max = values.pop();
return binValues$1(scale.domain());
}
return values;
function binValues$1(bins) {
bins.max = bins.pop();
return bins;
}
function isDiscreteRange(scale) {
return symbols[scale.type] || scale.bins;
}
function labelFormat(scale, format, type) {
return type === Symbols && symbols[scale.type] ? formatRange(format)
return type === Symbols && isDiscreteRange(scale) ? formatRange(format)
: type === Discrete ? formatDiscrete(format)

@@ -493,3 +511,3 @@ : formatPoint(format);

if (scale.type === Threshold) {
if (scale.type === vegaScale.Threshold) {
var adjust = count ? span / count : 0.1;

@@ -537,3 +555,3 @@ lo -= adjust;

scale = _.scale,
count = _.count == null ? 5 : tickCount(scale, _.count),
count = tickCount(scale, _.count == null ? 5 : _.count, _.minstep),
format = _.format || tickFormat(scale, count, _.formatSpecifier),

@@ -844,9 +862,17 @@ values = _.values || labelValues(scale, count, type),

var INCLUDE_ZERO = vegaUtil.toSet([Linear, Pow, Sqrt]);
function includeZero(scale) {
const type = scale.type;
return !scale.bins && (
type === vegaScale.Linear || type === vegaScale.Pow || type === vegaScale.Sqrt
);
}
var INCLUDE_PAD = vegaUtil.toSet([Linear, Log, Pow, Sqrt, Time, Utc]);
function includePad(type) {
return vegaScale.isContinuous(type) && type !== vegaScale.Sequential;
}
var SKIP = vegaUtil.toSet([
'set', 'modified', 'clear', 'type', 'scheme', 'schemeExtent', 'schemeCount',
'domain', 'domainMin', 'domainMid', 'domainMax', 'domainRaw', 'domainImplicit', 'nice', 'zero',
'domain', 'domainMin', 'domainMid', 'domainMax',
'domainRaw', 'domainImplicit', 'nice', 'zero', 'bins',
'range', 'rangeStep', 'round', 'reverse', 'interpolate', 'interpolateGamma'

@@ -870,15 +896,15 @@ ]);

scale = this.value,
prop;
key = scaleKey(_);
if (!scale || _.modified('type')) {
this.value = scale = vegaScale.scale((_.type || Linear).toLowerCase())();
if (!scale || key !== scale.type) {
this.value = scale = vegaScale.scale(key)();
}
for (prop in _) if (!SKIP[prop]) {
for (key in _) if (!SKIP[key]) {
// padding is a scale property for band/point but not others
if (prop === 'padding' && INCLUDE_PAD[scale.type]) continue;
if (key === 'padding' && includePad(scale.type)) continue;
// invoke scale property setter, raise warning if not found
vegaUtil.isFunction(scale[prop])
? scale[prop](_[prop])
: df.warn('Unsupported scale property: ' + prop);
vegaUtil.isFunction(scale[key])
? scale[key](_[key])
: df.warn('Unsupported scale property: ' + key);
}

@@ -888,5 +914,36 @@

if (_.bins) {
scale.bins = _.bins;
} else if (scale.bins) {
delete scale.bins;
}
return pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);
};
function scaleKey(_) {
var t = _.type, d = '', n;
// backwards compatibility pre Vega 5.
if (t === vegaScale.Sequential) return vegaScale.Sequential + '-' + vegaScale.Linear;
if (isContinuousColor(_)) {
n = _.rawDomain ? _.rawDomain.length
: _.domain ? _.domain.length + +(_.domainMid != null)
: 0;
d = n === 2 ? vegaScale.Sequential + '-'
: n === 3 ? vegaScale.Diverging + '-'
: '';
}
return ((d + t) || vegaScale.Linear).toLowerCase();
}
function isContinuousColor(_) {
const t = _.type;
return vegaScale.isContinuous(t) && t !== vegaScale.Time && t !== vegaScale.UTC && (
_.scheme || _.range && _.range.length && _.range.every(vegaUtil.isString)
);
}
function configureDomain(scale, _, df) {

@@ -899,3 +956,3 @@ // check raw domain, if provided use that and exit early

type = scale.type,
zero = _.zero || (_.zero === undefined && INCLUDE_ZERO[type]),
zero = _.zero || (_.zero === undefined && includeZero(scale)),
n, mid;

@@ -906,4 +963,4 @@

// adjust continuous domain for minimum pixel padding
if (INCLUDE_PAD[type] && _.padding && domain[0] !== vegaUtil.peek(domain)) {
domain = padDomain(type, domain, _.range, _.padding, _.exponent);
if (includePad(type) && _.padding && domain[0] !== vegaUtil.peek(domain)) {
domain = padDomain(type, domain, _.range, _.padding, _.exponent, _.constant);
}

@@ -935,3 +992,3 @@

// domain construction as side-effect of scale lookup
if (type === Ordinal) {
if (type === vegaScale.Ordinal) {
scale.unknown(_.domainImplicit ? vegaScale.scaleImplicit : undefined);

@@ -958,8 +1015,9 @@ }

function padDomain(type, domain, range, pad, exponent) {
function padDomain(type, domain, range, pad, exponent, constant) {
var span = Math.abs(vegaUtil.peek(range) - range[0]),
frac = span / (span - 2 * pad),
d = type === Log ? vegaUtil.zoomLog(domain, null, frac)
: type === Sqrt ? vegaUtil.zoomPow(domain, null, frac, 0.5)
: type === Pow ? vegaUtil.zoomPow(domain, null, frac, exponent)
d = type === vegaScale.Log ? vegaUtil.zoomLog(domain, null, frac)
: type === vegaScale.Sqrt ? vegaUtil.zoomPow(domain, null, frac, 0.5)
: type === vegaScale.Pow ? vegaUtil.zoomPow(domain, null, frac, exponent || 1)
: type === vegaScale.Symlog ? vegaUtil.zoomSymlog(domain, null, frac, constant || 1)
: vegaUtil.zoomLinear(domain, null, frac);

@@ -974,3 +1032,3 @@

function domainCheck(type, domain, df) {
if (type === Log) {
if (vegaScale.isLogarithmic(type)) {
// sum signs of domain values

@@ -1004,5 +1062,5 @@ // if all pos or all neg, abs(sum) === domain.length

// given a range array for a sequential scale, convert to interpolator
else if (range && scale.type === Sequential) {
return scale.interpolator(d3Interpolate.interpolateRgbBasis(flip(range, _.reverse)));
// given a range array for an interpolating scale, convert to interpolator
else if (range && vegaScale.isInterpolating(scale.type)) {
return scale.interpolator(interpolateColors(_, flip(range, _.reverse)));
}

@@ -1023,3 +1081,3 @@

function configureRangeStep(type, _, count) {
if (type !== Band && type !== Point) {
if (type !== vegaScale.Band && type !== vegaScale.Point) {
vegaUtil.error('Only band and point scales support rangeStep.');

@@ -1030,3 +1088,3 @@ }

var outer = (_.paddingOuter != null ? _.paddingOuter : _.padding) || 0,
inner = type === Point ? 1
inner = type === vegaScale.Point ? 1
: ((_.paddingInner != null ? _.paddingInner : _.padding) || 0);

@@ -1037,24 +1095,33 @@ return [0, _.rangeStep * vegaScale.bandSpace(count, inner, outer)];

function configureScheme(type, _, count) {
var name = _.scheme.toLowerCase(),
scheme = vegaScale.scheme(name),
extent = _.schemeExtent,
discrete;
var extent = _.schemeExtent,
name, scheme, discrete;
if (!scheme) {
vegaUtil.error('Unrecognized scheme name: ' + _.scheme);
if (vegaUtil.isArray(_.scheme)) {
scheme = interpolateColors(_, _.scheme);
} else {
name = _.scheme.toLowerCase();
scheme = vegaScale.scheme(name);
if (!scheme) vegaUtil.error('Unrecognized scheme name: ' + _.scheme);
}
// determine size for potential discrete range
count = (type === Threshold) ? count + 1
: (type === BinOrdinal) ? count - 1
: (type === Quantile || type === Quantize) ? (+_.schemeCount || DEFAULT_COUNT)
count = (type === vegaScale.Threshold) ? count + 1
: (type === vegaScale.BinOrdinal) ? count - 1
: (type === vegaScale.Quantile || type === vegaScale.Quantize) ? (+_.schemeCount || DEFAULT_COUNT)
: count;
// adjust and/or quantize scheme as appropriate
return type === Sequential ? adjustScheme(scheme, extent, _.reverse)
return vegaScale.isInterpolating(type) ? adjustScheme(scheme, extent, _.reverse)
: !extent && (discrete = vegaScale.scheme(name + '-' + count)) ? discrete
: vegaUtil.isFunction(scheme) ? quantize(adjustScheme(scheme, extent), count)
: type === Ordinal ? scheme : scheme.slice(0, count);
: type === vegaScale.Ordinal ? scheme : scheme.slice(0, count);
}
function interpolateColors(_, colors) {
return d3Interpolate.piecewise(
vegaScale.interpolate(_.interpolate || 'rgb', _.interpolateGamma),
colors
);
}
function adjustScheme(scheme, extent, reverse) {

@@ -1248,2 +1315,2 @@ return (vegaUtil.isFunction(scheme) && (extent || reverse))

})));
}));

@@ -1,1 +0,1 @@

!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("d3-format"),require("d3-array"),require("vega-scale"),require("d3-interpolate"),require("vega-dataflow"),require("vega-util")):"function"==typeof define&&define.amd?define(["exports","d3-format","d3-array","vega-scale","d3-interpolate","vega-dataflow","vega-util"],n):n((e.vega=e.vega||{},e.vega.transforms={}),e.d3,e.d3,e.vega,e.d3,e.vega,e.vega)}(this,function(e,u,v,x,i,g,k){"use strict";var b="log",S="pow",O="sqrt",o="band",l="point",s="linear",A="ordinal",f="quantile",c="quantize",y="threshold",d="bin-ordinal",m="sequential";function D(e,n){var t;return k.isObject(n)&&(t=n.step,n=n.interval),k.isString(n)&&(n="time"===e.type?x.timeInterval(n):"utc"===e.type?x.utcInterval(n):k.error("Only time and utc scales accept interval strings."),t&&(n=n.every(t))),n}function p(n,e,t){var r=n.range(),a=r[0],i=k.peek(r);if(i<a&&(r=i,i=a,a=r),e=e.filter(function(e){return!((e=n(e))<a||i<e)}),0<t&&1<e.length){for(var o=[e[0],k.peek(e)];e.length>t&&3<=e.length;)e=e.filter(function(e,n){return!(n%2)});e.length<3&&(e=o)}return e}function M(e,n){return e.ticks?e.ticks(n):e.domain()}function w(e,n,t){var r,a,i=e.tickFormat?e.tickFormat(n,t):t?u.format(t):String;return e.type===b?(r=i,a=function(e){var n=u.formatSpecifier(e||",");{if(null!=n.precision)return u.format(n);switch(n.precision=12,n.type){case"%":n.precision-=2;break;case"e":n.precision-=1}return i=u.format(n),o=u.format(".1f")(1)[1],function(e){var n,t,r=i(e),a=r.indexOf(o);if(a<0)return r;for(n=function(e,n){var t,r=e.lastIndexOf("e");if(0<r)return r;for(r=e.length;--r>n;)if(48<=(t=e.charCodeAt(r))&&t<=57)return r+1}(r,a),t=n<r.length?r.slice(n):"";--n>a;)if("0"!==r[n]){++n;break}return r.slice(0,n)+t}}var i,o}(t),function(e){return r(e)?a(e):""}):i}function n(e){g.Transform.call(this,null,e)}function t(e){g.Transform.call(this,null,e)}function h(){return g.ingest({})}function T(e){return e.exit}function r(e){g.Transform.call(this,null,e)}k.inherits(n,g.Transform).transform=function(e,n){if(this.value&&!e.modified())return n.StopPropagation;var t=n.fork(n.NO_SOURCE|n.NO_FIELDS),r=this.value,a=e.scale,i=null==e.count?e.values?e.values.length:10:D(a,e.count),o=e.format||w(a,i,e.formatSpecifier),u=e.values?p(a,e.values,i):M(a,i);return r&&(t.rem=r),r=u.map(function(e,n){return g.ingest({index:n/(u.length-1),value:e,label:o(e)})}),e.extra&&r.length&&r.push(g.ingest({index:-1,extra:{value:r[0].value},label:""})),t.source=r,t.add=r,this.value=r,t},k.inherits(t,g.Transform).transform=function(e,n){var t=n.dataflow,r=n.fork(n.NO_SOURCE|n.NO_FIELDS),a=e.item||h,i=e.key||g.tupleid,o=this.value;return k.isArray(r.encode)&&(r.encode=null),o&&(e.modified("key")||n.modified(i))&&k.error("DataJoin does not support modified key function or fields."),o||(n=n.addAll(),this.value=o=k.fastmap().test(T),o.lookup=function(e){return o.get(i(e))}),n.visit(n.ADD,function(e){var n=i(e),t=o.get(n);t?t.exit?(o.empty--,r.add.push(t)):r.mod.push(t):(o.set(n,t=a(e)),r.add.push(t)),t.datum=e,t.exit=!1}),n.visit(n.MOD,function(e){var n=i(e),t=o.get(n);t&&(t.datum=e,r.mod.push(t))}),n.visit(n.REM,function(e){var n=i(e),t=o.get(n);e!==t.datum||t.exit||(r.rem.push(t),t.exit=!0,++o.empty)}),n.changed(n.ADD_MOD)&&r.modifies("datum"),e.clean&&o.empty>t.cleanThreshold&&t.runAfter(o.clean),r},k.inherits(r,g.Transform).transform=function(t,e){var r=e.fork(e.ADD_REM),n=t.encoders,a=e.encode;if(k.isArray(a)){if(!r.changed()&&!a.every(function(e){return n[e]}))return e.StopPropagation;a=a[0],r.encode=null}var i="enter"===a,o=n.update||k.falsy,u=n.enter||k.falsy,l=n.exit||k.falsy,s=(a&&!i?n[a]:o)||k.falsy;if(e.changed(e.ADD)&&(e.visit(e.ADD,function(e){u(e,t),o(e,t),s!==k.falsy&&s!==o&&s(e,t)}),r.modifies(u.output),r.modifies(o.output),s!==k.falsy&&s!==o&&r.modifies(s.output)),e.changed(e.REM)&&l!==k.falsy&&(e.visit(e.REM,function(e){l(e,t)}),r.modifies(l.output)),i||s!==k.falsy){var f=e.MOD|(t.modified()?e.REFLOW:0);i?(e.visit(f,function(e){var n=u(e,t);(s(e,t)||n)&&r.mod.push(e)}),r.mod.length&&r.modifies(u.output)):e.visit(f,function(e){s(e,t)&&r.mod.push(e)}),r.mod.length&&r.modifies(s.output)}return r.changed()?r:e.StopPropagation};var z="symbol",E={};function F(e,n,t){return t===z&&E[e.type]?(o=n,function(e,n,t){var r=t[n+1]||t.max||1/0,a=R(e,o),i=R(r,o);return a&&i?a+"–"+i:i?"< "+i:"≥ "+a}):"discrete"===t?(a=n,function(e,n){return n?a(e):null}):(r=n,function(e){return r(e)});var r,a,o}function R(e,n){return isFinite(e)?n(e):null}function a(e){g.Transform.call(this,[],e)}E[f]=function(e){var n=[-1/0].concat(e.quantiles());return n.max=1/0,n},E[c]=function(e){var n=e.domain(),t=n[0],r=k.peek(n),a=e.range().length,i=new Array(a),o=0;i[0]=-1/0;for(;++o<a;)i[o]=(o*r-(o-a)*t)/a;return i.max=1/0,i},E[y]=function(e){var n=[-1/0].concat(e.domain());return n.max=1/0,n},E["bin-linear"]=E[d]=function(e){var n=e.domain();return n.max=n.pop(),n},k.inherits(a,g.Transform).transform=function(t,e){if(null!=this.value&&!t.modified())return e.StopPropagation;var n,r,a,i,o,u,l,s=e.fork(e.NO_SOURCE|e.NO_FIELDS),f=this.value,c=t.type||z,d=t.scale,m=null==t.count?5:D(d,t.count),p=t.format||w(d,m,t.formatSpecifier),h=t.values||(u=m,(l=E[(o=d).type])?l(o):M(o,u));return p=F(d,p,c),f&&(s.rem=f),f=c===z?(k.isFunction(a=t.size)?(t.values||0!==d(h[0])||(h=h.slice(1)),i=h.reduce(function(e,n){return Math.max(e,a(n,t))},0)):a=k.constant(i=a||8),h.map(function(e,n){return g.ingest({index:n,label:p(e,n,h),value:e,offset:i,size:a(e,t)})})):"gradient"===c?(n=d.domain(),r=x.scaleFraction(d,n[0],k.peek(n)),h.length<3&&!t.values&&n[0]!==k.peek(n)&&(h=[n[0],k.peek(n)]),h.map(function(e,n){return g.ingest({index:n,label:p(e,n,h),value:e,perc:r(e)})})):(a=h.length-1,r=function(e){var n=e.domain(),t=n.length-1,r=+n[0],a=+k.peek(n),i=a-r;if(e.type===y){var o=t?i/t:.1;i=(a+=o)-(r-=o)}return function(e){return(e-r)/i}}(d),h.map(function(e,n){return g.ingest({index:n,label:p(e,n,h),value:e,perc:n?r(e):0,perc2:n===a?1:r(h[n+1])})})),s.source=f,s.add=f,this.value=f,s};var I=k.fastmap({line:N,"line-radial":function(e,n,t,r){return N(n*Math.cos(e),n*Math.sin(e),r*Math.cos(t),r*Math.sin(t))},arc:U,"arc-radial":function(e,n,t,r){return U(n*Math.cos(e),n*Math.sin(e),r*Math.cos(t),r*Math.sin(t))},curve:j,"curve-radial":function(e,n,t,r){return j(n*Math.cos(e),n*Math.sin(e),r*Math.cos(t),r*Math.sin(t))},"orthogonal-horizontal":function(e,n,t,r){return"M"+e+","+n+"V"+r+"H"+t},"orthogonal-vertical":function(e,n,t,r){return"M"+e+","+n+"H"+t+"V"+r},"orthogonal-radial":function(e,n,t,r){var a=Math.cos(e),i=Math.sin(e),o=Math.cos(t),u=Math.sin(t),l=Math.abs(t-e)>Math.PI?t<=e:e<t;return"M"+n*a+","+n*i+"A"+n+","+n+" 0 0,"+(l?1:0)+" "+n*o+","+n*u+"L"+r*o+","+r*u},"diagonal-horizontal":function(e,n,t,r){var a=(e+t)/2;return"M"+e+","+n+"C"+a+","+n+" "+a+","+r+" "+t+","+r},"diagonal-vertical":function(e,n,t,r){var a=(n+r)/2;return"M"+e+","+n+"C"+e+","+a+" "+t+","+a+" "+t+","+r},"diagonal-radial":function(e,n,t,r){var a=Math.cos(e),i=Math.sin(e),o=Math.cos(t),u=Math.sin(t),l=(n+r)/2;return"M"+n*a+","+n*i+"C"+l*a+","+l*i+" "+l*o+","+l*u+" "+r*o+","+r*u}});function C(e){return e.source.x}function L(e){return e.source.y}function q(e){return e.target.x}function P(e){return e.target.y}function _(e){g.Transform.call(this,{},e)}function N(e,n,t,r){return"M"+e+","+n+"L"+t+","+r}function U(e,n,t,r){var a=t-e,i=r-n,o=Math.sqrt(a*a+i*i)/2;return"M"+e+","+n+"A"+o+","+o+" "+180*Math.atan2(i,a)/Math.PI+" 0 1 "+t+","+r}function j(e,n,t,r){var a=t-e,i=r-n,o=.2*(a+i),u=.2*(i-a);return"M"+e+","+n+"C"+(e+o)+","+(n+u)+" "+(t+u)+","+(r-o)+" "+t+","+r}function X(e){g.Transform.call(this,null,e)}_.Definition={type:"LinkPath",metadata:{modifies:!0},params:[{name:"sourceX",type:"field",default:"source.x"},{name:"sourceY",type:"field",default:"source.y"},{name:"targetX",type:"field",default:"target.x"},{name:"targetY",type:"field",default:"target.y"},{name:"orient",type:"enum",default:"vertical",values:["horizontal","vertical","radial"]},{name:"shape",type:"enum",default:"line",values:["line","arc","curve","diagonal","orthogonal"]},{name:"require",type:"signal"},{name:"as",type:"string",default:"path"}]},k.inherits(_,g.Transform).transform=function(e,n){var t=e.sourceX||C,r=e.sourceY||L,a=e.targetX||q,i=e.targetY||P,o=e.as||"path",u=e.orient||"vertical",l=e.shape||"line",s=I.get(l+"-"+u)||I.get(l);return s||k.error("LinkPath unsupported type: "+e.shape+(e.orient?"-"+e.orient:"")),n.visit(n.SOURCE,function(e){e[o]=s(t(e),r(e),a(e),i(e))}),n.reflow(e.modified()).modifies(o)},X.Definition={type:"Pie",metadata:{modifies:!0},params:[{name:"field",type:"field"},{name:"startAngle",type:"number",default:0},{name:"endAngle",type:"number",default:6.283185307179586},{name:"sort",type:"boolean",default:!1},{name:"as",type:"string",array:!0,length:2,default:["startAngle","endAngle"]}]},k.inherits(X,g.Transform).transform=function(e,n){var t,r,a,i=e.as||["startAngle","endAngle"],o=i[0],u=i[1],l=e.field||k.one,s=e.startAngle||0,f=null!=e.endAngle?e.endAngle:2*Math.PI,c=n.source,d=c.map(l),m=d.length,p=s,h=(f-s)/v.sum(d),g=v.range(m);for(e.sort&&g.sort(function(e,n){return d[e]-d[n]}),t=0;t<m;++t)a=d[g[t]],(r=c[g[t]])[o]=p,r[u]=p+=a*h;return this.value=d,n.reflow(e.modified()).modifies(i)};var Y=5,V=k.toSet([s,S,O]),G=k.toSet([s,b,S,O,"time","utc"]),H=k.toSet(["set","modified","clear","type","scheme","schemeExtent","schemeCount","domain","domainMin","domainMid","domainMax","domainRaw","domainImplicit","nice","zero","range","rangeStep","round","reverse","interpolate","interpolateGamma"]);function B(e){g.Transform.call(this,null,e),this.modified(!0)}function J(e,n,t){e===b&&(Math.abs(n.reduce(function(e,n){return e+(n<0?-1:0<n?1:0)},0))!==n.length&&t.warn("Log scale domain includes zero: "+k.stringValue(n)));return n}function W(e,n,t){return k.isFunction(e)&&(n||t)?x.interpolateRange(e,K(n||[0,1],t)):e}function K(e,n){return n?e.slice().reverse():e}function Q(e){g.Transform.call(this,null,e)}k.inherits(B,g.Transform).transform=function(e,n){var t,r=n.dataflow,a=this.value;for(t in a&&!e.modified("type")||(this.value=a=x.scale((e.type||s).toLowerCase())()),e)if(!H[t]){if("padding"===t&&G[a.type])continue;k.isFunction(a[t])?a[t](e[t]):r.warn("Unsupported scale property: "+t)}return function(e,n,t){var r=n.round||!1,a=n.range;if(null!=n.rangeStep)a=function(e,n,t){e!==o&&e!==l&&k.error("Only band and point scales support rangeStep.");var r=(null!=n.paddingOuter?n.paddingOuter:n.padding)||0,a=e===l?1:(null!=n.paddingInner?n.paddingInner:n.padding)||0;return[0,n.rangeStep*x.bandSpace(t,a,r)]}(e.type,n,t);else if(n.scheme){if(a=function(e,n,t){var r,a=n.scheme.toLowerCase(),i=x.scheme(a),o=n.schemeExtent;i||k.error("Unrecognized scheme name: "+n.scheme);return t=e===y?t+1:e===d?t-1:e===f||e===c?+n.schemeCount||Y:t,e===m?W(i,o,n.reverse):!o&&(r=x.scheme(a+"-"+t))?r:k.isFunction(i)?function(e,n){for(var t=new Array(n),r=n+1,a=0;a<n;)t[a]=e(++a/r);return t}(W(i,o),t):e===A?i:i.slice(0,t)}(e.type,n,t),k.isFunction(a))return e.interpolator(a)}else if(a&&e.type===m)return e.interpolator(i.interpolateRgbBasis(K(a,n.reverse)));a&&n.interpolate&&e.interpolate?e.interpolate(x.interpolate(n.interpolate,n.interpolateGamma)):k.isFunction(e.round)?e.round(r):k.isFunction(e.rangeRound)&&e.interpolate(r?i.interpolateRound:i.interpolate);a&&e.range(K(a,n.reverse))}(a,e,function(e,n,t){var r=(a=e,i=n.domainRaw,o=t,i?(a.domain(J(a.type,i,o)),i.length):-1);var a,i,o;if(-1<r)return r;var u,l,s=n.domain,f=e.type,c=n.zero||void 0===n.zero&&V[f];if(!s)return 0;G[f]&&n.padding&&s[0]!==k.peek(s)&&(d=f,m=s,p=n.range,h=n.padding,g=n.exponent,v=Math.abs(k.peek(p)-p[0]),y=v/(v-2*h),M=d===b?k.zoomLog(m,null,y):d===O?k.zoomPow(m,null,y,.5):d===S?k.zoomPow(m,null,y,g):k.zoomLinear(m,null,y),(m=m.slice())[0]=M[0],m[m.length-1]=M[1],s=m);var d,m,p,h,g,v,y,M;(c||null!=n.domainMin||null!=n.domainMax||null!=n.domainMid)&&(u=(s=s.slice()).length-1||1,c&&(0<s[0]&&(s[0]=0),s[u]<0&&(s[u]=0)),null!=n.domainMin&&(s[0]=n.domainMin),null!=n.domainMax&&(s[u]=n.domainMax),null!=n.domainMid&&(((l=n.domainMid)<s[0]||l>s[u])&&t.warn("Scale domainMid exceeds domain min or max.",l),s.splice(u,0,l)));e.domain(J(f,s,t)),f===A&&e.unknown(n.domainImplicit?x.scaleImplicit:void 0);n.nice&&e.nice&&e.nice(!0!==n.nice&&D(e,n.nice)||null);return s.length}(a,e,r)),n.fork(n.NO_SOURCE|n.NO_FIELDS)},k.inherits(Q,g.Transform).transform=function(e,n){var t=e.modified("sort")||n.changed(n.ADD)||n.modified(e.sort.fields)||n.modified("datum");return t&&n.source.sort(e.sort),this.modified(t),n};var Z="normalize",$=["y0","y1"];function ee(e){g.Transform.call(this,null,e)}function ne(e,n,t,r,a){for(var i,o=(n-e.sum)/2,u=e.length,l=0;l<u;++l)(i=e[l])[r]=o,i[a]=o+=Math.abs(t(i))}function te(e,n,t,r,a){for(var i,o=1/e.sum,u=0,l=e.length,s=0,f=0;s<l;++s)(i=e[s])[r]=u,i[a]=u=o*(f+=Math.abs(t(i)))}function re(e,n,t,r,a){for(var i,o,u=0,l=0,s=e.length,f=0;f<s;++f)i=t(o=e[f]),o[a]=i<0?(o[r]=l,l+=i):(o[r]=u,u+=i)}ee.Definition={type:"Stack",metadata:{modifies:!0},params:[{name:"field",type:"field"},{name:"groupby",type:"field",array:!0},{name:"sort",type:"compare"},{name:"offset",type:"enum",default:"zero",values:["zero","center",Z]},{name:"as",type:"string",array:!0,length:2,default:$}]},k.inherits(ee,g.Transform).transform=function(e,n){var t,r,a,i,o=e.as||$,u=o[0],l=o[1],s=e.field||k.one,f="center"===e.offset?ne:e.offset===Z?te:re;for(r=0,a=(t=function(e,n,t,r){var a,i,o,u,l,s,f,c,d,m=[],p=function(e){return e(l)};if(null==n)m.push(e.slice());else for(a={},i=0,o=e.length;i<o;++i)l=e[i],s=n.map(p),(f=a[s])||(a[s]=f=[],m.push(f)),f.push(l);for(d=s=0,u=m.length;s<u;++s){for(f=m[s],c=i=0,o=f.length;i<o;++i)c+=Math.abs(r(f[i]));f.sum=c,d<c&&(d=c),t&&f.sort(t)}return m.max=d,m}(n.source,e.groupby,e.sort,s)).length,i=t.max;r<a;++r)f(t[r],i,s,u,l);return n.reflow(e.modified()).modifies(o)},e.axisticks=n,e.datajoin=t,e.encode=r,e.legendentries=a,e.linkpath=_,e.pie=X,e.scale=B,e.sortitems=Q,e.stack=ee,e.validTicks=p,Object.defineProperty(e,"__esModule",{value:!0})});
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("vega-scale"),require("vega-util"),require("d3-format"),require("vega-dataflow"),require("d3-array"),require("d3-interpolate")):"function"==typeof define&&define.amd?define(["exports","vega-scale","vega-util","d3-format","vega-dataflow","d3-array","d3-interpolate"],n):n(((e=e||self).vega=e.vega||{},e.vega.transforms={}),e.vega,e.vega,e.d3,e.vega,e.d3,e.d3)}(this,function(e,n,t,r,i,a,o){"use strict";function u(e,r,i){var a;return t.isNumber(r)&&null!=i&&(r=Math.min(r,~~(t.span(e.domain())/i)||1)),t.isObject(r)&&(a=r.step,r=r.interval),t.isString(r)&&(r=n.timeInterval(r,e.type)||t.error("Only time and utc scales accept interval strings."),a&&(r=r.every(a))),r}function s(e,n,r){var i=e.range(),a=i[0],o=t.peek(i);if(a>o&&(i=o,o=a,a=i),n=n.filter(function(n){return!((n=e(n))<a||n>o)}),r>0&&n.length>1){for(var u=[n[0],t.peek(n)];n.length>r&&n.length>=3;)n=n.filter(function(e,n){return!(n%2)});n.length<3&&(n=u)}return n}function l(e,n){return e.bins?function(e,n){var t=e.length,r=~~(t/(n||t));return r<2?e.slice():e.filter(function(e,n){return!(n%r)})}(e.bins,n):e.ticks?e.ticks(n):e.domain()}function f(e,t,i){var a,o,u=e.tickFormat?e.tickFormat(t,i):i?r.format(i):String;if(n.isLogarithmic(e.type)){var s=function(e){var n=r.formatSpecifier(e||",");if(null==n.precision){switch(n.precision=12,n.type){case"%":n.precision-=2;break;case"e":n.precision-=1}return t=r.format(n),i=r.format(".1f")(1)[1],function(e){var n,r,a=t(e),o=a.indexOf(i);if(o<0)return a;for(n=function(e,n){var t,r=e.lastIndexOf("e");if(r>0)return r;for(r=e.length;--r>n;)if((t=e.charCodeAt(r))>=48&&t<=57)return r+1}(a,o),r=n<a.length?a.slice(n):"";--n>o;)if("0"!==a[n]){++n;break}return a.slice(0,n)+r}}return r.format(n);var t,i}(i);u=e.bins?s:(a=u,o=s,function(e){return a(e)?o(e):""})}return u}function c(e){i.Transform.call(this,null,e)}function d(e){i.Transform.call(this,null,e)}function m(){return i.ingest({})}function p(e){return e.exit}function h(e){i.Transform.call(this,null,e)}t.inherits(c,i.Transform).transform=function(e,n){if(this.value&&!e.modified())return n.StopPropagation;var t=n.fork(n.NO_SOURCE|n.NO_FIELDS),r=this.value,a=e.scale,o=u(a,null==e.count?e.values?e.values.length:10:e.count,e.minstep),c=e.format||f(a,o,e.formatSpecifier),d=e.values?s(a,e.values,o):l(a,o);return r&&(t.rem=r),r=d.map(function(e,n){return i.ingest({index:n/(d.length-1),value:e,label:c(e)})}),e.extra&&r.length&&r.push(i.ingest({index:-1,extra:{value:r[0].value},label:""})),t.source=r,t.add=r,this.value=r,t},t.inherits(d,i.Transform).transform=function(e,n){var r=n.dataflow,a=n.fork(n.NO_SOURCE|n.NO_FIELDS),o=e.item||m,u=e.key||i.tupleid,s=this.value;return t.isArray(a.encode)&&(a.encode=null),s&&(e.modified("key")||n.modified(u))&&t.error("DataJoin does not support modified key function or fields."),s||(n=n.addAll(),this.value=s=t.fastmap().test(p),s.lookup=function(e){return s.get(u(e))}),n.visit(n.ADD,function(e){var n=u(e),t=s.get(n);t?t.exit?(s.empty--,a.add.push(t)):a.mod.push(t):(s.set(n,t=o(e)),a.add.push(t)),t.datum=e,t.exit=!1}),n.visit(n.MOD,function(e){var n=u(e),t=s.get(n);t&&(t.datum=e,a.mod.push(t))}),n.visit(n.REM,function(e){var n=u(e),t=s.get(n);e!==t.datum||t.exit||(a.rem.push(t),t.exit=!0,++s.empty)}),n.changed(n.ADD_MOD)&&a.modifies("datum"),e.clean&&s.empty>r.cleanThreshold&&r.runAfter(s.clean),a},t.inherits(h,i.Transform).transform=function(e,n){var r=n.fork(n.ADD_REM),i=e.encoders,a=n.encode;if(t.isArray(a)){if(!r.changed()&&!a.every(function(e){return i[e]}))return n.StopPropagation;a=a[0],r.encode=null}var o="enter"===a,u=i.update||t.falsy,s=i.enter||t.falsy,l=i.exit||t.falsy,f=(a&&!o?i[a]:u)||t.falsy;if(n.changed(n.ADD)&&(n.visit(n.ADD,function(n){s(n,e),u(n,e),f!==t.falsy&&f!==u&&f(n,e)}),r.modifies(s.output),r.modifies(u.output),f!==t.falsy&&f!==u&&r.modifies(f.output)),n.changed(n.REM)&&l!==t.falsy&&(n.visit(n.REM,function(n){l(n,e)}),r.modifies(l.output)),o||f!==t.falsy){var c=n.MOD|(e.modified()?n.REFLOW:0);o?(n.visit(c,function(n){var t=s(n,e);(f(n,e)||t)&&r.mod.push(n)}),r.mod.length&&r.modifies(s.output)):n.visit(c,function(n){f(n,e)&&r.mod.push(n)}),r.mod.length&&r.modifies(f.output)}return r.changed()?r:n.StopPropagation};var g="symbol",v="discrete";const y={[n.Quantile]:function(e){var n=[-1/0].concat(e.quantiles());return n.max=1/0,n},[n.Quantize]:function(e){var n=e.domain(),r=n[0],i=t.peek(n),a=e.range().length,o=new Array(a),u=0;o[0]=-1/0;for(;++u<a;)o[u]=(u*i-(u-a)*r)/a;return o.max=1/0,o},[n.Threshold]:function(e){var n=[-1/0].concat(e.domain());return n.max=1/0,n},[n.BinOrdinal]:function(e){return M(e.domain())}};function M(e){return e.max=e.pop(),e}function x(e,n,t){return t===g&&function(e){return y[e.type]||e.bins}(e)?function(e){return function(n,t,r){var i=r[t+1]||r.max||1/0,a=b(n,e),o=b(i,e);return a&&o?a+"–"+o:o?"< "+o:"≥ "+a}}(n):t===v?function(e){return function(n,t){return t?e(n):null}}(n):function(e){return function(n){return e(n)}}(n)}function b(e,n){return isFinite(e)?n(e):null}function S(e){i.Transform.call(this,[],e)}t.inherits(S,i.Transform).transform=function(e,r){if(null!=this.value&&!e.modified())return r.StopPropagation;var a,o,s,c,d=r.fork(r.NO_SOURCE|r.NO_FIELDS),m=this.value,p=e.type||g,h=e.scale,v=u(h,null==e.count?5:e.count,e.minstep),b=e.format||f(h,v,e.formatSpecifier),S=e.values||function(e,n){var t=y[e.type];return t?t(e):e.bins?M(e.bins.slice()):l(e,n)}(h,v);return b=x(h,b,p),m&&(d.rem=m),p===g?(t.isFunction(s=e.size)?(e.values||0!==h(S[0])||(S=S.slice(1)),c=S.reduce(function(n,t){return Math.max(n,s(t,e))},0)):s=t.constant(c=s||8),m=S.map(function(n,t){return i.ingest({index:t,label:b(n,t,S),value:n,offset:c,size:s(n,e)})})):"gradient"===p?(a=h.domain(),o=n.scaleFraction(h,a[0],t.peek(a)),S.length<3&&!e.values&&a[0]!==t.peek(a)&&(S=[a[0],t.peek(a)]),m=S.map(function(e,n){return i.ingest({index:n,label:b(e,n,S),value:e,perc:o(e)})})):(s=S.length-1,o=function(e){var r=e.domain(),i=r.length-1,a=+r[0],o=+t.peek(r),u=o-a;if(e.type===n.Threshold){var s=i?u/i:.1;u=(o+=s)-(a-=s)}return function(e){return(e-a)/u}}(h),m=S.map(function(e,n){return i.ingest({index:n,label:b(e,n,S),value:e,perc:n?o(e):0,perc2:n===s?1:o(S[n+1])})})),d.source=m,d.add=m,this.value=m,d};var k=t.fastmap({line:z,"line-radial":function(e,n,t,r){return z(n*Math.cos(e),n*Math.sin(e),r*Math.cos(t),r*Math.sin(t))},arc:L,"arc-radial":function(e,n,t,r){return L(n*Math.cos(e),n*Math.sin(e),r*Math.cos(t),r*Math.sin(t))},curve:C,"curve-radial":function(e,n,t,r){return C(n*Math.cos(e),n*Math.sin(e),r*Math.cos(t),r*Math.sin(t))},"orthogonal-horizontal":function(e,n,t,r){return"M"+e+","+n+"V"+r+"H"+t},"orthogonal-vertical":function(e,n,t,r){return"M"+e+","+n+"H"+t+"V"+r},"orthogonal-radial":function(e,n,t,r){var i=Math.cos(e),a=Math.sin(e),o=Math.cos(t),u=Math.sin(t),s=Math.abs(t-e)>Math.PI?t<=e:t>e;return"M"+n*i+","+n*a+"A"+n+","+n+" 0 0,"+(s?1:0)+" "+n*o+","+n*u+"L"+r*o+","+r*u},"diagonal-horizontal":function(e,n,t,r){var i=(e+t)/2;return"M"+e+","+n+"C"+i+","+n+" "+i+","+r+" "+t+","+r},"diagonal-vertical":function(e,n,t,r){var i=(n+r)/2;return"M"+e+","+n+"C"+e+","+i+" "+t+","+i+" "+t+","+r},"diagonal-radial":function(e,n,t,r){var i=Math.cos(e),a=Math.sin(e),o=Math.cos(t),u=Math.sin(t),s=(n+r)/2;return"M"+n*i+","+n*a+"C"+s*i+","+s*a+" "+s*o+","+s*u+" "+r*o+","+r*u}});function O(e){return e.source.x}function D(e){return e.source.y}function w(e){return e.target.x}function A(e){return e.target.y}function T(e){i.Transform.call(this,{},e)}function z(e,n,t,r){return"M"+e+","+n+"L"+t+","+r}function L(e,n,t,r){var i=t-e,a=r-n,o=Math.sqrt(i*i+a*a)/2;return"M"+e+","+n+"A"+o+","+o+" "+180*Math.atan2(a,i)/Math.PI+" 0 1 "+t+","+r}function C(e,n,t,r){var i=t-e,a=r-n,o=.2*(i+a),u=.2*(a-i);return"M"+e+","+n+"C"+(e+o)+","+(n+u)+" "+(t+u)+","+(r-o)+" "+t+","+r}function P(e){i.Transform.call(this,null,e)}T.Definition={type:"LinkPath",metadata:{modifies:!0},params:[{name:"sourceX",type:"field",default:"source.x"},{name:"sourceY",type:"field",default:"source.y"},{name:"targetX",type:"field",default:"target.x"},{name:"targetY",type:"field",default:"target.y"},{name:"orient",type:"enum",default:"vertical",values:["horizontal","vertical","radial"]},{name:"shape",type:"enum",default:"line",values:["line","arc","curve","diagonal","orthogonal"]},{name:"require",type:"signal"},{name:"as",type:"string",default:"path"}]},t.inherits(T,i.Transform).transform=function(e,n){var r=e.sourceX||O,i=e.sourceY||D,a=e.targetX||w,o=e.targetY||A,u=e.as||"path",s=e.orient||"vertical",l=e.shape||"line",f=k.get(l+"-"+s)||k.get(l);return f||t.error("LinkPath unsupported type: "+e.shape+(e.orient?"-"+e.orient:"")),n.visit(n.SOURCE,function(e){e[u]=f(r(e),i(e),a(e),o(e))}),n.reflow(e.modified()).modifies(u)},P.Definition={type:"Pie",metadata:{modifies:!0},params:[{name:"field",type:"field"},{name:"startAngle",type:"number",default:0},{name:"endAngle",type:"number",default:6.283185307179586},{name:"sort",type:"boolean",default:!1},{name:"as",type:"string",array:!0,length:2,default:["startAngle","endAngle"]}]},t.inherits(P,i.Transform).transform=function(e,n){var r,i,o,u=e.as||["startAngle","endAngle"],s=u[0],l=u[1],f=e.field||t.one,c=e.startAngle||0,d=null!=e.endAngle?e.endAngle:2*Math.PI,m=n.source,p=m.map(f),h=p.length,g=c,v=(d-c)/a.sum(p),y=a.range(h);for(e.sort&&y.sort(function(e,n){return p[e]-p[n]}),r=0;r<h;++r)o=p[y[r]],(i=m[y[r]])[s]=g,i[l]=g+=o*v;return this.value=p,n.reflow(e.modified()).modifies(u)};var E=5;function F(e){return n.isContinuous(e)&&e!==n.Sequential}var I=t.toSet(["set","modified","clear","type","scheme","schemeExtent","schemeCount","domain","domainMin","domainMid","domainMax","domainRaw","domainImplicit","nice","zero","bins","range","rangeStep","round","reverse","interpolate","interpolateGamma"]);function q(e){i.Transform.call(this,null,e),this.modified(!0)}function R(e,r,i){n.isLogarithmic(e)&&(Math.abs(r.reduce(function(e,n){return e+(n<0?-1:n>0?1:0)},0))!==r.length&&i.warn("Log scale domain includes zero: "+t.stringValue(r)));return r}function _(e,t){return o.piecewise(n.interpolate(e.interpolate||"rgb",e.interpolateGamma),t)}function N(e,r,i){return t.isFunction(e)&&(r||i)?n.interpolateRange(e,U(r||[0,1],i)):e}function U(e,n){return n?e.slice().reverse():e}function j(e){i.Transform.call(this,null,e)}t.inherits(q,i.Transform).transform=function(e,r){var i=r.dataflow,a=this.value,s=function(e){var r,i=e.type,a="";if(i===n.Sequential)return n.Sequential+"-"+n.Linear;(function(e){const r=e.type;return n.isContinuous(r)&&r!==n.Time&&r!==n.UTC&&(e.scheme||e.range&&e.range.length&&e.range.every(t.isString))})(e)&&(r=e.rawDomain?e.rawDomain.length:e.domain?e.domain.length+ +(null!=e.domainMid):0,a=2===r?n.Sequential+"-":3===r?n.Diverging+"-":"");return(a+i||n.Linear).toLowerCase()}(e);for(s in a&&s===a.type||(this.value=a=n.scale(s)()),e)if(!I[s]){if("padding"===s&&F(a.type))continue;t.isFunction(a[s])?a[s](e[s]):i.warn("Unsupported scale property: "+s)}return function(e,r,i){var a=r.round||!1,u=r.range;if(null!=r.rangeStep)u=function(e,r,i){e!==n.Band&&e!==n.Point&&t.error("Only band and point scales support rangeStep.");var a=(null!=r.paddingOuter?r.paddingOuter:r.padding)||0,o=e===n.Point?1:(null!=r.paddingInner?r.paddingInner:r.padding)||0;return[0,r.rangeStep*n.bandSpace(i,o,a)]}(e.type,r,i);else if(r.scheme){if(u=function(e,r,i){var a,o,u,s=r.schemeExtent;t.isArray(r.scheme)?o=_(r,r.scheme):(a=r.scheme.toLowerCase(),(o=n.scheme(a))||t.error("Unrecognized scheme name: "+r.scheme));return i=e===n.Threshold?i+1:e===n.BinOrdinal?i-1:e===n.Quantile||e===n.Quantize?+r.schemeCount||E:i,n.isInterpolating(e)?N(o,s,r.reverse):!s&&(u=n.scheme(a+"-"+i))?u:t.isFunction(o)?function(e,n){for(var t=new Array(n),r=n+1,i=0;i<n;)t[i]=e(++i/r);return t}(N(o,s),i):e===n.Ordinal?o:o.slice(0,i)}(e.type,r,i),t.isFunction(u))return e.interpolator(u)}else if(u&&n.isInterpolating(e.type))return e.interpolator(_(r,U(u,r.reverse)));u&&r.interpolate&&e.interpolate?e.interpolate(n.interpolate(r.interpolate,r.interpolateGamma)):t.isFunction(e.round)?e.round(a):t.isFunction(e.rangeRound)&&e.interpolate(a?o.interpolateRound:o.interpolate);u&&e.range(U(u,r.reverse))}(a,e,function(e,r,i){var a=function(e,n,t){return n?(e.domain(R(e.type,n,t)),n.length):-1}(e,r.domainRaw,i);if(a>-1)return a;var o,s,l=r.domain,f=e.type,c=r.zero||void 0===r.zero&&function(e){const t=e.type;return!e.bins&&(t===n.Linear||t===n.Pow||t===n.Sqrt)}(e);if(!l)return 0;F(f)&&r.padding&&l[0]!==t.peek(l)&&(l=function(e,r,i,a,o,u){var s=Math.abs(t.peek(i)-i[0]),l=s/(s-2*a),f=e===n.Log?t.zoomLog(r,null,l):e===n.Sqrt?t.zoomPow(r,null,l,.5):e===n.Pow?t.zoomPow(r,null,l,o||1):e===n.Symlog?t.zoomSymlog(r,null,l,u||1):t.zoomLinear(r,null,l);return(r=r.slice())[0]=f[0],r[r.length-1]=f[1],r}(f,l,r.range,r.padding,r.exponent,r.constant));(c||null!=r.domainMin||null!=r.domainMax||null!=r.domainMid)&&(o=(l=l.slice()).length-1||1,c&&(l[0]>0&&(l[0]=0),l[o]<0&&(l[o]=0)),null!=r.domainMin&&(l[0]=r.domainMin),null!=r.domainMax&&(l[o]=r.domainMax),null!=r.domainMid&&(((s=r.domainMid)<l[0]||s>l[o])&&i.warn("Scale domainMid exceeds domain min or max.",s),l.splice(o,0,s)));e.domain(R(f,l,i)),f===n.Ordinal&&e.unknown(r.domainImplicit?n.scaleImplicit:void 0);r.nice&&e.nice&&e.nice(!0!==r.nice&&u(e,r.nice)||null);return l.length}(a,e,i)),e.bins?a.bins=e.bins:a.bins&&delete a.bins,r.fork(r.NO_SOURCE|r.NO_FIELDS)},t.inherits(j,i.Transform).transform=function(e,n){var t=e.modified("sort")||n.changed(n.ADD)||n.modified(e.sort.fields)||n.modified("datum");return t&&n.source.sort(e.sort),this.modified(t),n};var Q=["y0","y1"];function X(e){i.Transform.call(this,null,e)}function Y(e,n,t,r,i){for(var a,o=(n-e.sum)/2,u=e.length,s=0;s<u;++s)(a=e[s])[r]=o,a[i]=o+=Math.abs(t(a))}function B(e,n,t,r,i){for(var a,o=1/e.sum,u=0,s=e.length,l=0,f=0;l<s;++l)(a=e[l])[r]=u,a[i]=u=o*(f+=Math.abs(t(a)))}function G(e,n,t,r,i){for(var a,o,u=0,s=0,l=e.length,f=0;f<l;++f)(a=t(o=e[f]))<0?(o[r]=s,o[i]=s+=a):(o[r]=u,o[i]=u+=a)}X.Definition={type:"Stack",metadata:{modifies:!0},params:[{name:"field",type:"field"},{name:"groupby",type:"field",array:!0},{name:"sort",type:"compare"},{name:"offset",type:"enum",default:"zero",values:["zero","center","normalize"]},{name:"as",type:"string",array:!0,length:2,default:Q}]},t.inherits(X,i.Transform).transform=function(e,n){var r,i,a,o,u=e.as||Q,s=u[0],l=u[1],f=e.field||t.one,c="center"===e.offset?Y:"normalize"===e.offset?B:G;for(r=function(e,n,t,r){var i,a,o,u,s,l,f,c,d,m=[],p=function(e){return e(s)};if(null==n)m.push(e.slice());else for(i={},a=0,o=e.length;a<o;++a)s=e[a],l=n.map(p),(f=i[l])||(i[l]=f=[],m.push(f)),f.push(s);for(l=0,d=0,u=m.length;l<u;++l){for(f=m[l],a=0,c=0,o=f.length;a<o;++a)c+=Math.abs(r(f[a]));f.sum=c,c>d&&(d=c),t&&f.sort(t)}return m.max=d,m}(n.source,e.groupby,e.sort,f),i=0,a=r.length,o=r.max;i<a;++i)c(r[i],o,f,s,l);return n.reflow(e.modified()).modifies(u)},e.axisticks=c,e.datajoin=d,e.encode=h,e.legendentries=S,e.linkpath=T,e.pie=P,e.scale=q,e.sortitems=j,e.stack=X,e.validTicks=s,Object.defineProperty(e,"__esModule",{value:!0})});
{
"name": "vega-encode",
"version": "3.2.2",
"version": "4.0.0",
"description": "Visual encoding transforms for Vega dataflows.",

@@ -12,35 +12,27 @@ "keywords": [

"license": "BSD-3-Clause",
"author": {
"name": "Jeffrey Heer",
"url": "http://idl.cs.washington.edu"
},
"author": "Jeffrey Heer (http://idl.cs.washington.edu)",
"main": "build/vega-encode.js",
"module": "index",
"jsnext:main": "index",
"repository": {
"type": "git",
"url": "https://github.com/vega/vega-encode.git"
},
"repository": "vega/vega",
"scripts": {
"build": "npm run test && uglifyjs build/vega-encode.js -c -m -o build/vega-encode.min.js",
"pretest": "rm -rf build && mkdir build && rollup -g d3-array:d3,d3-format:d3,d3-interpolate:d3,vega-dataflow:vega,vega-scale:vega,vega-util:vega -f umd -n vega.transforms -o build/vega-encode.js -- index.js",
"rollup": "rollup -g d3-array:d3,d3-format:d3,d3-interpolate:d3,vega-dataflow:vega,vega-scale:vega,vega-util:vega -f umd -n vega.transforms -o build/vega-encode.js -- index.js",
"prebuild": "rimraf build && mkdir build",
"build": "yarn rollup",
"postbuild": "terser build/vega-encode.js -c -m -o build/vega-encode.min.js",
"pretest": "yarn prebuild && yarn rollup",
"test": "tape 'test/**/*-test.js' && eslint index.js src test",
"prepublishOnly": "npm run build",
"postpublish": "git push && git push --tags && zip -j build/vega-encode.zip -- LICENSE README.md build/vega-encode.js build/vega-encode.min.js"
"prepublishOnly": "yarn test && yarn build",
"postpublish": "git push && git push --tags"
},
"dependencies": {
"d3-array": "^2.0.2",
"d3-array": "^2.0.3",
"d3-format": "^1.3.2",
"d3-interpolate": "^1.3.2",
"vega-dataflow": "^4.1.0",
"vega-scale": "^2.5.0",
"vega-util": "^1.7.0"
"vega-dataflow": "^5.0.0",
"vega-scale": "^3.0.0",
"vega-util": "^1.8.0"
},
"devDependencies": {
"eslint": "5",
"rollup": "0.67.4",
"tape": "4",
"uglify-js": "3",
"vega-transforms": "^2.3.1"
"vega-transforms": "*"
}
}

@@ -5,14 +5,14 @@ # vega-encode

This module provides the following Vega data transforms:
This package provides the following Vega data transforms:
- [**LinkPath**](https://vega.github.io/vega/docs/transforms/linkpath/) [&lt;&gt;](https://github.com/vega/vega-encode/blob/master/src/LinkPath.js "Source")
- [**Pie**](https://vega.github.io/vega/docs/transforms/pie/) [&lt;&gt;](https://github.com/vega/vega-encode/blob/master/src/Pie.js "Source")
- [**Stack**](https://vega.github.io/vega/docs/transforms/stack/) [&lt;&gt;](https://github.com/vega/vega-encode/blob/master/src/Stack.js "Source")
- [**LinkPath**](https://vega.github.io/vega/docs/transforms/linkpath/) [&lt;&gt;](https://github.com/vega/vega/blob/master/packages/vega-encode/src/LinkPath.js "Source")
- [**Pie**](https://vega.github.io/vega/docs/transforms/pie/) [&lt;&gt;](https://github.com/vega/vega/blob/master/packages/vega-encode/src/Pie.js "Source")
- [**Stack**](https://vega.github.io/vega/docs/transforms/stack/) [&lt;&gt;](https://github.com/vega/vega/blob/master/packages/vega-encode/src/Stack.js "Source")
And also provides the following internal transforms:
And provides the following internal transforms:
- **AxisTicks** [&lt;&gt;](https://github.com/vega/vega-encode/blob/master/src/AxisTicks.js "Source")
- **DataJoin** [&lt;&gt;](https://github.com/vega/vega-encode/blob/master/src/DataJoin.js "Source")
- **Encode** [&lt;&gt;](https://github.com/vega/vega-encode/blob/master/src/Encode.js "Source")
- **LegendEntries** [&lt;&gt;](https://github.com/vega/vega-encode/blob/master/src/LegendEntries.js "Source")
- **Scale** [&lt;&gt;](https://github.com/vega/vega-encode/blob/master/src/Scale.js "Source")
- **AxisTicks** [&lt;&gt;](https://github.com/vega/vega/blob/master/packages/vega-encode/src/AxisTicks.js "Source")
- **DataJoin** [&lt;&gt;](https://github.com/vega/vega/blob/master/packages/vega-encode/src/DataJoin.js "Source")
- **Encode** [&lt;&gt;](https://github.com/vega/vega/blob/master/packages/vega-encode/src/Encode.js "Source")
- **LegendEntries** [&lt;&gt;](https://github.com/vega/vega/blob/master/packages/vega-encode/src/LegendEntries.js "Source")
- **Scale** [&lt;&gt;](https://github.com/vega/vega/blob/master/packages/vega-encode/src/Scale.js "Source")

@@ -35,3 +35,4 @@ import {tickCount, tickFormat, tickValues, validTicks} from './ticks';

scale = _.scale,
count = _.count == null ? (_.values ? _.values.length : 10) : tickCount(scale, _.count),
tally = _.count == null ? (_.values ? _.values.length : 10) : _.count,
count = tickCount(scale, tally, _.minstep),
format = _.format || tickFormat(scale, count, _.formatSpecifier),

@@ -38,0 +39,0 @@ values = _.values ? validTicks(scale, _.values, count) : tickValues(scale, count);

import {Symbols, Discrete} from './legend-types';
import {Quantile, Quantize, Threshold, BinLinear, BinOrdinal} from './scale-types';
import {tickValues} from './ticks';
import {Quantile, Quantize, Threshold, BinOrdinal} from 'vega-scale';
import {peek} from 'vega-util';
var symbols = {};
symbols[Quantile] = quantileSymbols;
symbols[Quantize] = quantizeSymbols;
symbols[Threshold] = thresholdSymbols;
symbols[BinLinear] = symbols[BinOrdinal] = binSymbols;
const symbols = {
[Quantile]: quantileSymbols,
[Quantize]: quantizeSymbols,
[Threshold]: thresholdSymbols,
[BinOrdinal]: binSymbols
};
export function labelValues(scale, count) {
var values = symbols[scale.type];
return values ? values(scale) : tickValues(scale, count);
return values ? values(scale)
: scale.bins ? binValues(scale.bins.slice())
: tickValues(scale, count);
}

@@ -47,10 +51,16 @@

function binSymbols(scale) {
var values = scale.domain();
values.max = values.pop();
return binValues(scale.domain());
}
return values;
function binValues(bins) {
bins.max = bins.pop();
return bins;
}
function isDiscreteRange(scale) {
return symbols[scale.type] || scale.bins;
}
export function labelFormat(scale, format, type) {
return type === Symbols && symbols[scale.type] ? formatRange(format)
return type === Symbols && isDiscreteRange(scale) ? formatRange(format)
: type === Discrete ? formatDiscrete(format)

@@ -57,0 +67,0 @@ : formatPoint(format);

@@ -39,3 +39,3 @@ import {labelFormat, labelFraction, labelValues} from './labels';

scale = _.scale,
count = _.count == null ? 5 : tickCount(scale, _.count),
count = tickCount(scale, _.count == null ? 5 : _.count, _.minstep),
format = _.format || tickFormat(scale, count, _.formatSpecifier),

@@ -42,0 +42,0 @@ values = _.values || labelValues(scale, count, type),

import {tickCount} from './ticks';
import {Transform} from 'vega-dataflow';
import {
error, inherits, isFunction, peek, stringValue,
toSet, zoomLinear, zoomLog, zoomPow
error, inherits, isArray, isFunction, isString, peek, stringValue,
toSet, zoomLinear, zoomLog, zoomPow, zoomSymlog
} from 'vega-util';
import {
Ordinal, Band, Point,
Linear, Log, Pow, Sqrt, Sequential,
Ordinal, Band, Point, Sequential, Diverging,
Linear, Log, Pow, Sqrt, Symlog, Time, UTC,
Quantile, Quantize, Threshold, BinOrdinal,
Time, Utc
} from './scale-types';
import {
isContinuous,
isInterpolating,
isLogarithmic,
bandSpace,

@@ -25,4 +24,4 @@ interpolateRange,

import {
piecewise,
interpolate,
interpolateRgbBasis,
interpolateRound

@@ -33,9 +32,17 @@ } from 'd3-interpolate';

var INCLUDE_ZERO = toSet([Linear, Pow, Sqrt]);
function includeZero(scale) {
const type = scale.type;
return !scale.bins && (
type === Linear || type === Pow || type === Sqrt
);
}
var INCLUDE_PAD = toSet([Linear, Log, Pow, Sqrt, Time, Utc]);
function includePad(type) {
return isContinuous(type) && type !== Sequential;
}
var SKIP = toSet([
'set', 'modified', 'clear', 'type', 'scheme', 'schemeExtent', 'schemeCount',
'domain', 'domainMin', 'domainMid', 'domainMax', 'domainRaw', 'domainImplicit', 'nice', 'zero',
'domain', 'domainMin', 'domainMid', 'domainMax',
'domainRaw', 'domainImplicit', 'nice', 'zero', 'bins',
'range', 'rangeStep', 'round', 'reverse', 'interpolate', 'interpolateGamma'

@@ -59,15 +66,15 @@ ]);

scale = this.value,
prop;
key = scaleKey(_);
if (!scale || _.modified('type')) {
this.value = scale = getScale((_.type || Linear).toLowerCase())();
if (!scale || key !== scale.type) {
this.value = scale = getScale(key)();
}
for (prop in _) if (!SKIP[prop]) {
for (key in _) if (!SKIP[key]) {
// padding is a scale property for band/point but not others
if (prop === 'padding' && INCLUDE_PAD[scale.type]) continue;
if (key === 'padding' && includePad(scale.type)) continue;
// invoke scale property setter, raise warning if not found
isFunction(scale[prop])
? scale[prop](_[prop])
: df.warn('Unsupported scale property: ' + prop);
isFunction(scale[key])
? scale[key](_[key])
: df.warn('Unsupported scale property: ' + key);
}

@@ -77,5 +84,36 @@

if (_.bins) {
scale.bins = _.bins;
} else if (scale.bins) {
delete scale.bins;
}
return pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS);
};
function scaleKey(_) {
var t = _.type, d = '', n;
// backwards compatibility pre Vega 5.
if (t === Sequential) return Sequential + '-' + Linear;
if (isContinuousColor(_)) {
n = _.rawDomain ? _.rawDomain.length
: _.domain ? _.domain.length + +(_.domainMid != null)
: 0;
d = n === 2 ? Sequential + '-'
: n === 3 ? Diverging + '-'
: '';
}
return ((d + t) || Linear).toLowerCase();
}
function isContinuousColor(_) {
const t = _.type;
return isContinuous(t) && t !== Time && t !== UTC && (
_.scheme || _.range && _.range.length && _.range.every(isString)
);
}
function configureDomain(scale, _, df) {

@@ -88,3 +126,3 @@ // check raw domain, if provided use that and exit early

type = scale.type,
zero = _.zero || (_.zero === undefined && INCLUDE_ZERO[type]),
zero = _.zero || (_.zero === undefined && includeZero(scale)),
n, mid;

@@ -95,4 +133,4 @@

// adjust continuous domain for minimum pixel padding
if (INCLUDE_PAD[type] && _.padding && domain[0] !== peek(domain)) {
domain = padDomain(type, domain, _.range, _.padding, _.exponent);
if (includePad(type) && _.padding && domain[0] !== peek(domain)) {
domain = padDomain(type, domain, _.range, _.padding, _.exponent, _.constant);
}

@@ -146,8 +184,9 @@

function padDomain(type, domain, range, pad, exponent) {
function padDomain(type, domain, range, pad, exponent, constant) {
var span = Math.abs(peek(range) - range[0]),
frac = span / (span - 2 * pad),
d = type === Log ? zoomLog(domain, null, frac)
: type === Sqrt ? zoomPow(domain, null, frac, 0.5)
: type === Pow ? zoomPow(domain, null, frac, exponent)
d = type === Log ? zoomLog(domain, null, frac)
: type === Sqrt ? zoomPow(domain, null, frac, 0.5)
: type === Pow ? zoomPow(domain, null, frac, exponent || 1)
: type === Symlog ? zoomSymlog(domain, null, frac, constant || 1)
: zoomLinear(domain, null, frac);

@@ -162,3 +201,3 @@

function domainCheck(type, domain, df) {
if (type === Log) {
if (isLogarithmic(type)) {
// sum signs of domain values

@@ -192,5 +231,5 @@ // if all pos or all neg, abs(sum) === domain.length

// given a range array for a sequential scale, convert to interpolator
else if (range && scale.type === Sequential) {
return scale.interpolator(interpolateRgbBasis(flip(range, _.reverse)));
// given a range array for an interpolating scale, convert to interpolator
else if (range && isInterpolating(scale.type)) {
return scale.interpolator(interpolateColors(_, flip(range, _.reverse)));
}

@@ -223,9 +262,11 @@

function configureScheme(type, _, count) {
var name = _.scheme.toLowerCase(),
scheme = getScheme(name),
extent = _.schemeExtent,
discrete;
var extent = _.schemeExtent,
name, scheme, discrete;
if (!scheme) {
error('Unrecognized scheme name: ' + _.scheme);
if (isArray(_.scheme)) {
scheme = interpolateColors(_, _.scheme);
} else {
name = _.scheme.toLowerCase();
scheme = getScheme(name);
if (!scheme) error('Unrecognized scheme name: ' + _.scheme);
}

@@ -240,3 +281,3 @@

// adjust and/or quantize scheme as appropriate
return type === Sequential ? adjustScheme(scheme, extent, _.reverse)
return isInterpolating(type) ? adjustScheme(scheme, extent, _.reverse)
: !extent && (discrete = getScheme(name + '-' + count)) ? discrete

@@ -247,2 +288,9 @@ : isFunction(scheme) ? quantize(adjustScheme(scheme, extent), count)

function interpolateColors(_, colors) {
return piecewise(
getInterpolate(_.interpolate || 'rgb', _.interpolateGamma),
colors
);
}
function adjustScheme(scheme, extent, reverse) {

@@ -249,0 +297,0 @@ return (isFunction(scheme) && (extent || reverse))

@@ -1,4 +0,3 @@

import {Log} from './scale-types';
import {timeInterval, utcInterval} from 'vega-scale';
import {error, isObject, isString, peek} from 'vega-util';
import {isLogarithmic, timeInterval} from 'vega-scale';
import {error, isNumber, isObject, isString, peek, span} from 'vega-util';
import {

@@ -13,7 +12,12 @@ format as numberFormat,

* @param {*} count - The desired tick count or interval specifier.
* @param {number} minStep - The desired minimum step between tick values.
* @return {*} - The tick count or interval function.
*/
export function tickCount(scale, count) {
export function tickCount(scale, count, minStep) {
var step;
if (isNumber(count) && minStep != null) {
count = Math.min(count, ~~(span(scale.domain()) / minStep) || 1);
}
if (isObject(count)) {

@@ -25,5 +29,4 @@ step = count.step;

if (isString(count)) {
count = scale.type === 'time' ? timeInterval(count)
: scale.type === 'utc' ? utcInterval(count)
: error('Only time and utc scales accept interval strings.');
count = timeInterval(count, scale.type)
|| error('Only time and utc scales accept interval strings.');
if (step) count = count.every(step);

@@ -81,6 +84,23 @@ }

export function tickValues(scale, count) {
return scale.ticks ? scale.ticks(count) : scale.domain();
return scale.bins ? binValues(scale.bins, count)
: scale.ticks ? scale.ticks(count)
: scale.domain();
}
/**
* Generate tick values for an array of bin values.
* @param {Array<*>} bins - An array of bin boundaries.
* @param {Number} [count] - The approximate number of desired ticks.
* @return {Array<*>} - The generated tick values.
*/
function binValues(bins, count) {
var n = bins.length,
stride = ~~(n / (count || n));
return stride < 2
? bins.slice()
: bins.filter(function(x, i) { return !(i % stride); });
}
/**
* Generate a label format function for a scale. If the scale has a

@@ -104,5 +124,8 @@ * 'tickFormat' method, it will be used to generate the formatter, with the

return (scale.type === Log)
? filter(format, variablePrecision(specifier))
: format;
if (isLogarithmic(scale.type)) {
var logfmt = variablePrecision(specifier);
format = scale.bins ? logfmt : filter(format, logfmt);
}
return format;
}

@@ -109,0 +132,0 @@

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc