UNPKG

@gravity-ui/graph

Version:

Modern graph editor component

48 lines (47 loc) 2.25 kB
import { Component, TComponentContext, TComponentProps, TComponentState } from "../../../lib/Component"; import { HitBoxData } from "../../../services/HitTest"; import { TRect } from "../../../utils/types/shapes"; type TEventedComponentListener = Component | ((e: Event) => void); export type TEventedAreaState = { hovered: boolean; }; export type TEventedAreaParams = { key: string; onHitBox?: (data: HitBoxData) => boolean; [eventName: string]: ((event: Event) => void) | ((data: HitBoxData) => boolean) | string | undefined; }; type TEventedArea = { rect: TRect; params: TEventedAreaParams; }; export type TEventedComponentProps = TComponentProps & { interactive?: boolean; }; export declare class EventedComponent<Props extends TEventedComponentProps = TEventedComponentProps, State extends TComponentState = TComponentState, Context extends TComponentContext = TComponentContext> extends Component<Props, State, Context> { readonly evented: boolean; cursor?: string; protected _eventedAreas: Map<string, TEventedArea>; protected _lastHitBoxData: HitBoxData | undefined; protected _hoveredEventedAreaKey: string | undefined; private _prevHoveredAreaLeaveHandler; constructor(props: Props, parent: Component); isInteractive(): boolean; setInteractive(interactive: boolean): void; private get events(); protected unmount(): void; protected willRender(): void; protected didRender(): void; private _areaHitTest; _trackAreaHover(): void; _clearAreaHover(scheduleRender?: boolean): void; protected eventedArea(fn: (state: TEventedAreaState) => TRect, params: TEventedAreaParams): TRect; protected handleEvent(_: Event): void; listenEvents(events: string[], cbOrObject?: TEventedComponentListener): (() => void)[]; addEventListener(type: string, cbOrObject: TEventedComponentListener): () => void; removeEventListener(type: string, cbOrObject: TEventedComponentListener): void; protected _fireEvent(cmp: Component, event: Event): void; dispatchEvent(event: Event): boolean; protected _dipping(startParent: Component, event: Event): boolean; protected _hasListener(comp: EventedComponent, type: string): boolean; } export {};