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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@darthbane/react-drag

v0.9.18

Published

A libraray for drag and drop with react.

Readme

React-Drag

A Library for Drag and Drop interactions in react.

Run npm i @darthbane/react-drag to install.

There are four things you can import from this library: 1) Draggable 2) Dragsurface 3) ReactDragManager 4) getDefaultManager.

Draggable:

This is a react component that makes a draggable component out of all it's children. Below is an example:

<Draggable> This text is draggable! </Draggable>

If you wish to make it interactive, you will need to add an item prop. The item prop is an object that must contain a className key which is a string of classes seperated by a space, and may contain a data object which can contain any values. So for example:

<Draggable item={{className: "SOME_CLASSNAME SOME_OTHER_CLASSNAME", data: {id: 3, value: 100}}}> <img> </Draggable>

DragSurface:

This is a react component that makes a surface component out of all it's children. The surface interacts with all items that share it's item classNames. Below is an example:

<Draggable item={{className: "red blue", data: {id: 13, color: "purple"}}}> <img> </Draggable>

<Draggable item={{className: "green blue", data: {id: 2, color: "greenish blue"}}}> <img> </Draggable>

<Dragsurface item={{className: "blue orange", data: {value: 100}}}> <img> </Draggable>

<Dragsurface item={{className: "green", data: {onEnter: SOME_FUNCTION}}}> <img> </Draggable>

In this example, the drag surface with a class name of blue will interact with both draggble components. While the drag surface with a class name of green will only interact with the second draggable component.All though these interactions take place, you will need to add event listeners to listen for them.

ReactDragManager:

A manager that keeps track of all draggable and drag surface components and their interactions. Generally, it is not necessary to create one, but rather use the built in defualt one.

getDefualtManager:

This function when invoked will return the defualt ReactDragManager. Once retrieved, you may add event listeners to it to take advantage of the interactions. So for example:

const manager = getDefaultManager(); manager.addEventListener("DRAG_ENTERED", "CLASS_NAME", (dragItem, dragSurface) => { CODE TO RUN WHEN INVOKED (when interaction takes place with said item and surface) });