@gravity-ui/graph
Version:
Modern graph editor component
63 lines (62 loc) • 2.16 kB
TypeScript
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[];
}