| 247 | } |
| 248 | |
| 249 | function makeObjectifyGraph(id$: Stream<string>) { |
| 250 | return function objectifyGraph(diagram$: Stream<Diagram>): Stream<Object> { |
| 251 | return xs.combine(diagram$, id$) |
| 252 | .map(([{graph, zaps$}, id]) => { |
| 253 | const object = dagre.graphlib['json'].write(graph); |
| 254 | for (let i = 0, N = object.nodes.length; i < N; i++) { |
| 255 | delete object.nodes[i].stream; |
| 256 | } |
| 257 | return zaps$.map(zaps => { |
| 258 | object.zaps = zaps; |
| 259 | object.id = id; |
| 260 | return object; |
| 261 | }); |
| 262 | }).flatten(); |
| 263 | }; |
| 264 | } |
| 265 | |
| 266 | function sinksAreXStream(sinks: Object | null): boolean { |
| 267 | if (sinks === null) { |