@gravity-ui/graph
Version:
Modern graph editor component
43 lines (42 loc) • 2.88 kB
TypeScript
import { Block } from "../../components/canvas/blocks/Block";
import { BlockState, TBlockId } from "../../store/block/Block";
import { ECanChangeBlockGeometry } from "../../store/settings";
import { TRect } from "../types/shapes";
export { parseClassNames } from "./classNames";
export declare function noop(...args: unknown[]): void;
export declare function getXY(root: HTMLElement, event: Event | WheelEvent | MouseEvent): [number, number];
export declare function getCoord(event: TouchEvent & MouseEvent, coord: string): any;
export declare function getEventDelta(e1: any, e2: any): number;
export declare function isMetaKeyEvent(event: MouseEvent | KeyboardEvent): boolean;
export declare function isShiftKeyEvent(event: MouseEvent | KeyboardEvent): boolean;
export declare function isAltKeyEvent(event: MouseEvent | KeyboardEvent): boolean;
export declare function getEventSelectionAction(event: MouseEvent): number;
export declare function isBlock(component: unknown): component is Block;
export declare function createCustomDragEvent(eventType: string, e: any): CustomEvent;
export declare function createObject(simpleObject: object, forDefineProperties: PropertyDescriptorMap): object;
export declare function dispatchEvents(comps: any, e: any): void;
export declare function addEventListeners(instance: EventTarget, mapEventsToFn?: Record<string, (event: CustomEvent | MouseEvent) => void>): () => void;
export declare function isAllowChangeBlockGeometry(globalCanChangeGeometry: ECanChangeBlockGeometry, blockSelected: boolean): boolean;
export declare function getUsableRectByBlockIds(blocks: BlockState[], blockIds?: TBlockId[]): TRect;
export declare function isGeometryHaveInfinity(geometry: TRect): boolean;
export declare function startAnimation(duration: number, draw: (progress: number) => void): void;
export declare function isWindows(): boolean;
export declare const isTrackpadWheelEvent: (e: WheelEvent, dpr?: number) => boolean;
/**
* Calculates a "nice" number approximately equal to the range.
* Useful for determining tick spacing on axes or rulers.
* Algorithm adapted from "Nice Numbers for Graph Labels" by Paul Heckbert
* @param range The desired approximate range or step.
* @param round Whether to round the result (usually false for step calculation).
* @returns A nice number (e.g., 1, 2, 5, 10, 20, 50, ...).
*/
export declare function calculateNiceNumber(range: number, round?: boolean): number;
/**
* Aligns a coordinate value to the device's physical pixel grid for sharper rendering.
* @param value The coordinate value (e.g., x or y).
* @param dpr The device pixel ratio.
* @returns The aligned coordinate value.
*/
export declare function alignToPixelGrid(value: number, dpr: number): number;
export declare function computeCssVariable(name: string): string;
export { schedule, debounce, throttle } from "../utils/schedule";