When a user picks up an item, via PICK_UP, we enter the dragging state. The item they pick up is saved in context under itemBeingHeld.
When the dragged item reaches the intersection of another item (i.e. is dragged over it) we call the DRAG_REACHED_INTERSECTION event, which assigns the new intersection to context under itemBeingHeld.
When the user drops the item, via DROP, the list is rearranged and assigned into context.
Pick up first item: PICK_UP.
Cross over second item: DRAG_REACHED_INTERSECTION.
Drop item: DROP.
Numbers one and two of the data list should have swapped places.
Pick up first item: PICK_UP.
Cross over third item: DRAG_REACHED_INTERSECTION.
Drop item: DROP.
The first item should now be at the end.