UNPKG

@gravity-ui/graph

Version:

Modern graph editor component

62 lines (61 loc) 2.39 kB
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, TCameraState } 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?; /** Last known canvas-relative mouse coordinates, used for camera-change emulation */ private lastMouseCanvasX?; private lastMouseCanvasY?; constructor(props: TGraphLayerProps); protected afterInit(): void; protected onCameraChange(camera: TCameraState): 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 onCameraChangeEmulateMouseEvents; private onRootPointerMove; private handleMouseDownEvent; private onRootPointerStart; private onRootPointerEnd; private tryEmulateClick; updateChildren(): import("../../../../lib/CoreComponent").ComponentDescriptor<TCameraProps, TGraphLayerContext>[]; }