/* Drag & Drop */ var parent= document.getElementById('parent'); var widget= document.getElementById('widget'); var mouseDowns= Observable.fromEvent(widget, 'mousedown'); var parentMouseMoves= Observable.fromEvent(parent, 'mousemove'); var parentMouseUp= Observable.fromEvent(parent, 'mosueup'); var drags= mouseDowns. map(function(e) { return parentMouseMoves. takeUntil(parentMouseUps); }). concatAll(); drags.forEach(function(e) { widget.style.left= e.clientX + 'px'; widget.style.top= e.clientY + 'px'; });