UNPKG

@jchinkle/react-arborist

Version:
32 lines (27 loc) 879 B
import { ActionTypes } from "../types/utils"; import { actions as dnd } from "./dnd-slice"; /* Types */ export type DragSlice = { id: string | null; idWillReceiveDrop: string | null }; /* Reducer */ export function reducer( state: DragSlice = { id: null, idWillReceiveDrop: null }, action: ActionTypes<typeof dnd> ) { switch (action.type) { case "DND_DRAG_START": return { ...state, id: action.id }; case "DND_DRAG_END": return { ...state, id: null }; case "DND_CURSOR": const c = action.cursor; if (c.type === "highlight" && c.id !== state.idWillReceiveDrop) { return { ...state, idWillReceiveDrop: c.id }; } else if (c.type !== "highlight" && state.idWillReceiveDrop !== null) { return { ...state, idWillReceiveDrop: null }; } else { return state; } default: return state; } }