UNPKG

@gravity-ui/graph

Version:

Modern graph editor component

63 lines (62 loc) 2.16 kB
import { Graph } from "../../graph"; import { Emitter } from "../../utils/Emitter"; import { TRect } from "../../utils/types/shapes"; export type TCameraState = { x: number; y: number; width: number; height: number; scale: number; scaleMin: number; scaleMax: number; relativeX: number; relativeY: number; relativeWidth: number; relativeHeight: number; }; export declare enum ECameraScaleLevel { Minimalistic = 100, Schematic = 200, Detailed = 300 } export declare const getInitCameraState: () => TCameraState; export type ICamera = Interface<CameraService>; export declare class CameraService extends Emitter { protected graph: Graph; protected state: TCameraState; constructor(graph: Graph, state?: TCameraState); resize(newState: Partial<TCameraState>): void; set(newState: Partial<TCameraState>): void; private updateRelative; getCameraRect(): TRect; getCameraScale(): number; getCameraBlockScaleLevel(cameraScale?: number): ECameraScaleLevel; getCameraState(): TCameraState; move(dx?: number, dy?: number): void; getRelative(n: number, scale?: number): number; getRelativeXY(x: number, y: number): number[]; /** * Converts relative coordinate to absolute (screen space) * Inverse of getRelative */ getAbsolute(n: number, scale?: number): number; /** * Converts relative coordinates to absolute (screen space) * Inverse of getRelativeXY */ getAbsoluteXY(x: number, y: number): number[]; /** * Zoom to point * */ zoom(x: number, y: number, scale: number): void; getScaleRelativeDimensionsBySide(size: number, axis: "width" | "height"): number; getScaleRelativeDimensions(width: number, height: number): number; getXYRelativeCenterDimensions(dimensions: TRect, scale: number): { x: number; y: number; }; isRectVisible(x: number, y: number, w: number, h: number): boolean; isLineVisible(x1: number, y1: number, x2: number, y2: number): boolean; applyToPoint(x: number, y: number): [number, number]; applyToRect(...arg: number[]): number[]; }