import { ComputedRef } from 'vue'; import { GraphNode } from '@vue-flow/core'; import { Side } from '../core/routing'; import { Point } from '../core/types'; /** * Floating 연결점 계산 — edge 끝점을 노드 경계의 동적 지점에 부착한다. * (AssociationEdge / NoteConnectionEdge 공유. 노드를 옮기면 끝점이 경계를 따라 이동.) * * rowY가 주어진 끝(컬럼 앵커)은 "행 유지 + 측면 동적"으로, 없으면 완전 floating으로 계산한다. * 입력은 getter 함수로 받아 Vue Flow 노드 좌표/크기 변화에 반응한다. */ export interface FloatingRouteInput { sourceNode: () => GraphNode | undefined; targetNode: () => GraphNode | undefined; waypoints: () => Point[]; /** 컬럼 앵커가 있는 끝의 행 y (절대좌표). 없으면 완전 floating */ sourceRowY?: () => number | undefined; targetRowY?: () => number | undefined; } export interface FloatingRoute { source: ComputedRef; target: ComputedRef; sourceSide: ComputedRef; targetSide: ComputedRef; /** source/target가 같은 노드인 셀프 연관 — 끝점이 같은 변(우측)에 놓이고 루프 path로 그린다 */ isSelf: ComputedRef; } export declare function useFloatingRoute(input: FloatingRouteInput): FloatingRoute;