import { RefObject } from 'react'; import { CanvasDirection, ElkCanvasLayoutOptions } from './elkLayout'; import { CanvasPosition, EdgeData, NodeData } from '../types'; export interface ElkRoot { x?: number; y?: number; width?: number; height?: number; children?: any[]; edges?: any[]; direction?: CanvasDirection; } export interface LayoutProps { maxHeight: number; maxWidth: number; nodes: NodeData[]; edges: EdgeData[]; pannable: boolean; defaultPosition: CanvasPosition; fit: boolean; zoom: number; layoutOptions?: ElkCanvasLayoutOptions; direction: CanvasDirection; setZoom: (factor: number) => void; onLayoutChange: (layout: ElkRoot) => void; } export interface LayoutResult { /** * X/Y offset. */ xy: [number, number]; /** * Scroll offset. */ scrollXY: [number, number]; /** * ELK Layout object. */ layout: ElkRoot; /** * Ref to container div. */ containerRef: RefObject; /** * Height of the svg. */ canvasHeight?: number; /** * Width of the svg. */ canvasWidth?: number; /** * Width of the container div. */ containerWidth?: number; /** * Height of the container div. */ containerHeight?: number; /** * Positions the canvas to the viewport. */ positionCanvas?: (position: CanvasPosition) => void; /** * Fit the canvas to the viewport. */ fitCanvas?: () => void; /** * Scroll to X/Y */ setScrollXY?: (xy: [number, number]) => void; observe: (el: HTMLDivElement) => void; } export declare const useLayout: ({ maxWidth, maxHeight, nodes, edges, fit, pannable, defaultPosition, direction, layoutOptions, zoom, setZoom, onLayoutChange }: LayoutProps) => LayoutResult;