diff --git a/app/w/[id]/components/custom-edge/custom-edge.tsx b/app/w/[id]/components/custom-edge/custom-edge.tsx index 0ddf4b454..8e2459ee6 100644 --- a/app/w/[id]/components/custom-edge/custom-edge.tsx +++ b/app/w/[id]/components/custom-edge/custom-edge.tsx @@ -2,11 +2,20 @@ import { EdgeProps, getSmoothStepPath } from 'reactflow' import { X } from 'lucide-react' export const CustomEdge = (props: EdgeProps) => { + const isHorizontal = + props.sourcePosition === 'right' || props.sourcePosition === 'left' + + // For horizontal handles, we'll add a minimum extension to ensure the path + // always goes outward before going up/down const [edgePath] = getSmoothStepPath({ sourceX: props.sourceX, sourceY: props.sourceY, + sourcePosition: props.sourcePosition, targetX: props.targetX, targetY: props.targetY, + targetPosition: props.targetPosition, + borderRadius: 8, + offset: isHorizontal ? 30 : 20, // Increased offset for horizontal handles to ensure outward extension }) const midPoint = { diff --git a/app/w/components/workflow-block/components/action-bar/action-bar.tsx b/app/w/components/workflow-block/components/action-bar/action-bar.tsx index e986bca02..dffe84660 100644 --- a/app/w/components/workflow-block/components/action-bar/action-bar.tsx +++ b/app/w/components/workflow-block/components/action-bar/action-bar.tsx @@ -1,5 +1,13 @@ import { Button } from '@/components/ui/button' -import { Trash2, Play, Circle, CircleOff, Copy } from 'lucide-react' +import { + Trash2, + Play, + Circle, + CircleOff, + Copy, + ArrowLeftRight, + ArrowUpDown, +} from 'lucide-react' import { useWorkflowStore } from '@/stores/workflow/workflow-store' import { Tooltip, @@ -17,10 +25,16 @@ export function ActionBar({ blockId }: ActionBarProps) { const toggleBlockEnabled = useWorkflowStore( (state) => state.toggleBlockEnabled ) + const toggleBlockHandles = useWorkflowStore( + (state) => state.toggleBlockHandles + ) const duplicateBlock = useWorkflowStore((state) => state.duplicateBlock) const isEnabled = useWorkflowStore( (state) => state.blocks[blockId]?.enabled ?? true ) + const horizontalHandles = useWorkflowStore( + (state) => state.blocks[blockId]?.horizontalHandles ?? false + ) return (
@@ -75,6 +89,26 @@ export function ActionBar({ blockId }: ActionBarProps) { Duplicate Block + + + + + + {horizontalHandles ? 'Vertical Ports' : 'Horizontal Ports'} + + +