import * as React from "react"; import { WidgetProps, WidgetState } from "../widgets/BaseWidget"; import { DragSource, DragSourceConnector, DragSourceMonitor } from "react-dnd"; import { ContainerProps } from "./ContainerComponent"; export interface DraggableProps extends ContainerProps { connectDragSource: Function; isDragging?: boolean; } class DraggableComponent extends React.Component { render() { return this.props.connectDragSource(
{this.props.children}
, ); } } const widgetSource = { beginDrag(props: WidgetProps) { return { widgetId: props.widgetId, widgetType: props.widgetType, }; }, }; const widgetType = (props: WidgetProps) => { return props.widgetType; }; function collect(connect: DragSourceConnector, monitor: DragSourceMonitor) { return { connectDragSource: connect.dragSource(), isDragging: monitor.isDragging(), }; } export default DragSource(widgetType, widgetSource, collect)( DraggableComponent, );