UNPKG

@hello-pangea/dnd

Version:

Beautiful and accessible drag and drop for lists with React

32 lines (27 loc) 905 B
import memoizeOne from 'memoize-one'; import type { DroppableDimension, DroppableDimensionMap, DraggableDimension, DraggableDimensionMap, } from '../types'; export const toDroppableMap = memoizeOne((droppables: DroppableDimension[]) => droppables.reduce<DroppableDimensionMap>((previous, current) => { previous[current.descriptor.id] = current; return previous; }, {}), ); export const toDraggableMap = memoizeOne((draggables: DraggableDimension[]) => draggables.reduce<DraggableDimensionMap>((previous, current) => { previous[current.descriptor.id] = current; return previous; }, {}), ); export const toDroppableList = memoizeOne( (droppables: DroppableDimensionMap): DroppableDimension[] => Object.values(droppables), ); export const toDraggableList = memoizeOne( (draggables: DraggableDimensionMap): DraggableDimension[] => Object.values(draggables), );