import { RecursivePartial } from './common'; export interface Position { x: number; y: number; } export interface LinePosition { p1: Position; p2: Position; } export interface Size { width: number; height: number; } export interface Rectangle { pos: Position; size: Size; } /** An object with a field named id */ export interface IdentifiedObject { id: string; } export interface Box { top: number; bottom: number; left: number; right: number; } export interface Node { name?: string; [x: string]: any; } export type Nodes = Record; export type NodeWithId = Node & IdentifiedObject; export interface Edge { source: string; target: string; [x: string]: any; } export type Edges = Record; export type EdgeWithId = Edge & IdentifiedObject; export type LayerName = "edges" | "edge-labels" | "focusring" | "nodes" | "node-labels" | "paths"; export type LayerPosition = LayerName | "base" | "grid" | "background" | "root"; export type Layers = Record; export declare const LayerPositions: readonly LayerPosition[]; export type ViewMode = "default" | "node" | "edge" | "path" | "box-selection"; export interface FixablePosition extends Position { fixed?: boolean; } export type NodePositions = Record; export interface Layouts { nodes: NodePositions; } /** for User Specified */ export type UserLayouts = RecursivePartial; export interface EdgePosition { source: Position; target: Position; } export interface EdgeLabelArea { source: { above: Position; below: Position; }; target: { above: Position; below: Position; }; } export interface Path { id?: string; edges: string[]; [x: string]: any; } export type Paths = Record; export type InputPaths = Record | Path[]; export type PositionOrCurve = Position | Position[] | string | null; export type ViewEvent = { event: T; }; export type NodeEvent = { node: string; event: T; }; export type EdgeEvent = { edge: string; edges: string[]; summarized: false; event: T; } | { edge?: undefined; edges: string[]; summarized: true; event: T; }; export type PathEvent = { path: string; event: T; }; export type NodePointerEvent = NodeEvent; export type EdgePointerEvent = EdgeEvent; export type Events = { "view:load": undefined; "view:unload": undefined; "view:mode": ViewMode; "view:zoom": number; "view:pan": { x: number; y: number; }; "view:fit": undefined; "view:resize": { x: number; y: number; width: number; height: number; }; "view:click": ViewEvent; "view:dblclick": ViewEvent; "view:contextmenu": ViewEvent; "node:click": NodeEvent; "node:dblclick": NodeEvent; "node:pointerover": NodeEvent; "node:pointerout": NodeEvent; "node:pointerup": NodeEvent; "node:pointerdown": NodeEvent; "node:contextmenu": NodeEvent; "node:dragstart": { [name: string]: Position; }; "node:pointermove": { [name: string]: Position; }; "node:dragend": { [name: string]: Position; }; "node:select": string[]; "edge:pointerup": EdgeEvent; "edge:pointerdown": EdgeEvent; "edge:click": EdgeEvent; "edge:dblclick": EdgeEvent; "edge:pointerover": EdgeEvent; "edge:pointerout": EdgeEvent; "edge:contextmenu": EdgeEvent; "edge:select": string[]; "path:select": string[]; "path:pointerup": PathEvent; "path:pointerdown": PathEvent; "path:click": PathEvent; "path:dblclick": PathEvent; "path:pointerover": PathEvent; "path:pointerout": PathEvent; "path:contextmenu": PathEvent; }; export type EventHandlers = { "*"?: (type: T, event: Events[T]) => void; } & { [K in keyof Events]?: (event: Events[K]) => void; }; export type OnClickHandler = (param: NodeEvent) => void; export type OnDragHandler = (param: { [name: string]: Position; }) => void; export interface Point { x: number; y: number; } export interface ViewBox { x: number; y: number; width: number; height: number; } export interface Sizes { width: number; height: number; viewBox: ViewBox; }