react-d3-tree
Version:
React component to create interactive D3 tree hierarchies
60 lines (59 loc) • 2.39 kB
TypeScript
import React, { SyntheticEvent } from 'react';
import { HierarchyPointNode } from 'd3-hierarchy';
import { Orientation, Point, TreeNodeDatum, RawNodeDatum, RenderCustomNodeElementFn, AddChildrenFunction } from '../types/common.js';
type NodeEventHandler = (hierarchyPointNode: HierarchyPointNode<TreeNodeDatum>, evt: SyntheticEvent) => void;
type NodeProps = {
data: TreeNodeDatum;
position: Point;
hierarchyPointNode: HierarchyPointNode<TreeNodeDatum>;
parent: HierarchyPointNode<TreeNodeDatum> | null;
nodeClassName: string;
nodeSize: {
x: number;
y: number;
};
orientation: Orientation;
enableLegacyTransitions: boolean;
transitionDuration: number;
renderCustomNodeElement: RenderCustomNodeElementFn;
onNodeToggle: (nodeId: string) => void;
onNodeClick: NodeEventHandler;
onNodeMouseOver: NodeEventHandler;
onNodeMouseOut: NodeEventHandler;
subscriptions: object;
centerNode: (hierarchyPointNode: HierarchyPointNode<TreeNodeDatum>) => void;
handleAddChildrenToNode: (nodeId: string, children: RawNodeDatum[]) => void;
};
type NodeState = {
transform: string;
initialStyle: {
opacity: number;
};
wasClicked: boolean;
};
export default class Node extends React.Component<NodeProps, NodeState> {
private nodeRef;
state: {
transform: string;
initialStyle: {
opacity: number;
};
wasClicked: boolean;
};
componentDidMount(): void;
componentDidUpdate(): void;
shouldComponentUpdate(nextProps: NodeProps, nextState: NodeState): boolean;
shouldNodeTransform: (ownProps: NodeProps, nextProps: NodeProps, ownState: NodeState, nextState: NodeState) => boolean;
setTransform(position: NodeProps['position'], parent: NodeProps['parent'], orientation: NodeProps['orientation'], shouldTranslateToOrigin?: boolean): string;
applyTransform(transform: string, transitionDuration: NodeProps['transitionDuration'], opacity?: number, done?: () => void): void;
commitTransform(): void;
renderNodeElement: () => JSX.Element;
handleNodeToggle: () => void;
handleOnClick: (evt: any) => void;
handleOnMouseOver: (evt: any) => void;
handleOnMouseOut: (evt: any) => void;
handleAddChildren: AddChildrenFunction;
componentWillLeave(done: any): void;
render(): JSX.Element;
}
export {};