npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@noxfly/drag-and-drop

v1.1.1

Published

Drag and Drop elements of html page easily

Downloads

2

Readme

Drag and Drop library

current CDN link:

<script src='https://cdn.jsdelivr.net/gh/NoxFly/Drag-and-Drop/drag.min.js'></script>

NPM

NPM drag'n drop

install on npm : npm i @noxfly/drag-and-drop

  • Works without Jquery

  • Works on phones

It use transform: translate(); css property, so if you set a new transform property, element cannot be dragged.

other cool library: SVG library

other cool library: Scroll library

Usage

var drag = new Drag('elem'); // elem can be .class, #id or tag name
// all these elements are now draggable !

// multi use :
var drags = [
    new Drag('.class'),
    new Drag('#id'),
    new Drag('tag')
];

// it can be object :
var drags = {
    type_1: new Drag('.class'),
    type_2: new Drag('#id'),
    type_3: new Drag('tag')
};

Options

// possible options: axis, grid, container
// you can set 1, 2 or 3 options on same Drag

var drag = new Drag('elem', {
    axis: 'x' || 'y', // choose x or y - string type
    grid: [10,50], // choose a Xstep and Ystep. Even if you set x axis, you must write Ystep - array type
    containment: 'elem2' // choose the non-traversable area of draggable elem - string type
});

Listeners

// possible event: dragmove, pointerup, pointerdown
drag.on('event', () => { // function() {}
    // code
});

Know if there is current dragging element :

// null if there is not
if(drag.dragging) {
    // code
}

Access to dragging element

drag.dragging = {
    $element: , // html element (document.querySelector())
    isDragging: true,
    width: ,    // html element width (shortcut of drag.dragging.$element.getBoundingClientRect().width)
    height: ,   // html element height (shortcut of drag.dragging.$element.getBoundingClientRect().height)
    position: {
        x: ,    // current X position of element while dragging - relative to the page
        y:      // current Y position of element while dragging - relative to the page
    },
    relativePosition: {
        x: ,    // current X position of element while dragging - relative to the last drop position
        y:      // current Y position of element while dragging - relative to the last drop position
    },
    startingPosition: {
        x: ,    // X position of dragging element before the drag - relative to the page
        y:      // Y position of dragging element before the drag - relative to the page
    },
    relativeStartingPosition: {
        x: ,    // X position of dragging element before the drag - relative to the last drop position
        y:      // Y position of dragging element before the drag - relative to the last drop position
    }
}

License

This repo has the GPL-3.0 license. See the LICENSE.txt.