@jalez/react-flow-automated-layout
Version:
A React library for automated layout of nested node graphs with parent-child relationships using React Flow
51 lines (50 loc) • 2.64 kB
TypeScript
import { Node } from '@xyflow/react';
import { LayoutAlgorithm, LayoutDirection, LayoutEngine, ParentResizingOptions } from '../context/LayoutContext';
interface UseLayoutStateProps {
initialDirection?: LayoutDirection;
initialAlgorithm?: LayoutAlgorithm;
initialAutoLayout?: boolean;
initialPadding?: number;
initialSpacing?: {
node?: number;
layer?: number;
};
initialNodeDimensions?: {
width?: number;
height?: number;
};
initialParentResizingOptions?: Partial<ParentResizingOptions>;
includeHidden?: boolean;
layoutEngines?: Record<string, LayoutEngine>;
}
export declare function useLayoutState({ initialDirection, initialAlgorithm, initialAutoLayout, initialPadding, initialSpacing, initialNodeDimensions, initialParentResizingOptions, includeHidden, layoutEngines: customEngines, }: UseLayoutStateProps): {
direction: LayoutDirection;
algorithm: LayoutAlgorithm;
autoLayout: boolean;
layoutInProgress: boolean;
layoutHidden: boolean;
layoutEngines: Record<string, LayoutEngine>;
layoutEngineOptions: Record<string, any>;
padding: number;
nodeSpacing: number;
layerSpacing: number;
nodeWidth: number;
nodeHeight: number;
parentResizingOptions: ParentResizingOptions;
selectedNodes: Node[];
setDirection: import("react").Dispatch<import("react").SetStateAction<LayoutDirection>>;
setAlgorithm: import("react").Dispatch<import("react").SetStateAction<LayoutAlgorithm>>;
setAutoLayout: import("react").Dispatch<import("react").SetStateAction<boolean>>;
setLayoutInProgress: import("react").Dispatch<import("react").SetStateAction<boolean>>;
setLayoutHidden: import("react").Dispatch<import("react").SetStateAction<boolean>>;
setLayoutEngines: import("react").Dispatch<import("react").SetStateAction<Record<string, LayoutEngine>>>;
setLayoutEngineOptions: import("react").Dispatch<import("react").SetStateAction<Record<string, any>>>;
setPadding: import("react").Dispatch<import("react").SetStateAction<number>>;
setNodeSpacing: import("react").Dispatch<import("react").SetStateAction<number>>;
setLayerSpacing: import("react").Dispatch<import("react").SetStateAction<number>>;
setNodeWidth: import("react").Dispatch<import("react").SetStateAction<number>>;
setNodeHeight: import("react").Dispatch<import("react").SetStateAction<number>>;
setParentResizingOptionsState: import("react").Dispatch<import("react").SetStateAction<ParentResizingOptions>>;
setSelectedNodes: import("react").Dispatch<import("react").SetStateAction<Node[]>>;
};
export {};