vega-lite-api
Version:
A JavaScript API for Vega-Lite.
2,326 lines (2,020 loc) • 1.28 MB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.vl = {}));
})(this, (function (exports) { 'use strict';
const Data$1 = Symbol('data');
const Context = Symbol('context');
let id_counter = 0;
function id(prefix) {
return (prefix || '') + (++id_counter);
}
class BaseObject {
toObject() { return toObject(this); }
}
class MergeObject {
constructor(values) { this[Data$1] = values; }
toObject() { return Object.assign({}, ...recurse(this[Data$1])); }
}
function assign(target, ...sources) {
if (sources.length === 1 && Array.isArray(sources[0])) {
target[Data$1] = sources[0];
} else {
sources.forEach(s => {
Object.assign(target[Data$1], isObject(s) && s[Data$1] || s);
});
}
return target;
}
function flat(value) {
return Array.isArray(value) ? [].concat(...value) : value;
}
function prop(obj, name) {
return isObject(obj) && !obj[Data$1] ? obj[name] : get(obj, name);
}
function get(obj, name) {
return obj[Data$1][name];
}
function set(obj, name, value) {
obj[Data$1][name] = object(value);
}
function duplicate(...obj) {
return Object.assign(
Object.create(Object.getPrototypeOf(obj[0])),
...obj
);
}
function copy(obj) {
return duplicate(obj, { [Data$1]: Object.assign({}, obj[Data$1]) });
}
function init(obj, value) {
obj[Data$1] = value || {};
}
function annotate(value, context) {
const ctx = { [Context]: context };
return isArray(value)
? value.map(v => duplicate(v, ctx))
: duplicate(value, ctx)
}
function recurse(d) {
return d && d.toObject ? d.toObject(d[Context] || 0) : toObject(d);
}
function toObject(value) {
if (isArray(value)) {
return value.map(d => recurse(d));
} else if (isObject(value)) {
const data = value[Data$1] || value;
return isArray(data)
? recurse(data)
: Object.keys(data).reduce((_, k) => {
_[k] = recurse(data[k]);
return _;
}, {});
} else {
return value;
}
}
function raw(value) {
return { [Data$1]: value, toObject: () => value };
}
function object(value) {
return (isObject(value) && !value[Data$1]) ? {[Data$1]: value || {}} : value;
}
function merge(flag, ...values) {
const objects = [].concat(...values);
return new MergeObject(flag ? annotate(objects, flag) : objects);
}
function nest(obj, keys, rest) {
const m = keys.reduce((m, k) => (m[k] = 1, m), {}),
u = {}, v = {};
for (let k in obj) (m[k] ? u : v)[k] = obj[k];
u[rest] = v;
return u;
}
// -- type checkers --
const isArray = Array.isArray;
function isIterable(_) {
return isObject(_) && typeof _[Symbol.iterator] === 'function';
}
function isObject(_) {
return _ === Object(_) && !isArray(_);
}
function isString(_) {
return typeof _ === 'string';
}
function isFunction(_) {
return typeof _ === 'function';
}
function isEventTarget(_) {
return isObject(_) && isFunction(_.addEventListener);
}
exports.vegalite = void 0;
exports.vega = void 0;
var _opt;
// TODO: validation
function options(...viewopt) {
const opt = Object.assign({}, _opt);
opt.view = Object.assign({}, _opt.view, ...viewopt);
if (opt.view.spec) {
opt.spec = opt.view.spec;
delete opt.view.spec;
}
return opt;
}
function element() {
return typeof document === 'undefined' ? undefined
: document.createElement('div');
}
function createSpec(self) {
const major = exports.vegalite ? exports.vegalite.version.split('.')[0] : '5';
return Object.assign(
{$schema: `https://vega.github.io/schema/vega-lite/v${major}.json`},
self.toObject()
);
}
function createView(self, opt) {
if (!exports.vegalite || !exports.vega) {
throw Error('Vega / Vega-Lite not registered. Use the "register" method.');
}
const spec = exports.vegalite.compile(opt.spec || createSpec(self), opt.config),
view = new exports.vega.View(exports.vega.parse(spec.spec), opt.view);
if (opt.init) opt.init(view);
return view;
}
async function render(opt) {
opt = options({container: opt && opt.container || element()}, opt);
const view = await createView(this, opt).runAsync(),
div = view.container() || {};
div.value = view;
return div;
}
function toView(opt) {
return createView(this, options(opt));
}
function toSpec() {
return createSpec(this);
}
function toString(space) {
return JSON.stringify(createSpec(this), null, space);
}
function register(vega, vegalite, options) {
exports.vegalite = vegalite;
exports.vega = vega;
_opt = options || {};
return this;
}
class _Repeat extends BaseObject {
constructor(...args) {
super();
init(this);
if (args[0] !== undefined) set(this, "repeat", args[0]);
if (args[1] !== undefined) set(this, "spec", args[1]);
}
align(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "align", value);
return obj;
} else {
return get(this, "align");
}
}
autosize(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "autosize", value);
return obj;
} else {
return get(this, "autosize");
}
}
background(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "background", value);
return obj;
} else {
return get(this, "background");
}
}
bounds(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "bounds", value);
return obj;
} else {
return get(this, "bounds");
}
}
center(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "center", value);
return obj;
} else {
return get(this, "center");
}
}
columns(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "columns", value);
return obj;
} else {
return get(this, "columns");
}
}
config(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "config", value);
return obj;
} else {
return get(this, "config");
}
}
datasets(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "datasets", value);
return obj;
} else {
return get(this, "datasets");
}
}
description(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "description", value);
return obj;
} else {
return get(this, "description");
}
}
name(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "name", value);
return obj;
} else {
return get(this, "name");
}
}
padding(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "padding", value);
return obj;
} else {
return get(this, "padding");
}
}
resolve(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "resolve", value);
return obj;
} else {
return get(this, "resolve");
}
}
spacing(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "spacing", value);
return obj;
} else {
return get(this, "spacing");
}
}
spec(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "spec", value);
return obj;
} else {
return get(this, "spec");
}
}
title(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "title", value);
return obj;
} else {
return get(this, "title");
}
}
usermeta(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "usermeta", value);
return obj;
} else {
return get(this, "usermeta");
}
}
data(value) {
if (arguments.length) {
const obj = copy(this);
value = isArray(value) ? {values: raw(value)} : isIterable(value) ? {values: raw(value)} : isString(value) ? {url: value} : value;
set(obj, "data", value);
return obj;
} else {
return get(this, "data");
}
}
params(...value) {
if (arguments.length) {
const obj = copy(this);
value = flat(value);
value = annotate(value, 1);
set(obj, "params", value);
return obj;
} else {
return get(this, "params");
}
}
transform(...value) {
if (arguments.length) {
const obj = copy(this);
value = flat(value);
set(obj, "transform", value);
return obj;
} else {
return get(this, "transform");
}
}
facet(...values) {
values = values.slice(0, 1);
const obj = _facet(...values);
return obj.spec(this);
}
render(...values) {
return render.apply(this, values);
}
toView(...values) {
return toView.apply(this, values);
}
toSpec(...values) {
return toSpec.apply(this, values);
}
toString(...values) {
return toString.apply(this, values);
}
}
function _repeat(...args) {
return new _Repeat(...args);
}
class _Facet extends BaseObject {
constructor(...args) {
super();
init(this);
if (args[0] !== undefined) set(this, "facet", args[0]);
if (args[1] !== undefined) set(this, "spec", args[1]);
}
align(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "align", value);
return obj;
} else {
return get(this, "align");
}
}
autosize(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "autosize", value);
return obj;
} else {
return get(this, "autosize");
}
}
background(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "background", value);
return obj;
} else {
return get(this, "background");
}
}
bounds(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "bounds", value);
return obj;
} else {
return get(this, "bounds");
}
}
center(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "center", value);
return obj;
} else {
return get(this, "center");
}
}
columns(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "columns", value);
return obj;
} else {
return get(this, "columns");
}
}
config(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "config", value);
return obj;
} else {
return get(this, "config");
}
}
datasets(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "datasets", value);
return obj;
} else {
return get(this, "datasets");
}
}
description(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "description", value);
return obj;
} else {
return get(this, "description");
}
}
name(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "name", value);
return obj;
} else {
return get(this, "name");
}
}
padding(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "padding", value);
return obj;
} else {
return get(this, "padding");
}
}
resolve(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "resolve", value);
return obj;
} else {
return get(this, "resolve");
}
}
spacing(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "spacing", value);
return obj;
} else {
return get(this, "spacing");
}
}
spec(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "spec", value);
return obj;
} else {
return get(this, "spec");
}
}
title(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "title", value);
return obj;
} else {
return get(this, "title");
}
}
usermeta(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "usermeta", value);
return obj;
} else {
return get(this, "usermeta");
}
}
data(value) {
if (arguments.length) {
const obj = copy(this);
value = isArray(value) ? {values: raw(value)} : isIterable(value) ? {values: raw(value)} : isString(value) ? {url: value} : value;
set(obj, "data", value);
return obj;
} else {
return get(this, "data");
}
}
params(...value) {
if (arguments.length) {
const obj = copy(this);
value = flat(value);
value = annotate(value, 1);
set(obj, "params", value);
return obj;
} else {
return get(this, "params");
}
}
transform(...value) {
if (arguments.length) {
const obj = copy(this);
value = flat(value);
set(obj, "transform", value);
return obj;
} else {
return get(this, "transform");
}
}
repeat(...values) {
values = values.slice(0, 1);
const obj = _repeat(...values);
return obj.spec(this);
}
render(...values) {
return render.apply(this, values);
}
toView(...values) {
return toView.apply(this, values);
}
toSpec(...values) {
return toSpec.apply(this, values);
}
toString(...values) {
return toString.apply(this, values);
}
}
function _facet(...args) {
return new _Facet(...args);
}
class Mark extends BaseObject {
constructor(...args) {
super();
init(this);
args = args.map(_ => isString(_) ? {type: _} : _);
set(this, "mark", merge(0, get(this, "mark"), args));
}
align(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "align", value);
return obj;
} else {
return get(this, "align");
}
}
autosize(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "autosize", value);
return obj;
} else {
return get(this, "autosize");
}
}
background(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "background", value);
return obj;
} else {
return get(this, "background");
}
}
bounds(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "bounds", value);
return obj;
} else {
return get(this, "bounds");
}
}
center(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "center", value);
return obj;
} else {
return get(this, "center");
}
}
config(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "config", value);
return obj;
} else {
return get(this, "config");
}
}
datasets(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "datasets", value);
return obj;
} else {
return get(this, "datasets");
}
}
description(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "description", value);
return obj;
} else {
return get(this, "description");
}
}
height(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "height", value);
return obj;
} else {
return get(this, "height");
}
}
name(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "name", value);
return obj;
} else {
return get(this, "name");
}
}
padding(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "padding", value);
return obj;
} else {
return get(this, "padding");
}
}
resolve(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "resolve", value);
return obj;
} else {
return get(this, "resolve");
}
}
spacing(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "spacing", value);
return obj;
} else {
return get(this, "spacing");
}
}
title(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "title", value);
return obj;
} else {
return get(this, "title");
}
}
usermeta(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "usermeta", value);
return obj;
} else {
return get(this, "usermeta");
}
}
view(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "view", value);
return obj;
} else {
return get(this, "view");
}
}
width(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "width", value);
return obj;
} else {
return get(this, "width");
}
}
mark(...values) {
if (arguments.length) {
values = values.map(v => isString(v) ? {type: v} : v);
const obj = copy(this);
set(obj, "mark", merge(0, values));
return obj;
} else {
return get(this, "mark");
}
}
select(...value) {
if (arguments.length) {
const obj = copy(this);
value = flat(value);
value = annotate(value, 1);
set(obj, "params", value);
return obj;
} else {
return get(this, "params");
}
}
project(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "projection", value);
return obj;
} else {
return get(this, "projection");
}
}
encode(...values) {
if (values.length === 1 && Array.isArray(values[0])) {
values = values[0];
}
if (values.length) {
const val = get(this, "encoding");
const obj = copy(this);
if (val) values = [val].concat(values);
set(obj, "encoding", merge(1, values));
return obj;
} else {
return get(this, "encoding");
}
}
data(value) {
if (arguments.length) {
const obj = copy(this);
value = isArray(value) ? {values: raw(value)} : isIterable(value) ? {values: raw(value)} : isString(value) ? {url: value} : value;
set(obj, "data", value);
return obj;
} else {
return get(this, "data");
}
}
params(...value) {
if (arguments.length) {
const obj = copy(this);
value = flat(value);
value = annotate(value, 1);
set(obj, "params", value);
return obj;
} else {
return get(this, "params");
}
}
transform(...value) {
if (arguments.length) {
const obj = copy(this);
value = flat(value);
set(obj, "transform", value);
return obj;
} else {
return get(this, "transform");
}
}
markArc(...values) {
values = [{"type":"arc"}].concat(values);
const obj = copy(this);
set(obj, "mark", merge(0, values));
return obj;
}
markArea(...values) {
values = [{"type":"area"}].concat(values);
const obj = copy(this);
set(obj, "mark", merge(0, values));
return obj;
}
markBar(...values) {
values = [{"type":"bar"}].concat(values);
const obj = copy(this);
set(obj, "mark", merge(0, values));
return obj;
}
markBoxplot(...values) {
values = [{"type":"boxplot"}].concat(values);
const obj = copy(this);
set(obj, "mark", merge(0, values));
return obj;
}
markCircle(...values) {
values = [{"type":"circle"}].concat(values);
const obj = copy(this);
set(obj, "mark", merge(0, values));
return obj;
}
markErrorband(...values) {
values = [{"type":"errorband"}].concat(values);
const obj = copy(this);
set(obj, "mark", merge(0, values));
return obj;
}
markErrorbar(...values) {
values = [{"type":"errorbar"}].concat(values);
const obj = copy(this);
set(obj, "mark", merge(0, values));
return obj;
}
markGeoshape(...values) {
values = [{"type":"geoshape"}].concat(values);
const obj = copy(this);
set(obj, "mark", merge(0, values));
return obj;
}
markImage(...values) {
values = [{"type":"image"}].concat(values);
const obj = copy(this);
set(obj, "mark", merge(0, values));
return obj;
}
markLine(...values) {
values = [{"type":"line"}].concat(values);
const obj = copy(this);
set(obj, "mark", merge(0, values));
return obj;
}
markPoint(...values) {
values = [{"type":"point"}].concat(values);
const obj = copy(this);
set(obj, "mark", merge(0, values));
return obj;
}
markRect(...values) {
values = [{"type":"rect"}].concat(values);
const obj = copy(this);
set(obj, "mark", merge(0, values));
return obj;
}
markRule(...values) {
values = [{"type":"rule"}].concat(values);
const obj = copy(this);
set(obj, "mark", merge(0, values));
return obj;
}
markSquare(...values) {
values = [{"type":"square"}].concat(values);
const obj = copy(this);
set(obj, "mark", merge(0, values));
return obj;
}
markText(...values) {
values = [{"type":"text"}].concat(values);
const obj = copy(this);
set(obj, "mark", merge(0, values));
return obj;
}
markTick(...values) {
values = [{"type":"tick"}].concat(values);
const obj = copy(this);
set(obj, "mark", merge(0, values));
return obj;
}
markTrail(...values) {
values = [{"type":"trail"}].concat(values);
const obj = copy(this);
set(obj, "mark", merge(0, values));
return obj;
}
facet(...values) {
values = values.slice(0, 1);
const obj = _facet(...values);
return obj.spec(this);
}
repeat(...values) {
values = values.slice(0, 1);
const obj = _repeat(...values);
return obj.spec(this);
}
render(...values) {
return render.apply(this, values);
}
toView(...values) {
return toView.apply(this, values);
}
toSpec(...values) {
return toSpec.apply(this, values);
}
toString(...values) {
return toString.apply(this, values);
}
}
function mark(...args) {
return new Mark(...args);
}
function markArc(...args) {
return mark({"type":"arc"}, ...args);
}
function markArea(...args) {
return mark({"type":"area"}, ...args);
}
function markBar(...args) {
return mark({"type":"bar"}, ...args);
}
function markBoxplot(...args) {
return mark({"type":"boxplot"}, ...args);
}
function markCircle(...args) {
return mark({"type":"circle"}, ...args);
}
function markErrorband(...args) {
return mark({"type":"errorband"}, ...args);
}
function markErrorbar(...args) {
return mark({"type":"errorbar"}, ...args);
}
function markGeoshape(...args) {
return mark({"type":"geoshape"}, ...args);
}
function markImage(...args) {
return mark({"type":"image"}, ...args);
}
function markLine(...args) {
return mark({"type":"line"}, ...args);
}
function markPoint(...args) {
return mark({"type":"point"}, ...args);
}
function markRect(...args) {
return mark({"type":"rect"}, ...args);
}
function markRule(...args) {
return mark({"type":"rule"}, ...args);
}
function markSquare(...args) {
return mark({"type":"square"}, ...args);
}
function markText(...args) {
return mark({"type":"text"}, ...args);
}
function markTick(...args) {
return mark({"type":"tick"}, ...args);
}
function markTrail(...args) {
return mark({"type":"trail"}, ...args);
}
class Layer extends BaseObject {
constructor(...args) {
super();
init(this);
args = flat(args);
set(this, "layer", args);
}
autosize(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "autosize", value);
return obj;
} else {
return get(this, "autosize");
}
}
background(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "background", value);
return obj;
} else {
return get(this, "background");
}
}
config(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "config", value);
return obj;
} else {
return get(this, "config");
}
}
datasets(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "datasets", value);
return obj;
} else {
return get(this, "datasets");
}
}
description(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "description", value);
return obj;
} else {
return get(this, "description");
}
}
height(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "height", value);
return obj;
} else {
return get(this, "height");
}
}
layer(...value) {
if (arguments.length) {
const obj = copy(this);
value = flat(value);
set(obj, "layer", value);
return obj;
} else {
return get(this, "layer");
}
}
name(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "name", value);
return obj;
} else {
return get(this, "name");
}
}
padding(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "padding", value);
return obj;
} else {
return get(this, "padding");
}
}
resolve(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "resolve", value);
return obj;
} else {
return get(this, "resolve");
}
}
title(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "title", value);
return obj;
} else {
return get(this, "title");
}
}
usermeta(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "usermeta", value);
return obj;
} else {
return get(this, "usermeta");
}
}
view(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "view", value);
return obj;
} else {
return get(this, "view");
}
}
width(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "width", value);
return obj;
} else {
return get(this, "width");
}
}
project(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "projection", value);
return obj;
} else {
return get(this, "projection");
}
}
encode(...values) {
if (values.length === 1 && Array.isArray(values[0])) {
values = values[0];
}
if (values.length) {
const val = get(this, "encoding");
const obj = copy(this);
if (val) values = [val].concat(values);
set(obj, "encoding", merge(1, values));
return obj;
} else {
return get(this, "encoding");
}
}
data(value) {
if (arguments.length) {
const obj = copy(this);
value = isArray(value) ? {values: raw(value)} : isIterable(value) ? {values: raw(value)} : isString(value) ? {url: value} : value;
set(obj, "data", value);
return obj;
} else {
return get(this, "data");
}
}
params(...value) {
if (arguments.length) {
const obj = copy(this);
value = flat(value);
value = annotate(value, 1);
set(obj, "params", value);
return obj;
} else {
return get(this, "params");
}
}
transform(...value) {
if (arguments.length) {
const obj = copy(this);
value = flat(value);
set(obj, "transform", value);
return obj;
} else {
return get(this, "transform");
}
}
facet(...values) {
values = values.slice(0, 1);
const obj = _facet(...values);
return obj.spec(this);
}
repeat(...values) {
values = values.slice(0, 1);
const obj = _repeat(...values);
return obj.spec(this);
}
render(...values) {
return render.apply(this, values);
}
toView(...values) {
return toView.apply(this, values);
}
toSpec(...values) {
return toSpec.apply(this, values);
}
toString(...values) {
return toString.apply(this, values);
}
}
function layer(...args) {
return new Layer(...args);
}
class Concat extends BaseObject {
constructor(...args) {
super();
init(this);
args = flat(args);
set(this, "concat", args);
}
align(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "align", value);
return obj;
} else {
return get(this, "align");
}
}
autosize(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "autosize", value);
return obj;
} else {
return get(this, "autosize");
}
}
background(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "background", value);
return obj;
} else {
return get(this, "background");
}
}
bounds(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "bounds", value);
return obj;
} else {
return get(this, "bounds");
}
}
center(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "center", value);
return obj;
} else {
return get(this, "center");
}
}
columns(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "columns", value);
return obj;
} else {
return get(this, "columns");
}
}
concat(...value) {
if (arguments.length) {
const obj = copy(this);
value = flat(value);
set(obj, "concat", value);
return obj;
} else {
return get(this, "concat");
}
}
config(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "config", value);
return obj;
} else {
return get(this, "config");
}
}
datasets(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "datasets", value);
return obj;
} else {
return get(this, "datasets");
}
}
description(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "description", value);
return obj;
} else {
return get(this, "description");
}
}
name(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "name", value);
return obj;
} else {
return get(this, "name");
}
}
padding(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "padding", value);
return obj;
} else {
return get(this, "padding");
}
}
resolve(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "resolve", value);
return obj;
} else {
return get(this, "resolve");
}
}
spacing(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "spacing", value);
return obj;
} else {
return get(this, "spacing");
}
}
title(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "title", value);
return obj;
} else {
return get(this, "title");
}
}
usermeta(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "usermeta", value);
return obj;
} else {
return get(this, "usermeta");
}
}
data(value) {
if (arguments.length) {
const obj = copy(this);
value = isArray(value) ? {values: raw(value)} : isIterable(value) ? {values: raw(value)} : isString(value) ? {url: value} : value;
set(obj, "data", value);
return obj;
} else {
return get(this, "data");
}
}
params(...value) {
if (arguments.length) {
const obj = copy(this);
value = flat(value);
value = annotate(value, 1);
set(obj, "params", value);
return obj;
} else {
return get(this, "params");
}
}
transform(...value) {
if (arguments.length) {
const obj = copy(this);
value = flat(value);
set(obj, "transform", value);
return obj;
} else {
return get(this, "transform");
}
}
facet(...values) {
values = values.slice(0, 1);
const obj = _facet(...values);
return obj.spec(this);
}
repeat(...values) {
values = values.slice(0, 1);
const obj = _repeat(...values);
return obj.spec(this);
}
render(...values) {
return render.apply(this, values);
}
toView(...values) {
return toView.apply(this, values);
}
toSpec(...values) {
return toSpec.apply(this, values);
}
toString(...values) {
return toString.apply(this, values);
}
}
function concat(...args) {
return new Concat(...args);
}
class Hconcat extends BaseObject {
constructor(...args) {
super();
init(this);
args = flat(args);
set(this, "hconcat", args);
}
autosize(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "autosize", value);
return obj;
} else {
return get(this, "autosize");
}
}
background(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "background", value);
return obj;
} else {
return get(this, "background");
}
}
bounds(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "bounds", value);
return obj;
} else {
return get(this, "bounds");
}
}
center(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "center", value);
return obj;
} else {
return get(this, "center");
}
}
config(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "config", value);
return obj;
} else {
return get(this, "config");
}
}
datasets(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "datasets", value);
return obj;
} else {
return get(this, "datasets");
}
}
description(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "description", value);
return obj;
} else {
return get(this, "description");
}
}
hconcat(...value) {
if (arguments.length) {
const obj = copy(this);
value = flat(value);
set(obj, "hconcat", value);
return obj;
} else {
return get(this, "hconcat");
}
}
name(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "name", value);
return obj;
} else {
return get(this, "name");
}
}
padding(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "padding", value);
return obj;
} else {
return get(this, "padding");
}
}
resolve(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "resolve", value);
return obj;
} else {
return get(this, "resolve");
}
}
spacing(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "spacing", value);
return obj;
} else {
return get(this, "spacing");
}
}
title(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "title", value);
return obj;
} else {
return get(this, "title");
}
}
usermeta(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "usermeta", value);
return obj;
} else {
return get(this, "usermeta");
}
}
data(value) {
if (arguments.length) {
const obj = copy(this);
value = isArray(value) ? {values: raw(value)} : isIterable(value) ? {values: raw(value)} : isString(value) ? {url: value} : value;
set(obj, "data", value);
return obj;
} else {
return get(this, "data");
}
}
params(...value) {
if (arguments.length) {
const obj = copy(this);
value = flat(value);
value = annotate(value, 1);
set(obj, "params", value);
return obj;
} else {
return get(this, "params");
}
}
transform(...value) {
if (arguments.length) {
const obj = copy(this);
value = flat(value);
set(obj, "transform", value);
return obj;
} else {
return get(this, "transform");
}
}
facet(...values) {
values = values.slice(0, 1);
const obj = _facet(...values);
return obj.spec(this);
}
repeat(...values) {
values = values.slice(0, 1);
const obj = _repeat(...values);
return obj.spec(this);
}
render(...values) {
return render.apply(this, values);
}
toView(...values) {
return toView.apply(this, values);
}
toSpec(...values) {
return toSpec.apply(this, values);
}
toString(...values) {
return toString.apply(this, values);
}
}
function hconcat(...args) {
return new Hconcat(...args);
}
class Vconcat extends BaseObject {
constructor(...args) {
super();
init(this);
args = flat(args);
set(this, "vconcat", args);
}
autosize(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "autosize", value);
return obj;
} else {
return get(this, "autosize");
}
}
background(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "background", value);
return obj;
} else {
return get(this, "background");
}
}
bounds(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "bounds", value);
return obj;
} else {
return get(this, "bounds");
}
}
center(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "center", value);
return obj;
} else {
return get(this, "center");
}
}
config(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "config", value);
return obj;
} else {
return get(this, "config");
}
}
datasets(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "datasets", value);
return obj;
} else {
return get(this, "datasets");
}
}
description(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "description", value);
return obj;
} else {
return get(this, "description");
}
}
name(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "name", value);
return obj;
} else {
return get(this, "name");
}
}
padding(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "padding", value);
return obj;
} else {
return get(this, "padding");
}
}
resolve(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "resolve", value);
return obj;
} else {
return get(this, "resolve");
}
}
spacing(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "spacing", value);
return obj;
} else {
return get(this, "spacing");
}
}
title(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "title", value);
return obj;
} else {
return get(this, "title");
}
}
usermeta(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "usermeta", value);
return obj;
} else {
return get(this, "usermeta");
}
}
vconcat(...value) {
if (arguments.length) {
const obj = copy(this);
value = flat(value);
set(obj, "vconcat", value);
return obj;
} else {
return get(this, "vconcat");
}
}
data(value) {
if (arguments.length) {
const obj = copy(this);
value = isArray(value) ? {values: raw(value)} : isIterable(value) ? {values: raw(value)} : isString(value) ? {url: value} : value;
set(obj, "data", value);
return obj;
} else {
return get(this, "data");
}
}
params(...value) {
if (arguments.length) {
const obj = copy(this);
value = flat(value);
value = annotate(value, 1);
set(obj, "params", value);
return obj;
} else {
return get(this, "params");
}
}
transform(...value) {
if (arguments.length) {
const obj = copy(this);
value = flat(value);
set(obj, "transform", value);
return obj;
} else {
return get(this, "transform");
}
}
facet(...values) {
values = values.slice(0, 1);
const obj = _facet(...values);
return obj.spec(this);
}
repeat(...values) {
values = values.slice(0, 1);
const obj = _repeat(...values);
return obj.spec(this);
}
render(...values) {
return render.apply(this, values);
}
toView(...values) {
return toView.apply(this, values);
}
toSpec(...values) {
return toSpec.apply(this, values);
}
toString(...values) {
return toString.apply(this, values);
}
}
function vconcat(...args) {
return new Vconcat(...args);
}
class Spec extends BaseObject {
constructor(...args) {
super();
init(this);
assign(this, ...args);
}
align(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "align", value);
return obj;
} else {
return get(this, "align");
}
}
autosize(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "autosize", value);
return obj;
} else {
return get(this, "autosize");
}
}
background(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "background", value);
return obj;
} else {
return get(this, "background");
}
}
bounds(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "bounds", value);
return obj;
} else {
return get(this, "bounds");
}
}
center(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "center", value);
return obj;
} else {
return get(this, "center");
}
}
config(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "config", value);
return obj;
} else {
return get(this, "config");
}
}
datasets(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "datasets", value);
return obj;
} else {
return get(this, "datasets");
}
}
description(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "description", value);
return obj;
} else {
return get(this, "description");
}
}
encoding(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "encoding", value);
return obj;
} else {
return get(this, "encoding");
}
}
height(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "height", value);
return obj;
} else {
return get(this, "height");
}
}
mark(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "mark", value);
return obj;
} else {
return get(this, "mark");
}
}
name(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "name", value);
return obj;
} else {
return get(this, "name");
}
}
padding(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "padding", value);
return obj;
} else {
return get(this, "padding");
}
}
projection(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "projection", value);
return obj;
} else {
return get(this, "projection");
}
}
resolve(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "resolve", value);
return obj;
} else {
return get(this, "resolve");
}
}
spacing(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "spacing", value);
return obj;
} else {
return get(this, "spacing");
}
}
title(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "title", value);
return obj;
} else {
return get(this, "title");
}
}
usermeta(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "usermeta", value);
return obj;
} else {
return get(this, "usermeta");
}
}
view(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "view", value);
return obj;
} else {
return get(this, "view");
}
}
width(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "width", value);
return obj;
} else {
return get(this, "width");
}
}
columns(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "columns", value);
return obj;
} else {
return get(this, "columns");
}
}
spec(value) {
if (arguments.length) {
const obj = copy(this);
set(obj, "spec", value);
return obj;
} else {
return get(this, "spec");
}
}
layer(...value) {
if (arguments.length) {
const obj = copy(this);
value = flat(value);
set(obj, "layer", value);
return obj;
} else {
return get(this, "layer");
}
}
concat(...value) {
if (arguments.length) {
const obj = copy(this);
value = flat(value);
set(obj, "concat", value);
return obj;
} else {
return get(this, "concat");
}
}
vconcat(...value) {
if (arguments.length) {
const obj = copy(this);
value = flat(value);
set(obj, "vconcat", value);
retur