///
///
import * as React from 'react';
import * as PropTypes from 'prop-types';
import { Map } from 'mapbox-gl';
import { Props as MarkerProps } from './marker';
import { Supercluster } from 'supercluster';
import * as GeoJSON from 'geojson';
export interface Props {
ClusterMarkerFactory(coordinates: GeoJSON.Position, pointCount: number, getLeaves: (limit?: number, offset?: number) => Array>): React.ReactElement;
radius?: number;
maxZoom?: number;
minZoom?: number;
extent?: number;
nodeSize?: number;
log?: boolean;
zoomOnClick?: boolean;
zoomOnClickPadding?: number;
children?: Array>;
style?: React.CSSProperties;
className?: string;
}
export interface State {
superC: Supercluster;
clusterPoints: Array>;
}
export interface Context {
map: Map;
}
export default class Cluster extends React.Component {
context: Context;
static contextTypes: {
map: PropTypes.Requireable;
};
static defaultProps: {
radius: number;
minZoom: number;
maxZoom: number;
extent: number;
nodeSize: number;
log: boolean;
zoomOnClick: boolean;
zoomOnClickPadding: number;
};
state: State;
private featureClusterMap;
componentWillMount(): void;
componentWillReceiveProps(nextProps: Props): void;
private childrenChange;
private mapChange;
private feature(coordinates);
private childrenToFeatures;
private getLeaves;
zoomToClusterBounds: (event: React.MouseEvent) => void;
private findMarkerElement(target, element);
render(): JSX.Element;
}