// Copyright (C) 2020 Intel Corporation // // SPDX-License-Identifier: MIT import React from 'react'; import { Row, Col } from 'antd/lib/grid'; import Icon from '@ant-design/icons'; import Tooltip from 'antd/lib/tooltip'; import { ObjectType, ShapeType } from 'reducers/interfaces'; import { ObjectOutsideIcon, FirstIcon, LastIcon, PreviousIcon, NextIcon, } from 'icons'; interface Props { readonly: boolean; objectType: ObjectType; shapeType: ShapeType; occluded: boolean; outside: boolean | undefined; locked: boolean; pinned: boolean; hidden: boolean; keyframe: boolean | undefined; outsideDisabled: boolean; hiddenDisabled: boolean; keyframeDisabled: boolean; switchOccludedShortcut: string; switchOutsideShortcut: string; switchLockShortcut: string; switchHiddenShortcut: string; switchKeyFrameShortcut: string; nextKeyFrameShortcut: string; prevKeyFrameShortcut: string; navigateFirstKeyframe: null | (() => void); navigatePrevKeyframe: null | (() => void); navigateNextKeyframe: null | (() => void); navigateLastKeyframe: null | (() => void); setOccluded(): void; unsetOccluded(): void; setOutside(): void; unsetOutside(): void; setKeyframe(): void; unsetKeyframe(): void; lock(): void; unlock(): void; pin(): void; unpin(): void; hide(): void; show(): void; } const classes = { firstKeyFrame: { className: 'cvat-object-item-button-first-keyframe' }, prevKeyFrame: { className: 'cvat-object-item-button-prev-keyframe' }, nextKeyFrame: { className: 'cvat-object-item-button-next-keyframe' }, lastKeyFrame: { className: 'cvat-object-item-button-last-keyframe' }, outside: { enabled: { className: 'cvat-object-item-button-outside cvat-object-item-button-outside-enabled' }, disabled: { className: 'cvat-object-item-button-outside' }, }, lock: { enabled: { className: 'cvat-object-item-button-lock cvat-object-item-button-lock-enabled' }, disabled: { className: 'cvat-object-item-button-lock' }, }, occluded: { enabled: { className: 'cvat-object-item-button-occluded cvat-object-item-button-occluded-enabled' }, disabled: { className: 'cvat-object-item-button-occluded' }, }, pinned: { enabled: { className: 'cvat-object-item-button-pinned cvat-object-item-button-pinned-enabled' }, disabled: { className: 'cvat-object-item-button-pinned' }, }, hidden: { enabled: { className: 'cvat-object-item-button-hidden cvat-object-item-button-hidden-enabled' }, disabled: { className: 'cvat-object-item-button-hidden' }, }, keyframe: { enabled: { className: 'cvat-object-item-button-keyframe cvat-object-item-button-keyframe-enabled' }, disabled: { className: 'cvat-object-item-button-keyframe' }, }, }; function NavigateFirstKeyframe(props: Props): JSX.Element { const { navigateFirstKeyframe } = props; return navigateFirstKeyframe ? ( ) : ( ); } function NavigatePrevKeyframe(props: Props): JSX.Element { const { prevKeyFrameShortcut, navigatePrevKeyframe } = props; return navigatePrevKeyframe ? ( ) : ( ); } function NavigateNextKeyframe(props: Props): JSX.Element { const { navigateNextKeyframe, nextKeyFrameShortcut } = props; return navigateNextKeyframe ? ( ) : ( ); } function NavigateLastKeyframe(props: Props): JSX.Element { const { navigateLastKeyframe } = props; return navigateLastKeyframe ? ( ) : ( ); } function SwitchLock(props: Props): JSX.Element { const { locked, switchLockShortcut, lock, unlock, } = props; return ( {locked ? ( ) : ( )} ); } function SwitchOccluded(props: Props): JSX.Element { const { switchOccludedShortcut, occluded, unsetOccluded, setOccluded, } = props; return ( {occluded ? ( ) : ( )} ); } function SwitchPinned(props: Props): JSX.Element { const { pinned, pin, unpin } = props; return ( {pinned ? ( ) : ( )} ); } function SwitchHidden(props: Props): JSX.Element { const { switchHiddenShortcut, hidden, hiddenDisabled, show, hide, } = props; const hiddenStyle = hiddenDisabled ? { opacity: 0.5, pointerEvents: 'none' as const } : {}; return ( ); } function SwitchOutside(props: Props): JSX.Element { const { outside, switchOutsideShortcut, outsideDisabled, unsetOutside, setOutside, } = props; const outsideStyle = outsideDisabled ? { opacity: 0.5, pointerEvents: 'none' as const } : {}; return ( {outside ? ( ) : ( )} ); } function SwitchKeyframe(props: Props): JSX.Element { const { keyframe, switchKeyFrameShortcut, keyframeDisabled, unsetKeyframe, setKeyframe, } = props; const keyframeStyle = keyframeDisabled ? { opacity: 0.5, pointerEvents: 'none' as const } : {}; return ( {keyframe ? ( ) : ( )} ); } function ItemButtonsComponent(props: Props): JSX.Element { const { readonly, objectType, shapeType } = props; if (objectType === ObjectType.TRACK) { return ( {!readonly && ( {shapeType !== ShapeType.POINTS && ( )} )} ); } if (readonly) { return
; } if (objectType === ObjectType.TAG) { return ( ); } return ( {shapeType !== ShapeType.POINTS && ( )} ); } export default React.memo(ItemButtonsComponent);