import { KeyValue } from '../../types' import { Point } from '../../geometry' import { EdgeView } from '../../view' import { Registry } from '../registry' import * as routers from './main' export namespace Router { export type Definition = ( this: EdgeView, vertices: Point.PointLike[], options: T, edgeView: EdgeView, ) => Point.PointLike[] export type CommonDefinition = Definition } export namespace Router { export type Presets = typeof Router['presets'] export type OptionsMap = { readonly [K in keyof Presets]-?: Parameters[1] } export type NativeNames = keyof OptionsMap export interface NativeItem { name: T args?: OptionsMap[T] } export interface ManaualItem { name: Exclude args?: KeyValue } } export namespace Router { export const presets = routers export const registry = Registry.create({ type: 'router', }) registry.register(presets, true) }