/// import * as React from 'react'; import * as THREE from 'three'; import { Vector3, Mesh, Line, Group } from "three"; import { Observable } from "rxjs/Observable"; export declare type NodeID = string; export interface Connection { to: NodeID; lineMesh?: Line; incoming?: boolean; strength?: number; } export interface Label { text: string; mesh?: Mesh; } export interface Node { id: NodeID; position: Vector3; connections: Connection[]; incomingConnections: Connection[]; radius: number; label: Label; color?: number; nodeObject?: Mesh; dx?: number; dy?: number; dz?: number; weight?: number; repulsiveForce?: number; attractiveForce?: number; } export interface ReactGraphProps { handleError?: (any) => void; handleClick?: (Node) => void; handleDoubleClick?: (Node) => void; handleMouseOver?: (Node) => void; onReady?: () => void; panRestriction?: number; showLabels: boolean; labelsColor: number; graphColor: number; edgesHighlightColor: number; onSelectColor: number; onHoverColor: number; highlightEdges: boolean; nodes: Node[]; transformLayout: boolean; className?: string; layoutGenerator?: (iterations: number, width: number, height: number, nodes: Node[]) => Iterator; } export interface ReactGraphState { highlighted: Node; selected: Node; transformLayout: boolean; } export declare let generateRandomNodes: (n: number, canvasWidth: number) => Node[]; export declare class ReactGraph extends React.Component { container: HTMLElement; scene: THREE.Scene; lights: THREE.Light[]; camera: THREE.PerspectiveCamera; renderer: THREE.WebGLRenderer; controls: THREE.OrbitControls; graph: THREE.Group; width: number; height: number; resize: Observable; mousemove: Observable; click: Observable; dblclick: Observable; space: Observable; nodes: Node[]; transparent: Node[]; layoutIterator: Iterator; constructor(props: any); componentDidMount(): void; initGraph(nodes: Node[]): Group; generateMeshes: (nodes: Node[]) => Node[]; generateLabels(nodes: Node[]): Node[]; setCameraOffset(nodes: any): void; setupEventListeners(): void; setTransparent(): void; makeNotTransparent(nodes: Node[]): Node[]; mouseClickHandler: () => void; doubleClickHandler: () => void; highlightPath(nodes: Node[], color: number): void; highlightEdges(inColor: number, outColor?: number): void; mouseMoveHandler: () => void; onSpace(event: any): void; spaceHandler(): void; resizeHandler: () => void; select(position: any): Node; adjustLayout(): void; labelsLookAtCamera(): void; animate(): void; graphOrigin(nodes: Node[]): Vector3; updateMeshesPositions(nodes: Node[]): Node[]; onResize(event: any): void; render(): JSX.Element; }