vega-encode
Advanced tools
Comparing version 4.9.0 to 4.9.1
@@ -23,3 +23,2 @@ (function (global, factory) { | ||
*/ | ||
function AxisTicks(params) { | ||
@@ -33,11 +32,10 @@ vegaDataflow.Transform.call(this, null, params); | ||
} | ||
var locale = pulse.dataflow.locale(), | ||
out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS), | ||
ticks = this.value, | ||
scale = _.scale, | ||
tally = _.count == null ? _.values ? _.values.length : 10 : _.count, | ||
count = vegaScale.tickCount(scale, tally, _.minstep), | ||
format = _.format || vegaScale.tickFormat(locale, scale, count, _.formatSpecifier, _.formatType, !!_.values), | ||
values = _.values ? vegaScale.validTicks(scale, _.values, count) : vegaScale.tickValues(scale, count); | ||
out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS), | ||
ticks = this.value, | ||
scale = _.scale, | ||
tally = _.count == null ? _.values ? _.values.length : 10 : _.count, | ||
count = vegaScale.tickCount(scale, tally, _.minstep), | ||
format = _.format || vegaScale.tickFormat(locale, scale, count, _.formatSpecifier, _.formatType, !!_.values), | ||
values = _.values ? vegaScale.validTicks(scale, _.values, count) : vegaScale.tickValues(scale, count); | ||
if (ticks) out.rem = ticks; | ||
@@ -49,3 +47,2 @@ ticks = values.map((value, i) => vegaDataflow.ingest({ | ||
})); | ||
if (_.extra && ticks.length) { | ||
@@ -62,3 +59,2 @@ // add an extra tick pegged to the initial domain value | ||
} | ||
out.source = ticks; | ||
@@ -69,3 +65,2 @@ out.add = ticks; | ||
} | ||
}); | ||
@@ -80,36 +75,29 @@ | ||
*/ | ||
function DataJoin(params) { | ||
vegaDataflow.Transform.call(this, null, params); | ||
} | ||
function defaultItemCreate() { | ||
return vegaDataflow.ingest({}); | ||
} | ||
function newMap(key) { | ||
const map = vegaUtil.fastmap().test(t => t.exit); | ||
map.lookup = t => map.get(key(t)); | ||
return map; | ||
} | ||
vegaUtil.inherits(DataJoin, vegaDataflow.Transform, { | ||
transform(_, pulse) { | ||
var df = pulse.dataflow, | ||
out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS), | ||
item = _.item || defaultItemCreate, | ||
key = _.key || vegaDataflow.tupleid, | ||
map = this.value; // prevent transient (e.g., hover) requests from | ||
out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS), | ||
item = _.item || defaultItemCreate, | ||
key = _.key || vegaDataflow.tupleid, | ||
map = this.value; | ||
// prevent transient (e.g., hover) requests from | ||
// cascading across marks derived from marks | ||
if (vegaUtil.isArray(out.encode)) { | ||
out.encode = null; | ||
} | ||
if (map && (_.modified('key') || pulse.modified(key))) { | ||
vegaUtil.error('DataJoin does not support modified key function or fields.'); | ||
} | ||
if (!map) { | ||
@@ -119,7 +107,5 @@ pulse = pulse.addAll(); | ||
} | ||
pulse.visit(pulse.ADD, t => { | ||
const k = key(t); | ||
let x = map.get(k); | ||
if (x) { | ||
@@ -137,3 +123,2 @@ if (x.exit) { | ||
} | ||
x.datum = t; | ||
@@ -144,4 +129,3 @@ x.exit = false; | ||
const k = key(t), | ||
x = map.get(k); | ||
x = map.get(k); | ||
if (x) { | ||
@@ -154,4 +138,3 @@ x.datum = t; | ||
const k = key(t), | ||
x = map.get(k); | ||
x = map.get(k); | ||
if (t === x.datum && !x.exit) { | ||
@@ -164,10 +147,7 @@ out.rem.push(x); | ||
if (pulse.changed(pulse.ADD_MOD)) out.modifies('datum'); | ||
if (pulse.clean() || _.clean && map.empty > df.cleanThreshold) { | ||
df.runAfter(map.clean); | ||
} | ||
return out; | ||
} | ||
}); | ||
@@ -187,3 +167,2 @@ | ||
*/ | ||
function Encode(params) { | ||
@@ -195,8 +174,9 @@ vegaDataflow.Transform.call(this, null, params); | ||
var out = pulse.fork(pulse.ADD_REM), | ||
fmod = _.mod || false, | ||
encoders = _.encoders, | ||
encode = pulse.encode; // if an array, the encode directive includes additional sets | ||
fmod = _.mod || false, | ||
encoders = _.encoders, | ||
encode = pulse.encode; | ||
// if an array, the encode directive includes additional sets | ||
// that must be defined in order for the primary set to be invoked | ||
// e.g., only run the update set if the hover set is defined | ||
if (vegaUtil.isArray(encode)) { | ||
@@ -209,11 +189,10 @@ if (out.changed() || encode.every(e => encoders[e])) { | ||
} | ||
} // marshall encoder functions | ||
} | ||
// marshall encoder functions | ||
var reenter = encode === 'enter', | ||
update = encoders.update || vegaUtil.falsy, | ||
enter = encoders.enter || vegaUtil.falsy, | ||
exit = encoders.exit || vegaUtil.falsy, | ||
set = (encode && !reenter ? encoders[encode] : update) || vegaUtil.falsy; | ||
update = encoders.update || vegaUtil.falsy, | ||
enter = encoders.enter || vegaUtil.falsy, | ||
exit = encoders.exit || vegaUtil.falsy, | ||
set = (encode && !reenter ? encoders[encode] : update) || vegaUtil.falsy; | ||
if (pulse.changed(pulse.ADD)) { | ||
@@ -226,3 +205,2 @@ pulse.visit(pulse.ADD, t => { | ||
out.modifies(update.output); | ||
if (set !== vegaUtil.falsy && set !== update) { | ||
@@ -235,3 +213,2 @@ pulse.visit(pulse.ADD, t => { | ||
} | ||
if (pulse.changed(pulse.REM) && exit !== vegaUtil.falsy) { | ||
@@ -243,6 +220,4 @@ pulse.visit(pulse.REM, t => { | ||
} | ||
if (reenter || set !== vegaUtil.falsy) { | ||
const flag = pulse.MOD | (_.modified() ? pulse.REFLOW : 0); | ||
if (reenter) { | ||
@@ -259,9 +234,6 @@ pulse.visit(flag, t => { | ||
} | ||
if (out.mod.length) out.modifies(set.output); | ||
} | ||
return out.changed() ? out : pulse.StopPropagation; | ||
} | ||
}); | ||
@@ -287,3 +259,2 @@ | ||
*/ | ||
function LegendEntries(params) { | ||
@@ -297,20 +268,18 @@ vegaDataflow.Transform.call(this, [], params); | ||
} | ||
var locale = pulse.dataflow.locale(), | ||
out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS), | ||
items = this.value, | ||
type = _.type || vegaScale.SymbolLegend, | ||
scale = _.scale, | ||
limit = +_.limit, | ||
count = vegaScale.tickCount(scale, _.count == null ? 5 : _.count, _.minstep), | ||
lskip = !!_.values || type === vegaScale.SymbolLegend, | ||
format = _.format || vegaScale.labelFormat(locale, scale, count, type, _.formatSpecifier, _.formatType, lskip), | ||
values = _.values || vegaScale.labelValues(scale, count), | ||
domain, | ||
fraction, | ||
size, | ||
offset, | ||
ellipsis; | ||
out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS), | ||
items = this.value, | ||
type = _.type || vegaScale.SymbolLegend, | ||
scale = _.scale, | ||
limit = +_.limit, | ||
count = vegaScale.tickCount(scale, _.count == null ? 5 : _.count, _.minstep), | ||
lskip = !!_.values || type === vegaScale.SymbolLegend, | ||
format = _.format || vegaScale.labelFormat(locale, scale, count, type, _.formatSpecifier, _.formatType, lskip), | ||
values = _.values || vegaScale.labelValues(scale, count), | ||
domain, | ||
fraction, | ||
size, | ||
offset, | ||
ellipsis; | ||
if (items) out.rem = items; | ||
if (type === vegaScale.SymbolLegend) { | ||
@@ -324,3 +293,2 @@ if (limit && values.length > limit) { | ||
} | ||
if (vegaUtil.isFunction(size = _.size)) { | ||
@@ -330,5 +298,4 @@ // if first value maps to size zero, remove from list (vega#717) | ||
items = items.slice(1); | ||
} // compute size offset for legend entries | ||
} | ||
// compute size offset for legend entries | ||
offset = items.reduce((max, value) => Math.max(max, size(value, _)), 0); | ||
@@ -338,3 +305,2 @@ } else { | ||
} | ||
items = items.map((value, index) => vegaDataflow.ingest({ | ||
@@ -347,3 +313,2 @@ index: index, | ||
})); | ||
if (ellipsis) { | ||
@@ -360,9 +325,9 @@ ellipsis = values[items.length]; | ||
} else if (type === vegaScale.GradientLegend) { | ||
domain = scale.domain(), fraction = vegaScale.scaleFraction(scale, domain[0], vegaUtil.peek(domain)); // if automatic label generation produces 2 or fewer values, | ||
domain = scale.domain(), fraction = vegaScale.scaleFraction(scale, domain[0], vegaUtil.peek(domain)); | ||
// if automatic label generation produces 2 or fewer values, | ||
// use the domain end points instead (fixes vega/vega#1364) | ||
if (values.length < 3 && !_.values && domain[0] !== vegaUtil.peek(domain)) { | ||
values = [domain[0], vegaUtil.peek(domain)]; | ||
} | ||
items = values.map((value, index) => vegaDataflow.ingest({ | ||
@@ -385,3 +350,2 @@ index: index, | ||
} | ||
out.source = items; | ||
@@ -392,12 +356,9 @@ out.add = items; | ||
} | ||
}); | ||
const sourceX = t => t.source.x; | ||
const sourceY = t => t.source.y; | ||
const targetX = t => t.target.x; | ||
const targetY = t => t.target.y; | ||
const targetY = t => t.target.y; | ||
/** | ||
@@ -408,4 +369,2 @@ * Layout paths linking source and target elements. | ||
*/ | ||
function LinkPath(params) { | ||
@@ -457,14 +416,12 @@ vegaDataflow.Transform.call(this, {}, params); | ||
var sx = _.sourceX || sourceX, | ||
sy = _.sourceY || sourceY, | ||
tx = _.targetX || targetX, | ||
ty = _.targetY || targetY, | ||
as = _.as || 'path', | ||
orient = _.orient || 'vertical', | ||
shape = _.shape || 'line', | ||
path = Paths.get(shape + '-' + orient) || Paths.get(shape); | ||
sy = _.sourceY || sourceY, | ||
tx = _.targetX || targetX, | ||
ty = _.targetY || targetY, | ||
as = _.as || 'path', | ||
orient = _.orient || 'vertical', | ||
shape = _.shape || 'line', | ||
path = Paths.get(shape + '-' + orient) || Paths.get(shape); | ||
if (!path) { | ||
vegaUtil.error('LinkPath unsupported type: ' + _.shape + (_.orient ? '-' + _.orient : '')); | ||
} | ||
pulse.visit(pulse.SOURCE, t => { | ||
@@ -475,42 +432,31 @@ t[as] = path(sx(t), sy(t), tx(t), ty(t)); | ||
} | ||
}); | ||
const line = (sx, sy, tx, ty) => 'M' + sx + ',' + sy + 'L' + tx + ',' + ty; | ||
const lineR = (sa, sr, ta, tr) => line(sr * Math.cos(sa), sr * Math.sin(sa), tr * Math.cos(ta), tr * Math.sin(ta)); | ||
const arc = (sx, sy, tx, ty) => { | ||
var dx = tx - sx, | ||
dy = ty - sy, | ||
rr = Math.sqrt(dx * dx + dy * dy) / 2, | ||
ra = 180 * Math.atan2(dy, dx) / Math.PI; | ||
dy = ty - sy, | ||
rr = Math.sqrt(dx * dx + dy * dy) / 2, | ||
ra = 180 * Math.atan2(dy, dx) / Math.PI; | ||
return 'M' + sx + ',' + sy + 'A' + rr + ',' + rr + ' ' + ra + ' 0 1' + ' ' + tx + ',' + ty; | ||
}; | ||
const arcR = (sa, sr, ta, tr) => arc(sr * Math.cos(sa), sr * Math.sin(sa), tr * Math.cos(ta), tr * Math.sin(ta)); | ||
const curve = (sx, sy, tx, ty) => { | ||
const dx = tx - sx, | ||
dy = ty - sy, | ||
ix = 0.2 * (dx + dy), | ||
iy = 0.2 * (dy - dx); | ||
dy = ty - sy, | ||
ix = 0.2 * (dx + dy), | ||
iy = 0.2 * (dy - dx); | ||
return 'M' + sx + ',' + sy + 'C' + (sx + ix) + ',' + (sy + iy) + ' ' + (tx + iy) + ',' + (ty - ix) + ' ' + tx + ',' + ty; | ||
}; | ||
const curveR = (sa, sr, ta, tr) => curve(sr * Math.cos(sa), sr * Math.sin(sa), tr * Math.cos(ta), tr * Math.sin(ta)); | ||
const orthoX = (sx, sy, tx, ty) => 'M' + sx + ',' + sy + 'V' + ty + 'H' + tx; | ||
const orthoY = (sx, sy, tx, ty) => 'M' + sx + ',' + sy + 'H' + tx + 'V' + ty; | ||
const orthoR = (sa, sr, ta, tr) => { | ||
const sc = Math.cos(sa), | ||
ss = Math.sin(sa), | ||
tc = Math.cos(ta), | ||
ts = Math.sin(ta), | ||
sf = Math.abs(ta - sa) > Math.PI ? ta <= sa : ta > sa; | ||
ss = Math.sin(sa), | ||
tc = Math.cos(ta), | ||
ts = Math.sin(ta), | ||
sf = Math.abs(ta - sa) > Math.PI ? ta <= sa : ta > sa; | ||
return 'M' + sr * sc + ',' + sr * ss + 'A' + sr + ',' + sr + ' 0 0,' + (sf ? 1 : 0) + ' ' + sr * tc + ',' + sr * ts + 'L' + tr * tc + ',' + tr * ts; | ||
}; | ||
const diagonalX = (sx, sy, tx, ty) => { | ||
@@ -520,3 +466,2 @@ const m = (sx + tx) / 2; | ||
}; | ||
const diagonalY = (sx, sy, tx, ty) => { | ||
@@ -526,12 +471,10 @@ const m = (sy + ty) / 2; | ||
}; | ||
const diagonalR = (sa, sr, ta, tr) => { | ||
const sc = Math.cos(sa), | ||
ss = Math.sin(sa), | ||
tc = Math.cos(ta), | ||
ts = Math.sin(ta), | ||
mr = (sr + tr) / 2; | ||
ss = Math.sin(sa), | ||
tc = Math.cos(ta), | ||
ts = Math.sin(ta), | ||
mr = (sr + tr) / 2; | ||
return 'M' + sr * sc + ',' + sr * ss + 'C' + mr * sc + ',' + mr * ss + ' ' + mr * tc + ',' + mr * ts + ' ' + tr * tc + ',' + tr * ts; | ||
}; | ||
const Paths = vegaUtil.fastmap({ | ||
@@ -555,9 +498,7 @@ 'line': line, | ||
var i = -1, | ||
n = Math.max(0, Math.ceil((stop - start) / step)) | 0, | ||
range = new Array(n); | ||
n = Math.max(0, Math.ceil((stop - start) / step)) | 0, | ||
range = new Array(n); | ||
while (++i < n) { | ||
range[i] = start + i * step; | ||
} | ||
return range; | ||
@@ -568,3 +509,2 @@ } | ||
let sum = 0; | ||
if (valueof === undefined) { | ||
@@ -578,3 +518,2 @@ for (let value of values) { | ||
let index = -1; | ||
for (let value of values) { | ||
@@ -586,3 +525,2 @@ if (value = +valueof(value, ++index, values)) { | ||
} | ||
return sum; | ||
@@ -600,3 +538,2 @@ } | ||
*/ | ||
function Pie(params) { | ||
@@ -636,21 +573,19 @@ vegaDataflow.Transform.call(this, null, params); | ||
var as = _.as || ['startAngle', 'endAngle'], | ||
startAngle = as[0], | ||
endAngle = as[1], | ||
field = _.field || vegaUtil.one, | ||
start = _.startAngle || 0, | ||
stop = _.endAngle != null ? _.endAngle : 2 * Math.PI, | ||
data = pulse.source, | ||
values = data.map(field), | ||
n = values.length, | ||
a = start, | ||
k = (stop - start) / sum(values), | ||
index = range(n), | ||
i, | ||
t, | ||
v; | ||
startAngle = as[0], | ||
endAngle = as[1], | ||
field = _.field || vegaUtil.one, | ||
start = _.startAngle || 0, | ||
stop = _.endAngle != null ? _.endAngle : 2 * Math.PI, | ||
data = pulse.source, | ||
values = data.map(field), | ||
n = values.length, | ||
a = start, | ||
k = (stop - start) / sum(values), | ||
index = range(n), | ||
i, | ||
t, | ||
v; | ||
if (_.sort) { | ||
index.sort((a, b) => values[a] - values[b]); | ||
} | ||
for (i = 0; i < n; ++i) { | ||
@@ -662,7 +597,5 @@ v = values[index[i]]; | ||
} | ||
this.value = values; | ||
return pulse.reflow(_.modified()).modifies(as); | ||
} | ||
}); | ||
@@ -676,5 +609,3 @@ | ||
var prototype = Object.create(parent.prototype); | ||
for (var key in definition) prototype[key] = definition[key]; | ||
return prototype; | ||
@@ -687,11 +618,11 @@ } | ||
var reI = "\\s*([+-]?\\d+)\\s*", | ||
reN = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*", | ||
reP = "\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*", | ||
reHex = /^#([0-9a-f]{3,8})$/, | ||
reRgbInteger = new RegExp("^rgb\\(" + [reI, reI, reI] + "\\)$"), | ||
reRgbPercent = new RegExp("^rgb\\(" + [reP, reP, reP] + "\\)$"), | ||
reRgbaInteger = new RegExp("^rgba\\(" + [reI, reI, reI, reN] + "\\)$"), | ||
reRgbaPercent = new RegExp("^rgba\\(" + [reP, reP, reP, reN] + "\\)$"), | ||
reHslPercent = new RegExp("^hsl\\(" + [reN, reP, reP] + "\\)$"), | ||
reHslaPercent = new RegExp("^hsla\\(" + [reN, reP, reP, reN] + "\\)$"); | ||
reN = "\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*", | ||
reP = "\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*", | ||
reHex = /^#([0-9a-f]{3,8})$/, | ||
reRgbInteger = new RegExp(`^rgb\\(${reI},${reI},${reI}\\)$`), | ||
reRgbPercent = new RegExp(`^rgb\\(${reP},${reP},${reP}\\)$`), | ||
reRgbaInteger = new RegExp(`^rgba\\(${reI},${reI},${reI},${reN}\\)$`), | ||
reRgbaPercent = new RegExp(`^rgba\\(${reP},${reP},${reP},${reN}\\)$`), | ||
reHslPercent = new RegExp(`^hsl\\(${reN},${reP},${reP}\\)$`), | ||
reHslaPercent = new RegExp(`^hsla\\(${reN},${reP},${reP},${reN}\\)$`); | ||
var named = { | ||
@@ -848,6 +779,6 @@ aliceblue: 0xf0f8ff, | ||
define(Color, color, { | ||
copy: function (channels) { | ||
copy(channels) { | ||
return Object.assign(new this.constructor(), this, channels); | ||
}, | ||
displayable: function () { | ||
displayable() { | ||
return this.rgb().displayable(); | ||
@@ -858,2 +789,3 @@ }, | ||
formatHex: color_formatHex, | ||
formatHex8: color_formatHex8, | ||
formatHsl: color_formatHsl, | ||
@@ -863,15 +795,14 @@ formatRgb: color_formatRgb, | ||
}); | ||
function color_formatHex() { | ||
return this.rgb().formatHex(); | ||
} | ||
function color_formatHex8() { | ||
return this.rgb().formatHex8(); | ||
} | ||
function color_formatHsl() { | ||
return hslConvert(this).formatHsl(); | ||
} | ||
function color_formatRgb() { | ||
return this.rgb().formatRgb(); | ||
} | ||
function color(format) { | ||
@@ -894,7 +825,5 @@ var m, l; | ||
} | ||
function rgbn(n) { | ||
return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1); | ||
} | ||
function rgba(r, g, b, a) { | ||
@@ -904,3 +833,2 @@ if (a <= 0) r = g = b = NaN; | ||
} | ||
function rgbConvert(o) { | ||
@@ -922,14 +850,17 @@ if (!(o instanceof Color)) o = color(o); | ||
define(Rgb, rgb$1, extend(Color, { | ||
brighter: function (k) { | ||
brighter(k) { | ||
k = k == null ? brighter : Math.pow(brighter, k); | ||
return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity); | ||
}, | ||
darker: function (k) { | ||
darker(k) { | ||
k = k == null ? darker : Math.pow(darker, k); | ||
return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity); | ||
}, | ||
rgb: function () { | ||
rgb() { | ||
return this; | ||
}, | ||
displayable: function () { | ||
clamp() { | ||
return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity)); | ||
}, | ||
displayable() { | ||
return -0.5 <= this.r && this.r < 255.5 && -0.5 <= this.g && this.g < 255.5 && -0.5 <= this.b && this.b < 255.5 && 0 <= this.opacity && this.opacity <= 1; | ||
@@ -940,21 +871,26 @@ }, | ||
formatHex: rgb_formatHex, | ||
formatHex8: rgb_formatHex8, | ||
formatRgb: rgb_formatRgb, | ||
toString: rgb_formatRgb | ||
})); | ||
function rgb_formatHex() { | ||
return "#" + hex(this.r) + hex(this.g) + hex(this.b); | ||
return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`; | ||
} | ||
function rgb_formatHex8() { | ||
return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`; | ||
} | ||
function rgb_formatRgb() { | ||
var a = this.opacity; | ||
a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a)); | ||
return (a === 1 ? "rgb(" : "rgba(") + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + ", " + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + ", " + Math.max(0, Math.min(255, Math.round(this.b) || 0)) + (a === 1 ? ")" : ", " + a + ")"); | ||
const a = clampa(this.opacity); | ||
return `${a === 1 ? "rgb(" : "rgba("}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? ")" : `, ${a})`}`; | ||
} | ||
function clampa(opacity) { | ||
return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity)); | ||
} | ||
function clampi(value) { | ||
return Math.max(0, Math.min(255, Math.round(value) || 0)); | ||
} | ||
function hex(value) { | ||
value = Math.max(0, Math.min(255, Math.round(value) || 0)); | ||
value = clampi(value); | ||
return (value < 16 ? "0" : "") + value.toString(16); | ||
} | ||
function hsla(h, s, l, a) { | ||
@@ -964,3 +900,2 @@ if (a <= 0) h = s = l = NaN;else if (l <= 0 || l >= 1) h = s = NaN;else if (s <= 0) h = NaN; | ||
} | ||
function hslConvert(o) { | ||
@@ -973,10 +908,9 @@ if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity); | ||
var r = o.r / 255, | ||
g = o.g / 255, | ||
b = o.b / 255, | ||
min = Math.min(r, g, b), | ||
max = Math.max(r, g, b), | ||
h = NaN, | ||
s = max - min, | ||
l = (max + min) / 2; | ||
g = o.g / 255, | ||
b = o.b / 255, | ||
min = Math.min(r, g, b), | ||
max = Math.max(r, g, b), | ||
h = NaN, | ||
s = max - min, | ||
l = (max + min) / 2; | ||
if (s) { | ||
@@ -989,3 +923,2 @@ if (r === max) h = (g - b) / s + (g < b) * 6;else if (g === max) h = (b - r) / s + 2;else h = (r - g) / s + 4; | ||
} | ||
return new Hsl(h, s, l, o.opacity); | ||
@@ -996,3 +929,2 @@ } | ||
} | ||
function Hsl(h, s, l, opacity) { | ||
@@ -1004,31 +936,39 @@ this.h = +h; | ||
} | ||
define(Hsl, hsl, extend(Color, { | ||
brighter: function (k) { | ||
brighter(k) { | ||
k = k == null ? brighter : Math.pow(brighter, k); | ||
return new Hsl(this.h, this.s, this.l * k, this.opacity); | ||
}, | ||
darker: function (k) { | ||
darker(k) { | ||
k = k == null ? darker : Math.pow(darker, k); | ||
return new Hsl(this.h, this.s, this.l * k, this.opacity); | ||
}, | ||
rgb: function () { | ||
rgb() { | ||
var h = this.h % 360 + (this.h < 0) * 360, | ||
s = isNaN(h) || isNaN(this.s) ? 0 : this.s, | ||
l = this.l, | ||
m2 = l + (l < 0.5 ? l : 1 - l) * s, | ||
m1 = 2 * l - m2; | ||
s = isNaN(h) || isNaN(this.s) ? 0 : this.s, | ||
l = this.l, | ||
m2 = l + (l < 0.5 ? l : 1 - l) * s, | ||
m1 = 2 * l - m2; | ||
return new Rgb(hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2), hsl2rgb(h, m1, m2), hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2), this.opacity); | ||
}, | ||
displayable: function () { | ||
clamp() { | ||
return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity)); | ||
}, | ||
displayable() { | ||
return (0 <= this.s && this.s <= 1 || isNaN(this.s)) && 0 <= this.l && this.l <= 1 && 0 <= this.opacity && this.opacity <= 1; | ||
}, | ||
formatHsl: function () { | ||
var a = this.opacity; | ||
a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a)); | ||
return (a === 1 ? "hsl(" : "hsla(") + (this.h || 0) + ", " + (this.s || 0) * 100 + "%, " + (this.l || 0) * 100 + "%" + (a === 1 ? ")" : ", " + a + ")"); | ||
formatHsl() { | ||
const a = clampa(this.opacity); | ||
return `${a === 1 ? "hsl(" : "hsla("}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? ")" : `, ${a})`}`; | ||
} | ||
})); | ||
function clamph(value) { | ||
value = (value || 0) % 360; | ||
return value < 0 ? value + 360 : value; | ||
} | ||
function clampt(value) { | ||
return Math.max(0, Math.min(1, value || 0)); | ||
} | ||
/* From FvD 13.37, CSS Color Module Level 3 */ | ||
function hsl2rgb(h, m1, m2) { | ||
@@ -1045,3 +985,2 @@ return (h < 60 ? m1 + (m2 - m1) * h / 60 : h < 180 ? m2 : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60 : m1) * 255; | ||
} | ||
function exponential(a, b, y) { | ||
@@ -1064,8 +1003,7 @@ return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function (t) { | ||
var color = gamma(y); | ||
function rgb(start, end) { | ||
var r = color((start = rgb$1(start)).r, (end = rgb$1(end)).r), | ||
g = color(start.g, end.g), | ||
b = color(start.b, end.b), | ||
opacity = nogamma(start.opacity, end.opacity); | ||
g = color(start.g, end.g), | ||
b = color(start.b, end.b), | ||
opacity = nogamma(start.opacity, end.opacity); | ||
return function (t) { | ||
@@ -1079,3 +1017,2 @@ start.r = r(t); | ||
} | ||
rgb.gamma = rgbGamma; | ||
@@ -1088,7 +1025,6 @@ return rgb; | ||
var n = a ? Math.min(b.length, a.length) : 0, | ||
c = b.slice(), | ||
i; | ||
c = b.slice(), | ||
i; | ||
return function (t) { | ||
for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t; | ||
return c; | ||
@@ -1103,14 +1039,10 @@ }; | ||
var nb = b ? b.length : 0, | ||
na = a ? Math.min(nb, a.length) : 0, | ||
x = new Array(na), | ||
c = new Array(nb), | ||
i; | ||
na = a ? Math.min(nb, a.length) : 0, | ||
x = new Array(na), | ||
c = new Array(nb), | ||
i; | ||
for (i = 0; i < na; ++i) x[i] = interpolate(a[i], b[i]); | ||
for (; i < nb; ++i) c[i] = b[i]; | ||
return function (t) { | ||
for (i = 0; i < na; ++i) c[i] = x[i](t); | ||
return c; | ||
@@ -1135,7 +1067,6 @@ }; | ||
var i = {}, | ||
c = {}, | ||
k; | ||
c = {}, | ||
k; | ||
if (a === null || typeof a !== "object") a = {}; | ||
if (b === null || typeof b !== "object") b = {}; | ||
for (k in b) { | ||
@@ -1148,6 +1079,4 @@ if (k in a) { | ||
} | ||
return function (t) { | ||
for (k in i) c[k] = i[k](t); | ||
return c; | ||
@@ -1158,4 +1087,3 @@ }; | ||
var reA = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g, | ||
reB = new RegExp(reA.source, "g"); | ||
reB = new RegExp(reA.source, "g"); | ||
function zero(b) { | ||
@@ -1166,3 +1094,2 @@ return function () { | ||
} | ||
function one(b) { | ||
@@ -1173,21 +1100,21 @@ return function (t) { | ||
} | ||
function string (a, b) { | ||
var bi = reA.lastIndex = reB.lastIndex = 0, | ||
// scan index for next number in b | ||
am, | ||
// current match in a | ||
bm, | ||
// current match in b | ||
bs, | ||
// string preceding current number in b, if any | ||
i = -1, | ||
// index in s | ||
s = [], | ||
// string constants and placeholders | ||
q = []; // number interpolators | ||
// scan index for next number in b | ||
am, | ||
// current match in a | ||
bm, | ||
// current match in b | ||
bs, | ||
// string preceding current number in b, if any | ||
i = -1, | ||
// index in s | ||
s = [], | ||
// string constants and placeholders | ||
q = []; // number interpolators | ||
// Coerce inputs to strings. | ||
a = a + "", b = b + ""; | ||
a = a + "", b = b + ""; // Interpolate pairs of numbers in a & b. | ||
// Interpolate pairs of numbers in a & b. | ||
while ((am = reA.exec(a)) && (bm = reB.exec(b))) { | ||
@@ -1200,3 +1127,2 @@ if ((bs = bm.index) > bi) { | ||
} | ||
if ((am = am[0]) === (bm = bm[0])) { | ||
@@ -1214,7 +1140,6 @@ // numbers in a & b match | ||
} | ||
bi = reB.lastIndex; | ||
} // Add remains of b. | ||
} | ||
// Add remains of b. | ||
if (bi < b.length) { | ||
@@ -1224,9 +1149,8 @@ bs = b.slice(bi); | ||
else s[++i] = bs; | ||
} // Special optimization for only a single match. | ||
} | ||
// Special optimization for only a single match. | ||
// Otherwise, interpolate each of the numbers and rejoin the string. | ||
return s.length < 2 ? q[0] ? one(q[0].x) : zero(b) : (b = q.length, function (t) { | ||
for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t); | ||
return s.join(""); | ||
@@ -1238,3 +1162,3 @@ }); | ||
var t = typeof b, | ||
c; | ||
c; | ||
return b == null || t === "boolean" ? constant(b) : (t === "number" ? number : t === "string" ? (c = color(b)) ? (b = c, rgb) : string : b instanceof color ? rgb : b instanceof Date ? date : isNumberArray(b) ? numberArray : Array.isArray(b) ? genericArray : typeof b.valueOf !== "function" && typeof b.toString !== "function" || isNaN(b) ? object : number)(a, b); | ||
@@ -1250,3 +1174,2 @@ } | ||
const DEFAULT_COUNT = 5; | ||
function includeZero(scale) { | ||
@@ -1256,8 +1179,7 @@ const type = scale.type; | ||
} | ||
function includePad(type) { | ||
return vegaScale.isContinuous(type) && type !== vegaScale.Sequential; | ||
} | ||
const SKIP = vegaUtil.toSet(['set', 'modified', 'clear', 'type', 'scheme', 'schemeExtent', 'schemeCount', 'domain', 'domainMin', 'domainMid', 'domainMax', 'domainRaw', 'domainImplicit', 'nice', 'zero', 'bins', 'range', 'rangeStep', 'round', 'reverse', 'interpolate', 'interpolateGamma']); | ||
const SKIP = vegaUtil.toSet(['set', 'modified', 'clear', 'type', 'scheme', 'schemeExtent', 'schemeCount', 'domain', 'domainMin', 'domainMid', 'domainMax', 'domainRaw', 'domainImplicit', 'nice', 'zero', 'bins', 'range', 'rangeStep', 'round', 'reverse', 'interpolate', 'interpolateGamma']); | ||
/** | ||
@@ -1268,3 +1190,2 @@ * Maintains a scale function mapping data values to visual channels. | ||
*/ | ||
function Scale(params) { | ||
@@ -1274,32 +1195,28 @@ vegaDataflow.Transform.call(this, null, params); | ||
} | ||
vegaUtil.inherits(Scale, vegaDataflow.Transform, { | ||
transform(_, pulse) { | ||
var df = pulse.dataflow, | ||
scale = this.value, | ||
key = scaleKey(_); | ||
scale = this.value, | ||
key = scaleKey(_); | ||
if (!scale || key !== scale.type) { | ||
this.value = scale = vegaScale.scale(key)(); | ||
} | ||
for (key in _) if (!SKIP[key]) { | ||
// padding is a scale property for band/point but not others | ||
if (key === 'padding' && includePad(scale.type)) continue; // invoke scale property setter, raise warning if not found | ||
if (key === 'padding' && includePad(scale.type)) continue; | ||
// invoke scale property setter, raise warning if not found | ||
vegaUtil.isFunction(scale[key]) ? scale[key](_[key]) : df.warn('Unsupported scale property: ' + key); | ||
} | ||
configureRange(scale, _, configureBins(scale, _, configureDomain(scale, _, df))); | ||
return pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS); | ||
} | ||
}); | ||
function scaleKey(_) { | ||
var t = _.type, | ||
d = '', | ||
n; // backwards compatibility pre Vega 5. | ||
d = '', | ||
n; | ||
// backwards compatibility pre Vega 5. | ||
if (t === vegaScale.Sequential) return vegaScale.Sequential + '-' + vegaScale.Linear; | ||
if (isContinuousColor(_)) { | ||
@@ -1309,6 +1226,4 @@ n = _.rawDomain ? _.rawDomain.length : _.domain ? _.domain.length + +(_.domainMid != null) : 0; | ||
} | ||
return (d + t || vegaScale.Linear).toLowerCase(); | ||
} | ||
function isContinuousColor(_) { | ||
@@ -1318,3 +1233,2 @@ const t = _.type; | ||
} | ||
function configureDomain(scale, _, df) { | ||
@@ -1325,16 +1239,16 @@ // check raw domain, if provided use that and exit early | ||
var domain = _.domain, | ||
type = scale.type, | ||
zero = _.zero || _.zero === undefined && includeZero(scale), | ||
n, | ||
mid; | ||
if (!domain) return 0; // adjust continuous domain for minimum pixel padding | ||
type = scale.type, | ||
zero = _.zero || _.zero === undefined && includeZero(scale), | ||
n, | ||
mid; | ||
if (!domain) return 0; | ||
// adjust continuous domain for minimum pixel padding | ||
if (includePad(type) && _.padding && domain[0] !== vegaUtil.peek(domain)) { | ||
domain = padDomain(type, domain, _.range, _.padding, _.exponent, _.constant); | ||
} // adjust domain based on zero, min, max settings | ||
} | ||
// adjust domain based on zero, min, max settings | ||
if (zero || _.domainMin != null || _.domainMax != null || _.domainMid != null) { | ||
n = (domain = domain.slice()).length - 1 || 1; | ||
if (zero) { | ||
@@ -1344,6 +1258,4 @@ if (domain[0] > 0) domain[0] = 0; | ||
} | ||
if (_.domainMin != null) domain[0] = _.domainMin; | ||
if (_.domainMax != null) domain[n] = _.domainMax; | ||
if (_.domainMid != null) { | ||
@@ -1355,21 +1267,21 @@ mid = _.domainMid; | ||
} | ||
} // set the scale domain | ||
} | ||
// set the scale domain | ||
scale.domain(domainCheck(type, domain, df)); | ||
scale.domain(domainCheck(type, domain, df)); // if ordinal scale domain is defined, prevent implicit | ||
// if ordinal scale domain is defined, prevent implicit | ||
// domain construction as side-effect of scale lookup | ||
if (type === vegaScale.Ordinal) { | ||
scale.unknown(_.domainImplicit ? vegaScale.scaleImplicit : undefined); | ||
} // perform 'nice' adjustment as requested | ||
} | ||
// perform 'nice' adjustment as requested | ||
if (_.nice && scale.nice) { | ||
scale.nice(_.nice !== true && vegaScale.tickCount(scale, _.nice) || null); | ||
} // return the cardinality of the domain | ||
} | ||
// return the cardinality of the domain | ||
return domain.length; | ||
} | ||
function rawDomain(scale, raw, df) { | ||
@@ -1383,7 +1295,6 @@ if (raw) { | ||
} | ||
function padDomain(type, domain, range, pad, exponent, constant) { | ||
var span = Math.abs(vegaUtil.peek(range) - range[0]), | ||
frac = span / (span - 2 * pad), | ||
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); | ||
frac = span / (span - 2 * pad), | ||
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); | ||
domain = domain.slice(); | ||
@@ -1394,3 +1305,2 @@ domain[0] = d[0]; | ||
} | ||
function domainCheck(type, domain, df) { | ||
@@ -1401,3 +1311,2 @@ if (vegaScale.isLogarithmic(type)) { | ||
var s = Math.abs(domain.reduce((s, v) => s + (v < 0 ? -1 : v > 0 ? 1 : 0), 0)); | ||
if (s !== domain.length) { | ||
@@ -1407,17 +1316,14 @@ df.warn('Log scale domain includes zero: ' + vegaUtil.stringValue(domain)); | ||
} | ||
return domain; | ||
} | ||
function configureBins(scale, _, count) { | ||
let bins = _.bins; | ||
if (bins && !vegaUtil.isArray(bins)) { | ||
// generate bin boundary array | ||
const domain = scale.domain(), | ||
lo = domain[0], | ||
hi = vegaUtil.peek(domain), | ||
step = bins.step; | ||
lo = domain[0], | ||
hi = vegaUtil.peek(domain), | ||
step = bins.step; | ||
let start = bins.start == null ? lo : bins.start, | ||
stop = bins.stop == null ? hi : bins.stop; | ||
stop = bins.stop == null ? hi : bins.stop; | ||
if (!step) vegaUtil.error('Scale bins parameter missing step property.'); | ||
@@ -1428,3 +1334,2 @@ if (start < lo) start = step * Math.ceil(lo / step); | ||
} | ||
if (bins) { | ||
@@ -1436,5 +1341,5 @@ // assign bin boundaries to scale instance | ||
delete scale.bins; | ||
} // special handling for bin-ordinal scales | ||
} | ||
// special handling for bin-ordinal scales | ||
if (scale.type === vegaScale.BinOrdinal) { | ||
@@ -1449,19 +1354,20 @@ if (!bins) { | ||
} | ||
} // return domain cardinality | ||
} | ||
// return domain cardinality | ||
return count; | ||
} | ||
function configureRange(scale, _, count) { | ||
var type = scale.type, | ||
round = _.round || false, | ||
range = _.range; // if range step specified, calculate full range extent | ||
round = _.round || false, | ||
range = _.range; | ||
// if range step specified, calculate full range extent | ||
if (_.rangeStep != null) { | ||
range = configureRangeStep(type, _, count); | ||
} // else if a range scheme is defined, use that | ||
} | ||
// else if a range scheme is defined, use that | ||
else if (_.scheme) { | ||
range = configureScheme(type, _, count); | ||
if (vegaUtil.isFunction(range)) { | ||
@@ -1474,10 +1380,10 @@ if (scale.interpolator) { | ||
} | ||
} // given a range array for an interpolating scale, convert to interpolator | ||
} | ||
// given a range array for an interpolating scale, convert to interpolator | ||
if (range && vegaScale.isInterpolating(type)) { | ||
return scale.interpolator(vegaScale.interpolateColors(flip(range, _.reverse), _.interpolate, _.interpolateGamma)); | ||
} // configure rounding / interpolation | ||
} | ||
// configure rounding / interpolation | ||
if (range && _.interpolate && scale.interpolate) { | ||
@@ -1490,22 +1396,18 @@ scale.interpolate(vegaScale.interpolate(_.interpolate, _.interpolateGamma)); | ||
} | ||
if (range) scale.range(flip(range, _.reverse)); | ||
} | ||
function configureRangeStep(type, _, count) { | ||
if (type !== vegaScale.Band && type !== vegaScale.Point) { | ||
vegaUtil.error('Only band and point scales support rangeStep.'); | ||
} // calculate full range based on requested step size and padding | ||
} | ||
// calculate full range based on requested step size and padding | ||
var outer = (_.paddingOuter != null ? _.paddingOuter : _.padding) || 0, | ||
inner = type === vegaScale.Point ? 1 : (_.paddingInner != null ? _.paddingInner : _.padding) || 0; | ||
inner = type === vegaScale.Point ? 1 : (_.paddingInner != null ? _.paddingInner : _.padding) || 0; | ||
return [0, _.rangeStep * vegaScale.bandSpace(count, inner, outer)]; | ||
} | ||
function configureScheme(type, _, count) { | ||
var extent = _.schemeExtent, | ||
name, | ||
scheme; | ||
name, | ||
scheme; | ||
if (vegaUtil.isArray(_.scheme)) { | ||
@@ -1517,14 +1419,13 @@ scheme = vegaScale.interpolateColors(_.scheme, _.interpolate, _.interpolateGamma); | ||
if (!scheme) vegaUtil.error(`Unrecognized scheme name: ${_.scheme}`); | ||
} // determine size for potential discrete range | ||
} | ||
// determine size for potential discrete range | ||
count = type === vegaScale.Threshold ? count + 1 : type === vegaScale.BinOrdinal ? count - 1 : type === vegaScale.Quantile || type === vegaScale.Quantize ? +_.schemeCount || DEFAULT_COUNT : 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 | ||
// adjust and/or quantize scheme as appropriate | ||
return vegaScale.isInterpolating(type) ? adjustScheme(scheme, extent, _.reverse) : vegaUtil.isFunction(scheme) ? vegaScale.quantizeInterpolator(adjustScheme(scheme, extent), count) : type === vegaScale.Ordinal ? scheme : scheme.slice(0, count); | ||
} | ||
function adjustScheme(scheme, extent, reverse) { | ||
return vegaUtil.isFunction(scheme) && (extent || reverse) ? vegaScale.interpolateRange(scheme, flip(extent || [0, 1], reverse)) : scheme; | ||
} | ||
function flip(array, reverse) { | ||
@@ -1541,3 +1442,2 @@ return reverse ? array.slice().reverse() : array; | ||
*/ | ||
function SortItems(params) { | ||
@@ -1553,9 +1453,9 @@ vegaDataflow.Transform.call(this, null, params); | ||
} | ||
}); | ||
const Zero = 'zero', | ||
Center = 'center', | ||
Normalize = 'normalize', | ||
DefOutput = ['y0', 'y1']; | ||
Center = 'center', | ||
Normalize = 'normalize', | ||
DefOutput = ['y0', 'y1']; | ||
/** | ||
@@ -1570,3 +1470,2 @@ * Stack layout for visualization elements. | ||
*/ | ||
function Stack(params) { | ||
@@ -1606,29 +1505,27 @@ vegaDataflow.Transform.call(this, null, params); | ||
var as = _.as || DefOutput, | ||
y0 = as[0], | ||
y1 = as[1], | ||
sort = vegaDataflow.stableCompare(_.sort), | ||
field = _.field || vegaUtil.one, | ||
stack = _.offset === Center ? stackCenter : _.offset === Normalize ? stackNormalize : stackZero, | ||
groups, | ||
i, | ||
n, | ||
max; // partition, sum, and sort the stack groups | ||
y0 = as[0], | ||
y1 = as[1], | ||
sort = vegaDataflow.stableCompare(_.sort), | ||
field = _.field || vegaUtil.one, | ||
stack = _.offset === Center ? stackCenter : _.offset === Normalize ? stackNormalize : stackZero, | ||
groups, | ||
i, | ||
n, | ||
max; | ||
groups = partition(pulse.source, _.groupby, sort, field); // compute stack layouts per group | ||
// partition, sum, and sort the stack groups | ||
groups = partition(pulse.source, _.groupby, sort, field); | ||
// compute stack layouts per group | ||
for (i = 0, n = groups.length, max = groups.max; i < n; ++i) { | ||
stack(groups[i], max, field, y0, y1); | ||
} | ||
return pulse.reflow(_.modified()).modifies(as); | ||
} | ||
}); | ||
function stackCenter(group, max, field, y0, y1) { | ||
var last = (max - group.sum) / 2, | ||
m = group.length, | ||
j = 0, | ||
t; | ||
m = group.length, | ||
j = 0, | ||
t; | ||
for (; j < m; ++j) { | ||
@@ -1640,11 +1537,9 @@ t = group[j]; | ||
} | ||
function stackNormalize(group, max, field, y0, y1) { | ||
var scale = 1 / group.sum, | ||
last = 0, | ||
m = group.length, | ||
j = 0, | ||
v = 0, | ||
t; | ||
last = 0, | ||
m = group.length, | ||
j = 0, | ||
v = 0, | ||
t; | ||
for (; j < m; ++j) { | ||
@@ -1656,15 +1551,12 @@ t = group[j]; | ||
} | ||
function stackZero(group, max, field, y0, y1) { | ||
var lastPos = 0, | ||
lastNeg = 0, | ||
m = group.length, | ||
j = 0, | ||
v, | ||
t; | ||
lastNeg = 0, | ||
m = group.length, | ||
j = 0, | ||
v, | ||
t; | ||
for (; j < m; ++j) { | ||
t = group[j]; | ||
v = +field(t); | ||
if (v < 0) { | ||
@@ -1679,17 +1571,16 @@ t[y0] = lastNeg; | ||
} | ||
function partition(data, groupby, sort, field) { | ||
var groups = [], | ||
get = f => f(t), | ||
map, | ||
i, | ||
n, | ||
m, | ||
t, | ||
k, | ||
g, | ||
s, | ||
max; // partition data points into stack groups | ||
get = f => f(t), | ||
map, | ||
i, | ||
n, | ||
m, | ||
t, | ||
k, | ||
g, | ||
s, | ||
max; | ||
// partition data points into stack groups | ||
if (groupby == null) { | ||
@@ -1702,3 +1593,2 @@ groups.push(data.slice()); | ||
g = map[k]; | ||
if (!g) { | ||
@@ -1708,15 +1598,12 @@ map[k] = g = []; | ||
} | ||
g.push(t); | ||
} | ||
} // compute sums of groups, sort groups as needed | ||
} | ||
// compute sums of groups, sort groups as needed | ||
for (k = 0, max = 0, m = groups.length; k < m; ++k) { | ||
g = groups[k]; | ||
for (i = 0, s = 0, n = g.length; i < n; ++i) { | ||
s += Math.abs(field(g[i])); | ||
} | ||
g.sum = s; | ||
@@ -1726,3 +1613,2 @@ if (s > max) max = s; | ||
} | ||
groups.max = max; | ||
@@ -1742,4 +1628,2 @@ return groups; | ||
Object.defineProperty(exports, '__esModule', { value: true }); | ||
})); |
@@ -1,2 +0,2 @@ | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vega-dataflow"),require("vega-scale"),require("vega-util")):"function"==typeof define&&define.amd?define(["exports","vega-dataflow","vega-scale","vega-util"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).vega={},e.vega,e.vega,e.vega)}(this,(function(e,t,n,r){"use strict";function a(e){t.Transform.call(this,null,e)}function i(e){t.Transform.call(this,null,e)}function o(){return t.ingest({})}function l(e){t.Transform.call(this,null,e)}function s(e){t.Transform.call(this,[],e)}r.inherits(a,t.Transform,{transform(e,r){if(this.value&&!e.modified())return r.StopPropagation;var a=r.dataflow.locale(),i=r.fork(r.NO_SOURCE|r.NO_FIELDS),o=this.value,l=e.scale,s=null==e.count?e.values?e.values.length:10:e.count,u=n.tickCount(l,s,e.minstep),c=e.format||n.tickFormat(a,l,u,e.formatSpecifier,e.formatType,!!e.values),d=e.values?n.validTicks(l,e.values,u):n.tickValues(l,u);return o&&(i.rem=o),o=d.map(((e,n)=>t.ingest({index:n/(d.length-1||1),value:e,label:c(e)}))),e.extra&&o.length&&o.push(t.ingest({index:-1,extra:{value:o[0].value},label:""})),i.source=o,i.add=o,this.value=o,i}}),r.inherits(i,t.Transform,{transform(e,n){var a=n.dataflow,i=n.fork(n.NO_SOURCE|n.NO_FIELDS),l=e.item||o,s=e.key||t.tupleid,u=this.value;return r.isArray(i.encode)&&(i.encode=null),u&&(e.modified("key")||n.modified(s))&&r.error("DataJoin does not support modified key function or fields."),u||(n=n.addAll(),this.value=u=function(e){const t=r.fastmap().test((e=>e.exit));return t.lookup=n=>t.get(e(n)),t}(s)),n.visit(n.ADD,(e=>{const t=s(e);let n=u.get(t);n?n.exit?(u.empty--,i.add.push(n)):i.mod.push(n):(n=l(e),u.set(t,n),i.add.push(n)),n.datum=e,n.exit=!1})),n.visit(n.MOD,(e=>{const t=s(e),n=u.get(t);n&&(n.datum=e,i.mod.push(n))})),n.visit(n.REM,(e=>{const t=s(e),n=u.get(t);e!==n.datum||n.exit||(i.rem.push(n),n.exit=!0,++u.empty)})),n.changed(n.ADD_MOD)&&i.modifies("datum"),(n.clean()||e.clean&&u.empty>a.cleanThreshold)&&a.runAfter(u.clean),i}}),r.inherits(l,t.Transform,{transform(e,t){var n=t.fork(t.ADD_REM),a=e.mod||!1,i=e.encoders,o=t.encode;if(r.isArray(o)){if(!n.changed()&&!o.every((e=>i[e])))return t.StopPropagation;o=o[0],n.encode=null}var l="enter"===o,s=i.update||r.falsy,u=i.enter||r.falsy,c=i.exit||r.falsy,d=(o&&!l?i[o]:s)||r.falsy;if(t.changed(t.ADD)&&(t.visit(t.ADD,(t=>{u(t,e),s(t,e)})),n.modifies(u.output),n.modifies(s.output),d!==r.falsy&&d!==s&&(t.visit(t.ADD,(t=>{d(t,e)})),n.modifies(d.output))),t.changed(t.REM)&&c!==r.falsy&&(t.visit(t.REM,(t=>{c(t,e)})),n.modifies(c.output)),l||d!==r.falsy){const r=t.MOD|(e.modified()?t.REFLOW:0);l?(t.visit(r,(t=>{const r=u(t,e)||a;(d(t,e)||r)&&n.mod.push(t)})),n.mod.length&&n.modifies(u.output)):t.visit(r,(t=>{(d(t,e)||a)&&n.mod.push(t)})),n.mod.length&&n.modifies(d.output)}return n.changed()?n:t.StopPropagation}}),r.inherits(s,t.Transform,{transform(e,a){if(null!=this.value&&!e.modified())return a.StopPropagation;var i,o,l,s,u,c=a.dataflow.locale(),d=a.fork(a.NO_SOURCE|a.NO_FIELDS),f=this.value,h=e.type||n.SymbolLegend,m=e.scale,g=+e.limit,p=n.tickCount(m,null==e.count?5:e.count,e.minstep),y=!!e.values||h===n.SymbolLegend,v=e.format||n.labelFormat(c,m,p,h,e.formatSpecifier,e.formatType,y),b=e.values||n.labelValues(m,p);return f&&(d.rem=f),h===n.SymbolLegend?(g&&b.length>g?(a.dataflow.warn("Symbol legend count exceeds limit, filtering items."),f=b.slice(0,g-1),u=!0):f=b,r.isFunction(l=e.size)?(e.values||0!==m(f[0])||(f=f.slice(1)),s=f.reduce(((t,n)=>Math.max(t,l(n,e))),0)):l=r.constant(s=l||8),f=f.map(((n,r)=>t.ingest({index:r,label:v(n,r,f),value:n,offset:s,size:l(n,e)}))),u&&(u=b[f.length],f.push(t.ingest({index:f.length,label:"…".concat(b.length-f.length," entries"),value:u,offset:s,size:l(u,e)})))):h===n.GradientLegend?(i=m.domain(),o=n.scaleFraction(m,i[0],r.peek(i)),b.length<3&&!e.values&&i[0]!==r.peek(i)&&(b=[i[0],r.peek(i)]),f=b.map(((e,n)=>t.ingest({index:n,label:v(e,n,b),value:e,perc:o(e)})))):(l=b.length-1,o=n.labelFraction(m),f=b.map(((e,n)=>t.ingest({index:n,label:v(e,n,b),value:e,perc:n?o(e):0,perc2:n===l?1:o(b[n+1])})))),d.source=f,d.add=f,this.value=f,d}});const u=e=>e.source.x,c=e=>e.source.y,d=e=>e.target.x,f=e=>e.target.y;function h(e){t.Transform.call(this,{},e)}h.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"}]},r.inherits(h,t.Transform,{transform(e,t){var n=e.sourceX||u,a=e.sourceY||c,i=e.targetX||d,o=e.targetY||f,l=e.as||"path",s=e.orient||"vertical",h=e.shape||"line",m=y.get(h+"-"+s)||y.get(h);return m||r.error("LinkPath unsupported type: "+e.shape+(e.orient?"-"+e.orient:"")),t.visit(t.SOURCE,(e=>{e[l]=m(n(e),a(e),i(e),o(e))})),t.reflow(e.modified()).modifies(l)}});const m=(e,t,n,r)=>"M"+e+","+t+"L"+n+","+r,g=(e,t,n,r)=>{var a=n-e,i=r-t,o=Math.sqrt(a*a+i*i)/2;return"M"+e+","+t+"A"+o+","+o+" "+180*Math.atan2(i,a)/Math.PI+" 0 1 "+n+","+r},p=(e,t,n,r)=>{const a=n-e,i=r-t,o=.2*(a+i),l=.2*(i-a);return"M"+e+","+t+"C"+(e+o)+","+(t+l)+" "+(n+l)+","+(r-o)+" "+n+","+r},y=r.fastmap({line:m,"line-radial":(e,t,n,r)=>m(t*Math.cos(e),t*Math.sin(e),r*Math.cos(n),r*Math.sin(n)),arc:g,"arc-radial":(e,t,n,r)=>g(t*Math.cos(e),t*Math.sin(e),r*Math.cos(n),r*Math.sin(n)),curve:p,"curve-radial":(e,t,n,r)=>p(t*Math.cos(e),t*Math.sin(e),r*Math.cos(n),r*Math.sin(n)),"orthogonal-horizontal":(e,t,n,r)=>"M"+e+","+t+"V"+r+"H"+n,"orthogonal-vertical":(e,t,n,r)=>"M"+e+","+t+"H"+n+"V"+r,"orthogonal-radial":(e,t,n,r)=>{const a=Math.cos(e),i=Math.sin(e),o=Math.cos(n),l=Math.sin(n);return"M"+t*a+","+t*i+"A"+t+","+t+" 0 0,"+((Math.abs(n-e)>Math.PI?n<=e:n>e)?1:0)+" "+t*o+","+t*l+"L"+r*o+","+r*l},"diagonal-horizontal":(e,t,n,r)=>{const a=(e+n)/2;return"M"+e+","+t+"C"+a+","+t+" "+a+","+r+" "+n+","+r},"diagonal-vertical":(e,t,n,r)=>{const a=(t+r)/2;return"M"+e+","+t+"C"+e+","+a+" "+n+","+a+" "+n+","+r},"diagonal-radial":(e,t,n,r)=>{const a=Math.cos(e),i=Math.sin(e),o=Math.cos(n),l=Math.sin(n),s=(t+r)/2;return"M"+t*a+","+t*i+"C"+s*a+","+s*i+" "+s*o+","+s*l+" "+r*o+","+r*l}});function v(e,t,n){e=+e,t=+t,n=(a=arguments.length)<2?(t=e,e=0,1):a<3?1:+n;for(var r=-1,a=0|Math.max(0,Math.ceil((t-e)/n)),i=new Array(a);++r<a;)i[r]=e+r*n;return i}function b(e){t.Transform.call(this,null,e)}function M(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function w(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function x(){}b.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"]}]},r.inherits(b,t.Transform,{transform(e,t){var n,a,i,o=e.as||["startAngle","endAngle"],l=o[0],s=o[1],u=e.field||r.one,c=e.startAngle||0,d=null!=e.endAngle?e.endAngle:2*Math.PI,f=t.source,h=f.map(u),m=h.length,g=c,p=(d-c)/function(e,t){let n=0;if(void 0===t)for(let t of e)(t=+t)&&(n+=t);else{let r=-1;for(let a of e)(a=+t(a,++r,e))&&(n+=a)}return n}(h),y=v(m);for(e.sort&&y.sort(((e,t)=>h[e]-h[t])),n=0;n<m;++n)i=h[y[n]],(a=f[y[n]])[l]=g,a[s]=g+=i*p;return this.value=h,t.reflow(e.modified()).modifies(o)}});var k=.7,S=1/k,N="\\s*([+-]?\\d+)\\s*",D="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",A="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",O=/^#([0-9a-f]{3,8})$/,T=new RegExp("^rgb\\("+[N,N,N]+"\\)$"),E=new RegExp("^rgb\\("+[A,A,A]+"\\)$"),R=new RegExp("^rgba\\("+[N,N,N,D]+"\\)$"),C=new RegExp("^rgba\\("+[A,A,A,D]+"\\)$"),L=new RegExp("^hsl\\("+[D,A,A]+"\\)$"),q=new RegExp("^hsla\\("+[D,A,A,D]+"\\)$"),z={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function I(){return this.rgb().formatHex()}function P(){return this.rgb().formatRgb()}function F(e){var t,n;return e=(e+"").trim().toLowerCase(),(t=O.exec(e))?(n=t[1].length,t=parseInt(t[1],16),6===n?_(t):3===n?new V(t>>8&15|t>>4&240,t>>4&15|240&t,(15&t)<<4|15&t,1):8===n?j(t>>24&255,t>>16&255,t>>8&255,(255&t)/255):4===n?j(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|240&t,((15&t)<<4|15&t)/255):null):(t=T.exec(e))?new V(t[1],t[2],t[3],1):(t=E.exec(e))?new V(255*t[1]/100,255*t[2]/100,255*t[3]/100,1):(t=R.exec(e))?j(t[1],t[2],t[3],t[4]):(t=C.exec(e))?j(255*t[1]/100,255*t[2]/100,255*t[3]/100,t[4]):(t=L.exec(e))?X(t[1],t[2]/100,t[3]/100,1):(t=q.exec(e))?X(t[1],t[2]/100,t[3]/100,t[4]):z.hasOwnProperty(e)?_(z[e]):"transparent"===e?new V(NaN,NaN,NaN,0):null}function _(e){return new V(e>>16&255,e>>8&255,255&e,1)}function j(e,t,n,r){return r<=0&&(e=t=n=NaN),new V(e,t,n,r)}function H(e){return e instanceof x||(e=F(e)),e?new V((e=e.rgb()).r,e.g,e.b,e.opacity):new V}function U(e,t,n,r){return 1===arguments.length?H(e):new V(e,t,n,null==r?1:r)}function V(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}function $(){return"#"+B(this.r)+B(this.g)+B(this.b)}function G(){var e=this.opacity;return(1===(e=isNaN(e)?1:Math.max(0,Math.min(1,e)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===e?")":", "+e+")")}function B(e){return((e=Math.max(0,Math.min(255,Math.round(e)||0)))<16?"0":"")+e.toString(16)}function X(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new Q(e,t,n,r)}function Y(e){if(e instanceof Q)return new Q(e.h,e.s,e.l,e.opacity);if(e instanceof x||(e=F(e)),!e)return new Q;if(e instanceof Q)return e;var t=(e=e.rgb()).r/255,n=e.g/255,r=e.b/255,a=Math.min(t,n,r),i=Math.max(t,n,r),o=NaN,l=i-a,s=(i+a)/2;return l?(o=t===i?(n-r)/l+6*(n<r):n===i?(r-t)/l+2:(t-n)/l+4,l/=s<.5?i+a:2-i-a,o*=60):l=s>0&&s<1?0:o,new Q(o,l,s,e.opacity)}function Q(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}function J(e,t,n){return 255*(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)}M(x,F,{copy:function(e){return Object.assign(new this.constructor,this,e)},displayable:function(){return this.rgb().displayable()},hex:I,formatHex:I,formatHsl:function(){return Y(this).formatHsl()},formatRgb:P,toString:P}),M(V,U,w(x,{brighter:function(e){return e=null==e?S:Math.pow(S,e),new V(this.r*e,this.g*e,this.b*e,this.opacity)},darker:function(e){return e=null==e?k:Math.pow(k,e),new V(this.r*e,this.g*e,this.b*e,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:$,formatHex:$,formatRgb:G,toString:G})),M(Q,(function(e,t,n,r){return 1===arguments.length?Y(e):new Q(e,t,n,null==r?1:r)}),w(x,{brighter:function(e){return e=null==e?S:Math.pow(S,e),new Q(this.h,this.s,this.l*e,this.opacity)},darker:function(e){return e=null==e?k:Math.pow(k,e),new Q(this.h,this.s,this.l*e,this.opacity)},rgb:function(){var e=this.h%360+360*(this.h<0),t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,a=2*n-r;return new V(J(e>=240?e-240:e+120,a,r),J(e,a,r),J(e<120?e+240:e-120,a,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var e=this.opacity;return(1===(e=isNaN(e)?1:Math.max(0,Math.min(1,e)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===e?")":", "+e+")")}}));var W=e=>()=>e;function K(e){return 1==(e=+e)?Z:function(t,n){return n-t?function(e,t,n){return e=Math.pow(e,n),t=Math.pow(t,n)-e,n=1/n,function(r){return Math.pow(e+r*t,n)}}(t,n,e):W(isNaN(t)?n:t)}}function Z(e,t){var n=t-e;return n?function(e,t){return function(n){return e+n*t}}(e,n):W(isNaN(e)?t:e)}var ee=function e(t){var n=K(t);function r(e,t){var r=n((e=U(e)).r,(t=U(t)).r),a=n(e.g,t.g),i=n(e.b,t.b),o=Z(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=a(t),e.b=i(t),e.opacity=o(t),e+""}}return r.gamma=e,r}(1);function te(e,t){t||(t=[]);var n,r=e?Math.min(t.length,e.length):0,a=t.slice();return function(i){for(n=0;n<r;++n)a[n]=e[n]*(1-i)+t[n]*i;return a}}function ne(e,t){var n,r=t?t.length:0,a=e?Math.min(r,e.length):0,i=new Array(a),o=new Array(r);for(n=0;n<a;++n)i[n]=ue(e[n],t[n]);for(;n<r;++n)o[n]=t[n];return function(e){for(n=0;n<a;++n)o[n]=i[n](e);return o}}function re(e,t){var n=new Date;return e=+e,t=+t,function(r){return n.setTime(e*(1-r)+t*r),n}}function ae(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}function ie(e,t){var n,r={},a={};for(n in null!==e&&"object"==typeof e||(e={}),null!==t&&"object"==typeof t||(t={}),t)n in e?r[n]=ue(e[n],t[n]):a[n]=t[n];return function(e){for(n in r)a[n]=r[n](e);return a}}var oe=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,le=new RegExp(oe.source,"g");function se(e,t){var n,r,a,i=oe.lastIndex=le.lastIndex=0,o=-1,l=[],s=[];for(e+="",t+="";(n=oe.exec(e))&&(r=le.exec(t));)(a=r.index)>i&&(a=t.slice(i,a),l[o]?l[o]+=a:l[++o]=a),(n=n[0])===(r=r[0])?l[o]?l[o]+=r:l[++o]=r:(l[++o]=null,s.push({i:o,x:ae(n,r)})),i=le.lastIndex;return i<t.length&&(a=t.slice(i),l[o]?l[o]+=a:l[++o]=a),l.length<2?s[0]?function(e){return function(t){return e(t)+""}}(s[0].x):function(e){return function(){return e}}(t):(t=s.length,function(e){for(var n,r=0;r<t;++r)l[(n=s[r]).i]=n.x(e);return l.join("")})}function ue(e,t){var n,r,a=typeof t;return null==t||"boolean"===a?W(t):("number"===a?ae:"string"===a?(n=F(t))?(t=n,ee):se:t instanceof F?ee:t instanceof Date?re:(r=t,!ArrayBuffer.isView(r)||r instanceof DataView?Array.isArray(t)?ne:"function"!=typeof t.valueOf&&"function"!=typeof t.toString||isNaN(t)?ie:ae:te))(e,t)}function ce(e,t){return e=+e,t=+t,function(n){return Math.round(e*(1-n)+t*n)}}function de(e){return n.isContinuous(e)&&e!==n.Sequential}const fe=r.toSet(["set","modified","clear","type","scheme","schemeExtent","schemeCount","domain","domainMin","domainMid","domainMax","domainRaw","domainImplicit","nice","zero","bins","range","rangeStep","round","reverse","interpolate","interpolateGamma"]);function he(e){t.Transform.call(this,null,e),this.modified(!0)}function me(e,t,a){n.isLogarithmic(e)&&(Math.abs(t.reduce(((e,t)=>e+(t<0?-1:t>0?1:0)),0))!==t.length&&a.warn("Log scale domain includes zero: "+r.stringValue(t)));return t}function ge(e,t,a){return r.isFunction(e)&&(t||a)?n.interpolateRange(e,pe(t||[0,1],a)):e}function pe(e,t){return t?e.slice().reverse():e}function ye(e){t.Transform.call(this,null,e)}r.inherits(he,t.Transform,{transform(e,t){var a=t.dataflow,i=this.value,o=function(e){var t,a=e.type,i="";if(a===n.Sequential)return n.Sequential+"-"+n.Linear;(function(e){const t=e.type;return n.isContinuous(t)&&t!==n.Time&&t!==n.UTC&&(e.scheme||e.range&&e.range.length&&e.range.every(r.isString))})(e)&&(i=2===(t=e.rawDomain?e.rawDomain.length:e.domain?e.domain.length+ +(null!=e.domainMid):0)?n.Sequential+"-":3===t?n.Diverging+"-":"");return(i+a||n.Linear).toLowerCase()}(e);for(o in i&&o===i.type||(this.value=i=n.scale(o)()),e)if(!fe[o]){if("padding"===o&&de(i.type))continue;r.isFunction(i[o])?i[o](e[o]):a.warn("Unsupported scale property: "+o)}return function(e,t,a){var i=e.type,o=t.round||!1,l=t.range;if(null!=t.rangeStep)l=function(e,t,a){e!==n.Band&&e!==n.Point&&r.error("Only band and point scales support rangeStep.");var i=(null!=t.paddingOuter?t.paddingOuter:t.padding)||0,o=e===n.Point?1:(null!=t.paddingInner?t.paddingInner:t.padding)||0;return[0,t.rangeStep*n.bandSpace(a,o,i)]}(i,t,a);else if(t.scheme&&(l=function(e,t,a){var i,o,l=t.schemeExtent;r.isArray(t.scheme)?o=n.interpolateColors(t.scheme,t.interpolate,t.interpolateGamma):(i=t.scheme.toLowerCase(),(o=n.scheme(i))||r.error("Unrecognized scheme name: ".concat(t.scheme)));return a=e===n.Threshold?a+1:e===n.BinOrdinal?a-1:e===n.Quantile||e===n.Quantize?+t.schemeCount||5:a,n.isInterpolating(e)?ge(o,l,t.reverse):r.isFunction(o)?n.quantizeInterpolator(ge(o,l),a):e===n.Ordinal?o:o.slice(0,a)}(i,t,a),r.isFunction(l))){if(e.interpolator)return e.interpolator(l);r.error("Scale type ".concat(i," does not support interpolating color schemes."))}if(l&&n.isInterpolating(i))return e.interpolator(n.interpolateColors(pe(l,t.reverse),t.interpolate,t.interpolateGamma));l&&t.interpolate&&e.interpolate?e.interpolate(n.interpolate(t.interpolate,t.interpolateGamma)):r.isFunction(e.round)?e.round(o):r.isFunction(e.rangeRound)&&e.interpolate(o?ce:ue);l&&e.range(pe(l,t.reverse))}(i,e,function(e,t,a){let i=t.bins;if(i&&!r.isArray(i)){const t=e.domain(),n=t[0],a=r.peek(t),o=i.step;let l=null==i.start?n:i.start,s=null==i.stop?a:i.stop;o||r.error("Scale bins parameter missing step property."),l<n&&(l=o*Math.ceil(n/o)),s>a&&(s=o*Math.floor(a/o)),i=v(l,s+o/2,o)}i?e.bins=i:e.bins&&delete e.bins;e.type===n.BinOrdinal&&(i?t.domain||t.domainRaw||(e.domain(i),a=i.length):e.bins=e.domain());return a}(i,e,function(e,t,a){const i=function(e,t,n){return t?(e.domain(me(e.type,t,n)),t.length):-1}(e,t.domainRaw,a);if(i>-1)return i;var o,l,s=t.domain,u=e.type,c=t.zero||void 0===t.zero&&function(e){const t=e.type;return!e.bins&&(t===n.Linear||t===n.Pow||t===n.Sqrt)}(e);if(!s)return 0;de(u)&&t.padding&&s[0]!==r.peek(s)&&(s=function(e,t,a,i,o,l){var s=Math.abs(r.peek(a)-a[0]),u=s/(s-2*i),c=e===n.Log?r.zoomLog(t,null,u):e===n.Sqrt?r.zoomPow(t,null,u,.5):e===n.Pow?r.zoomPow(t,null,u,o||1):e===n.Symlog?r.zoomSymlog(t,null,u,l||1):r.zoomLinear(t,null,u);return(t=t.slice())[0]=c[0],t[t.length-1]=c[1],t}(u,s,t.range,t.padding,t.exponent,t.constant));if((c||null!=t.domainMin||null!=t.domainMax||null!=t.domainMid)&&(o=(s=s.slice()).length-1||1,c&&(s[0]>0&&(s[0]=0),s[o]<0&&(s[o]=0)),null!=t.domainMin&&(s[0]=t.domainMin),null!=t.domainMax&&(s[o]=t.domainMax),null!=t.domainMid)){const e=(l=t.domainMid)>s[o]?o+1:l<s[0]?0:o;e!==o&&a.warn("Scale domainMid exceeds domain min or max.",l),s.splice(e,0,l)}e.domain(me(u,s,a)),u===n.Ordinal&&e.unknown(t.domainImplicit?n.scaleImplicit:void 0);t.nice&&e.nice&&e.nice(!0!==t.nice&&n.tickCount(e,t.nice)||null);return s.length}(i,e,a))),t.fork(t.NO_SOURCE|t.NO_FIELDS)}}),r.inherits(ye,t.Transform,{transform(e,n){const r=e.modified("sort")||n.changed(n.ADD)||n.modified(e.sort.fields)||n.modified("datum");return r&&n.source.sort(t.stableCompare(e.sort)),this.modified(r),n}});const ve="zero",be="center",Me="normalize",we=["y0","y1"];function xe(e){t.Transform.call(this,null,e)}function ke(e,t,n,r,a){for(var i,o=(t-e.sum)/2,l=e.length,s=0;s<l;++s)(i=e[s])[r]=o,i[a]=o+=Math.abs(n(i))}function Se(e,t,n,r,a){for(var i,o=1/e.sum,l=0,s=e.length,u=0,c=0;u<s;++u)(i=e[u])[r]=l,i[a]=l=o*(c+=Math.abs(n(i)))}function Ne(e,t,n,r,a){for(var i,o,l=0,s=0,u=e.length,c=0;c<u;++c)(i=+n(o=e[c]))<0?(o[r]=s,o[a]=s+=i):(o[r]=l,o[a]=l+=i)}xe.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:ve,values:[ve,be,Me]},{name:"as",type:"string",array:!0,length:2,default:we}]},r.inherits(xe,t.Transform,{transform(e,n){var a,i,o,l,s=e.as||we,u=s[0],c=s[1],d=t.stableCompare(e.sort),f=e.field||r.one,h=e.offset===be?ke:e.offset===Me?Se:Ne;for(a=function(e,t,n,r){var a,i,o,l,s,u,c,d,f,h=[],m=e=>e(s);if(null==t)h.push(e.slice());else for(a={},i=0,o=e.length;i<o;++i)s=e[i],(c=a[u=t.map(m)])||(a[u]=c=[],h.push(c)),c.push(s);for(u=0,f=0,l=h.length;u<l;++u){for(i=0,d=0,o=(c=h[u]).length;i<o;++i)d+=Math.abs(r(c[i]));c.sum=d,d>f&&(f=d),n&&c.sort(n)}return h.max=f,h}(n.source,e.groupby,d,f),i=0,o=a.length,l=a.max;i<o;++i)h(a[i],l,f,u,c);return n.reflow(e.modified()).modifies(s)}}),e.axisticks=a,e.datajoin=i,e.encode=l,e.legendentries=s,e.linkpath=h,e.pie=b,e.scale=he,e.sortitems=ye,e.stack=xe,Object.defineProperty(e,"__esModule",{value:!0})})); | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vega-dataflow"),require("vega-scale"),require("vega-util")):"function"==typeof define&&define.amd?define(["exports","vega-dataflow","vega-scale","vega-util"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).vega={},e.vega,e.vega,e.vega)}(this,(function(e,t,n,r){"use strict";function i(e){t.Transform.call(this,null,e)}function a(e){t.Transform.call(this,null,e)}function o(){return t.ingest({})}function s(e){t.Transform.call(this,null,e)}function l(e){t.Transform.call(this,[],e)}r.inherits(i,t.Transform,{transform(e,r){if(this.value&&!e.modified())return r.StopPropagation;var i=r.dataflow.locale(),a=r.fork(r.NO_SOURCE|r.NO_FIELDS),o=this.value,s=e.scale,l=null==e.count?e.values?e.values.length:10:e.count,u=n.tickCount(s,l,e.minstep),c=e.format||n.tickFormat(i,s,u,e.formatSpecifier,e.formatType,!!e.values),d=e.values?n.validTicks(s,e.values,u):n.tickValues(s,u);return o&&(a.rem=o),o=d.map(((e,n)=>t.ingest({index:n/(d.length-1||1),value:e,label:c(e)}))),e.extra&&o.length&&o.push(t.ingest({index:-1,extra:{value:o[0].value},label:""})),a.source=o,a.add=o,this.value=o,a}}),r.inherits(a,t.Transform,{transform(e,n){var i=n.dataflow,a=n.fork(n.NO_SOURCE|n.NO_FIELDS),s=e.item||o,l=e.key||t.tupleid,u=this.value;return r.isArray(a.encode)&&(a.encode=null),u&&(e.modified("key")||n.modified(l))&&r.error("DataJoin does not support modified key function or fields."),u||(n=n.addAll(),this.value=u=function(e){const t=r.fastmap().test((e=>e.exit));return t.lookup=n=>t.get(e(n)),t}(l)),n.visit(n.ADD,(e=>{const t=l(e);let n=u.get(t);n?n.exit?(u.empty--,a.add.push(n)):a.mod.push(n):(n=s(e),u.set(t,n),a.add.push(n)),n.datum=e,n.exit=!1})),n.visit(n.MOD,(e=>{const t=l(e),n=u.get(t);n&&(n.datum=e,a.mod.push(n))})),n.visit(n.REM,(e=>{const t=l(e),n=u.get(t);e!==n.datum||n.exit||(a.rem.push(n),n.exit=!0,++u.empty)})),n.changed(n.ADD_MOD)&&a.modifies("datum"),(n.clean()||e.clean&&u.empty>i.cleanThreshold)&&i.runAfter(u.clean),a}}),r.inherits(s,t.Transform,{transform(e,t){var n=t.fork(t.ADD_REM),i=e.mod||!1,a=e.encoders,o=t.encode;if(r.isArray(o)){if(!n.changed()&&!o.every((e=>a[e])))return t.StopPropagation;o=o[0],n.encode=null}var s="enter"===o,l=a.update||r.falsy,u=a.enter||r.falsy,c=a.exit||r.falsy,d=(o&&!s?a[o]:l)||r.falsy;if(t.changed(t.ADD)&&(t.visit(t.ADD,(t=>{u(t,e),l(t,e)})),n.modifies(u.output),n.modifies(l.output),d!==r.falsy&&d!==l&&(t.visit(t.ADD,(t=>{d(t,e)})),n.modifies(d.output))),t.changed(t.REM)&&c!==r.falsy&&(t.visit(t.REM,(t=>{c(t,e)})),n.modifies(c.output)),s||d!==r.falsy){const r=t.MOD|(e.modified()?t.REFLOW:0);s?(t.visit(r,(t=>{const r=u(t,e)||i;(d(t,e)||r)&&n.mod.push(t)})),n.mod.length&&n.modifies(u.output)):t.visit(r,(t=>{(d(t,e)||i)&&n.mod.push(t)})),n.mod.length&&n.modifies(d.output)}return n.changed()?n:t.StopPropagation}}),r.inherits(l,t.Transform,{transform(e,i){if(null!=this.value&&!e.modified())return i.StopPropagation;var a,o,s,l,u,c=i.dataflow.locale(),d=i.fork(i.NO_SOURCE|i.NO_FIELDS),h=this.value,f=e.type||n.SymbolLegend,m=e.scale,g=+e.limit,p=n.tickCount(m,null==e.count?5:e.count,e.minstep),y=!!e.values||f===n.SymbolLegend,v=e.format||n.labelFormat(c,m,p,f,e.formatSpecifier,e.formatType,y),b=e.values||n.labelValues(m,p);return h&&(d.rem=h),f===n.SymbolLegend?(g&&b.length>g?(i.dataflow.warn("Symbol legend count exceeds limit, filtering items."),h=b.slice(0,g-1),u=!0):h=b,r.isFunction(s=e.size)?(e.values||0!==m(h[0])||(h=h.slice(1)),l=h.reduce(((t,n)=>Math.max(t,s(n,e))),0)):s=r.constant(l=s||8),h=h.map(((n,r)=>t.ingest({index:r,label:v(n,r,h),value:n,offset:l,size:s(n,e)}))),u&&(u=b[h.length],h.push(t.ingest({index:h.length,label:`…${b.length-h.length} entries`,value:u,offset:l,size:s(u,e)})))):f===n.GradientLegend?(a=m.domain(),o=n.scaleFraction(m,a[0],r.peek(a)),b.length<3&&!e.values&&a[0]!==r.peek(a)&&(b=[a[0],r.peek(a)]),h=b.map(((e,n)=>t.ingest({index:n,label:v(e,n,b),value:e,perc:o(e)})))):(s=b.length-1,o=n.labelFraction(m),h=b.map(((e,n)=>t.ingest({index:n,label:v(e,n,b),value:e,perc:n?o(e):0,perc2:n===s?1:o(b[n+1])})))),d.source=h,d.add=h,this.value=h,d}});const u=e=>e.source.x,c=e=>e.source.y,d=e=>e.target.x,h=e=>e.target.y;function f(e){t.Transform.call(this,{},e)}f.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"}]},r.inherits(f,t.Transform,{transform(e,t){var n=e.sourceX||u,i=e.sourceY||c,a=e.targetX||d,o=e.targetY||h,s=e.as||"path",l=e.orient||"vertical",f=e.shape||"line",m=y.get(f+"-"+l)||y.get(f);return m||r.error("LinkPath unsupported type: "+e.shape+(e.orient?"-"+e.orient:"")),t.visit(t.SOURCE,(e=>{e[s]=m(n(e),i(e),a(e),o(e))})),t.reflow(e.modified()).modifies(s)}});const m=(e,t,n,r)=>"M"+e+","+t+"L"+n+","+r,g=(e,t,n,r)=>{var i=n-e,a=r-t,o=Math.sqrt(i*i+a*a)/2;return"M"+e+","+t+"A"+o+","+o+" "+180*Math.atan2(a,i)/Math.PI+" 0 1 "+n+","+r},p=(e,t,n,r)=>{const i=n-e,a=r-t,o=.2*(i+a),s=.2*(a-i);return"M"+e+","+t+"C"+(e+o)+","+(t+s)+" "+(n+s)+","+(r-o)+" "+n+","+r},y=r.fastmap({line:m,"line-radial":(e,t,n,r)=>m(t*Math.cos(e),t*Math.sin(e),r*Math.cos(n),r*Math.sin(n)),arc:g,"arc-radial":(e,t,n,r)=>g(t*Math.cos(e),t*Math.sin(e),r*Math.cos(n),r*Math.sin(n)),curve:p,"curve-radial":(e,t,n,r)=>p(t*Math.cos(e),t*Math.sin(e),r*Math.cos(n),r*Math.sin(n)),"orthogonal-horizontal":(e,t,n,r)=>"M"+e+","+t+"V"+r+"H"+n,"orthogonal-vertical":(e,t,n,r)=>"M"+e+","+t+"H"+n+"V"+r,"orthogonal-radial":(e,t,n,r)=>{const i=Math.cos(e),a=Math.sin(e),o=Math.cos(n),s=Math.sin(n);return"M"+t*i+","+t*a+"A"+t+","+t+" 0 0,"+((Math.abs(n-e)>Math.PI?n<=e:n>e)?1:0)+" "+t*o+","+t*s+"L"+r*o+","+r*s},"diagonal-horizontal":(e,t,n,r)=>{const i=(e+n)/2;return"M"+e+","+t+"C"+i+","+t+" "+i+","+r+" "+n+","+r},"diagonal-vertical":(e,t,n,r)=>{const i=(t+r)/2;return"M"+e+","+t+"C"+e+","+i+" "+n+","+i+" "+n+","+r},"diagonal-radial":(e,t,n,r)=>{const i=Math.cos(e),a=Math.sin(e),o=Math.cos(n),s=Math.sin(n),l=(t+r)/2;return"M"+t*i+","+t*a+"C"+l*i+","+l*a+" "+l*o+","+l*s+" "+r*o+","+r*s}});function v(e,t,n){e=+e,t=+t,n=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+n;for(var r=-1,i=0|Math.max(0,Math.ceil((t-e)/n)),a=new Array(i);++r<i;)a[r]=e+r*n;return a}function b(e){t.Transform.call(this,null,e)}function w(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function M(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function x(){}b.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"]}]},r.inherits(b,t.Transform,{transform(e,t){var n,i,a,o=e.as||["startAngle","endAngle"],s=o[0],l=o[1],u=e.field||r.one,c=e.startAngle||0,d=null!=e.endAngle?e.endAngle:2*Math.PI,h=t.source,f=h.map(u),m=f.length,g=c,p=(d-c)/function(e,t){let n=0;if(void 0===t)for(let t of e)(t=+t)&&(n+=t);else{let r=-1;for(let i of e)(i=+t(i,++r,e))&&(n+=i)}return n}(f),y=v(m);for(e.sort&&y.sort(((e,t)=>f[e]-f[t])),n=0;n<m;++n)a=f[y[n]],(i=h[y[n]])[s]=g,i[l]=g+=a*p;return this.value=f,t.reflow(e.modified()).modifies(o)}});var k=.7,$=1/k,S="\\s*([+-]?\\d+)\\s*",N="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",D="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",A=/^#([0-9a-f]{3,8})$/,O=new RegExp(`^rgb\\(${S},${S},${S}\\)$`),T=new RegExp(`^rgb\\(${D},${D},${D}\\)$`),E=new RegExp(`^rgba\\(${S},${S},${S},${N}\\)$`),R=new RegExp(`^rgba\\(${D},${D},${D},${N}\\)$`),C=new RegExp(`^hsl\\(${N},${D},${D}\\)$`),L=new RegExp(`^hsla\\(${N},${D},${D},${N}\\)$`),q={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function z(){return this.rgb().formatHex()}function I(){return this.rgb().formatRgb()}function P(e){var t,n;return e=(e+"").trim().toLowerCase(),(t=A.exec(e))?(n=t[1].length,t=parseInt(t[1],16),6===n?F(t):3===n?new j(t>>8&15|t>>4&240,t>>4&15|240&t,(15&t)<<4|15&t,1):8===n?H(t>>24&255,t>>16&255,t>>8&255,(255&t)/255):4===n?H(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|240&t,((15&t)<<4|15&t)/255):null):(t=O.exec(e))?new j(t[1],t[2],t[3],1):(t=T.exec(e))?new j(255*t[1]/100,255*t[2]/100,255*t[3]/100,1):(t=E.exec(e))?H(t[1],t[2],t[3],t[4]):(t=R.exec(e))?H(255*t[1]/100,255*t[2]/100,255*t[3]/100,t[4]):(t=C.exec(e))?Y(t[1],t[2]/100,t[3]/100,1):(t=L.exec(e))?Y(t[1],t[2]/100,t[3]/100,t[4]):q.hasOwnProperty(e)?F(q[e]):"transparent"===e?new j(NaN,NaN,NaN,0):null}function F(e){return new j(e>>16&255,e>>8&255,255&e,1)}function H(e,t,n,r){return r<=0&&(e=t=n=NaN),new j(e,t,n,r)}function _(e,t,n,r){return 1===arguments.length?((i=e)instanceof x||(i=P(i)),i?new j((i=i.rgb()).r,i.g,i.b,i.opacity):new j):new j(e,t,n,null==r?1:r);var i}function j(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}function U(){return`#${X(this.r)}${X(this.g)}${X(this.b)}`}function V(){const e=G(this.opacity);return`${1===e?"rgb(":"rgba("}${B(this.r)}, ${B(this.g)}, ${B(this.b)}${1===e?")":`, ${e})`}`}function G(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function B(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function X(e){return((e=B(e))<16?"0":"")+e.toString(16)}function Y(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new J(e,t,n,r)}function Q(e){if(e instanceof J)return new J(e.h,e.s,e.l,e.opacity);if(e instanceof x||(e=P(e)),!e)return new J;if(e instanceof J)return e;var t=(e=e.rgb()).r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=NaN,s=a-i,l=(a+i)/2;return s?(o=t===a?(n-r)/s+6*(n<r):n===a?(r-t)/s+2:(t-n)/s+4,s/=l<.5?a+i:2-a-i,o*=60):s=l>0&&l<1?0:o,new J(o,s,l,e.opacity)}function J(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}function W(e){return(e=(e||0)%360)<0?e+360:e}function K(e){return Math.max(0,Math.min(1,e||0))}function Z(e,t,n){return 255*(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)}w(x,P,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:z,formatHex:z,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return Q(this).formatHsl()},formatRgb:I,toString:I}),w(j,_,M(x,{brighter(e){return e=null==e?$:Math.pow($,e),new j(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=null==e?k:Math.pow(k,e),new j(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new j(B(this.r),B(this.g),B(this.b),G(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:U,formatHex:U,formatHex8:function(){return`#${X(this.r)}${X(this.g)}${X(this.b)}${X(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:V,toString:V})),w(J,(function(e,t,n,r){return 1===arguments.length?Q(e):new J(e,t,n,null==r?1:r)}),M(x,{brighter(e){return e=null==e?$:Math.pow($,e),new J(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=null==e?k:Math.pow(k,e),new J(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+360*(this.h<0),t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new j(Z(e>=240?e-240:e+120,i,r),Z(e,i,r),Z(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new J(W(this.h),K(this.s),K(this.l),G(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=G(this.opacity);return`${1===e?"hsl(":"hsla("}${W(this.h)}, ${100*K(this.s)}%, ${100*K(this.l)}%${1===e?")":`, ${e})`}`}}));var ee=e=>()=>e;function te(e){return 1==(e=+e)?ne:function(t,n){return n-t?function(e,t,n){return e=Math.pow(e,n),t=Math.pow(t,n)-e,n=1/n,function(r){return Math.pow(e+r*t,n)}}(t,n,e):ee(isNaN(t)?n:t)}}function ne(e,t){var n=t-e;return n?function(e,t){return function(n){return e+n*t}}(e,n):ee(isNaN(e)?t:e)}var re=function e(t){var n=te(t);function r(e,t){var r=n((e=_(e)).r,(t=_(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=ne(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=i(t),e.b=a(t),e.opacity=o(t),e+""}}return r.gamma=e,r}(1);function ie(e,t){t||(t=[]);var n,r=e?Math.min(t.length,e.length):0,i=t.slice();return function(a){for(n=0;n<r;++n)i[n]=e[n]*(1-a)+t[n]*a;return i}}function ae(e,t){var n,r=t?t.length:0,i=e?Math.min(r,e.length):0,a=new Array(i),o=new Array(r);for(n=0;n<i;++n)a[n]=he(e[n],t[n]);for(;n<r;++n)o[n]=t[n];return function(e){for(n=0;n<i;++n)o[n]=a[n](e);return o}}function oe(e,t){var n=new Date;return e=+e,t=+t,function(r){return n.setTime(e*(1-r)+t*r),n}}function se(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}function le(e,t){var n,r={},i={};for(n in null!==e&&"object"==typeof e||(e={}),null!==t&&"object"==typeof t||(t={}),t)n in e?r[n]=he(e[n],t[n]):i[n]=t[n];return function(e){for(n in r)i[n]=r[n](e);return i}}var ue=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,ce=new RegExp(ue.source,"g");function de(e,t){var n,r,i,a=ue.lastIndex=ce.lastIndex=0,o=-1,s=[],l=[];for(e+="",t+="";(n=ue.exec(e))&&(r=ce.exec(t));)(i=r.index)>a&&(i=t.slice(a,i),s[o]?s[o]+=i:s[++o]=i),(n=n[0])===(r=r[0])?s[o]?s[o]+=r:s[++o]=r:(s[++o]=null,l.push({i:o,x:se(n,r)})),a=ce.lastIndex;return a<t.length&&(i=t.slice(a),s[o]?s[o]+=i:s[++o]=i),s.length<2?l[0]?function(e){return function(t){return e(t)+""}}(l[0].x):function(e){return function(){return e}}(t):(t=l.length,function(e){for(var n,r=0;r<t;++r)s[(n=l[r]).i]=n.x(e);return s.join("")})}function he(e,t){var n,r,i=typeof t;return null==t||"boolean"===i?ee(t):("number"===i?se:"string"===i?(n=P(t))?(t=n,re):de:t instanceof P?re:t instanceof Date?oe:(r=t,!ArrayBuffer.isView(r)||r instanceof DataView?Array.isArray(t)?ae:"function"!=typeof t.valueOf&&"function"!=typeof t.toString||isNaN(t)?le:se:ie))(e,t)}function fe(e,t){return e=+e,t=+t,function(n){return Math.round(e*(1-n)+t*n)}}const me=5;function ge(e){return n.isContinuous(e)&&e!==n.Sequential}const pe=r.toSet(["set","modified","clear","type","scheme","schemeExtent","schemeCount","domain","domainMin","domainMid","domainMax","domainRaw","domainImplicit","nice","zero","bins","range","rangeStep","round","reverse","interpolate","interpolateGamma"]);function ye(e){t.Transform.call(this,null,e),this.modified(!0)}function ve(e,t,i){n.isLogarithmic(e)&&(Math.abs(t.reduce(((e,t)=>e+(t<0?-1:t>0?1:0)),0))!==t.length&&i.warn("Log scale domain includes zero: "+r.stringValue(t)));return t}function be(e,t,i){return r.isFunction(e)&&(t||i)?n.interpolateRange(e,we(t||[0,1],i)):e}function we(e,t){return t?e.slice().reverse():e}function Me(e){t.Transform.call(this,null,e)}r.inherits(ye,t.Transform,{transform(e,t){var i=t.dataflow,a=this.value,o=function(e){var t,i=e.type,a="";if(i===n.Sequential)return n.Sequential+"-"+n.Linear;(function(e){const t=e.type;return n.isContinuous(t)&&t!==n.Time&&t!==n.UTC&&(e.scheme||e.range&&e.range.length&&e.range.every(r.isString))})(e)&&(a=2===(t=e.rawDomain?e.rawDomain.length:e.domain?e.domain.length+ +(null!=e.domainMid):0)?n.Sequential+"-":3===t?n.Diverging+"-":"");return(a+i||n.Linear).toLowerCase()}(e);for(o in a&&o===a.type||(this.value=a=n.scale(o)()),e)if(!pe[o]){if("padding"===o&&ge(a.type))continue;r.isFunction(a[o])?a[o](e[o]):i.warn("Unsupported scale property: "+o)}return function(e,t,i){var a=e.type,o=t.round||!1,s=t.range;if(null!=t.rangeStep)s=function(e,t,i){e!==n.Band&&e!==n.Point&&r.error("Only band and point scales support rangeStep.");var a=(null!=t.paddingOuter?t.paddingOuter:t.padding)||0,o=e===n.Point?1:(null!=t.paddingInner?t.paddingInner:t.padding)||0;return[0,t.rangeStep*n.bandSpace(i,o,a)]}(a,t,i);else if(t.scheme&&(s=function(e,t,i){var a,o,s=t.schemeExtent;r.isArray(t.scheme)?o=n.interpolateColors(t.scheme,t.interpolate,t.interpolateGamma):(a=t.scheme.toLowerCase(),(o=n.scheme(a))||r.error(`Unrecognized scheme name: ${t.scheme}`));return i=e===n.Threshold?i+1:e===n.BinOrdinal?i-1:e===n.Quantile||e===n.Quantize?+t.schemeCount||me:i,n.isInterpolating(e)?be(o,s,t.reverse):r.isFunction(o)?n.quantizeInterpolator(be(o,s),i):e===n.Ordinal?o:o.slice(0,i)}(a,t,i),r.isFunction(s))){if(e.interpolator)return e.interpolator(s);r.error(`Scale type ${a} does not support interpolating color schemes.`)}if(s&&n.isInterpolating(a))return e.interpolator(n.interpolateColors(we(s,t.reverse),t.interpolate,t.interpolateGamma));s&&t.interpolate&&e.interpolate?e.interpolate(n.interpolate(t.interpolate,t.interpolateGamma)):r.isFunction(e.round)?e.round(o):r.isFunction(e.rangeRound)&&e.interpolate(o?fe:he);s&&e.range(we(s,t.reverse))}(a,e,function(e,t,i){let a=t.bins;if(a&&!r.isArray(a)){const t=e.domain(),n=t[0],i=r.peek(t),o=a.step;let s=null==a.start?n:a.start,l=null==a.stop?i:a.stop;o||r.error("Scale bins parameter missing step property."),s<n&&(s=o*Math.ceil(n/o)),l>i&&(l=o*Math.floor(i/o)),a=v(s,l+o/2,o)}a?e.bins=a:e.bins&&delete e.bins;e.type===n.BinOrdinal&&(a?t.domain||t.domainRaw||(e.domain(a),i=a.length):e.bins=e.domain());return i}(a,e,function(e,t,i){const a=function(e,t,n){return t?(e.domain(ve(e.type,t,n)),t.length):-1}(e,t.domainRaw,i);if(a>-1)return a;var o,s,l=t.domain,u=e.type,c=t.zero||void 0===t.zero&&function(e){const t=e.type;return!e.bins&&(t===n.Linear||t===n.Pow||t===n.Sqrt)}(e);if(!l)return 0;ge(u)&&t.padding&&l[0]!==r.peek(l)&&(l=function(e,t,i,a,o,s){var l=Math.abs(r.peek(i)-i[0]),u=l/(l-2*a),c=e===n.Log?r.zoomLog(t,null,u):e===n.Sqrt?r.zoomPow(t,null,u,.5):e===n.Pow?r.zoomPow(t,null,u,o||1):e===n.Symlog?r.zoomSymlog(t,null,u,s||1):r.zoomLinear(t,null,u);return t=t.slice(),t[0]=c[0],t[t.length-1]=c[1],t}(u,l,t.range,t.padding,t.exponent,t.constant));if((c||null!=t.domainMin||null!=t.domainMax||null!=t.domainMid)&&(o=(l=l.slice()).length-1||1,c&&(l[0]>0&&(l[0]=0),l[o]<0&&(l[o]=0)),null!=t.domainMin&&(l[0]=t.domainMin),null!=t.domainMax&&(l[o]=t.domainMax),null!=t.domainMid)){const e=(s=t.domainMid)>l[o]?o+1:s<l[0]?0:o;e!==o&&i.warn("Scale domainMid exceeds domain min or max.",s),l.splice(e,0,s)}e.domain(ve(u,l,i)),u===n.Ordinal&&e.unknown(t.domainImplicit?n.scaleImplicit:void 0);t.nice&&e.nice&&e.nice(!0!==t.nice&&n.tickCount(e,t.nice)||null);return l.length}(a,e,i))),t.fork(t.NO_SOURCE|t.NO_FIELDS)}}),r.inherits(Me,t.Transform,{transform(e,n){const r=e.modified("sort")||n.changed(n.ADD)||n.modified(e.sort.fields)||n.modified("datum");return r&&n.source.sort(t.stableCompare(e.sort)),this.modified(r),n}});const xe="zero",ke="center",$e="normalize",Se=["y0","y1"];function Ne(e){t.Transform.call(this,null,e)}function De(e,t,n,r,i){for(var a,o=(t-e.sum)/2,s=e.length,l=0;l<s;++l)(a=e[l])[r]=o,a[i]=o+=Math.abs(n(a))}function Ae(e,t,n,r,i){for(var a,o=1/e.sum,s=0,l=e.length,u=0,c=0;u<l;++u)(a=e[u])[r]=s,a[i]=s=o*(c+=Math.abs(n(a)))}function Oe(e,t,n,r,i){for(var a,o,s=0,l=0,u=e.length,c=0;c<u;++c)(a=+n(o=e[c]))<0?(o[r]=l,o[i]=l+=a):(o[r]=s,o[i]=s+=a)}Ne.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:xe,values:[xe,ke,$e]},{name:"as",type:"string",array:!0,length:2,default:Se}]},r.inherits(Ne,t.Transform,{transform(e,n){var i,a,o,s,l=e.as||Se,u=l[0],c=l[1],d=t.stableCompare(e.sort),h=e.field||r.one,f=e.offset===ke?De:e.offset===$e?Ae:Oe;for(i=function(e,t,n,r){var i,a,o,s,l,u,c,d,h,f=[],m=e=>e(l);if(null==t)f.push(e.slice());else for(i={},a=0,o=e.length;a<o;++a)l=e[a],(c=i[u=t.map(m)])||(i[u]=c=[],f.push(c)),c.push(l);for(u=0,h=0,s=f.length;u<s;++u){for(a=0,d=0,o=(c=f[u]).length;a<o;++a)d+=Math.abs(r(c[a]));c.sum=d,d>h&&(h=d),n&&c.sort(n)}return f.max=h,f}(n.source,e.groupby,d,h),a=0,o=i.length,s=i.max;a<o;++a)f(i[a],s,h,u,c);return n.reflow(e.modified()).modifies(l)}}),e.axisticks=i,e.datajoin=a,e.encode=s,e.legendentries=l,e.linkpath=f,e.pie=b,e.scale=ye,e.sortitems=Me,e.stack=Ne})); | ||
//# sourceMappingURL=vega-encode.min.js.map |
import { Transform, ingest, tupleid, stableCompare } from 'vega-dataflow'; | ||
import { tickCount, tickFormat, validTicks, tickValues, SymbolLegend, labelFormat, labelValues, GradientLegend, scaleFraction, labelFraction, scale, isContinuous, Sequential, Linear, Time, UTC, Pow, Sqrt, Ordinal, scaleImplicit, Log, Symlog, isLogarithmic, BinOrdinal, bandSpace, isInterpolating, interpolateRange, quantizeInterpolator, interpolateColors, interpolate, Band, Point, scheme, Threshold, Quantile, Quantize, Diverging } from 'vega-scale'; | ||
import { tickCount, tickFormat, validTicks, tickValues, SymbolLegend, labelFormat, labelValues, GradientLegend, scaleFraction, labelFraction, scale, Sequential, Linear, isContinuous, Time, UTC, Ordinal, scaleImplicit, Log, Sqrt, Pow, Symlog, isLogarithmic, BinOrdinal, isInterpolating, interpolateColors, interpolate, Band, Point, bandSpace, scheme, Threshold, Quantile, Quantize, quantizeInterpolator, interpolateRange, Diverging } from 'vega-scale'; | ||
import { inherits, isArray, error, fastmap, falsy, isFunction, constant, peek, one, toSet, isString, zoomLog, zoomPow, zoomSymlog, zoomLinear, stringValue } from 'vega-util'; | ||
@@ -23,3 +23,2 @@ import { sum, range } from 'd3-array'; | ||
*/ | ||
function AxisTicks(params) { | ||
@@ -33,11 +32,10 @@ Transform.call(this, null, params); | ||
} | ||
var locale = pulse.dataflow.locale(), | ||
out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS), | ||
ticks = this.value, | ||
scale = _.scale, | ||
tally = _.count == null ? _.values ? _.values.length : 10 : _.count, | ||
count = tickCount(scale, tally, _.minstep), | ||
format = _.format || tickFormat(locale, scale, count, _.formatSpecifier, _.formatType, !!_.values), | ||
values = _.values ? validTicks(scale, _.values, count) : tickValues(scale, count); | ||
out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS), | ||
ticks = this.value, | ||
scale = _.scale, | ||
tally = _.count == null ? _.values ? _.values.length : 10 : _.count, | ||
count = tickCount(scale, tally, _.minstep), | ||
format = _.format || tickFormat(locale, scale, count, _.formatSpecifier, _.formatType, !!_.values), | ||
values = _.values ? validTicks(scale, _.values, count) : tickValues(scale, count); | ||
if (ticks) out.rem = ticks; | ||
@@ -49,3 +47,2 @@ ticks = values.map((value, i) => ingest({ | ||
})); | ||
if (_.extra && ticks.length) { | ||
@@ -62,3 +59,2 @@ // add an extra tick pegged to the initial domain value | ||
} | ||
out.source = ticks; | ||
@@ -69,3 +65,2 @@ out.add = ticks; | ||
} | ||
}); | ||
@@ -80,36 +75,29 @@ | ||
*/ | ||
function DataJoin(params) { | ||
Transform.call(this, null, params); | ||
} | ||
function defaultItemCreate() { | ||
return ingest({}); | ||
} | ||
function newMap(key) { | ||
const map = fastmap().test(t => t.exit); | ||
map.lookup = t => map.get(key(t)); | ||
return map; | ||
} | ||
inherits(DataJoin, Transform, { | ||
transform(_, pulse) { | ||
var df = pulse.dataflow, | ||
out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS), | ||
item = _.item || defaultItemCreate, | ||
key = _.key || tupleid, | ||
map = this.value; // prevent transient (e.g., hover) requests from | ||
out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS), | ||
item = _.item || defaultItemCreate, | ||
key = _.key || tupleid, | ||
map = this.value; | ||
// prevent transient (e.g., hover) requests from | ||
// cascading across marks derived from marks | ||
if (isArray(out.encode)) { | ||
out.encode = null; | ||
} | ||
if (map && (_.modified('key') || pulse.modified(key))) { | ||
error('DataJoin does not support modified key function or fields.'); | ||
} | ||
if (!map) { | ||
@@ -119,7 +107,5 @@ pulse = pulse.addAll(); | ||
} | ||
pulse.visit(pulse.ADD, t => { | ||
const k = key(t); | ||
let x = map.get(k); | ||
if (x) { | ||
@@ -137,3 +123,2 @@ if (x.exit) { | ||
} | ||
x.datum = t; | ||
@@ -144,4 +129,3 @@ x.exit = false; | ||
const k = key(t), | ||
x = map.get(k); | ||
x = map.get(k); | ||
if (x) { | ||
@@ -154,4 +138,3 @@ x.datum = t; | ||
const k = key(t), | ||
x = map.get(k); | ||
x = map.get(k); | ||
if (t === x.datum && !x.exit) { | ||
@@ -164,10 +147,7 @@ out.rem.push(x); | ||
if (pulse.changed(pulse.ADD_MOD)) out.modifies('datum'); | ||
if (pulse.clean() || _.clean && map.empty > df.cleanThreshold) { | ||
df.runAfter(map.clean); | ||
} | ||
return out; | ||
} | ||
}); | ||
@@ -187,3 +167,2 @@ | ||
*/ | ||
function Encode(params) { | ||
@@ -195,8 +174,9 @@ Transform.call(this, null, params); | ||
var out = pulse.fork(pulse.ADD_REM), | ||
fmod = _.mod || false, | ||
encoders = _.encoders, | ||
encode = pulse.encode; // if an array, the encode directive includes additional sets | ||
fmod = _.mod || false, | ||
encoders = _.encoders, | ||
encode = pulse.encode; | ||
// if an array, the encode directive includes additional sets | ||
// that must be defined in order for the primary set to be invoked | ||
// e.g., only run the update set if the hover set is defined | ||
if (isArray(encode)) { | ||
@@ -209,11 +189,10 @@ if (out.changed() || encode.every(e => encoders[e])) { | ||
} | ||
} // marshall encoder functions | ||
} | ||
// marshall encoder functions | ||
var reenter = encode === 'enter', | ||
update = encoders.update || falsy, | ||
enter = encoders.enter || falsy, | ||
exit = encoders.exit || falsy, | ||
set = (encode && !reenter ? encoders[encode] : update) || falsy; | ||
update = encoders.update || falsy, | ||
enter = encoders.enter || falsy, | ||
exit = encoders.exit || falsy, | ||
set = (encode && !reenter ? encoders[encode] : update) || falsy; | ||
if (pulse.changed(pulse.ADD)) { | ||
@@ -226,3 +205,2 @@ pulse.visit(pulse.ADD, t => { | ||
out.modifies(update.output); | ||
if (set !== falsy && set !== update) { | ||
@@ -235,3 +213,2 @@ pulse.visit(pulse.ADD, t => { | ||
} | ||
if (pulse.changed(pulse.REM) && exit !== falsy) { | ||
@@ -243,6 +220,4 @@ pulse.visit(pulse.REM, t => { | ||
} | ||
if (reenter || set !== falsy) { | ||
const flag = pulse.MOD | (_.modified() ? pulse.REFLOW : 0); | ||
if (reenter) { | ||
@@ -259,9 +234,6 @@ pulse.visit(flag, t => { | ||
} | ||
if (out.mod.length) out.modifies(set.output); | ||
} | ||
return out.changed() ? out : pulse.StopPropagation; | ||
} | ||
}); | ||
@@ -287,3 +259,2 @@ | ||
*/ | ||
function LegendEntries(params) { | ||
@@ -297,20 +268,18 @@ Transform.call(this, [], params); | ||
} | ||
var locale = pulse.dataflow.locale(), | ||
out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS), | ||
items = this.value, | ||
type = _.type || SymbolLegend, | ||
scale = _.scale, | ||
limit = +_.limit, | ||
count = tickCount(scale, _.count == null ? 5 : _.count, _.minstep), | ||
lskip = !!_.values || type === SymbolLegend, | ||
format = _.format || labelFormat(locale, scale, count, type, _.formatSpecifier, _.formatType, lskip), | ||
values = _.values || labelValues(scale, count), | ||
domain, | ||
fraction, | ||
size, | ||
offset, | ||
ellipsis; | ||
out = pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS), | ||
items = this.value, | ||
type = _.type || SymbolLegend, | ||
scale = _.scale, | ||
limit = +_.limit, | ||
count = tickCount(scale, _.count == null ? 5 : _.count, _.minstep), | ||
lskip = !!_.values || type === SymbolLegend, | ||
format = _.format || labelFormat(locale, scale, count, type, _.formatSpecifier, _.formatType, lskip), | ||
values = _.values || labelValues(scale, count), | ||
domain, | ||
fraction, | ||
size, | ||
offset, | ||
ellipsis; | ||
if (items) out.rem = items; | ||
if (type === SymbolLegend) { | ||
@@ -324,3 +293,2 @@ if (limit && values.length > limit) { | ||
} | ||
if (isFunction(size = _.size)) { | ||
@@ -330,5 +298,4 @@ // if first value maps to size zero, remove from list (vega#717) | ||
items = items.slice(1); | ||
} // compute size offset for legend entries | ||
} | ||
// compute size offset for legend entries | ||
offset = items.reduce((max, value) => Math.max(max, size(value, _)), 0); | ||
@@ -338,3 +305,2 @@ } else { | ||
} | ||
items = items.map((value, index) => ingest({ | ||
@@ -347,3 +313,2 @@ index: index, | ||
})); | ||
if (ellipsis) { | ||
@@ -353,3 +318,3 @@ ellipsis = values[items.length]; | ||
index: items.length, | ||
label: "\u2026".concat(values.length - items.length, " entries"), | ||
label: `\u2026${values.length - items.length} entries`, | ||
value: ellipsis, | ||
@@ -361,9 +326,9 @@ offset: offset, | ||
} else if (type === GradientLegend) { | ||
domain = scale.domain(), fraction = scaleFraction(scale, domain[0], peek(domain)); // if automatic label generation produces 2 or fewer values, | ||
domain = scale.domain(), fraction = scaleFraction(scale, domain[0], peek(domain)); | ||
// if automatic label generation produces 2 or fewer values, | ||
// use the domain end points instead (fixes vega/vega#1364) | ||
if (values.length < 3 && !_.values && domain[0] !== peek(domain)) { | ||
values = [domain[0], peek(domain)]; | ||
} | ||
items = values.map((value, index) => ingest({ | ||
@@ -386,3 +351,2 @@ index: index, | ||
} | ||
out.source = items; | ||
@@ -393,12 +357,9 @@ out.add = items; | ||
} | ||
}); | ||
const sourceX = t => t.source.x; | ||
const sourceY = t => t.source.y; | ||
const targetX = t => t.target.x; | ||
const targetY = t => t.target.y; | ||
const targetY = t => t.target.y; | ||
/** | ||
@@ -409,4 +370,2 @@ * Layout paths linking source and target elements. | ||
*/ | ||
function LinkPath(params) { | ||
@@ -458,14 +417,12 @@ Transform.call(this, {}, params); | ||
var sx = _.sourceX || sourceX, | ||
sy = _.sourceY || sourceY, | ||
tx = _.targetX || targetX, | ||
ty = _.targetY || targetY, | ||
as = _.as || 'path', | ||
orient = _.orient || 'vertical', | ||
shape = _.shape || 'line', | ||
path = Paths.get(shape + '-' + orient) || Paths.get(shape); | ||
sy = _.sourceY || sourceY, | ||
tx = _.targetX || targetX, | ||
ty = _.targetY || targetY, | ||
as = _.as || 'path', | ||
orient = _.orient || 'vertical', | ||
shape = _.shape || 'line', | ||
path = Paths.get(shape + '-' + orient) || Paths.get(shape); | ||
if (!path) { | ||
error('LinkPath unsupported type: ' + _.shape + (_.orient ? '-' + _.orient : '')); | ||
} | ||
pulse.visit(pulse.SOURCE, t => { | ||
@@ -476,42 +433,31 @@ t[as] = path(sx(t), sy(t), tx(t), ty(t)); | ||
} | ||
}); | ||
const line = (sx, sy, tx, ty) => 'M' + sx + ',' + sy + 'L' + tx + ',' + ty; | ||
const lineR = (sa, sr, ta, tr) => line(sr * Math.cos(sa), sr * Math.sin(sa), tr * Math.cos(ta), tr * Math.sin(ta)); | ||
const arc = (sx, sy, tx, ty) => { | ||
var dx = tx - sx, | ||
dy = ty - sy, | ||
rr = Math.sqrt(dx * dx + dy * dy) / 2, | ||
ra = 180 * Math.atan2(dy, dx) / Math.PI; | ||
dy = ty - sy, | ||
rr = Math.sqrt(dx * dx + dy * dy) / 2, | ||
ra = 180 * Math.atan2(dy, dx) / Math.PI; | ||
return 'M' + sx + ',' + sy + 'A' + rr + ',' + rr + ' ' + ra + ' 0 1' + ' ' + tx + ',' + ty; | ||
}; | ||
const arcR = (sa, sr, ta, tr) => arc(sr * Math.cos(sa), sr * Math.sin(sa), tr * Math.cos(ta), tr * Math.sin(ta)); | ||
const curve = (sx, sy, tx, ty) => { | ||
const dx = tx - sx, | ||
dy = ty - sy, | ||
ix = 0.2 * (dx + dy), | ||
iy = 0.2 * (dy - dx); | ||
dy = ty - sy, | ||
ix = 0.2 * (dx + dy), | ||
iy = 0.2 * (dy - dx); | ||
return 'M' + sx + ',' + sy + 'C' + (sx + ix) + ',' + (sy + iy) + ' ' + (tx + iy) + ',' + (ty - ix) + ' ' + tx + ',' + ty; | ||
}; | ||
const curveR = (sa, sr, ta, tr) => curve(sr * Math.cos(sa), sr * Math.sin(sa), tr * Math.cos(ta), tr * Math.sin(ta)); | ||
const orthoX = (sx, sy, tx, ty) => 'M' + sx + ',' + sy + 'V' + ty + 'H' + tx; | ||
const orthoY = (sx, sy, tx, ty) => 'M' + sx + ',' + sy + 'H' + tx + 'V' + ty; | ||
const orthoR = (sa, sr, ta, tr) => { | ||
const sc = Math.cos(sa), | ||
ss = Math.sin(sa), | ||
tc = Math.cos(ta), | ||
ts = Math.sin(ta), | ||
sf = Math.abs(ta - sa) > Math.PI ? ta <= sa : ta > sa; | ||
ss = Math.sin(sa), | ||
tc = Math.cos(ta), | ||
ts = Math.sin(ta), | ||
sf = Math.abs(ta - sa) > Math.PI ? ta <= sa : ta > sa; | ||
return 'M' + sr * sc + ',' + sr * ss + 'A' + sr + ',' + sr + ' 0 0,' + (sf ? 1 : 0) + ' ' + sr * tc + ',' + sr * ts + 'L' + tr * tc + ',' + tr * ts; | ||
}; | ||
const diagonalX = (sx, sy, tx, ty) => { | ||
@@ -521,3 +467,2 @@ const m = (sx + tx) / 2; | ||
}; | ||
const diagonalY = (sx, sy, tx, ty) => { | ||
@@ -527,12 +472,10 @@ const m = (sy + ty) / 2; | ||
}; | ||
const diagonalR = (sa, sr, ta, tr) => { | ||
const sc = Math.cos(sa), | ||
ss = Math.sin(sa), | ||
tc = Math.cos(ta), | ||
ts = Math.sin(ta), | ||
mr = (sr + tr) / 2; | ||
ss = Math.sin(sa), | ||
tc = Math.cos(ta), | ||
ts = Math.sin(ta), | ||
mr = (sr + tr) / 2; | ||
return 'M' + sr * sc + ',' + sr * ss + 'C' + mr * sc + ',' + mr * ss + ' ' + mr * tc + ',' + mr * ts + ' ' + tr * tc + ',' + tr * ts; | ||
}; | ||
const Paths = fastmap({ | ||
@@ -562,3 +505,2 @@ 'line': line, | ||
*/ | ||
function Pie(params) { | ||
@@ -598,21 +540,19 @@ Transform.call(this, null, params); | ||
var as = _.as || ['startAngle', 'endAngle'], | ||
startAngle = as[0], | ||
endAngle = as[1], | ||
field = _.field || one, | ||
start = _.startAngle || 0, | ||
stop = _.endAngle != null ? _.endAngle : 2 * Math.PI, | ||
data = pulse.source, | ||
values = data.map(field), | ||
n = values.length, | ||
a = start, | ||
k = (stop - start) / sum(values), | ||
index = range(n), | ||
i, | ||
t, | ||
v; | ||
startAngle = as[0], | ||
endAngle = as[1], | ||
field = _.field || one, | ||
start = _.startAngle || 0, | ||
stop = _.endAngle != null ? _.endAngle : 2 * Math.PI, | ||
data = pulse.source, | ||
values = data.map(field), | ||
n = values.length, | ||
a = start, | ||
k = (stop - start) / sum(values), | ||
index = range(n), | ||
i, | ||
t, | ||
v; | ||
if (_.sort) { | ||
index.sort((a, b) => values[a] - values[b]); | ||
} | ||
for (i = 0; i < n; ++i) { | ||
@@ -624,11 +564,8 @@ v = values[index[i]]; | ||
} | ||
this.value = values; | ||
return pulse.reflow(_.modified()).modifies(as); | ||
} | ||
}); | ||
const DEFAULT_COUNT = 5; | ||
function includeZero(scale) { | ||
@@ -638,8 +575,7 @@ const type = scale.type; | ||
} | ||
function includePad(type) { | ||
return isContinuous(type) && type !== Sequential; | ||
} | ||
const SKIP = toSet(['set', 'modified', 'clear', 'type', 'scheme', 'schemeExtent', 'schemeCount', 'domain', 'domainMin', 'domainMid', 'domainMax', 'domainRaw', 'domainImplicit', 'nice', 'zero', 'bins', 'range', 'rangeStep', 'round', 'reverse', 'interpolate', 'interpolateGamma']); | ||
const SKIP = toSet(['set', 'modified', 'clear', 'type', 'scheme', 'schemeExtent', 'schemeCount', 'domain', 'domainMin', 'domainMid', 'domainMax', 'domainRaw', 'domainImplicit', 'nice', 'zero', 'bins', 'range', 'rangeStep', 'round', 'reverse', 'interpolate', 'interpolateGamma']); | ||
/** | ||
@@ -650,3 +586,2 @@ * Maintains a scale function mapping data values to visual channels. | ||
*/ | ||
function Scale(params) { | ||
@@ -656,32 +591,28 @@ Transform.call(this, null, params); | ||
} | ||
inherits(Scale, Transform, { | ||
transform(_, pulse) { | ||
var df = pulse.dataflow, | ||
scale$1 = this.value, | ||
key = scaleKey(_); | ||
scale$1 = this.value, | ||
key = scaleKey(_); | ||
if (!scale$1 || key !== scale$1.type) { | ||
this.value = scale$1 = scale(key)(); | ||
} | ||
for (key in _) if (!SKIP[key]) { | ||
// padding is a scale property for band/point but not others | ||
if (key === 'padding' && includePad(scale$1.type)) continue; // invoke scale property setter, raise warning if not found | ||
if (key === 'padding' && includePad(scale$1.type)) continue; | ||
// invoke scale property setter, raise warning if not found | ||
isFunction(scale$1[key]) ? scale$1[key](_[key]) : df.warn('Unsupported scale property: ' + key); | ||
} | ||
configureRange(scale$1, _, configureBins(scale$1, _, configureDomain(scale$1, _, df))); | ||
return pulse.fork(pulse.NO_SOURCE | pulse.NO_FIELDS); | ||
} | ||
}); | ||
function scaleKey(_) { | ||
var t = _.type, | ||
d = '', | ||
n; // backwards compatibility pre Vega 5. | ||
d = '', | ||
n; | ||
// backwards compatibility pre Vega 5. | ||
if (t === Sequential) return Sequential + '-' + Linear; | ||
if (isContinuousColor(_)) { | ||
@@ -691,6 +622,4 @@ n = _.rawDomain ? _.rawDomain.length : _.domain ? _.domain.length + +(_.domainMid != null) : 0; | ||
} | ||
return (d + t || Linear).toLowerCase(); | ||
} | ||
function isContinuousColor(_) { | ||
@@ -700,3 +629,2 @@ const t = _.type; | ||
} | ||
function configureDomain(scale, _, df) { | ||
@@ -707,16 +635,16 @@ // check raw domain, if provided use that and exit early | ||
var domain = _.domain, | ||
type = scale.type, | ||
zero = _.zero || _.zero === undefined && includeZero(scale), | ||
n, | ||
mid; | ||
if (!domain) return 0; // adjust continuous domain for minimum pixel padding | ||
type = scale.type, | ||
zero = _.zero || _.zero === undefined && includeZero(scale), | ||
n, | ||
mid; | ||
if (!domain) return 0; | ||
// adjust continuous domain for minimum pixel padding | ||
if (includePad(type) && _.padding && domain[0] !== peek(domain)) { | ||
domain = padDomain(type, domain, _.range, _.padding, _.exponent, _.constant); | ||
} // adjust domain based on zero, min, max settings | ||
} | ||
// adjust domain based on zero, min, max settings | ||
if (zero || _.domainMin != null || _.domainMax != null || _.domainMid != null) { | ||
n = (domain = domain.slice()).length - 1 || 1; | ||
if (zero) { | ||
@@ -726,6 +654,4 @@ if (domain[0] > 0) domain[0] = 0; | ||
} | ||
if (_.domainMin != null) domain[0] = _.domainMin; | ||
if (_.domainMax != null) domain[n] = _.domainMax; | ||
if (_.domainMid != null) { | ||
@@ -737,21 +663,21 @@ mid = _.domainMid; | ||
} | ||
} // set the scale domain | ||
} | ||
// set the scale domain | ||
scale.domain(domainCheck(type, domain, df)); | ||
scale.domain(domainCheck(type, domain, df)); // if ordinal scale domain is defined, prevent implicit | ||
// if ordinal scale domain is defined, prevent implicit | ||
// domain construction as side-effect of scale lookup | ||
if (type === Ordinal) { | ||
scale.unknown(_.domainImplicit ? scaleImplicit : undefined); | ||
} // perform 'nice' adjustment as requested | ||
} | ||
// perform 'nice' adjustment as requested | ||
if (_.nice && scale.nice) { | ||
scale.nice(_.nice !== true && tickCount(scale, _.nice) || null); | ||
} // return the cardinality of the domain | ||
} | ||
// return the cardinality of the domain | ||
return domain.length; | ||
} | ||
function rawDomain(scale, raw, df) { | ||
@@ -765,7 +691,6 @@ if (raw) { | ||
} | ||
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 || 1) : type === Symlog ? zoomSymlog(domain, null, frac, constant || 1) : zoomLinear(domain, null, frac); | ||
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 || 1) : type === Symlog ? zoomSymlog(domain, null, frac, constant || 1) : zoomLinear(domain, null, frac); | ||
domain = domain.slice(); | ||
@@ -776,3 +701,2 @@ domain[0] = d[0]; | ||
} | ||
function domainCheck(type, domain, df) { | ||
@@ -783,3 +707,2 @@ if (isLogarithmic(type)) { | ||
var s = Math.abs(domain.reduce((s, v) => s + (v < 0 ? -1 : v > 0 ? 1 : 0), 0)); | ||
if (s !== domain.length) { | ||
@@ -789,17 +712,14 @@ df.warn('Log scale domain includes zero: ' + stringValue(domain)); | ||
} | ||
return domain; | ||
} | ||
function configureBins(scale, _, count) { | ||
let bins = _.bins; | ||
if (bins && !isArray(bins)) { | ||
// generate bin boundary array | ||
const domain = scale.domain(), | ||
lo = domain[0], | ||
hi = peek(domain), | ||
step = bins.step; | ||
lo = domain[0], | ||
hi = peek(domain), | ||
step = bins.step; | ||
let start = bins.start == null ? lo : bins.start, | ||
stop = bins.stop == null ? hi : bins.stop; | ||
stop = bins.stop == null ? hi : bins.stop; | ||
if (!step) error('Scale bins parameter missing step property.'); | ||
@@ -810,3 +730,2 @@ if (start < lo) start = step * Math.ceil(lo / step); | ||
} | ||
if (bins) { | ||
@@ -818,5 +737,5 @@ // assign bin boundaries to scale instance | ||
delete scale.bins; | ||
} // special handling for bin-ordinal scales | ||
} | ||
// special handling for bin-ordinal scales | ||
if (scale.type === BinOrdinal) { | ||
@@ -831,19 +750,20 @@ if (!bins) { | ||
} | ||
} // return domain cardinality | ||
} | ||
// return domain cardinality | ||
return count; | ||
} | ||
function configureRange(scale, _, count) { | ||
var type = scale.type, | ||
round = _.round || false, | ||
range = _.range; // if range step specified, calculate full range extent | ||
round = _.round || false, | ||
range = _.range; | ||
// if range step specified, calculate full range extent | ||
if (_.rangeStep != null) { | ||
range = configureRangeStep(type, _, count); | ||
} // else if a range scheme is defined, use that | ||
} | ||
// else if a range scheme is defined, use that | ||
else if (_.scheme) { | ||
range = configureScheme(type, _, count); | ||
if (isFunction(range)) { | ||
@@ -853,13 +773,13 @@ if (scale.interpolator) { | ||
} else { | ||
error("Scale type ".concat(type, " does not support interpolating color schemes.")); | ||
error(`Scale type ${type} does not support interpolating color schemes.`); | ||
} | ||
} | ||
} // given a range array for an interpolating scale, convert to interpolator | ||
} | ||
// given a range array for an interpolating scale, convert to interpolator | ||
if (range && isInterpolating(type)) { | ||
return scale.interpolator(interpolateColors(flip(range, _.reverse), _.interpolate, _.interpolateGamma)); | ||
} // configure rounding / interpolation | ||
} | ||
// configure rounding / interpolation | ||
if (range && _.interpolate && scale.interpolate) { | ||
@@ -872,22 +792,18 @@ scale.interpolate(interpolate(_.interpolate, _.interpolateGamma)); | ||
} | ||
if (range) scale.range(flip(range, _.reverse)); | ||
} | ||
function configureRangeStep(type, _, count) { | ||
if (type !== Band && type !== Point) { | ||
error('Only band and point scales support rangeStep.'); | ||
} // calculate full range based on requested step size and padding | ||
} | ||
// calculate full range based on requested step size and padding | ||
var outer = (_.paddingOuter != null ? _.paddingOuter : _.padding) || 0, | ||
inner = type === Point ? 1 : (_.paddingInner != null ? _.paddingInner : _.padding) || 0; | ||
inner = type === Point ? 1 : (_.paddingInner != null ? _.paddingInner : _.padding) || 0; | ||
return [0, _.rangeStep * bandSpace(count, inner, outer)]; | ||
} | ||
function configureScheme(type, _, count) { | ||
var extent = _.schemeExtent, | ||
name, | ||
scheme$1; | ||
name, | ||
scheme$1; | ||
if (isArray(_.scheme)) { | ||
@@ -898,15 +814,14 @@ scheme$1 = interpolateColors(_.scheme, _.interpolate, _.interpolateGamma); | ||
scheme$1 = scheme(name); | ||
if (!scheme$1) error("Unrecognized scheme name: ".concat(_.scheme)); | ||
} // determine size for potential discrete range | ||
if (!scheme$1) 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; | ||
count = type === Threshold ? count + 1 : type === BinOrdinal ? count - 1 : type === Quantile || type === Quantize ? +_.schemeCount || DEFAULT_COUNT : count; // adjust and/or quantize scheme as appropriate | ||
// adjust and/or quantize scheme as appropriate | ||
return isInterpolating(type) ? adjustScheme(scheme$1, extent, _.reverse) : isFunction(scheme$1) ? quantizeInterpolator(adjustScheme(scheme$1, extent), count) : type === Ordinal ? scheme$1 : scheme$1.slice(0, count); | ||
} | ||
function adjustScheme(scheme, extent, reverse) { | ||
return isFunction(scheme) && (extent || reverse) ? interpolateRange(scheme, flip(extent || [0, 1], reverse)) : scheme; | ||
} | ||
function flip(array, reverse) { | ||
@@ -923,3 +838,2 @@ return reverse ? array.slice().reverse() : array; | ||
*/ | ||
function SortItems(params) { | ||
@@ -935,9 +849,9 @@ Transform.call(this, null, params); | ||
} | ||
}); | ||
const Zero = 'zero', | ||
Center = 'center', | ||
Normalize = 'normalize', | ||
DefOutput = ['y0', 'y1']; | ||
Center = 'center', | ||
Normalize = 'normalize', | ||
DefOutput = ['y0', 'y1']; | ||
/** | ||
@@ -952,3 +866,2 @@ * Stack layout for visualization elements. | ||
*/ | ||
function Stack(params) { | ||
@@ -988,29 +901,27 @@ Transform.call(this, null, params); | ||
var as = _.as || DefOutput, | ||
y0 = as[0], | ||
y1 = as[1], | ||
sort = stableCompare(_.sort), | ||
field = _.field || one, | ||
stack = _.offset === Center ? stackCenter : _.offset === Normalize ? stackNormalize : stackZero, | ||
groups, | ||
i, | ||
n, | ||
max; // partition, sum, and sort the stack groups | ||
y0 = as[0], | ||
y1 = as[1], | ||
sort = stableCompare(_.sort), | ||
field = _.field || one, | ||
stack = _.offset === Center ? stackCenter : _.offset === Normalize ? stackNormalize : stackZero, | ||
groups, | ||
i, | ||
n, | ||
max; | ||
groups = partition(pulse.source, _.groupby, sort, field); // compute stack layouts per group | ||
// partition, sum, and sort the stack groups | ||
groups = partition(pulse.source, _.groupby, sort, field); | ||
// compute stack layouts per group | ||
for (i = 0, n = groups.length, max = groups.max; i < n; ++i) { | ||
stack(groups[i], max, field, y0, y1); | ||
} | ||
return pulse.reflow(_.modified()).modifies(as); | ||
} | ||
}); | ||
function stackCenter(group, max, field, y0, y1) { | ||
var last = (max - group.sum) / 2, | ||
m = group.length, | ||
j = 0, | ||
t; | ||
m = group.length, | ||
j = 0, | ||
t; | ||
for (; j < m; ++j) { | ||
@@ -1022,11 +933,9 @@ t = group[j]; | ||
} | ||
function stackNormalize(group, max, field, y0, y1) { | ||
var scale = 1 / group.sum, | ||
last = 0, | ||
m = group.length, | ||
j = 0, | ||
v = 0, | ||
t; | ||
last = 0, | ||
m = group.length, | ||
j = 0, | ||
v = 0, | ||
t; | ||
for (; j < m; ++j) { | ||
@@ -1038,15 +947,12 @@ t = group[j]; | ||
} | ||
function stackZero(group, max, field, y0, y1) { | ||
var lastPos = 0, | ||
lastNeg = 0, | ||
m = group.length, | ||
j = 0, | ||
v, | ||
t; | ||
lastNeg = 0, | ||
m = group.length, | ||
j = 0, | ||
v, | ||
t; | ||
for (; j < m; ++j) { | ||
t = group[j]; | ||
v = +field(t); | ||
if (v < 0) { | ||
@@ -1061,17 +967,16 @@ t[y0] = lastNeg; | ||
} | ||
function partition(data, groupby, sort, field) { | ||
var groups = [], | ||
get = f => f(t), | ||
map, | ||
i, | ||
n, | ||
m, | ||
t, | ||
k, | ||
g, | ||
s, | ||
max; // partition data points into stack groups | ||
get = f => f(t), | ||
map, | ||
i, | ||
n, | ||
m, | ||
t, | ||
k, | ||
g, | ||
s, | ||
max; | ||
// partition data points into stack groups | ||
if (groupby == null) { | ||
@@ -1084,3 +989,2 @@ groups.push(data.slice()); | ||
g = map[k]; | ||
if (!g) { | ||
@@ -1090,15 +994,12 @@ map[k] = g = []; | ||
} | ||
g.push(t); | ||
} | ||
} // compute sums of groups, sort groups as needed | ||
} | ||
// compute sums of groups, sort groups as needed | ||
for (k = 0, max = 0, m = groups.length; k < m; ++k) { | ||
g = groups[k]; | ||
for (i = 0, s = 0, n = g.length; i < n; ++i) { | ||
s += Math.abs(field(g[i])); | ||
} | ||
g.sum = s; | ||
@@ -1108,3 +1009,2 @@ if (s > max) max = s; | ||
} | ||
groups.max = max; | ||
@@ -1111,0 +1011,0 @@ return groups; |
{ | ||
"name": "vega-encode", | ||
"version": "4.9.0", | ||
"version": "4.9.1", | ||
"description": "Visual encoding transforms for Vega dataflows.", | ||
@@ -19,3 +19,3 @@ "keywords": [ | ||
"prebuild": "rimraf build", | ||
"build": "rollup -c", | ||
"build": "rollup -c rollup.config.mjs", | ||
"pretest": "yarn build --config-test", | ||
@@ -26,7 +26,7 @@ "test": "tape 'test/**/*-test.js'", | ||
"dependencies": { | ||
"d3-array": "^3.1.1", | ||
"d3-array": "^3.2.2", | ||
"d3-interpolate": "^3.0.1", | ||
"vega-dataflow": "^5.7.3", | ||
"vega-scale": "^7.0.3", | ||
"vega-util": "^1.15.2" | ||
"vega-dataflow": "^5.7.5", | ||
"vega-scale": "^7.3.0", | ||
"vega-util": "^1.17.1" | ||
}, | ||
@@ -36,3 +36,3 @@ "devDependencies": { | ||
}, | ||
"gitHead": "9a3faca4395cade9ecdfde90af98f1c53e9916b2" | ||
"gitHead": "fb1092f6b931d450f9c210b67ae4752bd3dd461b" | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
231164
3444
Updatedd3-array@^3.2.2
Updatedvega-dataflow@^5.7.5
Updatedvega-scale@^7.3.0
Updatedvega-util@^1.17.1