JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/2.5.2/rx.all.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.js"></script>
<input type='text' id='myInput' />

JavaScript

var lines = [];

var w = $(window).width()
var svg = d3.select("body").append("svg").attr("width", w).attr("height", 300);




var keyDowns = Rx.Observable.fromEvent(document.getElementById("myInput"), "keydown");

draw("Key Down", keyDowns);

var throttled = keyDowns.throttle(500);


draw("Throttled", throttled);

var distinct = throttled.map(function(e){
    console.log(e.target.value);
    return e.target.value; 
}).distinctUntilChanged();

draw("Distinct Until Changed", distinct);
     
var performSearch = distinct.flatMapLatest(function(e){
    return $.get("https://api.stackexchange.com//2.2/search?order=desc&sort=activity&site=stackoverflow&intitle=" + e);
});

draw("Search results", performSearch);

var titles = performSearch.flatMap(function(val){
    return val.items;
}).map(function(item){
    console.log("Itme is", item);
    return item.title.link(item.link);  
});

draw("Question titles", titles);

var d = document.createElement("div");
document.body.appendChild(d);
titles.subscribe(function(val){
     d.innerHTML = val + "<br />" + d.innerHTML;
});

function draw(msg, obs) {
    var i = lines.length;
    if (!obs) {
        obs = msg;
        msg = "";
    }
    svg.append("text")
        .attr("fill", "black")
        .attr("x", 40)
        .attr("y", 20 + i * 60)
        .attr("font-family", "sans-serif").attr("font-size", "15px")
        .text(msg);

    var line = svg.append("line")
        .attr("x1", 40)
        .attr("y1", 40 + i * 60)
        .attr("x2", w - 40)
        .attr("y2", 40 + i * 60)
        .attr("stroke-width", 2)
        .attr("stroke", "black")
        .attr("marker-end", "url(\#arrow)")
        .attr("marker-start", "url(\#arrow)");
    lines.push({
        line: line,
        obs: obs
    });

    obs.subscribe(function onData(data) {
        var circle = svg.append("circle")
            .attr("cx", 40)
            .attr("cy", 40 + 60 * i)
            .attr("r", 15)
            .attr("fill", randomColor())
           ...