vega-lite
Version:
Vega-Lite is a concise high-level language for interactive visualization.
38 lines (35 loc) • 1.28 kB
text/typescript
import {UnitModel} from '../unit.js';
import {MarkCompiler} from './base.js';
import * as encode from './encode/index.js';
export const area: MarkCompiler = {
vgMark: 'area',
encodeEntry: (model: UnitModel) => {
const xRangeFromOffset = model.isRangedOffset('x');
const yRangeFromOffset = model.isRangedOffset('y');
const hasOffsetDrivenRange = xRangeFromOffset || yRangeFromOffset;
const xIsRange = xRangeFromOffset || (!hasOffsetDrivenRange && model.markDef.orient === 'horizontal');
const yIsRange = yRangeFromOffset || (!hasOffsetDrivenRange && model.markDef.orient === 'vertical');
const yDefaultPos = yRangeFromOffset && !model.encoding.y ? 'zeroOrMax' : 'zeroOrMin';
return {
...encode.baseEncodeEntry(model, {
align: 'ignore',
baseline: 'ignore',
color: 'include',
orient: 'include',
size: 'ignore',
theta: 'ignore',
}),
...encode.pointOrRangePosition('x', model, {
defaultPos: 'zeroOrMin',
defaultPos2: 'zeroOrMin',
range: xIsRange,
}),
...encode.pointOrRangePosition('y', model, {
defaultPos: yDefaultPos,
defaultPos2: 'zeroOrMin',
range: yIsRange,
}),
...encode.defined(model),
};
},
};