UNPKG

755 BJavaScriptView Raw
1import {Operator} from 'vega-dataflow';
2import {inherits} from 'vega-util';
3
4/**
5 * Computes global min/max extents over a collection of extents.
6 * @constructor
7 * @param {object} params - The parameters for this operator.
8 * @param {Array<Array<number>>} params.extents - The input extents.
9 */
10export default function MultiExtent(params) {
11 Operator.call(this, null, update, params);
12}
13
14inherits(MultiExtent, Operator);
15
16function update(_) {
17 if (this.value && !_.modified()) {
18 return this.value;
19 }
20
21 const ext = _.extents,
22 n = ext.length;
23
24 let min = +Infinity,
25 max = -Infinity,
26 i, e;
27
28 for (i = 0; i < n; ++i) {
29 e = ext[i];
30 if (e[0] < min) min = e[0];
31 if (e[1] > max) max = e[1];
32 }
33 return [min, max];
34}