@gravity-ui/graph
Version:
Modern graph editor component
36 lines (35 loc) • 1.76 kB
TypeScript
import { Signal } from "@preact/signals-core";
import { Graph } from "../../../graph";
import { Component } from "../../../lib";
import { TComponentContext, TComponentProps, TComponentState } from "../../../lib/Component";
import { HitBox, HitBoxData } from "../../../services/HitTest";
import { EventedComponent } from "../EventedComponent/EventedComponent";
import { TGraphLayerContext } from "../layers/graphLayer/GraphLayer";
export type GraphComponentContext = TComponentContext & TGraphLayerContext & {
graph: Graph;
};
export declare class GraphComponent<Props extends TComponentProps = TComponentProps, State extends TComponentState = TComponentState, Context extends GraphComponentContext = GraphComponentContext> extends EventedComponent<Props, State, Context> {
hitBox: HitBox;
private unsubscribe;
constructor(props: Props, parent: Component);
protected onDrag({ onDragStart, onDragUpdate, onDrop, isDraggable, }: {
onDragStart?: (_event: MouseEvent) => void | boolean;
onDragUpdate?: (diff: {
prevCoords: [number, number];
currentCoords: [number, number];
diffX: number;
diffY: number;
}, _event: MouseEvent) => void;
onDrop?: (_event: MouseEvent) => void;
isDraggable?: (event: MouseEvent) => boolean;
}): () => void;
protected subscribeSignal<T>(signal: Signal<T>, cb: (v: T) => void): void;
protected unmount(): void;
setHitBox(minX: number, minY: number, maxX: number, maxY: number, force?: boolean): void;
protected willIterate(): void;
protected isVisible(): boolean;
getHitBox(): [number, number, number, number];
removeHitBox(): void;
destroyHitBox(): void;
onHitBox(_: HitBoxData): boolean;
}