// Search helper const doSearch = (str) => { return Bacon.fromPromise($.get("https://openclipart.org/search/json/?query="+str)) } // BaconJS (store) const searchBus = new Bacon.Bus() const fullData = Bacon.combineTemplate({ search: searchBus.toProperty(""), results: [] }) fullData.log() // create a stream of search results const resultStream = fullData.flatMapLatest(doSearch).toProperty(); // Event handlers (actions) const searchChange = (e) => { searchBus.push(e.target.value) } // Function component (view) const renderResults = (results) => React.createElement("div", null, "Sorry, results not implemented for you") const HelloWorld = (props) => (React.createElement("div", null, React.createElement("h1", null, "Search test"), React.createElement("input", {type: "text", onChange: searchChange, value: props.search}), React.createElement("ul", null, renderResults(props.results) ) )); // Tie everything in a bow fullData.onValue((data) => { ReactDOM.render(React.createElement(HelloWorld, React.__spread({}, data)), document.body); })