import * as React from 'react'; export interface DraggableProps { /** indicates if element can be drop at this place. * @default true */ droppable?: boolean; /** decide whether to render a handle using `connectHandle` (see below) */ withHandle?: boolean; /** uniq id of container that contain current draggable item. */ containerId?: string; groupName?: string; renderItem?: (data: object) => React.ReactNode; index?: number; id?: number | string; item?: object; /** callback when item was moved out from current container to another container. */ onMoveOut?: (id: any) => void; /** callback when item was dropped in a new location. */ onDrop?: DropEventFn; /** callback when item is hovered. */ onHover?: HoverEventFn; /** callback for drag start. */ onDragStart?: DragEventFn; /** callback for drag end. */ onDragEnd?: DragEventFn; /** visual positioning shifting for an element (transform: translate) without moving it from its real position at DOM (left, top) */ shift?: number[]; /** flag that indicates that there's an item being dragged. */ hasDragged?: boolean; /** sets draggable item node & additional info for animation positions calculations. */ setWrapperNode?: (node: HTMLElement, index: number, item: object) => void; /** animation duration in ms, default = 0 - disabled. */ animationDuration?: number; /** animation timing function, default = linear. */ animationTiming?: string; /** callback that could prevent item from dragging. */ canDrag?: DragEventFn; delay?: number; /** In case that you are using some external props inside of renderItems method, you need to define them here. renderItem = ({ item }) =>