@gravity-ui/graph
Version:
Modern graph editor component
39 lines (38 loc) • 2.66 kB
TypeScript
import { EventedComponent } from "./components/canvas/EventedComponent/EventedComponent";
import { GraphState } from "./graph";
import { TGraphColors, TGraphConstants } from "./graphConfig";
import { TCameraState } from "./services/camera/CameraService";
import { TSelectionDiff, TSelectionEntityId } from "./services/selection/types";
export type GraphMouseEvent<E extends Event = Event> = CustomEvent<{
target?: EventedComponent;
sourceEvent: E;
pointerPressed?: boolean;
}>;
export type GraphEventParams<T extends CustomEvent> = T extends CustomEvent ? T["detail"] : never;
export declare const extractNativeGraphMouseEvent: (event: GraphMouseEvent) => MouseEvent;
export type GraphMouseEventNames = "mousedown" | "click" | "dblclick" | "mouseenter" | "mouseleave";
export interface BaseGraphEventDefinition {
mousedown: (event: GraphMouseEvent) => void;
click: (event: GraphMouseEvent) => void;
dblclick: (event: GraphMouseEvent) => void;
mouseenter: (event: GraphMouseEvent) => void;
mouseleave: (event: GraphMouseEvent) => void;
}
export type UnwrapBaseGraphEvents<Key extends keyof BaseGraphEventDefinition = keyof BaseGraphEventDefinition, T extends BaseGraphEventDefinition[Key] = BaseGraphEventDefinition[Key], P extends Parameters<T>[0] = Parameters<T>[0]> = P extends CustomEvent ? P : never;
export type UnwrapBaseGraphEventsDetail<Key extends keyof BaseGraphEventDefinition, T extends BaseGraphEventDefinition[Key] = BaseGraphEventDefinition[Key], P extends Parameters<T>[0] = Parameters<T>[0]> = UnwrapGraphEvents<Key, T, P>["detail"];
export interface GraphEventsDefinitions extends BaseGraphEventDefinition {
"camera-change": (event: CustomEvent<TCameraState>) => void;
"constants-changed": (event: CustomEvent<{
constants: TGraphConstants;
}>) => void;
"colors-changed": (event: CustomEvent<{
colors: TGraphColors;
}>) => void;
"state-change": (event: CustomEvent<{
state: GraphState;
}>) => void;
}
export type UnwrapGraphEvents<Key extends keyof GraphEventsDefinitions, T extends GraphEventsDefinitions[Key] = GraphEventsDefinitions[Key], P extends Parameters<T>[0] = Parameters<T>[0]> = P extends CustomEvent ? P : never;
export type UnwrapGraphEventsDetail<Key extends keyof GraphEventsDefinitions, T extends GraphEventsDefinitions[Key] = GraphEventsDefinitions[Key], P extends Parameters<T>[0] = Parameters<T>[0]> = UnwrapGraphEvents<Key, T, P>["detail"];
export type SelectionEvent<T extends TSelectionEntityId> = CustomEvent<TSelectionDiff<T>>;
export declare function isNativeGraphEventName(eventType: string): eventType is GraphMouseEventNames;