// Type definitions for google-maps-react 2.0 // Project: https://github.com/fullstackreact/google-maps-react#readme // Definitions by: Gordon Burgett // Justin Powell // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.8 import 'googlemaps'; import * as React from 'react'; export interface GoogleApiOptions { apiKey: string; libraries?: string[]; client?: string; url?: string; version?: string; language?: string; region?: string; LoadingContainer?: any; } export type GoogleApiOptionsFunc = (props: any) => GoogleApiOptions; type Omit = Pick>; export type GoogleAPI = typeof google; export function GoogleApiWrapper(opts: GoogleApiOptions | GoogleApiOptionsFunc): (ctor: React.ComponentType) => React.ComponentType>; export interface ProvidedProps { google: GoogleAPI; loaded?: boolean; } type mapEventHandler = (mapProps?: MapProps, map?: google.maps.Map, event?: any) => any; export interface MapProps extends google.maps.MapOptions { google: GoogleAPI; loaded?: boolean; bounds?: google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral; centerAroundCurrentLocation?: boolean; initialCenter?: google.maps.LatLngLiteral; visible?: boolean; onReady?: mapEventHandler; onClick?: mapEventHandler; onDragend?: mapEventHandler; onRecenter?: mapEventHandler; onBoundsChanged?: mapEventHandler; onCenterChanged?: mapEventHandler; onDblclick?: mapEventHandler; onDragstart?: mapEventHandler; onHeadingChange?: mapEventHandler; onIdle?: mapEventHandler; onMaptypeidChanged?: mapEventHandler; onMousemove?: mapEventHandler; onMouseover?: mapEventHandler; onMouseout?: mapEventHandler; onProjectionChanged?: mapEventHandler; onResize?: mapEventHandler; onRightclick?: mapEventHandler; onTilesloaded?: mapEventHandler; onTiltChanged?: mapEventHandler; onZoomChanged?: mapEventHandler; } type markerEventHandler = (props?: MarkerProps, marker?: google.maps.Marker, event?: any) => any; export interface MarkerProps extends Partial { mapCenter?: google.maps.LatLng | google.maps.LatLngLiteral; onClick?: markerEventHandler; onMouseover?: markerEventHandler; } export class Map extends React.Component { } export class Marker extends React.Component { } export class Polygon extends React.Component { } export class Polyline extends React.Component { } export class Circle extends React.Component { } export class HeatMap extends React.Component { } export interface InfoWindowProps extends Partial { google: typeof google; map: google.maps.Map; marker: google.maps.Marker; mapCenter?: google.maps.LatLng | google.maps.LatLngLiteral; visible?: boolean; } export class InfoWindow extends React.Component { } export {};