Files
ohif-viewer/platform/viewer/src/components/ViewportGrid/ViewportPane.js
T

52 lines
1.4 KiB
JavaScript
Raw Normal View History

2019-10-11 12:03:59 -04:00
import React from 'react';
import { useDrop } from 'react-dnd';
import PropTypes from 'prop-types';
import classNames from 'classnames';
import './ViewportPane.css';
2020-06-04 06:52:30 -03:00
const ViewportPane = function (props) {
2019-10-11 12:03:59 -04:00
const { children, onDrop, viewportIndex, className: propClassName } = props;
const [{ hovered, highlighted }, drop] = useDrop({
accept: 'thumbnail',
drop: (droppedItem, monitor) => {
const canDrop = monitor.canDrop();
const isOver = monitor.isOver();
if (canDrop && isOver && onDrop) {
const { StudyInstanceUID, displaySetInstanceUID } = droppedItem;
2019-10-11 12:03:59 -04:00
onDrop({ viewportIndex, StudyInstanceUID, displaySetInstanceUID });
2019-10-11 12:03:59 -04:00
}
},
// Monitor, and collect props.
// Returned as values by `useDrop`
collect: monitor => ({
highlighted: monitor.canDrop(),
hovered: monitor.isOver(),
}),
});
return (
<div
className={classNames(
'viewport-drop-target',
{ hovered: hovered },
{ highlighted: highlighted },
propClassName
)}
ref={drop}
data-cy={`viewport-container-${viewportIndex}`}
2019-10-11 12:03:59 -04:00
>
{children}
</div>
);
};
ViewportPane.propTypes = {
children: PropTypes.node.isRequired,
viewportIndex: PropTypes.number.isRequired,
onDrop: PropTypes.func.isRequired,
className: PropTypes.string,
};
export default ViewportPane;