UNPKG

react-map-gl-supercluster

Version:

34 lines (33 loc) 2.02 kB
import type Supercluster from 'supercluster'; import type { PointFeature, ClusterFeature } from 'supercluster'; export type { PointFeature, ClusterFeature }; export type GeoJsonProperties = Record<string, unknown>; export type PointFeatureProperties<TProperties extends GeoJsonProperties> = { cluster: false; } & TProperties; export type PointClusterProperties<TProperties extends GeoJsonProperties> = TProperties; export type Cluster<TFeatureProperties extends GeoJsonProperties, TClusterProperties extends GeoJsonProperties> = PointFeature<PointFeatureProperties<TFeatureProperties>> | ClusterFeature<PointClusterProperties<TClusterProperties>>; export type SuperclusterInstance<TFeatureProperties extends GeoJsonProperties, TClusterProperties extends GeoJsonProperties> = Omit<Supercluster<PointFeatureProperties<TFeatureProperties>, PointClusterProperties<TClusterProperties>>, 'load'>; export type MapFeatureToCluster<TFeatureProperties extends GeoJsonProperties, TClusterProperties extends GeoJsonProperties> = (feature: PointFeatureProperties<TFeatureProperties>) => PointClusterProperties<TClusterProperties>; export type ReduceCluster<TClusterProperties extends GeoJsonProperties> = (memo: PointClusterProperties<TClusterProperties>, feature: PointClusterProperties<TClusterProperties>) => void; export type SuperclusterOptions<TFeatureProperties extends GeoJsonProperties, TClusterProperties extends GeoJsonProperties> = { minZoom?: number; maxZoom?: number; radius?: number; minPoints?: number; extent?: number; nodeSize?: number; generateId?: boolean; map?: MapFeatureToCluster<TFeatureProperties, TClusterProperties>; reduce?: ReduceCluster<TClusterProperties>; }; type LngLatBounds = { toArray(): number[][]; }; type MapEventListener = (...args: any[]) => void; export type RelMapRef = { getBounds(): LngLatBounds; getZoom(): number; on(type: string, listener: MapEventListener): void; off(type: string, listener?: MapEventListener): void; };