UNPKG

@gravity-ui/graph

Version:

Modern graph editor component

73 lines (72 loc) 2.24 kB
export type Path2DRenderStyleResult = { type: "stroke"; } | { type: "fill"; fillRule?: CanvasFillRule; } | { type: "both"; fillRule?: CanvasFillRule; }; export interface Path2DRenderInstance { getPath(): Path2D | undefined | null; style(ctx: CanvasRenderingContext2D): Path2DRenderStyleResult | undefined; afterRender?(ctx: CanvasRenderingContext2D): void; isPathVisible?(): boolean; } declare class Path2DChunk { protected items: Set<Path2DRenderInstance>; protected visibleItems: { get: () => Path2DRenderInstance[]; reset(): void; clear(): void; }; protected path: { get: () => Path2D; reset(): void; clear(): void; }; protected applyStyles(ctx: CanvasRenderingContext2D): Path2DRenderStyleResult; add(item: Path2DRenderInstance): void; delete(item: Path2DRenderInstance): void; reset(): void; render(ctx: CanvasRenderingContext2D): void; get size(): number; } declare class Path2DGroup { private chunkSize; protected chunks: Path2DChunk[]; protected itemToChunk: Map<Path2DRenderInstance, Path2DChunk>; constructor(chunkSize: number); add(item: Path2DRenderInstance): void; delete(item: Path2DRenderInstance): void; resetItem(item: Path2DRenderInstance): void; render(ctx: CanvasRenderingContext2D): void; } export declare class BatchPath2DRenderer { protected onChange: () => void; private chunkSize; constructor(onChange: () => void, chunkSize?: number); protected indexes: Map<number, Map<string, Path2DGroup>>; protected itemParams: Map<Path2DRenderInstance, { zIndex: number; group: string; }>; orderedPaths: { get: () => any[]; reset(): void; clear(): void; }; protected requestRender: () => void; protected getGroup(zIndex: number, group: string): Path2DGroup; add(item: Path2DRenderInstance, params: { zIndex: number; group: string; }): void; update(item: Path2DRenderInstance, params: { zIndex: number; group: string; }): void; delete(item: Path2DRenderInstance): void; markDirty(item: Path2DRenderInstance): void; } export {};