mmr-gl-react
Version:
React components for MMR GL JS-compatible libraries
74 lines (62 loc) • 2.04 kB
text/typescript
import type {ViewState, Point, LngLat, MapGeoJSONFeature} from './common';
import type {
MapInstance,
Evented,
MarkerInstance,
PopupInstance,
GeolocateControlInstance
} from './lib';
export interface Callbacks {
[key: `on${string}`]: Function;
}
export interface MapEvent<SourceT extends Evented, OriginalEventT = undefined> {
type: string;
target: SourceT;
originalEvent: OriginalEventT;
}
export type ErrorEvent<MapT extends MapInstance> = MapEvent<MapT> & {
type: 'error';
error: Error;
};
export type MapMouseEvent<MapT extends MapInstance> = MapEvent<MapT, MouseEvent> & {
point: Point;
lngLat: LngLat;
features?: MapGeoJSONFeature[];
};
export type ViewStateChangeEvent<MapT extends MapInstance> =
| (MapEvent<MapT, MouseEvent | TouchEvent | WheelEvent | undefined> & {
type: 'movestart' | 'move' | 'moveend' | 'zoomstart' | 'zoom' | 'zoomend';
viewState: ViewState;
})
| (MapEvent<MapT, MouseEvent | TouchEvent | undefined> & {
type:
| 'rotatestart'
| 'rotate'
| 'rotateend'
| 'dragstart'
| 'drag'
| 'dragend'
| 'pitchstart'
| 'pitch'
| 'pitchend';
viewState: ViewState;
});
export type PopupEvent<PopupT extends PopupInstance> = {
type: 'open' | 'close';
target: PopupT;
};
export type MarkerEvent<MarkerT extends MarkerInstance, OriginalEventT = undefined> = MapEvent<
MarkerT,
OriginalEventT
>;
export type MarkerDragEvent<MarkerT extends MarkerInstance> = MarkerEvent<MarkerT> & {
type: 'dragstart' | 'drag' | 'dragend';
target: MarkerT;
lngLat: LngLat;
};
export type GeolocateEvent<GeolocateControlT extends GeolocateControlInstance> =
MapEvent<GeolocateControlT>;
export type GeolocateResultEvent<GeolocateControlT extends GeolocateControlInstance> =
GeolocateEvent<GeolocateControlT> & GeolocationPosition;
export type GeolocateErrorEvent<GeolocateControlT extends GeolocateControlInstance> =
GeolocateEvent<GeolocateControlT> & GeolocationPositionError;