/** * @file Simple connection renderer matching the design. */ import * as React from "react"; import type { ConnectionRenderContext } from "../../../../../types/NodeDefinition"; import { calculateConnectionPath } from "../../../../../core/connection/path"; import styles from "./OpalThemeExample.module.css"; export const opalConnectionRenderer = ( context: ConnectionRenderContext, defaultRender: () => React.ReactElement, ): React.ReactElement => { const defaultElement = defaultRender(); const hitElement = React.isValidElement(defaultElement) ? ( {defaultElement} ) : ( defaultElement ); const { fromPort: _fromPort, toPort: _toPort, fromPosition, toPosition, isSelected, isHovered, handlers } = context; const pathData = React.useMemo( () => calculateConnectionPath(fromPosition, toPosition), [fromPosition.x, fromPosition.y, toPosition.x, toPosition.y], ); const strokeColor = isSelected || isHovered ? "#4a5568" : "#a0aec0"; const strokeWidth = isSelected || isHovered ? 2.5 : 2; return ( {hitElement} ); };