import React from 'react'; import classaames from 'classnames'; import { DragOutlined, SyncOutlined, ExpandAltOutlined } from '@easyv/react-icons'; import { TransformMode, isCtrlKey, ctrlKeyStr } from '@easytwin/core'; import { useKey } from 'react-use'; import { Tooltip } from 'antd'; const TransformModeInfos: { key: TransformMode; icon: React.ReactNode; tooltip: string; }[] = [ { key: 'translate', icon: , tooltip: `${ctrlKeyStr} Q`, }, { key: 'rotate', icon: , tooltip: `${ctrlKeyStr} W`, }, { key: 'scale', icon: , tooltip: `${ctrlKeyStr} E`, }, ]; export interface TransformButtonGroupProp { initMode?: TransformMode; className?: string; onClick?: (mode: TransformMode) => void; } const TransformButtonGroup: React.FC = function ({ initMode, className, onClick, }) { const [selectMode, setSelectMode] = React.useState(initMode || 'translate'); const handleClickBtn = (mode: TransformMode) => { setSelectMode(mode); onClick?.(mode); }; useKey( (e) => isCtrlKey(e) && e.code === 'KeyQ', () => handleClickBtn('translate'), undefined, [handleClickBtn], ); useKey( (e) => isCtrlKey(e) && e.code === 'KeyW', () => handleClickBtn('rotate'), undefined, [handleClickBtn], ); useKey( (e) => isCtrlKey(e) && e.code === 'KeyE', () => handleClickBtn('scale'), undefined, [handleClickBtn], ); return (
{TransformModeInfos.map(({ key, icon, tooltip }) => ( {tooltip}} placement="right"> handleClickBtn(key)}> {icon} ))}
); }; export default TransformButtonGroup;