Abstract implementation of @dnd-kit, which can be extended by concrete implementation layers, such as @dnd-kit/dom.
This package provides the core abstractions and utilities for implementing drag and drop functionality. It serves as the foundation for building concrete implementation layers on top of @dnd-kit, such as the DOM implementation layer.
[!NOTE] This package is not meant to be used by most consumers, unless you are planning on building a concrete implementation layer on top of @dnd-kit.
The library defines two main entity types:
- Draggable: Represents elements that can be dragged
- Droppable: Represents elements that can receive dragged items
Sensors are responsible for detecting and initiating drag operations. They handle user interactions and translate them into drag operations. The library provides:
- Abstract
Sensor
base class - Support for multiple sensor types
- Custom sensor configuration
- Configurable sensor options
The collision system provides:
- Multiple collision detection strategies
- Priority-based collision resolution
- Custom collision detectors
- Collision observation and management
The plugin system allows extending core functionality:
- Plugin-based architecture
- Plugin configuration and descriptors
- Plugin lifecycle management
Modifiers provide a way to transform or modify drag operations:
- Abstract
Modifier
base class - Ability to modify coordinates and operations
- Chainable modifier system
- Configurable modifier options
-
DragDropManager
: Manages drag and drop state and operations -
Draggable
: Interface for draggable elements -
Droppable
: Interface for droppable elements -
Plugin
: Base class for plugins -
Sensor
: Abstract base class for sensors -
Modifier
: Abstract base class to modify drag operations
This package is part of the dnd-kit monorepo. Please refer to the main repository's contributing guidelines for details on our code of conduct and the process for submitting pull requests.
This package is licensed under the MIT License - see the LICENSE file for details.