import * as React from 'react'; import { Object3D, Material, Light, Scene, Camera, WebGLRenderer } from 'three'; import { ConfigOptions, ForceGraphVRInstance } from '3d-force-graph-vr'; import { ConfigOptions as ConfigOptions$1, ForceGraphARInstance } from '3d-force-graph-ar'; import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js'; import { ConfigOptions as ConfigOptions$2, ForceGraph3DInstance } from '3d-force-graph'; import ForceGraphKapsule from 'force-graph'; interface GraphData$3 { nodes: NodeObject$3[]; links: LinkObject$3[]; } type NodeObject$3 = NodeType & { id?: string | number; x?: number; y?: number; z?: number; vx?: number; vy?: number; vz?: number; fx?: number; fy?: number; fz?: number; [others: string]: any; }; type LinkObject$3 = LinkType & { source?: string | number | NodeObject$3; target?: string | number | NodeObject$3; [others: string]: any; }; type Accessor$3 = Out | string | ((obj: In) => Out); type NodeAccessor$3 = Accessor$3, T>; type LinkAccessor$3 = Accessor$3, T>; type DagMode$3 = 'td' | 'bu' | 'lr' | 'rl' | 'zout' | 'zin' | 'radialout' | 'radialin'; type ForceEngine$2 = 'd3' | 'ngraph'; interface ForceFn$3 { (alpha: number): void; initialize?: (nodes: NodeObject$3[], ...args: any[]) => void; [key: string]: any; } type Coords$2 = { x: number; y: number; z: number; } type LinkPositionUpdateFn$2 = (obj: Object3D, coords: { start: Coords$2, end: Coords$2 }, link: LinkObject$3) => void | null | boolean; interface ForceGraphProps$3< NodeType = {}, LinkType = {} > extends ConfigOptions { // Data input graphData?: GraphData$3, LinkObject$3>; nodeId?: string; linkSource?: string; linkTarget?: string; // Container layout width?: number; height?: number; yOffset?: number; glScale?: number; // Node styling nodeLabel?: NodeAccessor$3; nodeDesc?: NodeAccessor$3; nodeRelSize?: number; nodeVal?: NodeAccessor$3; nodeVisibility?: NodeAccessor$3; nodeColor?: NodeAccessor$3; nodeAutoColorBy?: NodeAccessor$3; nodeOpacity?: number; nodeResolution?: number; nodeThreeObject?: NodeAccessor$3; nodeThreeObjectExtend?: NodeAccessor$3; // Link styling linkLabel?: LinkAccessor$3; linkDesc?: LinkAccessor$3; linkVisibility?: LinkAccessor$3; linkColor?: LinkAccessor$3; linkAutoColorBy?: LinkAccessor$3; linkWidth?: LinkAccessor$3; linkOpacity?: number; linkResolution?: number; linkCurvature?: LinkAccessor$3; linkCurveRotation?: LinkAccessor$3; linkMaterial?: LinkAccessor$3; linkThreeObject?: LinkAccessor$3; linkThreeObjectExtend?: LinkAccessor$3; linkPositionUpdate?: LinkPositionUpdateFn$2 | null; linkDirectionalArrowLength?: LinkAccessor$3; linkDirectionalArrowColor?: LinkAccessor$3; linkDirectionalArrowRelPos?: LinkAccessor$3; linkDirectionalArrowResolution?: number; linkDirectionalParticles?: LinkAccessor$3; linkDirectionalParticleSpeed?: LinkAccessor$3; linkDirectionalParticleOffset?: LinkAccessor$3; linkDirectionalParticleWidth?: LinkAccessor$3; linkDirectionalParticleColor?: LinkAccessor$3; linkDirectionalParticleResolution?: number; linkDirectionalParticleThreeObject?: LinkAccessor$3; // Force engine (d3-force) configuration forceEngine?: ForceEngine$2; numDimensions?: 1 | 2 | 3; dagMode?: DagMode$3; dagLevelDistance?: number | null; dagNodeFilter?: (node: NodeObject$3) => boolean; onDagError?: ((loopNodeIds: (string | number)[]) => void) | undefined; d3AlphaMin?: number; d3AlphaDecay?: number; d3VelocityDecay?: number; ngraphPhysics?: object; warmupTicks?: number; cooldownTicks?: number; cooldownTime?: number; onEngineTick?: () => void; onEngineStop?: () => void; // Interaction onNodeHover?: (node: NodeObject$3 | null, previousNode: NodeObject$3 | null) => void; onNodeClick?: (link: LinkObject$3) => void; onLinkHover?: (link: LinkObject$3 | null, previousLink: LinkObject$3 | null) => void; onLinkClick?: (link: LinkObject$3) => void; } interface ForceGraphMethods$3< NodeType = {}, LinkType = {} > { // Link styling emitParticle(link: LinkObject$3): ForceGraphVRInstance; // Force engine (d3-force) configuration d3Force(forceName: 'link' | 'charge' | 'center' | string): ForceFn$3> | undefined; d3Force(forceName: 'link' | 'charge' | 'center' | string, forceFn: ForceFn$3> | null): ForceGraphVRInstance; d3ReheatSimulation(): ForceGraphVRInstance; // Render control refresh(): ForceGraphVRInstance; // Utility getGraphBbox(nodeFilter?: (node: NodeObject$3) => boolean): { x: [number, number], y: [number, number], z: [number, number] }; } type FCwithRef$3 = (props: ForceGraphProps$3, LinkObject$3> & { ref?: React.MutableRefObject, LinkObject$3> | undefined>; }) => React.ReactElement; declare const ForceGraph$3: FCwithRef$3; interface GraphData$2 { nodes: NodeObject$2[]; links: LinkObject$2[]; } type NodeObject$2 = NodeType & { id?: string | number; x?: number; y?: number; z?: number; vx?: number; vy?: number; vz?: number; fx?: number; fy?: number; fz?: number; [others: string]: any; }; type LinkObject$2 = LinkType & { source?: string | number | NodeObject$2; target?: string | number | NodeObject$2; [others: string]: any; }; type Accessor$2 = Out | string | ((obj: In) => Out); type NodeAccessor$2 = Accessor$2, T>; type LinkAccessor$2 = Accessor$2, T>; type DagMode$2 = 'td' | 'bu' | 'lr' | 'rl' | 'zout' | 'zin' | 'radialout' | 'radialin'; type ForceEngine$1 = 'd3' | 'ngraph'; interface ForceFn$2 { (alpha: number): void; initialize?: (nodes: NodeObject$2[], ...args: any[]) => void; [key: string]: any; } type Coords$1 = { x: number; y: number; z: number; } type LinkPositionUpdateFn$1 = (obj: Object3D, coords: { start: Coords$1, end: Coords$1 }, link: LinkObject$2) => void | null | boolean; interface ForceGraphProps$2< NodeType = {}, LinkType = {} > extends ConfigOptions$1 { // Data input graphData?: GraphData$2, LinkObject$2>; nodeId?: string; linkSource?: string; linkTarget?: string; // Container layout width?: number; height?: number; backgroundColor?: string; showNavInfo?: boolean; // Node styling nodeRelSize?: number; nodeVal?: NodeAccessor$2; nodeVisibility?: NodeAccessor$2; nodeColor?: NodeAccessor$2; nodeAutoColorBy?: NodeAccessor$2; nodeOpacity?: number; nodeResolution?: number; nodeThreeObject?: NodeAccessor$2; nodeThreeObjectExtend?: NodeAccessor$2; // Link styling linkVisibility?: LinkAccessor$2; linkColor?: LinkAccessor$2; linkAutoColorBy?: LinkAccessor$2; linkWidth?: LinkAccessor$2; linkOpacity?: number; linkResolution?: number; linkCurvature?: LinkAccessor$2; linkCurveRotation?: LinkAccessor$2; linkMaterial?: LinkAccessor$2; linkThreeObject?: LinkAccessor$2; linkThreeObjectExtend?: LinkAccessor$2; linkPositionUpdate?: LinkPositionUpdateFn$1 | null; linkDirectionalArrowLength?: LinkAccessor$2; linkDirectionalArrowColor?: LinkAccessor$2; linkDirectionalArrowRelPos?: LinkAccessor$2; linkDirectionalArrowResolution?: number; linkDirectionalParticles?: LinkAccessor$2; linkDirectionalParticleSpeed?: LinkAccessor$2; linkDirectionalParticleOffset?: LinkAccessor$2; linkDirectionalParticleWidth?: LinkAccessor$2; linkDirectionalParticleColor?: LinkAccessor$2; linkDirectionalParticleResolution?: number; linkDirectionalParticleThreeObject?: LinkAccessor$2; // Force engine (d3-force) configuration forceEngine?: ForceEngine$1; numDimensions?: 1 | 2 | 3; dagMode?: DagMode$2; dagLevelDistance?: number | null; dagNodeFilter?: (node: NodeObject$2) => boolean; onDagError?: ((loopNodeIds: (string | number)[]) => void) | undefined; d3AlphaMin?: number; d3AlphaDecay?: number; d3VelocityDecay?: number; ngraphPhysics?: object; warmupTicks?: number; cooldownTicks?: number; cooldownTime?: number; onEngineTick?: () => void; onEngineStop?: () => void; // Interaction onNodeHover?: (node: NodeObject$2 | null, previousNode: NodeObject$2 | null) => void; onNodeClick?: (link: LinkObject$2) => void; onLinkHover?: (link: LinkObject$2 | null, previousLink: LinkObject$2 | null) => void; onLinkClick?: (link: LinkObject$2) => void; } interface ForceGraphMethods$2< NodeType = {}, LinkType = {} > { // Link styling emitParticle(link: LinkObject$2): ForceGraphARInstance; // Force engine (d3-force) configuration d3Force(forceName: 'link' | 'charge' | 'center' | string): ForceFn$2> | undefined; d3Force(forceName: 'link' | 'charge' | 'center' | string, forceFn: ForceFn$2> | null): ForceGraphARInstance; d3ReheatSimulation(): ForceGraphARInstance; // Render control refresh(): ForceGraphARInstance; // Utility getGraphBbox(nodeFilter?: (node: NodeObject$2) => boolean): { x: [number, number], y: [number, number], z: [number, number] }; } type FCwithRef$2 = (props: ForceGraphProps$2, LinkObject$2> & { ref?: React.MutableRefObject, LinkObject$2> | undefined>; }) => React.ReactElement; declare const ForceGraph$2: FCwithRef$2; interface GraphData$1 { nodes: NodeObject$1[]; links: LinkObject$1[]; } type NodeObject$1 = NodeType & { id?: string | number; x?: number; y?: number; z?: number; vx?: number; vy?: number; vz?: number; fx?: number; fy?: number; fz?: number; [others: string]: any; }; type LinkObject$1 = LinkType & { source?: string | number | NodeObject$1; target?: string | number | NodeObject$1; [others: string]: any; }; type Accessor$1 = Out | string | ((obj: In) => Out); type NodeAccessor$1 = Accessor$1, T>; type LinkAccessor$1 = Accessor$1, T>; type TooltipContent$1 = string | React.ReactHTMLElement; type DagMode$1 = 'td' | 'bu' | 'lr' | 'rl' | 'zout' | 'zin' | 'radialout' | 'radialin'; type ForceEngine = 'd3' | 'ngraph'; interface ForceFn$1 { (alpha: number): void; initialize?: (nodes: NodeObject$1[], ...args: any[]) => void; [key: string]: any; } type Coords = { x: number; y: number; z: number; } type NodePositionUpdateFn = (obj: Object3D, coords: Coords, node: NodeObject$1) => void | null | boolean; type LinkPositionUpdateFn = (obj: Object3D, coords: { start: Coords, end: Coords }, link: LinkObject$1) => void | null | boolean; interface ForceGraphProps$1< NodeType = {}, LinkType = {} > extends ConfigOptions$2 { // Data input graphData?: GraphData$1, LinkObject$1>; nodeId?: string; linkSource?: string; linkTarget?: string; // Container layout width?: number; height?: number; backgroundColor?: string; showNavInfo?: boolean; // Node styling nodeRelSize?: number; nodeVal?: NodeAccessor$1; nodeLabel?: NodeAccessor$1; nodeVisibility?: NodeAccessor$1; nodeColor?: NodeAccessor$1; nodeAutoColorBy?: NodeAccessor$1; nodeOpacity?: number; nodeResolution?: number; nodeThreeObject?: NodeAccessor$1; nodeThreeObjectExtend?: NodeAccessor$1; nodePositionUpdate?: NodePositionUpdateFn | null; // Link styling linkLabel?: LinkAccessor$1; linkVisibility?: LinkAccessor$1; linkColor?: LinkAccessor$1; linkAutoColorBy?: LinkAccessor$1; linkWidth?: LinkAccessor$1; linkOpacity?: number; linkResolution?: number; linkCurvature?: LinkAccessor$1; linkCurveRotation?: LinkAccessor$1; linkMaterial?: LinkAccessor$1; linkThreeObject?: LinkAccessor$1; linkThreeObjectExtend?: LinkAccessor$1; linkPositionUpdate?: LinkPositionUpdateFn | null; linkDirectionalArrowLength?: LinkAccessor$1; linkDirectionalArrowColor?: LinkAccessor$1; linkDirectionalArrowRelPos?: LinkAccessor$1; linkDirectionalArrowResolution?: number; linkDirectionalParticles?: LinkAccessor$1; linkDirectionalParticleSpeed?: LinkAccessor$1; linkDirectionalParticleOffset?: LinkAccessor$1; linkDirectionalParticleWidth?: LinkAccessor$1; linkDirectionalParticleColor?: LinkAccessor$1; linkDirectionalParticleResolution?: number; linkDirectionalParticleThreeObject?: LinkAccessor$1; // Force engine (d3-force) configuration forceEngine?: ForceEngine; numDimensions?: 1 | 2 | 3; dagMode?: DagMode$1; dagLevelDistance?: number | null; dagNodeFilter?: (node: NodeObject$1) => boolean; onDagError?: ((loopNodeIds: (string | number)[]) => void) | undefined; d3AlphaMin?: number; d3AlphaDecay?: number; d3VelocityDecay?: number; ngraphPhysics?: object; warmupTicks?: number; cooldownTicks?: number; cooldownTime?: number; onEngineTick?: () => void; onEngineStop?: () => void; // Interaction onNodeClick?: (node: NodeObject$1, event: MouseEvent) => void; onNodeRightClick?: (node: NodeObject$1, event: MouseEvent) => void; onNodeHover?: (node: NodeObject$1 | null, previousNode: NodeObject$1 | null) => void; onNodeDrag?: (node: NodeObject$1, translate: { x: number, y: number }) => void; onNodeDragEnd?: (node: NodeObject$1, translate: { x: number, y: number }) => void; onLinkClick?: (link: LinkObject$1, event: MouseEvent) => void; onLinkRightClick?: (link: LinkObject$1, event: MouseEvent) => void; onLinkHover?: (link: LinkObject$1 | null, previousLink: LinkObject$1 | null) => void; linkHoverPrecision?: number; onBackgroundClick?: (event: MouseEvent) => void; onBackgroundRightClick?: (event: MouseEvent) => void; showPointerCursor?: boolean | ((obj: NodeObject$1 | LinkObject$1 | undefined) => boolean); enableNodeDrag?: boolean; enableNavigationControls?: boolean; enablePointerInteraction?: boolean; } interface ForceGraphMethods$1< NodeType = {}, LinkType = {} > { // Link styling emitParticle(link: LinkObject$1): ForceGraph3DInstance; // Force engine (d3-force) configuration d3Force(forceName: 'link' | 'charge' | 'center' | string): ForceFn$1> | undefined; d3Force(forceName: 'link' | 'charge' | 'center' | string, forceFn: ForceFn$1> | null): ForceGraph3DInstance; d3ReheatSimulation(): ForceGraph3DInstance; // Render control pauseAnimation(): ForceGraph3DInstance; resumeAnimation(): ForceGraph3DInstance; cameraPosition(position: Partial, lookAt?: Coords, transitionMs?: number): ForceGraph3DInstance; zoomToFit(durationMs?: number, padding?: number, nodeFilter?: (node: NodeObject$1) => boolean): ForceGraph3DInstance; postProcessingComposer(): EffectComposer; lights(): Light[]; lights(lights: Light[]): ForceGraph3DInstance; scene(): Scene; camera(): Camera; renderer(): WebGLRenderer; controls(): object; refresh(): ForceGraph3DInstance; // Utility getGraphBbox(nodeFilter?: (node: NodeObject$1) => boolean): { x: [number, number], y: [number, number], z: [number, number] }; screen2GraphCoords(x: number, y: number, distance: number): Coords; graph2ScreenCoords(x: number, y: number, z: number): Coords; } type FCwithRef$1 = (props: ForceGraphProps$1, LinkObject$1> & { ref?: React.MutableRefObject, LinkObject$1> | undefined>; }) => React.ReactElement; declare const ForceGraph$1: FCwithRef$1; interface GraphData { nodes: NodeObject[]; links: LinkObject[]; } type NodeObject = NodeType & { id?: string | number; x?: number; y?: number; vx?: number; vy?: number; fx?: number; fy?: number; [others: string]: any; }; type LinkObject = LinkType & { source?: string | number | NodeObject; target?: string | number | NodeObject; [others: string]: any; }; type Accessor = Out | string | ((obj: In) => Out); type NodeAccessor = Accessor, T>; type LinkAccessor = Accessor, T>; type TooltipContent = string | React.ReactHTMLElement; type CanvasCustomRenderMode = 'replace' | 'before' | 'after'; type CanvasCustomRenderFn = (obj: T, canvasContext: CanvasRenderingContext2D, globalScale: number) => void; type CanvasPointerAreaPaintFn = (obj: T, paintColor: string, canvasContext: CanvasRenderingContext2D, globalScale: number) => void; type DagMode = 'td' | 'bu' | 'lr' | 'rl' | 'radialout' | 'radialin'; interface ForceFn { (alpha: number): void; initialize?: (nodes: NodeObject[], ...args: any[]) => void; [key: string]: any; } interface ForceGraphProps< NodeType = {}, LinkType = {} > { // Data input graphData?: GraphData, LinkObject>; nodeId?: string; linkSource?: string; linkTarget?: string; // Container layout width?: number; height?: number; backgroundColor?: string; // Node styling nodeRelSize?: number; nodeVal?: NodeAccessor; nodeLabel?: NodeAccessor; nodeVisibility?: NodeAccessor; nodeColor?: NodeAccessor; nodeAutoColorBy?: NodeAccessor; nodeCanvasObjectMode?: string | ((obj: NodeObject) => CanvasCustomRenderMode | any); nodeCanvasObject?: CanvasCustomRenderFn>; nodePointerAreaPaint?: CanvasPointerAreaPaintFn>; // Link styling linkLabel?: LinkAccessor; linkVisibility?: LinkAccessor; linkColor?: LinkAccessor; linkAutoColorBy?: LinkAccessor; linkLineDash?: LinkAccessor; linkWidth?: LinkAccessor; linkCurvature?: LinkAccessor; linkCanvasObject?: CanvasCustomRenderFn>; linkCanvasObjectMode?: string | ((obj: LinkObject) => CanvasCustomRenderMode | any); linkDirectionalArrowLength?: LinkAccessor; linkDirectionalArrowColor?: LinkAccessor; linkDirectionalArrowRelPos?: LinkAccessor; linkDirectionalParticles?: LinkAccessor; linkDirectionalParticleSpeed?: LinkAccessor; linkDirectionalParticleOffset?: LinkAccessor; linkDirectionalParticleWidth?: LinkAccessor; linkDirectionalParticleColor?: LinkAccessor; linkDirectionalParticleCanvasObject?: (x: number, y: number, link: LinkType, canvasContext: CanvasRenderingContext2D, globalScale: number) => void; linkPointerAreaPaint?: CanvasPointerAreaPaintFn>; // Render control autoPauseRedraw?: boolean; minZoom?: number; maxZoom?: number; onRenderFramePre?: (canvasContext: CanvasRenderingContext2D, globalScale: number) => void; onRenderFramePost?: (canvasContext: CanvasRenderingContext2D, globalScale: number) => void; // Force engine (d3-force) configuration dagMode?: DagMode; dagLevelDistance?: number | null; dagNodeFilter?: (node: NodeObject) => boolean; onDagError?: ((loopNodeIds: (string | number)[]) => void) | undefined; d3AlphaMin?: number; d3AlphaDecay?: number; d3VelocityDecay?: number; ngraphPhysics?: object; warmupTicks?: number; cooldownTicks?: number; cooldownTime?: number; onEngineTick?: () => void; onEngineStop?: () => void; // Interaction onNodeClick?: (node: NodeObject, event: MouseEvent) => void; onNodeRightClick?: (node: NodeObject, event: MouseEvent) => void; onNodeHover?: (node: NodeObject | null, previousNode: NodeObject | null) => void; onNodeDrag?: (node: NodeObject, translate: { x: number, y: number }) => void; onNodeDragEnd?: (node: NodeObject, translate: { x: number, y: number }) => void; onLinkClick?: (link: LinkObject, event: MouseEvent) => void; onLinkRightClick?: (link: LinkObject, event: MouseEvent) => void; onLinkHover?: (link: LinkObject | null, previousLink: LinkObject | null) => void; linkHoverPrecision?: number; onBackgroundClick?: (event: MouseEvent) => void; onBackgroundRightClick?: (event: MouseEvent) => void; showPointerCursor?: boolean | ((obj: NodeObject | LinkObject | undefined) => boolean); onZoom?: (transform: {k: number, x: number, y: number}) => void; onZoomEnd?: (transform: {k: number, x: number, y: number}) => void; enableNodeDrag?: boolean; enableZoomInteraction?: boolean | ((event: MouseEvent) => boolean); enablePanInteraction?: boolean | ((event: MouseEvent) => boolean); enablePointerInteraction?: boolean; } interface ForceGraphMethods< NodeType = {}, LinkType = {} > { // Link styling emitParticle(link: LinkObject): ForceGraphKapsule; // Force engine (d3-force) configuration d3Force(forceName: 'link' | 'charge' | 'center' | string): ForceFn> | undefined; d3Force(forceName: 'link' | 'charge' | 'center' | string, forceFn: ForceFn> | null): ForceGraphKapsule; d3ReheatSimulation(): ForceGraphKapsule; // Render control pauseAnimation(): ForceGraphKapsule; resumeAnimation(): ForceGraphKapsule; centerAt(): {x: number, y: number}; centerAt(x?: number, y?: number, durationMs?: number): ForceGraphKapsule; zoom(): number; zoom(scale: number, durationMs?: number): ForceGraphKapsule; zoomToFit(durationMs?: number, padding?: number, nodeFilter?: (node: NodeObject) => boolean): ForceGraphKapsule; // Utility getGraphBbox(nodeFilter?: (node: NodeObject) => boolean): { x: [number, number], y: [number, number] }; screen2GraphCoords(x: number, y: number): { x: number, y: number }; graph2ScreenCoords(x: number, y: number): { x: number, y: number }; } type FCwithRef = (props: ForceGraphProps, LinkObject> & { ref?: React.MutableRefObject, LinkObject> | undefined>; }) => React.ReactElement; declare const ForceGraph: FCwithRef; export { ForceGraph as ForceGraph2D, ForceGraph$1 as ForceGraph3D, ForceGraph$2 as ForceGraphAR, ForceGraph$3 as ForceGraphVR };