import { Component, CSSProperties, DefineComponent } from 'vue' import { ArrowHeadType, ElementId, Position } from './flow' import { EdgeTextProps } from './components' export interface Edge { id: ElementId type?: string source: ElementId target: ElementId sourceHandle?: ElementId | null targetHandle?: ElementId | null selected?: boolean sourcePosition?: Position targetPosition?: Position label?: | string | { component: DefineComponent | any props?: EdgeTextProps | any } labelStyle?: any labelShowBg?: boolean labelBgStyle?: any labelBgPadding?: [number, number] labelBgBorderRadius?: number style?: CSSProperties | unknown animated?: boolean arrowHeadType?: ArrowHeadType markerEndId?: string data?: T class?: string isHidden?: boolean } export interface EdgeProps extends Edge { sourceX: number sourceY: number targetX: number targetY: number selected?: boolean sourcePosition: Position targetPosition: Position markerEndId?: string sourceHandleId?: ElementId | null targetHandleId?: ElementId | null } export interface EdgeSmoothStepProps extends EdgeProps { borderRadius?: number } export type EdgeComponent = Component | DefineComponent | string export type EdgeTypes = string[] export interface EdgePositions { sourceX: number sourceY: number targetX: number targetY: number }