@gravity-ui/graph
Version:
Modern graph editor component
57 lines (56 loc) • 2.12 kB
TypeScript
import { Graph } from "../../../../graph";
import { Component } from "../../../../lib/Component";
import { Layer, LayerContext, LayerProps } from "../../../../services/Layer";
import { Camera, TCameraProps } from "../../../../services/camera/Camera";
import { ICamera } from "../../../../services/camera/CameraService";
import { EventedComponent } from "../../EventedComponent/EventedComponent";
export type TGraphLayerProps = LayerProps & {
camera: ICamera;
root: HTMLDivElement;
};
export type TGraphLayerContext = LayerContext & {
canvas: HTMLCanvasElement;
ctx: CanvasRenderingContext2D;
root: HTMLDivElement;
ownerDocument: Document;
graph: Graph;
};
export type GraphMouseEvent = CustomEvent<{
target: EventedComponent;
sourceEvent: MouseEvent;
pointerPressed: boolean;
}>;
export declare class GraphLayer extends Layer<TGraphLayerProps, TGraphLayerContext> {
$: Component & {
camera: Camera;
};
private camera;
private targetComponent;
private prevTargetComponent;
private canEmulateClick?;
private pointerStartTarget?;
private pointerStartEvent?;
private pointerPressed;
private eventByTargetComponent?;
private capturedTargetComponent?;
constructor(props: TGraphLayerProps);
protected afterInit(): void;
/**
* Attaches DOM event listeners to the root element.
* All event listeners are registered with the rootOn wrapper method to ensure they are properly cleaned up
* when the layer is unmounted. This eliminates the need for manual event listener removal.
*/
private attachListeners;
captureEvents(component: EventedComponent): void;
releaseCapture(): void;
handleEvent(e: Event): void;
private dispatchNativeEvent;
private applyEventToTargetComponent;
private updateTargetComponent;
private onRootPointerMove;
private handleMouseDownEvent;
private onRootPointerStart;
private onRootPointerEnd;
private tryEmulateClick;
updateChildren(): import("../../../../lib/CoreComponent").ComponentDescriptor<TCameraProps, TGraphLayerContext>[];
}