@atlaskit/pragmatic-drag-and-drop-react-beautiful-dnd-migration
Version:
An optional Pragmatic drag and drop package that enables rapid migration from react-beautiful-dnd to Pragmatic drag and drop
54 lines (53 loc) • 1.47 kB
JavaScript
// eslint-disable-next-line import/no-extraneous-dependencies
export const idleState = {
draggingFromThisWith: null,
draggingOverWith: null,
isDraggingOver: false
};
export function reducer(state, action) {
if (action.type === 'DRAG_START') {
const {
droppableId,
start
} = action.payload;
const {
draggableId,
source
} = start;
const isDraggingOver = source.droppableId === droppableId;
const draggingOverWith = isDraggingOver ? draggableId : null;
const isDraggingFrom = source.droppableId === droppableId;
const draggingFromThisWith = isDraggingFrom ? draggableId : null;
return {
...state,
isDraggingOver,
draggingFromThisWith,
draggingOverWith
};
}
if (action.type === 'DRAG_UPDATE') {
const {
droppableId,
update
} = action.payload;
const {
destination = null,
draggableId,
source
} = update;
const isDraggingOver = (destination === null || destination === void 0 ? void 0 : destination.droppableId) === droppableId;
const draggingOverWith = isDraggingOver ? draggableId : null;
const isDraggingFrom = source.droppableId === droppableId;
const draggingFromThisWith = isDraggingFrom ? draggableId : null;
return {
...state,
isDraggingOver,
draggingFromThisWith,
draggingOverWith
};
}
if (action.type === 'DRAG_CLEAR') {
return idleState;
}
return state;
}