2019-08-26 12:41:21 +00:00
|
|
|
import React, { Props } from "react"
|
2019-02-10 13:06:05 +00:00
|
|
|
import WidgetFactory from "../../utils/WidgetFactory"
|
2019-08-26 12:41:21 +00:00
|
|
|
import { WidgetTypes } from "../../constants/WidgetConstants"
|
|
|
|
|
import { DraggableWidget } from "../../widgets/BaseWidget"
|
|
|
|
|
import { useDrop } from 'react-dnd'
|
2019-04-01 07:08:00 +00:00
|
|
|
import { IContainerWidgetProps } from "../../widgets/ContainerWidget"
|
2019-03-21 17:42:23 +00:00
|
|
|
|
2019-08-26 12:41:21 +00:00
|
|
|
interface CanvasProps {
|
2019-04-01 07:08:00 +00:00
|
|
|
pageWidget: IContainerWidgetProps<any>
|
2019-08-26 12:41:21 +00:00
|
|
|
addWidget: Function
|
|
|
|
|
removeWidget: Function
|
2019-02-07 05:07:09 +00:00
|
|
|
}
|
|
|
|
|
|
2019-08-26 12:41:21 +00:00
|
|
|
const Canvas : React.SFC<CanvasProps> = (props) => {
|
|
|
|
|
const [, drop] = useDrop({
|
|
|
|
|
accept: Object.values(WidgetTypes),
|
|
|
|
|
drop(item: DraggableWidget, monitor) {
|
|
|
|
|
console.log("dropped")
|
|
|
|
|
props.addWidget(item.type);
|
|
|
|
|
return undefined
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
return (
|
|
|
|
|
<div ref={drop}>
|
|
|
|
|
{props.pageWidget && WidgetFactory.createWidget(props.pageWidget)}
|
|
|
|
|
</div>
|
2019-04-01 07:08:00 +00:00
|
|
|
)
|
2019-02-10 13:06:05 +00:00
|
|
|
}
|
|
|
|
|
|
2019-08-26 12:41:21 +00:00
|
|
|
export default Canvas
|