MCPcopy Create free account
hub / github.com/microsoft/SandDance / applyDefaults

Function applyDefaults

docs/tests/v2/es6/js/sanddance.js:134442–134488  ·  view source on GitHub ↗
(encode, type, role, style, config)

Source from the content-addressed store, hash-verified

134440}
134441
134442function applyDefaults(encode, type, role, style, config) {
134443 var defaults = {},
134444 enter = {},
134445 update,
134446 key,
134447 skip,
134448 props; // ignore legend and axis
134449
134450 if (role == 'legend' || String(role).indexOf('axis') === 0) {
134451 role = null;
134452 } // resolve mark config
134453
134454
134455 props = role === _roles.FrameRole ? config.group : role === _roles.MarkRole ? (0, _vegaUtil.extend)({}, config.mark, config[type]) : null;
134456
134457 for (key in props) {
134458 // do not apply defaults if relevant fields are defined
134459 skip = has(key, encode) || (key === 'fill' || key === 'stroke') && (has('fill', encode) || has('stroke', encode));
134460 if (!skip) applyDefault(defaults, key, props[key]);
134461 } // resolve styles, apply with increasing precedence
134462
134463
134464 (0, _vegaUtil.array)(style).forEach(function (name) {
134465 var props = config.style && config.style[name];
134466
134467 for (var key in props) {
134468 if (!has(key, encode)) {
134469 applyDefault(defaults, key, props[key]);
134470 }
134471 }
134472 });
134473 encode = (0, _vegaUtil.extend)({}, encode); // defensive copy
134474
134475 for (key in defaults) {
134476 props = defaults[key];
134477
134478 if (props.signal) {
134479 (update = update || {})[key] = props;
134480 } else {
134481 enter[key] = props;
134482 }
134483 }
134484
134485 encode.enter = (0, _vegaUtil.extend)(enter, encode.enter);
134486 if (update) encode.update = (0, _vegaUtil.extend)(update, encode.update);
134487 return encode;
134488}
134489
134490function applyDefault(defaults, key, value) {
134491 defaults[key] = value && value.signal ? {

Callers 1

encodersFunction · 0.70

Calls 3

hasFunction · 0.70
applyDefaultFunction · 0.70
forEachMethod · 0.45

Tested by

no test coverage detected