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';
});