1 | import {Transform, ingest} from 'vega-dataflow';
|
2 | import {inherits} from 'vega-util';
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 | export default function Generate(params) {
|
15 | Transform.call(this, [], params);
|
16 | }
|
17 |
|
18 | var prototype = inherits(Generate, Transform);
|
19 |
|
20 | prototype.transform = function(_, pulse) {
|
21 | var data = this.value,
|
22 | out = pulse.fork(pulse.ALL),
|
23 | num = _.size - data.length,
|
24 | gen = _.generator,
|
25 | add, rem, t;
|
26 |
|
27 | if (num > 0) {
|
28 |
|
29 | for (add=[]; --num >= 0;) {
|
30 | add.push(t = ingest(gen(_)));
|
31 | data.push(t);
|
32 | }
|
33 | out.add = out.add.length
|
34 | ? out.materialize(out.ADD).add.concat(add)
|
35 | : add;
|
36 | } else {
|
37 |
|
38 | rem = data.slice(0, -num);
|
39 | out.rem = out.rem.length
|
40 | ? out.materialize(out.REM).rem.concat(rem)
|
41 | : rem;
|
42 | data = data.slice(-num);
|
43 | }
|
44 |
|
45 | out.source = this.value = data;
|
46 | return out;
|
47 | };
|