anchor.diff:            _dragEnd(e);
           }
         }
  +      _isDragStartPending = false;
       });
     }
   
  
positive.code: 
    void _subscribeMouseMove() {
      _mouseMoveSubscr = dom.document.onMouseMove.listen((e) {
        if(_dragStartPos != null) { // seems we still receive events after _mouseMoveSubscr.cancel()
          if(!_isDragActive) {
            if(((e.client.x - _dragStartPos.x) as int).abs() > distance && !_isDragActive) {
              _dragStart();
  
negative.code:     _items.forEach((e) {
        _mouseDownSubscr.add(e.onMouseDown.listen((e) {
          if(e.which == 1) {
            _draggedElement = e.target as dom.HtmlElement;
            if(_draggedElement.attributes.containsKey('draggable')) {
              return;
            }
  
            _isDragStartPending = true;
            while(_draggedElement != null && !_items.contains(_draggedElement)) {
              _draggedElement = _draggedElement.parent;
            }
  