{
const svg = d3.create('svg')
.attr('height',dimension.height)
.attr('width', dimension.width)
while(true){
const t = () =>{
return d3.transition()
.duration(800)
};
const newData = svg
.selectAll('text')
.data(randomData(), d=>d)
.join(enter => enter.append('text').attr('x', width-15 ).attr('fill','blue')
.attr('stroke-width','.02px').text(d=>d)
.call(enter => enter.transition(t).attr('x', 15)
.attr('y', (d,i) =>(i*15+15))),
update => update.attr('fill','black').call(update => update.transition(t)
.attr('x', 15).attr('y', (d,i) =>(i*15+15))), exit => exit.attr('fill', 'red').call(exit => exit.transition(t)
.attr('y',dimension.height-20).remove())
).attr('x', 40);
yield svg.node();
await Promises.tick(3000);
}
}