| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 | 
							- import { memo, useEffect, useMemo, useRef } from 'react'
 - import { MiniMap } from 'reactflow'
 - import UndoRedo from '../header/undo-redo'
 - import ZoomInOut from './zoom-in-out'
 - import VariableTrigger from '../variable-inspect/trigger'
 - import VariableInspectPanel from '../variable-inspect'
 - import { useStore } from '../store'
 - 
 - export type OperatorProps = {
 -   handleUndo: () => void
 -   handleRedo: () => void
 - }
 - 
 - const Operator = ({ handleUndo, handleRedo }: OperatorProps) => {
 -   const bottomPanelRef = useRef<HTMLDivElement>(null)
 -   const workflowCanvasWidth = useStore(s => s.workflowCanvasWidth)
 -   const rightPanelWidth = useStore(s => s.rightPanelWidth)
 -   const setBottomPanelWidth = useStore(s => s.setBottomPanelWidth)
 -   const setBottomPanelHeight = useStore(s => s.setBottomPanelHeight)
 - 
 -   const bottomPanelWidth = useMemo(() => {
 -     if (!workflowCanvasWidth || !rightPanelWidth)
 -       return 'auto'
 -     return Math.max((workflowCanvasWidth - rightPanelWidth), 400)
 -   }, [workflowCanvasWidth, rightPanelWidth])
 - 
 -   // update bottom panel height
 -   useEffect(() => {
 -     if (bottomPanelRef.current) {
 -       const resizeContainerObserver = new ResizeObserver((entries) => {
 -         for (const entry of entries) {
 -           const { inlineSize, blockSize } = entry.borderBoxSize[0]
 -           setBottomPanelWidth(inlineSize)
 -           setBottomPanelHeight(blockSize)
 -         }
 -       })
 -       resizeContainerObserver.observe(bottomPanelRef.current)
 -       return () => {
 -         resizeContainerObserver.disconnect()
 -       }
 -     }
 -   }, [setBottomPanelHeight, setBottomPanelWidth])
 - 
 -   return (
 -     <div
 -       ref={bottomPanelRef}
 -       className='absolute bottom-0 left-0 right-0 z-10 px-1'
 -       style={
 -         {
 -           width: bottomPanelWidth,
 -         }
 -       }
 -     >
 -       <div className='flex justify-between px-1 pb-2'>
 -         <UndoRedo handleUndo={handleUndo} handleRedo={handleRedo} />
 -         <VariableTrigger />
 -         <div className='relative'>
 -           <MiniMap
 -             pannable
 -             zoomable
 -             style={{
 -               width: 102,
 -               height: 72,
 -             }}
 -             maskColor='var(--color-workflow-minimap-bg)'
 -             className='!absolute !bottom-10 z-[9] !m-0 !h-[73px] !w-[103px] !rounded-lg !border-[0.5px]
 -             !border-divider-subtle !bg-background-default-subtle !shadow-md !shadow-shadow-shadow-5'
 -           />
 -           <ZoomInOut />
 -         </div>
 -       </div>
 -       <VariableInspectPanel />
 -     </div>
 -   )
 - }
 - 
 - export default memo(Operator)
 
 
  |