UNPKG

@gravity-ui/graph

Version:

Modern graph editor component

81 lines (80 loc) 2.74 kB
import { Component } from "../lib/Component"; import { Emitter } from "../utils/Emitter"; import { noop } from "../utils/functions"; import { IPoint, TRect } 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; readonly $usableRect: import("@preact/signals-core").Signal<TRect>; protected queue: Map<HitBox, HitBoxData>; get isUnstable(): boolean; load(items: HitBox[]): void; protected processQueue: (() => void) & { cancel: () => void; flush: () => void; isScheduled: () => boolean; }; update(item: HitBox, bbox: HitBoxData, _force?: boolean): void; clear(): void; add(item: HitBox): void; waitUsableRectUpdate(callback: (rect: TRect) => void): typeof noop; protected updateUsableRect(): void; remove(item: HitBox): 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[]; /** * Subscribe to usableRect updates * @param callback Function to call when usableRect changes * @returns Unsubscribe function */ onUsableRectUpdate(callback: (rect: TRect) => void): () => void; /** * Get current usableRect value * @returns Current usableRect */ getUsableRect(): TRect; destroy(): void; testHitBox(item: HitBoxData): Component[]; } export declare class HitBox implements IHitBox { item: { zIndex: number; } & Component & IWithHitTest; protected hitTest: HitTest; destroyed: boolean; maxX: number; maxY: number; minX: number; minY: number; x: number; y: number; private rect; protected unstable: boolean; constructor(item: { zIndex: number; } & Component & IWithHitTest, hitTest: HitTest); updateRect(rect: HitBoxData): void; update: (minX: number, minY: number, maxX: number, maxY: number, force?: boolean) => void; getRect(): [number, number, number, number]; remove(): void; destroy(): void; }