Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
  <script src="//code.jquery.com/jquery-2.1.1.min.js"></script>
   <script src="//cdnjs.cloudflare.com/ajax/libs/bacon.js/0.7.49/Bacon.min.js"></script> 
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
  <div id="item"></div>
  <div id="result"></div>
</body>
</html>
 
var btn = $('#item');
var downs = btn.asEventStream('mousedown');
var ups = $(document).asEventStream('mouseup').map('clicks');
var clickOrHold = downs.flatMapLatest(function() {
  return Bacon.later(1000, 'hold').merge(ups).take(1);
});
var dragging = clickOrHold.filter(function(val) {return val == 'hold';} )
  .merge(ups.map(false))
  .toProperty(false);
$(document).asEventStream('mousemove').filter(dragging).onValue(function(mmove) {
  mmove.preventDefault();
  btn.offset({left: mmove.clientX, top: mmove.clientY});
});
clickOrHold.onValue($('#result'), 'append');
Output

This bin was created anonymously and its free preview time has expired (learn why). — Get a free unrestricted account

Dismiss x
public
Bin info
anonymouspro
0viewers