UNPKG

@gravity-ui/graph

Version:

Modern graph editor component

43 lines (42 loc) 2.88 kB
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";