@gravity-ui/graph
Version:
Modern graph editor component
59 lines (58 loc) • 2.03 kB
TypeScript
import { Component } from "../lib/Component";
import { Emitter } from "../utils/Emitter";
import { IPoint } from "../utils/types/shapes";
export interface IWithHitTest {
hitBox: IHitBox;
zIndex: number;
setHitBox(minX: number, minY: number, maxX: number, maxY: number, force?: boolean): void;
onHitBox(shape: HitBoxData): boolean;
removeHitBox(): void;
}
export type HitBoxData = {
minX: number;
minY: number;
maxX: number;
maxY: number;
x: number;
y: number;
};
export interface IHitBox extends HitBoxData {
update(minX: number, minY: number, maxX: number, maxY: number): void;
destroy(): void;
getRect(): [number, number, number, number];
}
export declare class HitTest extends Emitter {
private tree;
protected empty: boolean;
load(items: HitBox[]): void;
protected scheduledItems: Set<HitBox>;
clear(): void;
add(item: HitBox, force?: boolean): void;
protected scheduleLoad: import("lodash").DebouncedFunc<() => void>;
remove(item: HitBox, silent?: boolean): void;
protected emitUpdate: import("lodash").DebouncedFunc<() => void>;
testPoint(point: IPoint, pixelRatio: number): Component<import("../lib/CoreComponent").CoreComponentProps, import("../lib/Component").TComponentState, import("../lib/CoreComponent").CoreComponentContext>[];
testBox(item: Omit<HitBoxData, "x" | "y">): Component[];
testHitBox(item: HitBoxData): Component[];
}
export declare class HitBox implements IHitBox {
item: {
zIndex: number;
} & Component & IWithHitTest;
protected hitTest: HitTest;
private destroyed;
maxX: number;
maxY: number;
minX: number;
minY: number;
x: number;
y: number;
private rect;
constructor(item: {
zIndex: number;
} & Component & IWithHitTest, hitTest: HitTest);
update: (minX: number, minY: number, maxX: number, maxY: number, force?: boolean) => void;
getRect(): [number, number, number, number];
remove(): void;
destroy(): void;
}