UNPKG

@gravity-ui/graph

Version:

Modern graph editor component

57 lines (56 loc) 2.12 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 } 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>[]; }