import React, { useState } from 'react'; import PropTypes from 'prop-types'; import classnames from 'classnames'; import Icon from '../Icon'; const SegmentItem = ({ segmentIndex, segmentationId, label, isActive, isVisible, color, showSegmentDelete, disableEditing, isLocked = false, onClick, onEdit, onDelete, onColor, onToggleVisibility, onToggleLocked, }) => { const [isHovering, setIsHovering] = useState(false); const [isSegmentIndexHovering, setIsSegmentIndexHovering] = useState(false); const onMouseEnter = () => setIsHovering(true); const onMouseLeave = () => setIsHovering(false); const cssColor = `rgb(${color[0]},${color[1]},${color[2]})`; return (
{ e.stopPropagation(); onClick(segmentationId, segmentIndex); }} role="button" tabIndex={0} data-cy={'segment-item'} >
setIsSegmentIndexHovering(true)} onMouseLeave={() => setIsSegmentIndexHovering(false)} > {isSegmentIndexHovering && showSegmentDelete ? ( { e.stopPropagation(); onDelete(segmentationId, segmentIndex); }} /> ) : (
{segmentIndex}
)}
{ e.stopPropagation(); onColor(segmentationId, segmentIndex); }} />
{label}
{/* with faded background */}
{!isVisible && !isHovering && (
{ e.stopPropagation(); onToggleVisibility(segmentationId, segmentIndex); }} />
)} {isHovering && (
{!disableEditing && ( { e.stopPropagation(); onEdit(segmentationId, segmentIndex); }} /> )} {isVisible ? ( { e.stopPropagation(); onToggleVisibility(segmentationId, segmentIndex); }} /> ) : ( { e.stopPropagation(); onToggleVisibility(segmentationId, segmentIndex); }} /> )}
)}
{/*
{ e.stopPropagation(); onColor(segmentationId, segmentIndex); }} style={{ backgroundColor: cssColor }} >
{label}
{ // stopPropagation needed to avoid disable the current active item e.stopPropagation(); onToggleVisibility(segmentationId, segmentIndex); }} />
{onToggleLocked !== undefined ? (
{ // stopPropagation needed to avoid disable the current active item e.stopPropagation(); onToggleLocked(segmentationId, segmentIndex); }} />
) : null}
{ // stopPropagation needed to avoid disable the current active item e.stopPropagation(); onEdit(segmentationId, segmentIndex); }} />
*/}
); }; SegmentItem.propTypes = { segmentIndex: PropTypes.number.isRequired, segmentationId: PropTypes.string.isRequired, label: PropTypes.string, disableEditing: PropTypes.bool, // color as array color: PropTypes.array, isActive: PropTypes.bool.isRequired, isVisible: PropTypes.bool.isRequired, isLocked: PropTypes.bool, onClick: PropTypes.func.isRequired, onEdit: PropTypes.func.isRequired, onDelete: PropTypes.func.isRequired, onToggleVisibility: PropTypes.func.isRequired, onToggleLocked: PropTypes.func, }; SegmentItem.defaultProps = { isActive: false, }; export default SegmentItem;