import type { KeyValue } from '../../common' import type { Graph } from '../../graph' import type { Edge, TerminalCellData, TerminalType } from '../../model' import type { CellView } from '../../view' import { Registry } from '../registry' import * as strategies from './main' import type { PointLike } from '../../types' export type ConnectionStrategyDefinition = ( this: Graph, terminal: TerminalCellData, cellView: CellView, magnet: Element, coords: PointLike, edge: Edge, type: TerminalType, options: KeyValue, ) => TerminalCellData type Presets = typeof connectionStrategyPresets type NativeNames = keyof Presets export interface NativeItem { name: T args?: KeyValue } export interface ManualItem { name: Exclude args?: KeyValue } export const connectionStrategyPresets = strategies export const connectionStrategyRegistry = Registry.create< ConnectionStrategyDefinition, Presets >({ type: 'connection strategy', }) connectionStrategyRegistry.register(connectionStrategyPresets, true)