react-beautiful-dnd
Version:
Beautiful, accessible drag and drop for lists with React.js
41 lines (36 loc) • 1.11 kB
JavaScript
// @flow
import memoizeOne from 'memoize-one';
import type {
DroppableId,
DraggableId,
DroppableDimension,
DroppableDimensionMap,
DraggableDimension,
DraggableDimensionMap,
} from '../types';
export const toDroppableMap = memoizeOne(
(droppables: DroppableDimension[]): DroppableDimensionMap =>
droppables.reduce((previous, current) => {
previous[current.descriptor.id] = current;
return previous;
}, {}),
);
export const toDraggableMap = memoizeOne(
(draggables: DraggableDimension[]): DraggableDimensionMap =>
draggables.reduce((previous, current) => {
previous[current.descriptor.id] = current;
return previous;
}, {}),
);
export const toDroppableList = memoizeOne(
(droppables: DroppableDimensionMap): DroppableDimension[] =>
Object.keys(droppables).map(
(id: DroppableId): DroppableDimension => droppables[id],
),
);
export const toDraggableList = memoizeOne(
(draggables: DraggableDimensionMap): DraggableDimension[] =>
Object.keys(draggables).map(
(id: DraggableId): DraggableDimension => draggables[id],
),
);