mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2025-10-16 12:05:41 +00:00
482 lines
20 KiB
TypeScript
482 lines
20 KiB
TypeScript
// Type definitions for react-leaflet 2.5
|
|
// Project: https://github.com/PaulLeCam/react-leaflet
|
|
// Definitions by: Dave Leaver <https://github.com/danzel>
|
|
// David Schneider <https://github.com/davschne>
|
|
// Yui T. <https://github.com/yuit>
|
|
// Jeroen Claassens <https://github.com/favna>
|
|
// Tom Fenech <https://github.com/fenech>
|
|
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
|
// TypeScript Version: 2.8
|
|
|
|
import * as Leaflet from 'leaflet';
|
|
import * as React from 'react';
|
|
|
|
// All events need to be lowercase so they don't collide with React.DOMAttributes<T>
|
|
// which already declares things with some of the same names
|
|
|
|
export type Children = React.ReactNode | React.ReactNode[];
|
|
|
|
export interface MapEvents {
|
|
onclick?(event: Leaflet.LeafletMouseEvent): void;
|
|
ondblclick?(event: Leaflet.LeafletMouseEvent): void;
|
|
onmousedown?(event: Leaflet.LeafletMouseEvent): void;
|
|
onmouseup?(event: Leaflet.LeafletMouseEvent): void;
|
|
onmouseover?(event: Leaflet.LeafletMouseEvent): void;
|
|
onmouseout?(event: Leaflet.LeafletMouseEvent): void;
|
|
onmousemove?(event: Leaflet.LeafletMouseEvent): void;
|
|
oncontextmenu?(event: Leaflet.LeafletMouseEvent): void;
|
|
onfocus?(event: Leaflet.LeafletEvent): void;
|
|
onblur?(event: Leaflet.LeafletEvent): void;
|
|
onpreclick?(event: Leaflet.LeafletMouseEvent): void;
|
|
onload?(event: Leaflet.LeafletEvent): void;
|
|
onunload?(event: Leaflet.LeafletEvent): void;
|
|
onviewreset?(event: Leaflet.LeafletEvent): void;
|
|
onmove?(event: Leaflet.LeafletEvent): void;
|
|
onmovestart?(event: Leaflet.LeafletEvent): void;
|
|
onmoveend?(event: Leaflet.LeafletEvent): void;
|
|
ondragstart?(event: Leaflet.LeafletEvent): void;
|
|
ondrag?(event: Leaflet.LeafletEvent): void;
|
|
ondragend?(event: Leaflet.DragEndEvent): void;
|
|
onzoomstart?(event: Leaflet.LeafletEvent): void;
|
|
onzoomend?(event: Leaflet.LeafletEvent): void;
|
|
onzoomlevelschange?(event: Leaflet.LeafletEvent): void;
|
|
onresize?(event: Leaflet.ResizeEvent): void;
|
|
onautopanstart?(event: Leaflet.LeafletEvent): void;
|
|
onlayeradd?(event: Leaflet.LayerEvent): void;
|
|
onlayerremove?(event: Leaflet.LayerEvent): void;
|
|
onbaselayerchange?(event: Leaflet.LayersControlEvent): void;
|
|
onoverlayadd?(event: Leaflet.LayersControlEvent): void;
|
|
onoverlayremove?(event: Leaflet.LayersControlEvent): void;
|
|
onlocationfound?(event: Leaflet.LocationEvent): void;
|
|
onlocationerror?(event: Leaflet.ErrorEvent): void;
|
|
onpopupopen?(event: Leaflet.PopupEvent): void;
|
|
onpopupclose?(event: Leaflet.PopupEvent): void;
|
|
}
|
|
|
|
export interface MarkerEvents {
|
|
onclick?(event: Leaflet.LeafletMouseEvent): void;
|
|
ondblclick?(event: Leaflet.LeafletMouseEvent): void;
|
|
onmousedown?(event: Leaflet.LeafletMouseEvent): void;
|
|
onmouseover?(event: Leaflet.LeafletMouseEvent): void;
|
|
onmouseout?(event: Leaflet.LeafletMouseEvent): void;
|
|
oncontextmenu?(event: Leaflet.LeafletMouseEvent): void;
|
|
ondragstart?(event: Leaflet.LeafletEvent): void;
|
|
ondrag?(event: Leaflet.LeafletEvent): void;
|
|
ondragend?(event: Leaflet.DragEndEvent): void;
|
|
onmove?(event: Leaflet.LeafletEvent): void;
|
|
onadd?(event: Leaflet.LeafletEvent): void;
|
|
onremove?(event: Leaflet.LeafletEvent): void;
|
|
onpopupopen?(event: Leaflet.PopupEvent): void;
|
|
onpopupclose?(event: Leaflet.PopupEvent): void;
|
|
}
|
|
|
|
export interface TileLayerEvents {
|
|
onloading?(event: Leaflet.LeafletEvent): void;
|
|
onload?(event: Leaflet.LeafletEvent): void;
|
|
ontileloadstart?(event: Leaflet.TileEvent): void;
|
|
ontileload?(event: Leaflet.TileEvent): void;
|
|
ontileunload?(event: Leaflet.TileEvent): void;
|
|
ontileerror?(event: Leaflet.TileEvent): void;
|
|
}
|
|
|
|
export interface PathEvents {
|
|
onclick?(event: Leaflet.LeafletMouseEvent): void;
|
|
ondblclick?(event: Leaflet.LeafletMouseEvent): void;
|
|
onmousedown?(event: Leaflet.LeafletMouseEvent): void;
|
|
onmouseover?(event: Leaflet.LeafletMouseEvent): void;
|
|
onmouseout?(event: Leaflet.LeafletMouseEvent): void;
|
|
oncontextmenu?(event: Leaflet.LeafletMouseEvent): void;
|
|
onadd?(event: Leaflet.LeafletEvent): void;
|
|
onremove?(event: Leaflet.LeafletEvent): void;
|
|
onpopupopen?(event: Leaflet.PopupEvent): void;
|
|
onpopupclose?(event: Leaflet.PopupEvent): void;
|
|
}
|
|
|
|
export interface FeatureGroupEvents {
|
|
onclick?(event: Leaflet.LeafletMouseEvent): void;
|
|
ondblclick?(event: Leaflet.LeafletMouseEvent): void;
|
|
onmouseover?(event: Leaflet.LeafletMouseEvent): void;
|
|
onmouseout?(event: Leaflet.LeafletMouseEvent): void;
|
|
oncontextmenu?(event: Leaflet.LeafletMouseEvent): void;
|
|
onlayeradd?(event: Leaflet.LayerEvent): void;
|
|
onlayerremove?(event: Leaflet.LayerEvent): void;
|
|
}
|
|
|
|
export interface LayersControlEvents {
|
|
onbaselayerchange?(event: Leaflet.LayersControlEvent): void;
|
|
onoverlayadd?(event: Leaflet.LayersControlEvent): void;
|
|
onoverlayremove?(event: Leaflet.LayersControlEvent): void;
|
|
}
|
|
|
|
export type LeafletEvents = MapEvents
|
|
& MarkerEvents
|
|
& TileLayerEvents
|
|
& PathEvents
|
|
& FeatureGroupEvents
|
|
& LayersControlEvents;
|
|
|
|
// Most react-leaflet components take two type parameters:
|
|
// - P : the component's props object
|
|
// - E : the corresponding Leaflet element
|
|
|
|
// These type parameters aren't needed for instantiating a component, but they are useful for
|
|
// extending react-leaflet classes.
|
|
|
|
export interface MapComponentProps {
|
|
leaflet?: LeafletContext;
|
|
pane?: string;
|
|
}
|
|
|
|
export class MapEvented<P, E extends Leaflet.Evented> extends React.Component<P> {
|
|
_leafletEvents: LeafletEvents;
|
|
leafletElement: E;
|
|
extractLeafletEvents(props: P): LeafletEvents;
|
|
bindLeafletEvents(next: LeafletEvents, prev: LeafletEvents): LeafletEvents;
|
|
fireLeafletEvent(type: string, data: any): void;
|
|
}
|
|
|
|
export class MapComponent<P extends MapComponentProps, E extends Leaflet.Evented> extends MapEvented<P, E> {
|
|
getOptions(props: P): P;
|
|
}
|
|
|
|
export interface MapProps extends MapEvents, Leaflet.MapOptions, Leaflet.LocateOptions, Leaflet.FitBoundsOptions {
|
|
animate?: boolean;
|
|
duration?: number;
|
|
noMoveStart?: boolean;
|
|
bounds?: Leaflet.LatLngBoundsExpression;
|
|
boundsOptions?: Leaflet.FitBoundsOptions;
|
|
children: Children;
|
|
className?: string;
|
|
id?: string;
|
|
style?: React.CSSProperties;
|
|
useFlyTo?: boolean;
|
|
viewport?: Viewport;
|
|
whenReady?: () => void;
|
|
onViewportChange?: (viewport: Viewport) => void;
|
|
onViewportChanged?: (viewport: Viewport) => void;
|
|
}
|
|
|
|
export class Map<P extends MapProps = MapProps, E extends Leaflet.Map = Leaflet.Map> extends MapEvented<P, E> {
|
|
className: string | null | undefined;
|
|
contextValue: LeafletContext | null | undefined;
|
|
container: HTMLDivElement | null | undefined;
|
|
viewport: Viewport;
|
|
createLeafletElement(props: P): E;
|
|
updateLeafletElement(fromProps: P, toProps: P): void;
|
|
onViewportChange: () => void;
|
|
onViewportChanged: () => void;
|
|
bindContainer(container: HTMLDivElement | null | undefined): void;
|
|
shouldUpdateCenter(next: Leaflet.LatLngExpression, prev: Leaflet.LatLngExpression): boolean;
|
|
shouldUpdateBounds(next: Leaflet.LatLngBoundsExpression, prev: Leaflet.LatLngBoundsExpression): boolean;
|
|
}
|
|
|
|
export interface DivOverlayProps extends MapComponentProps, Leaflet.DivOverlayOptions {
|
|
children: Children;
|
|
onClose?: () => void;
|
|
onOpen?: () => void;
|
|
}
|
|
|
|
export interface DivOverlayTypes extends Leaflet.Evented {
|
|
isOpen: () => boolean;
|
|
update: () => void;
|
|
}
|
|
|
|
export class DivOverlay<P extends DivOverlayProps, E extends DivOverlayTypes> extends MapComponent<P, E> {
|
|
createLeafletElement(_props: P): void;
|
|
updateLeafletElement(_prevProps: P, _props: P): void;
|
|
onClose: () => void;
|
|
onOpen: () => void;
|
|
onRender: () => void;
|
|
}
|
|
|
|
export interface PaneProps {
|
|
children?: Children;
|
|
className?: string;
|
|
leaflet?: LeafletContext;
|
|
name?: string;
|
|
style?: React.CSSProperties;
|
|
pane?: string;
|
|
}
|
|
export interface PaneState {
|
|
name: string | null | undefined;
|
|
context: LeafletContext | null | undefined;
|
|
}
|
|
export class Pane<P extends PaneProps = PaneProps, S extends PaneState = PaneState> extends React.Component<P, S> {
|
|
createPane(props: P): void;
|
|
removePane(): void;
|
|
setStyle(arg: { style?: string, className?: string }): void;
|
|
getParentPane(): HTMLElement | null | undefined;
|
|
getPane(name: string | null | undefined): HTMLElement | null | undefined;
|
|
}
|
|
|
|
export interface MapLayerProps extends MapComponentProps {
|
|
attribution?: string;
|
|
children?: Children;
|
|
}
|
|
|
|
export type AddLayerHandler = (layer: Leaflet.Layer, name: string, checked?: boolean) => void;
|
|
|
|
export type RemoveLayerHandler = (layer: Leaflet.Layer) => void;
|
|
|
|
export interface LayerContainer {
|
|
addLayer: AddLayerHandler;
|
|
removeLayer: RemoveLayerHandler;
|
|
}
|
|
|
|
export interface LeafletContext {
|
|
map?: Leaflet.Map;
|
|
pane?: string;
|
|
layerContainer?: LayerContainer;
|
|
popupContainer?: Leaflet.Layer;
|
|
}
|
|
|
|
export type LatLng = Leaflet.LatLng | number[] | object;
|
|
|
|
export type LatLngBounds = Leaflet.LatLngBounds | LatLng[];
|
|
|
|
export type Point = [number, number] | Leaflet.Point;
|
|
|
|
export interface Viewport {
|
|
center: [number, number] | null | undefined;
|
|
zoom: number | null | undefined;
|
|
}
|
|
|
|
export class MapLayer<P extends MapLayerProps = MapLayerProps, E extends Leaflet.Layer = Leaflet.Layer> extends MapComponent<P, E> {
|
|
contextValue: LeafletContext | null | undefined;
|
|
leafletElement: E;
|
|
createLeafletElement(props: P): E;
|
|
updateLeafletElement(fromProps: P, toProps: P): void;
|
|
readonly layerContainer: LayerContainer | Leaflet.Map;
|
|
}
|
|
|
|
export interface GridLayerProps extends MapLayerProps, Leaflet.GridLayerOptions { }
|
|
export class GridLayer<P extends GridLayerProps = GridLayerProps, E extends Leaflet.GridLayer = Leaflet.GridLayer> extends MapLayer<P, E> {
|
|
createLeafletElement(props: P): E;
|
|
updateLeafletElement(fromProps: P, toProps: P): void;
|
|
getOptions(props: P): P;
|
|
}
|
|
|
|
export interface TileLayerProps extends GridLayerProps, TileLayerEvents, Leaflet.TileLayerOptions {
|
|
url: string;
|
|
}
|
|
export class TileLayer<P extends TileLayerProps = TileLayerProps, E extends Leaflet.TileLayer = Leaflet.TileLayer> extends GridLayer<P, E> {
|
|
createLeafletElement(props: P): E;
|
|
updateLeafletElement(fromProps: P, toProps: P): void;
|
|
}
|
|
|
|
export interface WMSTileLayerProps extends TileLayerEvents, Leaflet.WMSOptions, GridLayerProps {
|
|
children?: Children;
|
|
url: string;
|
|
}
|
|
export class WMSTileLayer<P extends WMSTileLayerProps = WMSTileLayerProps, E extends Leaflet.TileLayer.WMS = Leaflet.TileLayer.WMS> extends GridLayer<P, E> {
|
|
createLeafletElement(props: P): E;
|
|
updateLeafletElement(fromProps: P, toProps: P): void;
|
|
getOptions(params: P): P;
|
|
}
|
|
|
|
export interface ImageOverlayProps extends MapLayerProps, Leaflet.ImageOverlayOptions {
|
|
bounds?: Leaflet.LatLngBoundsExpression;
|
|
url: string | HTMLImageElement;
|
|
zIndex?: number;
|
|
}
|
|
export class ImageOverlay<P extends ImageOverlayProps = ImageOverlayProps, E extends Leaflet.ImageOverlay = Leaflet.ImageOverlay> extends MapLayer<P, E> {
|
|
createLeafletElement(props: P): E;
|
|
updateLeafletElement(fromProps: P, toProps: P): void;
|
|
}
|
|
|
|
export interface SVGOverlayProps extends Leaflet.ImageOverlayOptions, MapComponentProps {
|
|
children?: Children;
|
|
}
|
|
export class SVGOverlay<P extends SVGOverlayProps = SVGOverlayProps, E extends Leaflet.SVGOverlay = Leaflet.SVGOverlay> extends MapComponent<P, E> {
|
|
createLeafletElement(props: P): E;
|
|
updateLeafletElement(fromProps: P, toProps: P): void;
|
|
}
|
|
|
|
export interface VideoOverlayProps extends Leaflet.VideoOverlayOptions, MapComponentProps {
|
|
attribution?: string;
|
|
bounds: Leaflet.LatLngBoundsExpression;
|
|
opacity?: number;
|
|
play?: boolean;
|
|
url: string | string[] | HTMLVideoElement;
|
|
zIndex?: number;
|
|
}
|
|
export class VideoOverlay<P extends VideoOverlayProps = VideoOverlayProps, E extends Leaflet.VideoOverlay = Leaflet.VideoOverlay> extends MapLayer<P, E> {
|
|
createLeafletElement(props: P): E;
|
|
updateLeafletElement(fromProps: P, toProps: P): void;
|
|
}
|
|
|
|
export class LayerGroup<P extends MapLayerProps = MapLayerProps, E extends Leaflet.LayerGroup = Leaflet.LayerGroup> extends MapLayer<P, E> {
|
|
createLeafletElement(props: P): E;
|
|
}
|
|
|
|
export interface MarkerProps extends MapLayerProps, MarkerEvents, Leaflet.MarkerOptions {
|
|
position: Leaflet.LatLngExpression;
|
|
}
|
|
export class Marker<P extends MarkerProps = MarkerProps, E extends Leaflet.Marker = Leaflet.Marker> extends MapLayer<P, E> {
|
|
createLeafletElement(props: P): E;
|
|
updateLeafletElement(fromProps: P, toProps: P): void;
|
|
}
|
|
|
|
export interface PathProps extends PathEvents, Leaflet.PathOptions, MapLayerProps { }
|
|
export abstract class Path<P extends PathProps, E extends Leaflet.Path> extends MapLayer<P, E> {
|
|
getChildContext(): { popupContainer: E };
|
|
getPathOptions(props: P): Leaflet.PathOptions;
|
|
setStyle(options: Leaflet.PathOptions): void;
|
|
setStyleIfChanged(fromProps: P, toProps: P): void;
|
|
}
|
|
|
|
export interface CircleProps extends MapLayerProps, PathEvents, Leaflet.CircleMarkerOptions {
|
|
center: Leaflet.LatLngExpression;
|
|
radius: number;
|
|
}
|
|
export class Circle<P extends CircleProps = CircleProps, E extends Leaflet.Circle = Leaflet.Circle> extends Path<P, E> {
|
|
createLeafletElement(props: P): E;
|
|
updateLeafletElement(fromProps: P, toProps: P): void;
|
|
}
|
|
|
|
export interface CircleMarkerProps extends PathProps, PathEvents, Leaflet.CircleMarkerOptions {
|
|
center: Leaflet.LatLngExpression;
|
|
radius: number;
|
|
}
|
|
export class CircleMarker<P extends CircleMarkerProps = CircleMarkerProps, E extends Leaflet.CircleMarker = Leaflet.CircleMarker> extends Path<P, E> {
|
|
createLeafletElement(props: P): E;
|
|
updateLeafletElement(fromProps: P, toProps: P): void;
|
|
}
|
|
|
|
export interface FeatureGroupProps extends MapLayerProps, FeatureGroupEvents, Leaflet.PathOptions { }
|
|
export class FeatureGroup<P extends FeatureGroupProps = FeatureGroupProps, E extends Leaflet.FeatureGroup = Leaflet.FeatureGroup> extends LayerGroup<P, E> {
|
|
createLeafletElement(props: P): E;
|
|
}
|
|
|
|
export interface GeoJSONProps extends PathProps, FeatureGroupEvents, Leaflet.GeoJSONOptions {
|
|
data: GeoJSON.GeoJsonObject | GeoJSON.GeoJsonObject[];
|
|
}
|
|
export class GeoJSON<P extends GeoJSONProps = GeoJSONProps, E extends Leaflet.GeoJSON = Leaflet.GeoJSON> extends FeatureGroup<P, E> {
|
|
createLeafletElement(props: P): E;
|
|
updateLeafletElement(fromProps: P, toProps: P): void;
|
|
}
|
|
|
|
export interface PolylineProps extends PathProps, PathEvents, Leaflet.PolylineOptions {
|
|
positions: Leaflet.LatLngExpression[] | Leaflet.LatLngExpression[][];
|
|
}
|
|
export class Polyline<P extends PolylineProps = PolylineProps, E extends Leaflet.Polyline = Leaflet.Polyline> extends Path<P, E> {
|
|
createLeafletElement(props: P): E;
|
|
updateLeafletElement(fromProps: P, toProps: P): void;
|
|
}
|
|
|
|
export interface PolygonProps extends PathProps, PathEvents, Leaflet.PolylineOptions {
|
|
positions: Leaflet.LatLngExpression[] | Leaflet.LatLngExpression[][] | Leaflet.LatLngExpression[][][];
|
|
}
|
|
export class Polygon<P extends PolygonProps = PolygonProps, E extends Leaflet.Polygon = Leaflet.Polygon> extends Path<P, E> {
|
|
createLeafletElement(props: P): E;
|
|
updateLeafletElement(fromProps: P, toProps: P): void;
|
|
}
|
|
|
|
export interface RectangleProps extends PathProps, PathEvents, Leaflet.PolylineOptions {
|
|
bounds: Leaflet.LatLngBoundsExpression;
|
|
}
|
|
export class Rectangle<P extends RectangleProps = RectangleProps, E extends Leaflet.Rectangle = Leaflet.Rectangle> extends Path<P, E> {
|
|
createLeafletElement(props: P): E;
|
|
updateLeafletElement(fromProps: P, toProps: P): void;
|
|
}
|
|
|
|
export interface PopupProps extends Leaflet.PopupOptions, DivOverlayProps {
|
|
position?: Leaflet.LatLngExpression;
|
|
}
|
|
export class Popup<P extends PopupProps = PopupProps, E extends Leaflet.Popup = Leaflet.Popup> extends DivOverlay<P, E> {
|
|
getOptions(props: P): P;
|
|
createLeafletElement(props: P): E;
|
|
updateLeafletElement(fromProps: P, toProps: P): void;
|
|
onPopupOpen(arg: { popup: E }): void;
|
|
onPopupClose(arg: { popup: E }): void;
|
|
onRender: () => void;
|
|
}
|
|
|
|
export interface TooltipProps extends Leaflet.TooltipOptions, DivOverlayProps { }
|
|
export class Tooltip<P extends TooltipProps = TooltipProps, E extends Leaflet.Tooltip = Leaflet.Tooltip> extends DivOverlay<P, E> {
|
|
onTooltipOpen(arg: { tooltip: E }): void;
|
|
onTooltipClose(arg: { tooltip: E }): void;
|
|
}
|
|
|
|
export type MapControlProps = {
|
|
leaflet?: LeafletContext
|
|
} & Leaflet.ControlOptions;
|
|
|
|
export class MapControl<P extends MapControlProps = MapControlProps, E extends Leaflet.Control = Leaflet.Control> extends React.Component<P> {
|
|
leafletElement: E;
|
|
createLeafletElement(props: P): E;
|
|
updateLeafletElement(fromProps: P, toProps: P): void;
|
|
}
|
|
|
|
export type AttributionControlProps = Leaflet.Control.AttributionOptions & MapControlProps;
|
|
export class AttributionControl<P extends AttributionControlProps = AttributionControlProps, E extends Leaflet.Control.Attribution = Leaflet.Control.Attribution> extends MapControl<P, E> {
|
|
createLeafletElement(props: P): E;
|
|
}
|
|
|
|
export interface LayersControlProps extends MapControlProps, LayersControlEvents, Leaflet.Control.LayersOptions {
|
|
children: Children;
|
|
collapsed?: boolean;
|
|
}
|
|
export class LayersControl<P extends LayersControlProps = LayersControlProps, E extends Leaflet.Control.Layers = Leaflet.Control.Layers> extends MapControl<P, E> {
|
|
controlProps: {
|
|
addBaseLayer: AddLayerHandler,
|
|
addOverlay: AddLayerHandler,
|
|
removeLayer: RemoveLayerHandler,
|
|
removeLayerControl: RemoveLayerHandler
|
|
};
|
|
createLeafletElement(props: P): E;
|
|
updateLeafletElement(fromProps: P, toProps: P): void;
|
|
addBaseLayer(layer: Leaflet.Layer, name: string, checked: boolean): void;
|
|
addOverlay(layer: Leaflet.Layer, name: string, checked: boolean): void;
|
|
removeLayer(layer: Leaflet.Layer): void;
|
|
removeLayerControl(layer: Leaflet.Layer): void;
|
|
}
|
|
|
|
export namespace LayersControl {
|
|
interface ControlledLayerProps {
|
|
addBaseLayer?: AddLayerHandler;
|
|
addOverlay?: AddLayerHandler;
|
|
checked?: boolean;
|
|
children: Children;
|
|
leaflet?: LeafletContext;
|
|
name: string;
|
|
removeLayer?: RemoveLayerHandler;
|
|
removeLayerControl?: RemoveLayerHandler;
|
|
}
|
|
class ControlledLayer<P extends ControlledLayerProps = ControlledLayerProps> extends React.Component<P> {
|
|
contextValue: LeafletContext;
|
|
layer: Leaflet.Layer | null | undefined;
|
|
removeLayer(layer: Leaflet.Layer): void;
|
|
}
|
|
class BaseLayer<P extends ControlledLayerProps = ControlledLayerProps> extends ControlledLayer<P> {
|
|
constructor(props: ControlledLayerProps);
|
|
addLayer: (layer: Leaflet.Layer) => void;
|
|
}
|
|
class Overlay<P extends ControlledLayerProps = ControlledLayerProps> extends ControlledLayer<P> {
|
|
constructor(props: ControlledLayerProps);
|
|
addLayer: (layer: Leaflet.Layer) => void;
|
|
}
|
|
}
|
|
|
|
export type ScaleControlProps = Leaflet.Control.ScaleOptions & MapControlProps;
|
|
export class ScaleControl<P extends ScaleControlProps = ScaleControlProps, E extends Leaflet.Control.Scale = Leaflet.Control.Scale> extends MapControl<P, E> {
|
|
createLeafletElement(props: P): E;
|
|
}
|
|
|
|
export type ZoomControlProps = Leaflet.Control.ZoomOptions & MapControlProps;
|
|
export class ZoomControl<P extends ZoomControlProps = ZoomControlProps, E extends Leaflet.Control.Zoom = Leaflet.Control.Zoom> extends MapControl<P, E> {
|
|
createLeafletElement(props: P): E;
|
|
}
|
|
|
|
// context.js
|
|
export const LeafletProvider: React.Provider<LeafletContext>;
|
|
export const LeafletConsumer: React.Consumer<LeafletContext>;
|
|
|
|
export interface ContextProps {
|
|
leaflet?: LeafletContext;
|
|
}
|
|
export type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
|
|
|
|
export function withLeaflet<T extends ContextProps>(WrappedComponent: React.ComponentType<T>): React.ComponentType<Omit<T, 'leaflet'>>;
|
|
export function useLeaflet(): LeafletContext;
|