New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

unidragger

Package Overview
Dependencies
Maintainers
1
Versions
21
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

unidragger - npm Package Compare versions

Comparing version 0.1.0 to 0.2.0

4

bower.json
{
"name": "unidragger",
"main": "unidragger.js",
"version": "0.1.0",
"version": "0.2.0",
"dependencies": {
"eventie": "~1.0.6"
"unipointer": "~0.1.0"
},

@@ -8,0 +8,0 @@ "authors": [

{
"name": "unidragger",
"version": "0.1.0",
"version": "0.2.0",
"description": "Base draggable class",
"main": "unidragger.js",
"dependencies": {
"eventie": "^1.0.6"
"unipointer": "~0.1.0"
},

@@ -9,0 +9,0 @@ "scripts": {

@@ -14,2 +14,8 @@ # Unidragger

## Install
Bower: `bower install unidragger --save`
npm: `npm install unidragger --save`
## Demo code

@@ -47,1 +53,7 @@

```
---
MIT license
By [Metafizzy](http://metafizzy.co)
/*!
* Unidragger v0.1.0
* Unidragger v0.2.0
* Draggable base class

@@ -17,5 +17,6 @@ * MIT license

define( [
'eventie/eventie'
], function( eventie ) {
return factory( window, eventie );
'eventie/eventie',
'unipointer/unipointer'
], function( eventie, Unipointer ) {
return factory( window, eventie, Unipointer );
});

@@ -26,3 +27,4 @@ } else if ( typeof exports == 'object' ) {

window,
require('eventie')
require('eventie'),
require('unipointer')
);

@@ -33,7 +35,8 @@ } else {

window,
window.eventie
window.eventie,
window.Unipointer
);
}
}( window, function factory( window, eventie ) {
}( window, function factory( window, eventie, Unipointer ) {

@@ -59,20 +62,5 @@ 'use strict';

// trigger handler methods for events
Unidragger.prototype.handleEvent = function( event ) {
var method = 'on' + event.type;
if ( this[ method ] ) {
this[ method ]( event );
}
};
// inherit Unipointer & EventEmitter
Unidragger.prototype = new Unipointer();
// returns the touch that we're keeping track of
Unidragger.prototype.getTouch = function( touches ) {
for ( var i=0, len = touches.length; i < len; i++ ) {
var touch = touches[i];
if ( touch.identifier == this.pointerIdentifier ) {
return touch;
}
}
};
// ----- bind start ----- //

@@ -88,2 +76,3 @@

var navigator = window.navigator;
/**

@@ -94,46 +83,34 @@ * works as unbinder, as you can .bindHandles( false ) to unbind

Unidragger.prototype._bindHandles = function( isBind ) {
var binder;
if ( window.navigator.pointerEnabled ) {
binder = this.bindPointer;
} else if ( window.navigator.msPointerEnabled ) {
binder = this.bindMSPointer;
// munge isBind, default to true
isBind = isBind === undefined ? true : !!isBind;
// extra bind logic
var binderExtra;
if ( navigator.pointerEnabled ) {
binderExtra = function( handle ) {
// disable scrolling on the element
handle.style.touchAction = isBind ? 'none' : '';
};
} else if ( navigator.msPointerEnabled ) {
binderExtra = function( handle ) {
// disable scrolling on the element
handle.style.msTouchAction = isBind ? 'none' : '';
};
} else {
binder = this.bindMouseTouch;
binderExtra = function() {
// TODO re-enable img.ondragstart when unbinding
if ( isBind ) {
disableImgOndragstart( handle );
}
};
}
// munge isBind, default to true
isBind = isBind === undefined ? true : !!isBind;
// bind each handle
var bindMethod = isBind ? 'bind' : 'unbind';
for ( var i=0, len = this.handles.length; i < len; i++ ) {
var handle = this.handles[i];
binder.call( this, handle, isBind );
this._bindStartEvent( handle, isBind );
binderExtra( handle );
eventie[ bindMethod ]( handle, 'click', this );
}
};
Unidragger.prototype.bindPointer = function( handle, isBind ) {
// W3C Pointer Events, IE11. See https://coderwall.com/p/mfreca
var bindMethod = isBind ? 'bind' : 'unbind';
eventie[ bindMethod ]( handle, 'pointerdown', this );
// disable scrolling on the element
handle.style.touchAction = isBind ? 'none' : '';
};
Unidragger.prototype.bindMSPointer = function( handle, isBind ) {
// IE10 Pointer Events
var bindMethod = isBind ? 'bind' : 'unbind';
eventie[ bindMethod ]( handle, 'MSPointerDown', this );
// disable scrolling on the element
handle.style.msTouchAction = isBind ? 'none' : '';
};
Unidragger.prototype.bindMouseTouch = function( handle, isBind ) {
// listen for both, for devices like Chrome Pixel
// which has touch and mouse events
var bindMethod = isBind ? 'bind' : 'unbind';
eventie[ bindMethod ]( handle, 'mousedown', this );
eventie[ bindMethod ]( handle, 'touchstart', this );
// TODO re-enable img.ondragstart when unbinding
if ( isBind ) {
disableImgOndragstart( handle );
}
};
// remove default dragging interaction on all images in IE8

@@ -165,32 +142,7 @@ // IE8 does its own drag thing on images, which messes stuff up

Unidragger.prototype.onmousedown = function( event ) {
// dismiss clicks from right or middle buttons
var button = event.button;
if ( button && ( button !== 0 && button !== 1 ) ) {
return;
}
this._pointerDown( event, event );
};
Unidragger.prototype.ontouchstart = function( event ) {
this._pointerDown( event, event.changedTouches[0] );
};
Unidragger.prototype.onMSPointerDown =
Unidragger.prototype.onpointerdown = function( event ) {
this._pointerDown( event, event );
};
// hash of events to be bound after start event
var postStartEvents = {
mousedown: [ 'mousemove', 'mouseup' ],
touchstart: [ 'touchmove', 'touchend', 'touchcancel' ],
pointerdown: [ 'pointermove', 'pointerup', 'pointercancel' ],
MSPointerDown: [ 'MSPointerMove', 'MSPointerUp', 'MSPointerCancel' ]
};
var allowTouchstartNodes = {
var allowTouchstartNodes = Unidragger.allowTouchstartNodes = {
INPUT: true,
A: true,
BUTTON: true
BUTTON: true,
SELECT: true
};

@@ -203,97 +155,30 @@

*/
Unidragger.prototype._pointerDown = function( event, pointer ) {
// dismiss other pointers
if ( this.isPointerDown ) {
return;
}
this.isPointerDown = true;
// save pointer identifier to match up touch events
this.pointerIdentifier = pointer.pointerId !== undefined ?
// pointerId for pointer events, touch.indentifier for touch events
pointer.pointerId : pointer.identifier;
// track to see when dragging starts
this.pointerDownPoint = Unidragger.getPointerPoint( pointer );
var targetNodeName = event.target.nodeName;
// HACK iOS, allow clicks on buttons, inputs, and links
var isTouchstart = event.type == 'touchstart';
var isTouchstartNode = allowTouchstartNodes[ targetNodeName ];
if ( !isTouchstart || ( isTouchstart && !isTouchstartNode ) ) {
preventDefaultEvent( event );
}
Unidragger.prototype.pointerDown = function( event, pointer ) {
this._dragPointerDown( event, pointer );
// kludge to blur focused inputs in dragger
var focused = document.activeElement;
if ( focused && focused.blur && focused != this.element ) {
if ( focused && focused.blur ) {
focused.blur();
}
// focus element, if its not an input
if ( this.options.accessibility && targetNodeName != 'INPUT' ) {
this.element.focus();
}
// bind move and end events
this._bindPostStartEvents({
// get proper events to match start event
events: postStartEvents[ event.type ],
// IE8 needs to be bound to document
node: event.preventDefault ? window : document
});
this.pointerDown( event, pointer );
};
Unidragger.prototype.pointerDown = function( event, pointer ) {
this._bindPostStartEvents( event );
this.emitEvent( 'pointerDown', [ this, event, pointer ] );
};
// ----- bind/unbind ----- //
// base pointer down logic
Unidragger.prototype._dragPointerDown = function( event, pointer ) {
// track to see when dragging starts
this.pointerDownPoint = Unipointer.getPointerPoint( pointer );
Unidragger.prototype._bindPostStartEvents = function( args ) {
for ( var i=0, len = args.events.length; i < len; i++ ) {
var event = args.events[i];
eventie.bind( args.node, event, this );
var targetNodeName = event.target.nodeName;
// HACK iOS, allow clicks on buttons, inputs, and links
var isTouchstartNode = event.type == 'touchstart' && allowTouchstartNodes[ targetNodeName ];
// do not prevent default on touchstart nodes or <select>
if ( !isTouchstartNode && targetNodeName != 'SELECT' ) {
preventDefaultEvent( event );
}
// save these arguments
this._boundPointerEvents = args;
};
Unidragger.prototype._unbindPostStartEvents = function() {
var args = this._boundPointerEvents;
// IE8 can trigger dragEnd twice, check for _boundEvents
if ( !args || !args.events ) {
return;
}
for ( var i=0, len = args.events.length; i < len; i++ ) {
var event = args.events[i];
eventie.unbind( args.node, event, this );
}
delete this._boundPointerEvents;
};
// ----- move event ----- //
Unidragger.prototype.onmousemove = function( event ) {
this._pointerMove( event, event );
};
Unidragger.prototype.onMSPointerMove =
Unidragger.prototype.onpointermove = function( event ) {
if ( event.pointerId == this.pointerIdentifier ) {
this._pointerMove( event, event );
}
};
Unidragger.prototype.ontouchmove = function( event ) {
var touch = this.getTouch( event.changedTouches );
if ( touch ) {
this._pointerMove( event, touch );
}
};
var hasDragStartedDefault = Unidragger.hasDragStartedDefault = function( moveVector ) {
return Math.abs( moveVector.x ) > 3 || Math.abs( moveVector.y ) > 3;
};
/**

@@ -304,4 +189,11 @@ * drag move

*/
Unidragger.prototype._pointerMove = function( event, pointer ) {
var movePoint = Unidragger.getPointerPoint( pointer );
Unidragger.prototype.pointerMove = function( event, pointer ) {
var moveVector = this._dragPointerMove( event, pointer );
this.emitEvent( 'pointerMove', [ this, event, pointer, moveVector ] );
this._dragMove( event, pointer, moveVector );
};
// base pointer move logic
Unidragger.prototype._dragPointerMove = function( event, pointer ) {
var movePoint = Unipointer.getPointerPoint( pointer );
var moveVector = {

@@ -311,50 +203,28 @@ x: movePoint.x - this.pointerDownPoint.x,

};
// function to check if pointer has moved far enough to start drag
var hasDragStarted = this.hasDragStarted || hasDragStartedDefault;
// start drag
if ( !this.isDragging && hasDragStarted( moveVector ) ) {
// start drag if pointer has moved far enough to start drag
if ( !this.isDragging && this.hasDragStarted( moveVector ) ) {
this._dragStart( event, pointer );
}
this.pointerMove( event, pointer, moveVector );
this._dragMove( event, pointer, moveVector );
return moveVector;
};
Unidragger.prototype.pointerMove = function( event, pointer, moveVector ) {
this.emitEvent( 'pointerMove', [ this, event, pointer, moveVector ] );
// condition if pointer has moved far enough to start drag
Unidragger.prototype.hasDragStarted = function( moveVector ) {
return Math.abs( moveVector.x ) > 3 || Math.abs( moveVector.y ) > 3;
};
// ----- end event ----- //
Unidragger.prototype.onmouseup = function( event ) {
this._pointerUp( event, event );
};
Unidragger.prototype.onMSPointerUp =
Unidragger.prototype.onpointerup = function( event ) {
if ( event.pointerId == this.pointerIdentifier ) {
this._pointerUp( event, event );
}
};
Unidragger.prototype.ontouchend = function( event ) {
var touch = this.getTouch( event.changedTouches );
if ( touch ) {
this._pointerUp( event, touch );
}
};
/**
* drag end
* pointer up
* @param {Event} event
* @param {Event or Touch} pointer
*/
Unidragger.prototype._pointerUp = function( event, pointer ) {
this.isPointerDown = false;
Unidragger.prototype.pointerUp = function( event, pointer ) {
this.emitEvent( 'pointerUp', [ this, event, pointer ] );
this._dragPointerUp( event, pointer );
};
delete this.pointerIdentifier;
// remove events
this._unbindPostStartEvents();
Unidragger.prototype._dragPointerUp = function( event, pointer ) {
if ( this.isDragging ) {

@@ -366,26 +236,4 @@ this._dragEnd( event, pointer );

}
this.pointerUp( event, pointer );
};
Unidragger.prototype.pointerUp = function( event, pointer ) {
this.emitEvent( 'pointerUp', [ this, event, pointer ] );
};
// ----- cancel event ----- //
// coerce to end event
Unidragger.prototype.onMSPointerCancel =
Unidragger.prototype.onpointercancel = function( event ) {
if ( event.pointerId == this.pointerIdentifier ) {
this._pointerUp( event, event );
}
};
Unidragger.prototype.ontouchcancel = function( event ) {
var touch = this.getTouch( event.changedTouches );
this._pointerUp( event, touch );
};
// -------------------------- drag -------------------------- //

@@ -473,4 +321,6 @@

Unidragger.getPointerPoint = Unipointer.getPointerPoint;
return Unidragger;
}));
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc