1 | import React, { PureComponent, ReactElement, SVGProps } from 'react';
|
2 | import { Props as RectangleProps } from '../shape/Rectangle';
|
3 | import { Margin, DataKey, SankeyLink, SankeyNode } from '../util/types';
|
4 | interface LinkDataItem {
|
5 | source: number;
|
6 | target: number;
|
7 | [key: string]: any;
|
8 | }
|
9 | interface SankeyData {
|
10 | nodes: any[];
|
11 | links: LinkDataItem[];
|
12 | }
|
13 | type SankeyNodeOptions = ReactElement<SVGElement> | ((props: any) => ReactElement<SVGElement>) | RectangleProps;
|
14 | type SankeyLinkOptions = ReactElement<SVGElement> | ((props: any) => ReactElement<SVGElement>) | SVGProps<SVGPathElement>;
|
15 | interface 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 | }
|
36 | type Props = SVGProps<SVGElement> & SankeyProps;
|
37 | interface 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 | }
|
53 | export 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 | }
|
88 | export {};
|
89 |
|
\ | No newline at end of file |