Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
function parseSubParameter(def, value, scope) {
var params, pdef, k, i, n;
// loop over defs to find matching key
for (i=0, n=def.params.length; i
function parseSubParameter(def, value, scope) {
var params, pdef, k, i, n;
// loop over defs to find matching key
for (i=0, n=def.params.length; i
}
}
});
encode = extend({}, encode); // defensive copy
for (key in defaults) {
props = defaults[key];
if (props.signal) {
(update = update || {})[key] = props;
} else {
enter[key] = props;
}
}
encode.enter = extend(enter, encode.enter);
if (update) encode.update = extend(update, encode.update);
return encode;
}
function parseScaleRange(spec, scope, params) {
var range = spec.range,
config = scope.config.range;
if (range.signal) {
return scope.signalRef(range.signal);
} else if (isString(range)) {
if (config && config.hasOwnProperty(range)) {
spec = extend({}, spec, {range: config[range]});
return parseScaleRange(spec, scope, params);
} else if (range === 'width') {
range = [0, {signal: 'width'}]
} else if (range === 'height') {
range = isDiscrete(spec.type)
? [0, {signal: 'height'}]
: [{signal: 'height'}, 0]
} else {
error('Unrecognized scale range value: ' + stringValue(range));
}
} else if (range.scheme) {
params.scheme = isArray(range.scheme)
? parseArray(range.scheme, scope)
: parseLiteral(range.scheme, scope);
if (range.extent) params.schemeExtent = parseArray(range.extent, scope);
if (range.count) params.schemeCount = parseLiteral(range.count, scope);
} else {
start = [0, 0];
stop = [1, 0];
width = length;
height = thickness;
}
encode = {
enter: enter = {
opacity: zero,
x: zero,
y: zero,
width: encoder(width),
height: encoder(height)
},
update: extend({}, enter, {
opacity: {value: 1},
fill: {gradient: scale, start: start, stop: stop}
}),
exit: {
opacity: zero
}
};
addEncode(encode, 'stroke', lookup('gradientStrokeColor', spec, config));
addEncode(encode, 'strokeWidth', lookup('gradientStrokeWidth', spec, config));
addEncode(encode, 'opacity', lookup('gradientOpacity', spec, config), 'update');
return guideMark(RectMark, LegendGradientRole, null, undefined, undefined, encode, userEncode);
}
export default function(spec, config, userEncode, dataRef) {
var _ = lookup(spec, config),
orient = spec.orient,
sign = (orient === Left || orient === Top) ? -1 : 1,
horizontal = (orient === Top || orient === Bottom),
encode, enter, update, titlePos;
encode = {
enter: enter = {
opacity: zero,
anchor: encoder(_('titleAnchor')),
align: {signal: alignExpr}
},
update: update = extend({}, enter, {
opacity: one,
text: encoder(spec.title)
}),
exit: {
opacity: zero
}
};
titlePos = {
signal: `lerp(range("${spec.scale}"), ${anchorExpr(0, 1, 0.5)})`
};
if (horizontal) {
update.x = titlePos;
enter.angle = {value: 0};
enter.baseline = {value: orient === Top ? 'bottom' : 'top'};
export function encoder(_) {
return isObject(_) && !isArray(_) ? extend({}, _) : {value: _};
}
return function(out) {
var m = extend({init:'', add:'', rem:'', idx:0}, base);
m.out = out || base.name;
return m;
};
}
view._bind = (spec.bindings || []).map(function(_) {
return {
state: null,
param: extend({}, _)
};
});