import { ScaleLinear } from 'd3-scale'; import * as React from 'react'; import { Link } from 'react-router'; import { Location } from '../../helpers/urls'; import './BubbleChart.css'; interface BubbleItem { color?: string; key?: string; link?: string | Location; data?: T; size: number; tooltip?: React.ReactNode; x: number; y: number; } interface Props { displayXGrid?: boolean; displayXTicks?: boolean; displayYGrid?: boolean; displayYTicks?: boolean; formatXTick: (tick: number) => string; formatYTick: (tick: number) => string; height: number; items: BubbleItem[]; onBubbleClick?: (ref?: T) => void; padding: [number, number, number, number]; sizeDomain?: [number, number]; sizeRange?: [number, number]; xDomain?: [number, number]; yDomain?: [number, number]; } interface State { transform: { x: number; y: number; k: number; }; } declare type Scale = ScaleLinear; export default class BubbleChart extends React.PureComponent, State> { private node?; private zoom?; static defaultProps: { displayXGrid: boolean; displayXTicks: boolean; displayYGrid: boolean; displayYTicks: boolean; formatXTick: (d: number) => string; formatYTick: (d: number) => string; padding: number[]; sizeRange: number[]; }; constructor(props: Props); componentDidUpdate(): void; boundNode: (node: SVGSVGElement) => void; zoomed: () => void; resetZoom: (event: React.MouseEvent) => void; getXRange(xScale: Scale, sizeScale: Scale, availableWidth: number): number[]; getYRange(yScale: Scale, sizeScale: Scale, availableHeight: number): number[]; getTicks(scale: Scale, format: (d: number) => string): number[]; getZoomLevelLabel: () => string; renderXGrid: (ticks: number[], xScale: Scale, yScale: Scale) => JSX.Element | null; renderYGrid: (ticks: number[], xScale: Scale, yScale: Scale) => JSX.Element | null; renderXTicks: (xTicks: number[], xScale: Scale, yScale: Scale) => JSX.Element | null; renderYTicks: (yTicks: number[], xScale: Scale, yScale: Scale) => JSX.Element | null; renderChart: (width: number) => JSX.Element; render(): JSX.Element; } export {};