@gravity-ui/graph
Version:
Modern graph editor component
48 lines (47 loc) • 2.25 kB
TypeScript
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 {};