UNPKG

2.77 kBTypeScriptView Raw
1import React, { PureComponent, ReactElement, SVGProps } from 'react';
2import { Props as RectangleProps } from '../shape/Rectangle';
3import { Margin, DataKey, SankeyLink, SankeyNode } from '../util/types';
4interface LinkDataItem {
5 source: number;
6 target: number;
7 [key: string]: any;
8}
9interface SankeyData {
10 nodes: any[];
11 links: LinkDataItem[];
12}
13type SankeyNodeOptions = ReactElement<SVGElement> | ((props: any) => ReactElement<SVGElement>) | RectangleProps;
14type SankeyLinkOptions = ReactElement<SVGElement> | ((props: any) => ReactElement<SVGElement>) | SVGProps<SVGPathElement>;
15interface SankeyProps {
16 nameKey?: DataKey<any>;
17 dataKey?: DataKey<any>;
18 width?: number;
19 height?: number;
20 data: SankeyData;
21 nodePadding?: number;
22 nodeWidth?: number;
23 linkCurvature?: number;
24 iterations?: number;
25 node?: SankeyNodeOptions;
26 link?: SankeyLinkOptions;
27 style?: any;
28 className?: string;
29 children?: any;
30 margin?: Margin;
31 onClick?: any;
32 onMouseEnter?: any;
33 onMouseLeave?: any;
34 sort?: boolean;
35}
36type Props = SVGProps<SVGElement> & SankeyProps;
37interface State {
38 activeElement?: any;
39 activeElementType?: any;
40 isTooltipActive: boolean;
41 nodes: SankeyNode[];
42 links: SankeyLink[];
43 sort?: boolean;
44 prevData?: SankeyData;
45 prevWidth?: number;
46 prevHeight?: number;
47 prevMargin?: Margin;
48 prevIterations?: number;
49 prevNodeWidth?: number;
50 prevNodePadding?: number;
51 prevSort?: boolean;
52}
53export declare class Sankey extends PureComponent<Props, State> {
54 static displayName: string;
55 static defaultProps: {
56 nameKey: string;
57 dataKey: string;
58 nodePadding: number;
59 nodeWidth: number;
60 linkCurvature: number;
61 iterations: number;
62 margin: {
63 top: number;
64 right: number;
65 bottom: number;
66 left: number;
67 };
68 sort: boolean;
69 };
70 state: {
71 activeElement: any;
72 activeElementType: any;
73 isTooltipActive: boolean;
74 nodes: SankeyNode[];
75 links: SankeyLink[];
76 };
77 static getDerivedStateFromProps(nextProps: Props, prevState: State): State;
78 handleMouseEnter(el: React.ReactElement, type: string, e: any): void;
79 handleMouseLeave(el: React.ReactElement, type: string, e: any): void;
80 handleClick(el: React.ReactElement, type: string, e: any): void;
81 static renderLinkItem(option: any, props: any): any;
82 renderLinks(links: SankeyLink[], nodes: SankeyNode[]): React.JSX.Element;
83 static renderNodeItem(option: any, props: Props): any;
84 renderNodes(nodes: SankeyNode[]): React.JSX.Element;
85 renderTooltip(): ReactElement;
86 render(): React.JSX.Element;
87}
88export {};
89
\No newline at end of file