/// /// import * as MapboxGl from 'mapbox-gl'; import * as React from 'react'; import * as PropTypes from 'prop-types'; import { Events, Listeners } from './map-events'; export interface FitBoundsOptions { linear?: boolean; easing?: (time: number) => number; padding?: number; offset?: MapboxGl.Point | number[]; maxZoom?: number; } export declare type FitBounds = number[][]; export interface AnimationOptions { duration: number; animate: boolean; easing(time: number): number; offset: number[]; } export interface FlyToOptions { curve: number; minZoom: number; speed: number; screenSpeed: number; } export interface Props { style: string | MapboxGl.Style; center?: number[]; zoom?: [number]; maxBounds?: MapboxGl.LngLatBounds | FitBounds; fitBounds?: FitBounds; fitBoundsOptions?: FitBoundsOptions; bearing?: [number]; pitch?: [number]; containerStyle?: React.CSSProperties; className?: string; movingMethod?: 'jumpTo' | 'easeTo' | 'flyTo'; animationOptions?: Partial; flyToOptions?: Partial; children?: JSX.Element | JSX.Element[] | Array; } export interface State { map?: MapboxGl.Map; ready: boolean; } export interface FactoryParameters { accessToken: string; apiUrl?: string; minZoom?: number; maxZoom?: number; hash?: boolean; preserveDrawingBuffer?: boolean; scrollZoom?: boolean; interactive?: boolean; dragRotate?: boolean; attributionControl?: boolean; logoPosition?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'; renderWorldCopies?: boolean; trackResize?: boolean; touchZoomRotate?: boolean; doubleClickZoom?: boolean; keyboard?: boolean; dragPan?: boolean; boxZoom?: boolean; refreshExpiredTiles?: boolean; failIfMajorPerformanceCaveat?: boolean; classes?: string[]; bearingSnap?: number; injectCss?: boolean; } declare global { namespace mapboxgl { interface MapboxOptions { failIfMajorPerformanceCaveat?: boolean; } } } declare const ReactMapboxFactory: ({accessToken, apiUrl, minZoom, maxZoom, hash, preserveDrawingBuffer, scrollZoom, interactive, dragRotate, attributionControl, logoPosition, renderWorldCopies, trackResize, touchZoomRotate, doubleClickZoom, keyboard, dragPan, boxZoom, refreshExpiredTiles, failIfMajorPerformanceCaveat, classes, bearingSnap, injectCss}: FactoryParameters) => { new (props?: (Props & Events) | undefined, context?: any): { state: { map: undefined; ready: boolean; }; listeners: Listeners; _isMounted: boolean; getChildContext: () => { map: undefined; }; container: HTMLElement; calcCenter: (bounds: number[][]) => number[]; componentDidMount(): void; componentWillUnmount(): void; componentWillReceiveProps(nextProps: Props & Events): null; setRef: (x: HTMLElement | null) => void; render(): JSX.Element; setState(f: (prevState: State, props: Props & Events) => Pick, callback?: (() => any) | undefined): void; setState(state: Pick, callback?: (() => any) | undefined): void; forceUpdate(callBack?: (() => any) | undefined): void; props: Readonly<{ children?: React.ReactNode; }> & Readonly; context: any; refs: { [key: string]: React.ReactInstance; }; }; defaultProps: { onStyleLoad: (map: MapboxGl.Map, evt: any) => null; center: number[]; zoom: number[]; bearing: number; movingMethod: string; pitch: number; }; childContextTypes: { map: PropTypes.Requireable; }; }; export default ReactMapboxFactory;