JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.5.2/Rx.min.js"></script>
<div id="dragMe"></div>
CSS
#dragMe {
width: 50px;
height: 50px;
background: black;
position: absolute;
}
JavaScript
const dm = document.getElementById('dragMe');
const mouseDown$ = Rx.Observable.fromEvent(dm, 'mousedown');
const mouseMove$ = Rx.Observable.fromEvent(document, 'mousemove');
const mouseUp$ = Rx.Observable.fromEvent(document, 'mouseup');
const drag$ = mouseDown$.concatMap(() => mouseMove$.takeUntil(mouseUp$))
.do(e=>console.log(e.type));
drag$.subscribe(event => {
dm.style.left = event.clientX + 'px';
dm.style.top = event.clientY + 'px';
});