diff --git a/index.d.ts b/index.d.ts index 9499bf60..31bbaeff 100644 --- a/index.d.ts +++ b/index.d.ts @@ -1,108 +1,119 @@ -import 'googlemaps' -import * as React from 'react' - -interface IGoogleApiOptions { - apiKey: string, - libraries?: string[], - client?: string, - url?: string, - version?: string, - language?: string, - region?: string, - LoadingContainer?: any +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; } -type GoogleApiOptionsFunc = (props: any) => IGoogleApiOptions +export type GoogleApiOptionsFunc = (props: any) => GoogleApiOptions; -type Omit<T1, T2> = Pick<T1, Exclude<keyof T1, keyof T2>> +type Omit<T1, T2> = Pick<T1, Exclude<keyof T1, keyof T2>>; -export type GoogleAPI = typeof google -export function GoogleApiWrapper(opts: IGoogleApiOptions | GoogleApiOptionsFunc): - <TProps extends IProvidedProps>(ctor: React.ComponentType<TProps>) => React.ComponentType<Omit<TProps, IProvidedProps>> +export type GoogleAPI = typeof google; +export function GoogleApiWrapper(opts: GoogleApiOptions | GoogleApiOptionsFunc): + <TProps extends ProvidedProps>(ctor: React.ComponentType<TProps>) => React.ComponentType<Omit<TProps, ProvidedProps>>; -export interface IProvidedProps { - google: GoogleAPI - loaded?: boolean +export interface ProvidedProps { + google: GoogleAPI; + loaded?: boolean; } -type mapEventHandler = (mapProps?: IMapProps, map?: google.maps.Map, event?) => any - -type Style = Object<string, string | number | boolean> - -export interface IMapProps extends google.maps.MapOptions { - google: GoogleAPI - loaded?: boolean - - style?: Style - containerStyle?: Style - - bounds?: google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral - centerAroundCurrentLocation?: boolean - initialCenter?: google.maps.LatLngLiteral - center?: 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 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?: IMarkerProps, marker?: google.maps.Marker, event?) => any +type markerEventHandler = (props?: MarkerProps, marker?: google.maps.Marker, event?: any) => any; -export interface IMarkerProps extends Partial<google.maps.MarkerOptions> { - mapCenter?: google.maps.LatLng | google.maps.LatLngLiteral +export interface MarkerProps extends Partial<google.maps.MarkerOptions> { + mapCenter?: google.maps.LatLng | google.maps.LatLngLiteral; - onClick?: markerEventHandler - onMouseover?: markerEventHandler + onClick?: markerEventHandler; + onDblclick?: markerEventHandler; + onDragend?: markerEventHandler; + onMousedown?: markerEventHandler; + onMouseout?: markerEventHandler; + onMouseover?: markerEventHandler; + onMouseup?: markerEventHandler; + onRecenter?: markerEventHandler; } -export class Map extends React.Component<IMapProps, any> { - +export class Map extends React.Component<MapProps, any> { } -export class Marker extends React.Component<IMarkerProps, any> { +export class Marker<P extends MarkerProps = MarkerProps, S = any> extends React.Component<P, S> { + marker?: google.maps.Marker; + renderMarker(): void; + getMarker(): Promise<google.maps.Marker>; } export class Polygon extends React.Component<any, any> { - } export class Polyline extends React.Component<any, any> { - } export class Circle extends React.Component<any, any> { +} +export class HeatMap extends React.Component<any, any> { } -export interface IInfoWindowProps extends Partial<google.maps.InfoWindowOptions> { - google: typeof google - map: google.maps.Map - marker: google.maps.Marker +export interface InfoWindowProps extends Partial<google.maps.InfoWindowOptions> { + google?: typeof google; + map?: google.maps.Map; + marker?: google.maps.Marker; - mapCenter?: google.maps.LatLng | google.maps.LatLngLiteral - visible?: boolean + mapCenter?: google.maps.LatLng | google.maps.LatLngLiteral; + visible?: boolean; + onOpen?: () => void; + onClose?: () => void; } -export class InfoWindow extends React.Component<IInfoWindowProps, any> { - +export class InfoWindow<P extends InfoWindowProps = InfoWindowProps, S = any> extends React.Component<P, S> { + renderInfoWindow(): void; + openWindow(): void; + updatePosition(): void; + updateContent(): void; + closeWindow(): void; + renderChildren(): void; } + +export {}; \ No newline at end of file