import type { DependencyArrowObstacle, DependencyArrowPoint } from "./dependencyAnchorResolver.mjs"; /** * How much the click hit-area is trimmed at the arrow's source end, so the pointer * near the anchor reaches the dependency terminal (the drag handle) instead of * selecting the arrow. A best-effort budget, not a guarantee: trims cap at half of * their segment, so short first segments (the 8px stubs) keep less clearance, and on * a single-segment route both trims scale down together. */ export declare const DEPENDENCY_ARROW_HIT_TRIM_START = 12; /** * Trim at the target end, freeing the resize handle under the arrowhead. */ export declare const DEPENDENCY_ARROW_HIT_TRIM_END = 8; /** * Stroke width of the invisible path capturing the pointer around each arrow, defined * here because the geometry derives the obstacle clearance from it. */ export declare const DEPENDENCY_ARROW_HIT_STROKE_WIDTH = 10; /** * Splits an orthogonal route into the stretches that do not ride over an event box, * so the events a route crosses keep their clicks and drags (the hit band would * otherwise capture the pointerdown and the event's draggable could never start). * Boxes are expanded by half the hit stroke, stopping the band right before it would * visually reach an event. When the boxes cover the whole route, the uncut route is * returned instead: an overlapped band beats an unselectable arrow. */ export declare function clipRouteAroundObstacles(points: readonly DependencyArrowPoint[], obstacles: readonly DependencyArrowObstacle[]): DependencyArrowPoint[][]; /** * Shortens a route at both ends (first and last segment only). */ export declare function trimRouteEnds(points: readonly DependencyArrowPoint[], trimStart: number, trimEnd: number): DependencyArrowPoint[];