import { AriaAttributes, MouseEvent, FunctionComponent } from 'react'; import { AnimatedProps } from '@react-spring/web'; import { Box, Dimensions, MotionProps, CssMixBlendMode } from '@nivo/core'; import { PartialTheme } from '@nivo/theming'; import { InheritedColorConfig } from '@nivo/colors'; import { AnnotationMatcher } from '@nivo/annotations'; export interface InputNode { id: string; } export interface ComputedNode { id: string; data: Node; index: number; x: number; y: number; vx: number; vy: number; size: number; color: string; borderWidth: number; borderColor: string; } export type TransientNode = Omit, 'size' | 'color' | 'borderWidth' | 'borderColor'>; export interface NodeAnimatedProps { x: number; y: number; size: number; color: string; borderWidth: number; borderColor: string; opacity: number; scale: number; } export interface NodeProps { node: ComputedNode; animated: AnimatedProps; onClick?: (node: ComputedNode, event: MouseEvent) => void; onMouseEnter?: (node: ComputedNode, event: MouseEvent) => void; onMouseMove?: (node: ComputedNode, event: MouseEvent) => void; onMouseLeave?: (node: ComputedNode, event: MouseEvent) => void; } export type NodeComponent = FunctionComponent>; export type NodeCanvasRenderer = (ctx: CanvasRenderingContext2D, node: ComputedNode) => void; export interface InputLink { source: string; target: string; } export interface ComputedLink { id: string; data: Link; index: number; source: ComputedNode; target: ComputedNode; thickness: number; color: string; } export interface TransientLink { data: Link; index: number; source: TransientNode; target: TransientNode; } export interface LinkAnimatedProps { x1: number; y1: number; x2: number; y2: number; color: string; opacity: number; } export interface LinkProps { link: ComputedLink; animated: AnimatedProps; blendMode: NonNullable['linkBlendMode']>; } export type LinkComponent = FunctionComponent>; export type LinkCanvasRenderer = (ctx: CanvasRenderingContext2D, node: ComputedLink) => void; export interface NetworkDataProps { data: { nodes: Node[]; links: Link[]; }; } export type LayerId = 'links' | 'nodes' | 'annotations'; export interface CustomLayerProps { nodes: ComputedNode[]; links: ComputedLink[]; activeNodeIds: string[]; setActiveNodeIds: (nodeIds: string[]) => void; } export type CustomLayer = FunctionComponent>; export type CustomCanvasLayer = (ctx: CanvasRenderingContext2D, props: CustomLayerProps) => void; export interface NodeTooltipProps { node: ComputedNode; } export type NodeTooltip = FunctionComponent>; export type DerivedProp = Output | ((target: Target) => Output); export type NetworkCommonProps = { margin: Box; linkDistance: DerivedProp; centeringStrength: number; repulsivity: number; distanceMin: number; distanceMax: number; iterations: number; theme: PartialTheme; nodeSize: DerivedProp; activeNodeSize: DerivedProp; inactiveNodeSize: DerivedProp; nodeColor: DerivedProp; nodeBorderWidth: DerivedProp; nodeBorderColor: InheritedColorConfig, 'size' | 'borderWidth' | 'borderColor'>>; linkThickness: DerivedProp, 'color' | 'thickness'>, number>; linkColor: InheritedColorConfig, 'color' | 'thickness'>>; annotations: AnnotationMatcher>[]; isInteractive: boolean; defaultActiveNodeIds: string[]; nodeTooltip: NodeTooltip; onClick: (node: ComputedNode, event: MouseEvent) => void; renderWrapper: boolean; role?: string; ariaLabel: AriaAttributes['aria-label']; ariaLabelledBy: AriaAttributes['aria-labelledby']; ariaDescribedBy: AriaAttributes['aria-describedby']; } & Required; export type NetworkSvgProps = Partial> & NetworkDataProps & Dimensions & { layers?: (LayerId | CustomLayer)[]; nodeComponent?: NodeComponent; linkComponent?: LinkComponent; linkBlendMode?: CssMixBlendMode; onMouseEnter?: (node: ComputedNode, event: MouseEvent) => void; onMouseMove?: (node: ComputedNode, event: MouseEvent) => void; onMouseLeave?: (node: ComputedNode, event: MouseEvent) => void; }; export type NetworkCanvasProps = Partial> & NetworkDataProps & Dimensions & { layers?: (LayerId | CustomCanvasLayer)[]; renderNode?: NodeCanvasRenderer; renderLink?: LinkCanvasRenderer; pixelRatio?: number; }; //# sourceMappingURL=types.d.ts.map