import React from "react"; import { Diagram, IChartDataSource, IChartDataItem, LayoutStrategyBase, ConnectorAlignment } from "./core"; export interface SimpleRect { top: number; left: number; height: number; width: number; } export interface CSSRect { top: number; left: number; height: number | string; width: number | string; } export interface BoundaryRect extends SimpleRect { branchTop: number; branchLeft: number; } export declare enum DrawStage { MEASURE_HIDDEN = 0, MEASURE_VISIBLE = 1, RENDER = 2 } export interface LineRenderContext { rect: CSSRect; direction: "vertical" | "horizontal"; assistant: boolean; data: T; dataId: string; boxId: number; index: number; } export interface NodeRenderContext { rect: CSSRect; data: T; assistant: boolean; dataId: string; boxId: number; drawStage: DrawStage; } export interface NodeContainerRenderContext { drawStage: DrawStage; } export interface NodeLineRenderContext { drawStage: DrawStage; direction: LineRenderContext["direction"]; } export declare enum LayoutType { LINEAR = "linear", SMART = "smart", FISHBONE_1 = "fishbone1", FISHBONE_2 = "fishbone2", FISHBONE_3 = "fishbone3", FISHBONE_4 = "fishbone4", SINGLE_COLUMN_RIGHT = "singleColumnRight", SINGLE_COLUMN_LEFT = "singleColumnLeft", STACKERS = "stackers", ASSISTANTS = "assistants" } interface OrgChartDataItem extends IChartDataItem { data: T; parentKey: string | null; } declare class OrgChartDiagram extends Diagram { DataSource: IChartDataSource>; constructor(dataSource: IChartDataSource>); } export declare type NodeContainerRenderProps = { "data-box-id": string; key: string; style: React.CSSProperties; children: React.ReactNode; }; export declare type NodeLineRenderProps = { "data-line-assistant": boolean; "data-line-direction": LineRenderContext["direction"]; className?: string; style: React.CSSProperties; key: string; }; interface OrgChartProps { root: T; keyGetter: (node: T) => string; childNodesGetter: (node: T) => T[]; isAssistantGetter?: (node: T) => boolean; lineVerticalClassName?: string; lineHorizontalClassName?: string; lineVerticalStyle?: React.CSSProperties; lineHorizontalStyle?: React.CSSProperties; layout?: LayoutType | LayoutStrategyBase; assistantLayout?: LayoutType | LayoutStrategyBase; containerStyle?: React.CSSProperties; nodeContainerStyle?: React.CSSProperties; isValidNode: (id: string) => boolean; renderNode: (node: T) => React.ReactElement; renderNodeContainer?: (node: T, props: NodeContainerRenderProps, context: NodeContainerRenderContext) => React.ReactElement; renderNodeLine?: (node: T, props: NodeLineRenderProps, context: NodeLineRenderContext) => React.ReactElement; parentSpacing?: number; siblingSpacing?: number; connectorAlignment?: ConnectorAlignment; connectorThickness?: number; onRenderComplete?: (width: number, height: number) => void; measureTimeoutDelay?: number; measureStrategy?: "effect" | "timeout" | "idle" | "animation-frame" | "immediate"; debug?: boolean; } interface OrgChartState { lines: LineRenderContext[]; width: number; height: number; diagram: OrgChartDiagram | null; nodes: NodeRenderContext[]; drawStage: DrawStage; boundaries: BoundaryRect[]; prevProps: OrgChartProps | null; renderIndex: number; } export default class OrgChart extends React.Component, OrgChartState> { state: OrgChartState; private _mounted; private _container; private static assignStrategies; private static getDataSource; private static getBranchOptimizerStackers; private static getBranchOptimizerSmart; componentWillUnmount(): void; static getDerivedStateFromProps(props: OrgChartProps, state: OrgChartState): Partial>; componentWillMount(): void; componentWillReceiveProps(nextProps: OrgChartProps): void; private static createDiagram; private onComputeBranchOptimizer; private static getPlaceholders; private _tid; private _lastRenderIndex; private safelyDrawDiagram; componentDidMount: () => void; private drawDiagram; render(): JSX.Element; } export {};