| | |
| | | import Divider from '../../base/divider' |
| | | import AddBlock from './add-block' |
| | | import TipPopup from './tip-popup' |
| | | import ExportImage from './export-image' |
| | | import { useOperator } from './hooks' |
| | | import cn from '@/utils/classnames' |
| | | |
| | |
| | | } |
| | | |
| | | return ( |
| | | <div className='flex items-center rounded-lg border-[0.5px] border-components-actionbar-border bg-components-actionbar-bg p-0.5 text-text-tertiary shadow-lg'> |
| | | <div className='flex items-center p-0.5 rounded-lg border-[0.5px] border-components-actionbar-border bg-components-actionbar-bg shadow-lg text-text-tertiary'> |
| | | <AddBlock /> |
| | | <TipPopup title={t('workflow.nodes.note.addNote')}> |
| | | <div |
| | | className={cn( |
| | | 'ml-[1px] flex h-8 w-8 cursor-pointer items-center justify-center rounded-lg hover:bg-state-base-hover hover:text-text-secondary', |
| | | 'flex items-center justify-center ml-[1px] w-8 h-8 rounded-lg hover:bg-state-base-hover hover:text-text-secondary cursor-pointer', |
| | | `${nodesReadOnly && 'cursor-not-allowed text-text-disabled hover:bg-transparent hover:text-text-disabled'}`, |
| | | )} |
| | | onClick={addNote} |
| | | > |
| | | <RiStickyNoteAddLine className='h-4 w-4' /> |
| | | <RiStickyNoteAddLine className='w-4 h-4' /> |
| | | </div> |
| | | </TipPopup> |
| | | <Divider type='vertical' className='mx-0.5 h-3.5' /> |
| | | <Divider type='vertical' className='h-3.5 mx-0.5' /> |
| | | <TipPopup title={t('workflow.common.pointerMode')} shortcuts={['v']}> |
| | | <div |
| | | className={cn( |
| | | 'mr-[1px] flex h-8 w-8 cursor-pointer items-center justify-center rounded-lg', |
| | | 'flex items-center justify-center mr-[1px] w-8 h-8 rounded-lg cursor-pointer', |
| | | controlMode === ControlMode.Pointer ? 'bg-state-accent-active text-text-accent' : 'hover:bg-state-base-hover hover:text-text-secondary', |
| | | `${nodesReadOnly && 'cursor-not-allowed text-text-disabled hover:bg-transparent hover:text-text-disabled'}`, |
| | | )} |
| | | onClick={handleModePointer} |
| | | > |
| | | <RiCursorLine className='h-4 w-4' /> |
| | | <RiCursorLine className='w-4 h-4' /> |
| | | </div> |
| | | </TipPopup> |
| | | <TipPopup title={t('workflow.common.handMode')} shortcuts={['h']}> |
| | | <div |
| | | className={cn( |
| | | 'flex h-8 w-8 cursor-pointer items-center justify-center rounded-lg', |
| | | 'flex items-center justify-center w-8 h-8 rounded-lg cursor-pointer', |
| | | controlMode === ControlMode.Hand ? 'bg-state-accent-active text-text-accent' : 'hover:bg-state-base-hover hover:text-text-secondary', |
| | | `${nodesReadOnly && 'cursor-not-allowed text-text-disabled hover:bg-transparent hover:text-text-disabled'}`, |
| | | )} |
| | | onClick={handleModeHand} |
| | | > |
| | | <RiHand className='h-4 w-4' /> |
| | | <RiHand className='w-4 h-4' /> |
| | | </div> |
| | | </TipPopup> |
| | | <Divider type='vertical' className='mx-0.5 h-3.5' /> |
| | | <ExportImage /> |
| | | <Divider type='vertical' className='h-3.5 mx-0.5' /> |
| | | <TipPopup title={t('workflow.panel.organizeBlocks')} shortcuts={['ctrl', 'o']}> |
| | | <div |
| | | className={cn( |
| | | 'flex h-8 w-8 cursor-pointer items-center justify-center rounded-lg hover:bg-state-base-hover hover:text-text-secondary', |
| | | 'flex items-center justify-center w-8 h-8 rounded-lg hover:bg-state-base-hover hover:text-text-secondary cursor-pointer', |
| | | `${nodesReadOnly && 'cursor-not-allowed text-text-disabled hover:bg-transparent hover:text-text-disabled'}`, |
| | | )} |
| | | onClick={handleLayout} |
| | | > |
| | | <RiFunctionAddLine className='h-4 w-4' /> |
| | | <RiFunctionAddLine className='w-4 h-4' /> |
| | | </div> |
| | | </TipPopup> |
| | | </div> |