rc-leaflet
Version:
React Map Components of Leaflet
51 lines (50 loc) • 2.08 kB
TypeScript
import React, { PureComponent } from 'react';
import PropTypes from 'prop-types';
import L from 'leaflet';
import { ContextType } from '../RCMap/Context';
declare type RenderProps = (target: any) => React.ReactNode;
interface PartialProps {
layer: L.Layer;
position: L.LatLngExpression;
target: any;
children: React.ReactNode | RenderProps;
onOpen: L.LeafletEventHandlerFn;
onClose: L.LeafletEventHandlerFn;
}
declare type Props = Readonly<Partial<PartialProps>>;
export default abstract class DivOverlay<T extends L.Popup | L.Tooltip, P extends L.PopupOptions | L.TooltipOptions> extends PureComponent<Props & P> {
static propTypes: {
offset: PropTypes.Requireable<number[] | [number, number] | L.Point>;
zoomAnimation: PropTypes.Requireable<boolean>;
className: PropTypes.Requireable<string>;
pane: PropTypes.Requireable<string>;
layer: PropTypes.Requireable<L.Layer>;
position: PropTypes.Requireable<number[] | L.LatLng | PropTypes.InferProps<{
lat: PropTypes.Validator<number>;
lng: PropTypes.Validator<number>;
}>>;
children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
onOpen: PropTypes.Requireable<(...args: any[]) => any>;
onClose: PropTypes.Requireable<(...args: any[]) => any>;
};
static contextType: React.Context<Readonly<{
map: L.Map;
theme: import("../Theme").ContextType;
}>>;
context: ContextType;
protected instance: T;
protected constructor(props: Props & P, context: ContextType);
componentDidMount(): void;
componentDidUpdate(prevProps: Props & P): void;
componentWillUnmount(): void;
protected abstract createInstance(props: P, context: ContextType): T;
protected abstract bindOnLayer(layer: L.Layer): void;
protected abstract unbindOnLayer(layer: L.Layer): void;
protected abstract openOnMap(): void;
protected abstract closeOnMap(): void;
private onOpen;
private onClose;
private update;
render(): React.ReactNode;
}
export {};