UNPKG

231 kBSource Map (JSON)View Raw
1{"version":3,"file":"reactgooglemapsapi.umd.development.js","sources":["../src/map-context.ts","../src/utils/reduce.ts","../src/utils/foreach.ts","../src/utils/helper.ts","../src/GoogleMap.tsx","../src/utils/isbrowser.ts","../src/utils/injectscript.ts","../src/utils/prevent-google-fonts.ts","../src/utils/make-load-script-url.ts","../src/LoadScript.tsx","../src/useLoadScript.tsx","../src/LoadScriptNext.tsx","../src/components/maps/TrafficLayer.tsx","../src/components/maps/BicyclingLayer.tsx","../src/components/maps/TransitLayer.tsx","../src/components/drawing/DrawingManager.tsx","../src/components/drawing/Marker.tsx","../src/components/addons/MarkerClusterer.tsx","../src/components/addons/InfoBox.tsx","../src/components/drawing/InfoWindow.tsx","../src/components/drawing/Polyline.tsx","../src/components/drawing/Polygon.tsx","../src/components/drawing/Rectangle.tsx","../src/components/drawing/Circle.tsx","../src/components/drawing/Data.tsx","../src/components/kml/KmlLayer.tsx","../src/components/dom/dom-helper.ts","../src/components/dom/CountMountHandler.tsx","../src/components/dom/OverlayView.tsx","../src/utils/noop.ts","../src/components/overlays/GroundOverlay.tsx","../src/components/heatmap/HeatmapLayer.tsx","../src/components/streetview/StreetViewPanorama.tsx","../src/components/streetview/StreetViewService.tsx","../src/components/directions/DirectionsService.tsx","../src/components/directions/DirectionsRenderer.tsx","../src/components/distance-matrix/DistanceMatrixService.tsx","../src/components/places/StandaloneSearchBox.tsx","../src/components/places/Autocomplete.tsx"],"sourcesContent":["import { useContext, createContext } from 'react'\nimport invariant from 'invariant'\n\nconst MapContext = createContext<google.maps.Map | null>(null)\n\nexport function useGoogleMap(): google.maps.Map | null {\n invariant(!!useContext, 'useGoogleMap is React hook and requires React version 16.8+')\n\n const map = useContext(MapContext)\n\n invariant(!!map, 'useGoogleMap needs a GoogleMap available up in the tree')\n\n return map\n}\n\nexport default MapContext\n","// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const reduce = (obj: any, fn: any, acc: any): any => {\n return Object.keys(obj).reduce(function reducer(newAcc, key) {\n return fn(newAcc, obj[key], key)\n }, acc)\n}\n","// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function forEach(obj: any, fn: any): any {\n Object.keys(obj).forEach(function iterator(key) {\n return fn(obj[key], key)\n })\n}\n","/* global google */\n/* eslint-disable filenames/match-regex */\nimport { reduce } from './reduce'\nimport { forEach } from './foreach'\n\nexport const applyUpdaterToNextProps = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n updaterMap: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n prevProps: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nextProps: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n instance: any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const map: any = {}\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const iter = (fn: any, key: string): void => {\n const nextValue = nextProps[key]\n\n if (nextValue !== prevProps[key]) {\n map[key] = nextValue\n fn(instance, nextValue)\n }\n }\n\n forEach(updaterMap, iter)\n\n return map\n}\n\nexport function registerEvents(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n props: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n instance: any,\n eventMap: Record<string, string>\n): google.maps.MapsEventListener[] {\n const registeredList = reduce(\n eventMap,\n function reducer(\n acc: google.maps.MapsEventListener[],\n googleEventName: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onEventName: any\n ): google.maps.MapsEventListener[] {\n if (typeof props[onEventName] === 'function') {\n acc.push(google.maps.event.addListener(instance, googleEventName, props[onEventName]))\n }\n\n return acc\n },\n []\n )\n\n return registeredList\n}\nfunction unregisterEvent(registered: google.maps.MapsEventListener): void {\n google.maps.event.removeListener(registered)\n}\n\nexport function unregisterEvents(events: google.maps.MapsEventListener[] = []): void {\n events.forEach(unregisterEvent)\n}\n\nexport function applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps,\n nextProps,\n instance,\n}: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n updaterMap: any\n eventMap: Record<string, string>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n prevProps: any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nextProps: any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n instance: any\n}): google.maps.MapsEventListener[] {\n const registeredEvents = registerEvents(nextProps, instance, eventMap)\n applyUpdaterToNextProps(updaterMap, prevProps, nextProps, instance)\n return registeredEvents\n}\n","import * as React from 'react'\n\nimport MapContext from './map-context'\n\nimport { unregisterEvents, applyUpdatersToPropsAndRegisterEvents } from './utils/helper'\n\nconst eventMap = {\n onDblClick: 'dblclick',\n onDragEnd: 'dragend',\n onDragStart: 'dragstart',\n onMapTypeIdChanged: 'maptypeid_changed',\n onMouseMove: 'mousemove',\n onMouseOut: 'mouseout',\n onMouseOver: 'mouseover',\n onMouseDown: 'mousedown',\n onMouseUp: 'mouseup',\n onRightClick: 'rightclick',\n onTilesLoaded: 'tilesloaded',\n onBoundsChanged: 'bounds_changed',\n onCenterChanged: 'center_changed',\n onClick: 'click',\n onDrag: 'drag',\n onHeadingChanged: 'heading_changed',\n onIdle: 'idle',\n onProjectionChanged: 'projection_changed',\n onResize: 'resize',\n onTiltChanged: 'tilt_changed',\n onZoomChanged: 'zoom_changed',\n}\n\nconst updaterMap = {\n extraMapTypes(map: google.maps.Map, extra: google.maps.MapType[]): void {\n extra.forEach(function forEachExtra(it, i) {\n map.mapTypes.set(String(i), it)\n })\n },\n center(map: google.maps.Map, center: google.maps.LatLng | google.maps.LatLngLiteral): void {\n map.setCenter(center)\n },\n clickableIcons(map: google.maps.Map, clickable: boolean): void {\n map.setClickableIcons(clickable)\n },\n heading(map: google.maps.Map, heading: number): void {\n map.setHeading(heading)\n },\n mapTypeId(map: google.maps.Map, mapTypeId: string): void {\n map.setMapTypeId(mapTypeId)\n },\n options(map: google.maps.Map, options: google.maps.MapOptions): void {\n map.setOptions(options)\n },\n streetView(map: google.maps.Map, streetView: google.maps.StreetViewPanorama): void {\n map.setStreetView(streetView)\n },\n tilt(map: google.maps.Map, tilt: number): void {\n map.setTilt(tilt)\n },\n zoom(map: google.maps.Map, zoom: number): void {\n map.setZoom(zoom)\n },\n}\n\ninterface GoogleMapState {\n map: google.maps.Map | null\n}\n\nexport interface GoogleMapProps {\n id?: string\n mapContainerStyle?: React.CSSProperties\n mapContainerClassName?: string\n options?: google.maps.MapOptions\n /** Additional map types to overlay. Overlay map types will display on top of the base map they are attached to, in the order in which they appear in the overlayMapTypes array (overlays with higher index values are displayed in front of overlays with lower index values). */\n extraMapTypes?: google.maps.MapType[]\n /** The initial Map center. */\n center?: google.maps.LatLng | google.maps.LatLngLiteral\n /** When false, map icons are not clickable. A map icon represents a point of interest, also known as a POI. By default map icons are clickable. */\n clickableIcons?: boolean\n /** The heading for aerial imagery in degrees measured clockwise from cardinal direction North. Headings are snapped to the nearest available angle for which imagery is available. */\n heading?: number\n /** The initial Map mapTypeId. Defaults to ROADMAP. */\n mapTypeId?: string\n /** A StreetViewPanorama to display when the Street View pegman is dropped on the map. If no panorama is specified, a default StreetViewPanorama will be displayed in the map's div when the pegman is dropped. */\n streetView?: google.maps.StreetViewPanorama\n /** Controls the automatic switching behavior for the angle of incidence of the map. The only allowed values are 0 and 45. The value 0 causes the map to always use a 0° overhead view regardless of the zoom level and viewport. The value 45 causes the tilt angle to automatically switch to 45 whenever 45° imagery is available for the current zoom level and viewport, and switch back to 0 whenever 45° imagery is not available (this is the default behavior). 45° imagery is only available for satellite and hybrid map types, within some locations, and at some zoom levels. Note: getTilt returns the current tilt angle, not the value specified by this option. Because getTilt and this option refer to different things, do not bind() the tilt property; doing so may yield unpredictable effects. */\n tilt?: number\n /** The initial Map zoom level. Required. Valid values: Integers between zero, and up to the supported maximum zoom level. */\n zoom?: number\n /** This event is fired when the user clicks on the map. An ApiMouseEvent with properties for the clicked location is returned unless a place icon was clicked, in which case an IconMouseEvent with a placeId is returned. IconMouseEvent and ApiMouseEvent are identical, except that IconMouseEvent has the placeId field. The event can always be treated as an ApiMouseEvent when the placeId is not important. The click event is not fired if a Marker or InfoWindow was clicked. */\n onClick?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the user double-clicks on the map. Note that the click event will also fire, right before this one. */\n onDblClick?: (e: google.maps.MouseEvent) => void\n /** This event is repeatedly fired while the user drags the map. */\n onDrag?: () => void\n /** This event is fired when the user stops dragging the map. */\n onDragEnd?: () => void\n /** This event is fired when the user starts dragging the map. */\n onDragStart?: () => void\n /** This event is fired when the mapTypeId property changes. */\n onMapTypeIdChanged?: () => void\n /** This event is fired whenever the user's mouse moves over the map container. */\n onMouseMove?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the user's mouse exits the map container. */\n onMouseOut?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the user's mouse enters the map container. */\n onMouseOver?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the DOM contextmenu event is fired on the map container. */\n onRightClick?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the visible tiles have finished loading. */\n onTilesLoaded?: () => void\n /** This event is fired when the viewport bounds have changed. */\n onBoundsChanged?: () => void\n /** This event is fired when the map center property changes. */\n onCenterChanged?: () => void\n /** This event is fired when the map heading property changes. */\n onHeadingChanged?: () => void\n /** This event is fired when the map becomes idle after panning or zooming. */\n onIdle?: () => void\n /** This event is fired when the projection has changed. */\n onProjectionChanged?: () => void\n /** This event is fired when the map size has changed. */\n onResize?: () => void\n /** This event is fired when the map tilt property changes. */\n onTiltChanged?: () => void\n /** This event is fired when the map zoom property changes. */\n onZoomChanged?: () => void\n /** This callback is called when the map instance has loaded. It is called with the map instance. */\n onLoad?: (map: google.maps.Map) => void | Promise<void>\n /** This callback is called when the component unmounts. It is called with the map instance. */\n onUnmount?: (map: google.maps.Map) => void | Promise<void>\n}\n\nexport class GoogleMap extends React.PureComponent<GoogleMapProps, GoogleMapState> {\n state: GoogleMapState = {\n map: null,\n }\n\n registeredEvents: google.maps.MapsEventListener[] = []\n\n mapRef: Element | null = null\n\n getInstance = (): google.maps.Map | null => {\n if (this.mapRef === null) {\n return null\n }\n\n return new google.maps.Map(this.mapRef, this.props.options)\n }\n\n panTo = (latLng: google.maps.LatLng | google.maps.LatLngLiteral): void => {\n const map = this.getInstance()\n if (map) {\n map.panTo(latLng)\n }\n }\n\n setMapCallback = (): void => {\n if (this.state.map !== null) {\n if (this.props.onLoad) {\n this.props.onLoad(this.state.map)\n }\n }\n }\n\n componentDidMount(): void {\n const map = this.getInstance()\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps: {},\n nextProps: this.props,\n instance: map,\n })\n\n this.setState(function setMap() {\n return {\n map,\n }\n }, this.setMapCallback)\n }\n\n componentDidUpdate(prevProps: GoogleMapProps): void {\n if (this.state.map !== null) {\n unregisterEvents(this.registeredEvents)\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps,\n nextProps: this.props,\n instance: this.state.map,\n })\n }\n }\n\n componentWillUnmount(): void {\n if (this.state.map !== null) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.map)\n }\n\n unregisterEvents(this.registeredEvents)\n }\n }\n\n getRef = (ref: HTMLDivElement | null): void => {\n this.mapRef = ref\n }\n\n render(): React.ReactNode {\n return (\n <div\n id={this.props.id}\n ref={this.getRef}\n style={this.props.mapContainerStyle}\n className={this.props.mapContainerClassName}\n >\n <MapContext.Provider value={this.state.map}>\n {this.state.map !== null ? this.props.children : <></>}\n </MapContext.Provider>\n </div>\n )\n }\n}\n\nexport default GoogleMap\n","export const isBrowser: boolean = typeof document !== 'undefined'\n","import { isBrowser } from './isbrowser'\n\ninterface WindowWithGoogleMap extends Window {\n initMap?: () => void\n}\n\ninterface InjectScriptArg {\n url: string\n id: string\n}\n\nexport const injectScript = ({ url, id }: InjectScriptArg): Promise<any> => {\n if (!isBrowser) {\n return Promise.reject(new Error('document is undefined'))\n }\n\n return new Promise(function injectScriptCallback(resolve, reject) {\n const existingScript = document.getElementById(id) as HTMLScriptElement | undefined\n const windowWithGoogleMap: WindowWithGoogleMap = window\n if (existingScript) {\n // Same script id/url: keep same script\n const dataStateAttribute = existingScript.getAttribute('data-state')\n if (existingScript.src === url && dataStateAttribute !== 'error') {\n if (dataStateAttribute === 'ready') {\n return resolve(id)\n } else {\n const originalInitMap = windowWithGoogleMap.initMap\n const originalErrorCallback = existingScript.onerror\n\n windowWithGoogleMap.initMap = function initMap(): void {\n if (originalInitMap) {\n originalInitMap()\n }\n resolve(id)\n }\n\n existingScript.onerror = function(err): void {\n if (originalErrorCallback) {\n originalErrorCallback(err)\n }\n reject(err)\n }\n\n return\n }\n }\n // Same script id, but either\n // 1. requested URL is different\n // 2. script failed to load\n else {\n existingScript.remove()\n }\n }\n\n const script = document.createElement('script')\n\n script.type = 'text/javascript'\n script.src = url\n script.id = id\n script.async = true\n script.onerror = function onerror(err): void {\n script.setAttribute('data-state', 'error')\n reject(err)\n }\n\n windowWithGoogleMap.initMap = function onload(): void {\n script.setAttribute('data-state', 'ready')\n resolve(id)\n }\n\n document.head.appendChild(script)\n }).catch(err => {\n console.error('injectScript error: ', err)\n throw err\n })\n}\n","const isRobotoStyle = (element: HTMLElement): boolean => {\n // roboto font download\n if (\n (element as HTMLLinkElement).href &&\n (element as HTMLLinkElement).href.indexOf('https://fonts.googleapis.com/css?family=Roboto') ===\n 0\n ) {\n return true\n }\n // roboto style elements\n if (\n element.tagName.toLowerCase() === 'style' &&\n // eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n // @ts-ignore\n element.styleSheet &&\n // eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n // @ts-ignore\n element.styleSheet.cssText &&\n // eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n // @ts-ignore\n element.styleSheet.cssText.replace('\\r\\n', '').indexOf('.gm-style') === 0\n ) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n // @ts-ignore\n element.styleSheet.cssText = ''\n return true\n }\n // roboto style elements for other browsers\n if (\n element.tagName.toLowerCase() === 'style' &&\n element.innerHTML &&\n element.innerHTML.replace('\\r\\n', '').indexOf('.gm-style') === 0\n ) {\n element.innerHTML = ''\n return true\n }\n // when google tries to add empty style\n if (\n element.tagName.toLowerCase() === 'style' &&\n // eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n // @ts-ignore\n !element.styleSheet &&\n !element.innerHTML\n ) {\n return true\n }\n\n return false\n}\n\n// Preventing the Google Maps library from downloading an extra font\nexport const preventGoogleFonts = (): void => {\n // we override these methods only for one particular head element\n // default methods for other elements are not affected\n const head = document.getElementsByTagName('head')[0]\n\n const trueInsertBefore = head.insertBefore.bind(head)\n\n // TODO: adding return before reflect solves the TS issue\n // eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n // @ts-ignore\n head.insertBefore = function insertBefore(\n newElement: HTMLElement,\n referenceElement: HTMLElement\n ): void {\n if (!isRobotoStyle(newElement)) {\n Reflect.apply(trueInsertBefore, head, [newElement, referenceElement])\n }\n }\n\n const trueAppend = head.appendChild.bind(head)\n\n // TODO: adding return before reflect solves the TS issue\n // eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n // @ts-ignore\n head.appendChild = function appendChild(textNode: HTMLElement): void {\n if (!isRobotoStyle(textNode)) {\n Reflect.apply(trueAppend, head, [textNode])\n }\n }\n}\n","import invariant from 'invariant'\n\nexport interface LoadScriptUrlOptions {\n googleMapsApiKey?: string\n googleMapsClientId?: string\n version?: string\n language?: string\n region?: string\n libraries?: string[]\n channel?: string\n}\n\nexport function makeLoadScriptUrl({\n googleMapsApiKey,\n googleMapsClientId,\n version = 'weekly',\n language,\n region,\n libraries,\n channel,\n}: LoadScriptUrlOptions): string {\n const params = []\n\n invariant(\n (googleMapsApiKey && googleMapsClientId) || !(googleMapsApiKey && googleMapsClientId),\n 'You need to specify either googleMapsApiKey or googleMapsClientId for @react-google-maps/api load script to work. You cannot use both at the same time.'\n )\n\n if (googleMapsApiKey) {\n params.push(`key=${googleMapsApiKey}`)\n } else if (googleMapsClientId) {\n params.push(`client=${googleMapsClientId}`)\n }\n\n if (version) {\n params.push(`v=${version}`)\n }\n\n if (language) {\n params.push(`language=${language}`)\n }\n\n if (region) {\n params.push(`region=${region}`)\n }\n\n if (libraries && libraries.length) {\n params.push(`libraries=${libraries.sort().join(',')}`)\n }\n\n if (channel) {\n params.push(`channel=${channel}`)\n }\n\n params.push('callback=initMap')\n\n return `https://maps.googleapis.com/maps/api/js?${params.join('&')}`\n}\n","import * as React from 'react'\nimport invariant from 'invariant'\n\nimport { injectScript } from './utils/injectscript'\nimport { preventGoogleFonts } from './utils/prevent-google-fonts'\n\nimport { isBrowser } from './utils/isbrowser'\nimport { LoadScriptUrlOptions, makeLoadScriptUrl } from './utils/make-load-script-url'\n\nlet cleaningUp = false\n\ninterface LoadScriptState {\n loaded: boolean\n}\n\nexport interface LoadScriptProps extends LoadScriptUrlOptions {\n id: string\n loadingElement?: React.ReactNode\n onLoad?: () => void\n onError?: (error: Error) => void\n onUnmount?: () => void\n preventGoogleFontsLoading?: boolean\n}\n\nexport function DefaultLoadingElement(): JSX.Element {\n return <div>{`Loading...`}</div>\n}\n\nexport const defaultLoadScriptProps = {\n id: 'script-loader',\n version: 'weekly',\n}\n\nclass LoadScript extends React.PureComponent<LoadScriptProps, LoadScriptState> {\n public static defaultProps = defaultLoadScriptProps\n\n check: React.RefObject<HTMLDivElement> = React.createRef()\n\n state = {\n loaded: false,\n }\n\n cleanupCallback = (): void => {\n delete window.google\n\n this.injectScript()\n }\n\n componentDidMount(): void {\n if (isBrowser) {\n if (window.google && !cleaningUp) {\n console.error('google api is already presented')\n\n return\n }\n\n this.isCleaningUp()\n .then(this.injectScript)\n .catch(function err(err) {\n console.error('Error at injecting script after cleaning up: ', err)\n })\n }\n }\n\n componentDidUpdate(prevProps: LoadScriptProps): void {\n if (this.props.libraries !== prevProps.libraries) {\n console.warn(\n 'Performance warning! LoadScript has been reloaded unintentionally! You should not pass `libraries` prop as new array. Please keep an array of libraries as static class property for Components and PureComponents, or just a const variable outside of component, or somewhere in config files or ENV variables'\n )\n }\n\n if (isBrowser && prevProps.language !== this.props.language) {\n this.cleanup()\n // TODO: refactor to use gDSFP maybe... wait for hooks refactoring.\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState(function setLoaded() {\n return {\n loaded: false,\n }\n }, this.cleanupCallback)\n }\n }\n\n componentWillUnmount(): void {\n if (isBrowser) {\n this.cleanup()\n\n const timeoutCallback = (): void => {\n if (!this.check.current) {\n delete window.google\n cleaningUp = false\n }\n }\n\n window.setTimeout(timeoutCallback, 1)\n\n if (this.props.onUnmount) {\n this.props.onUnmount()\n }\n }\n }\n\n isCleaningUp = async (): Promise<void> => {\n function promiseCallback(resolve: () => void): void {\n if (!cleaningUp) {\n resolve()\n } else {\n if (isBrowser) {\n const timer = window.setInterval(function interval() {\n if (!cleaningUp) {\n window.clearInterval(timer)\n\n resolve()\n }\n }, 1)\n }\n }\n\n return\n }\n\n return new Promise(promiseCallback)\n }\n\n cleanup = (): void => {\n cleaningUp = true\n const script = document.getElementById(this.props.id)\n\n if (script && script.parentNode) {\n script.parentNode.removeChild(script)\n }\n\n Array.prototype.slice\n .call(document.getElementsByTagName('script'))\n .filter(function filter(script: HTMLScriptElement): boolean {\n return script.src.includes('maps.googleapis')\n })\n .forEach(function forEach(script: HTMLScriptElement): void {\n if (script.parentNode) {\n script.parentNode.removeChild(script)\n }\n })\n\n Array.prototype.slice\n .call(document.getElementsByTagName('link'))\n .filter(function filter(link: HTMLLinkElement): boolean {\n return (\n link.href === 'https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Google+Sans'\n )\n })\n .forEach(function forEach(link: HTMLLinkElement) {\n if (link.parentNode) {\n link.parentNode.removeChild(link)\n }\n })\n\n Array.prototype.slice\n .call(document.getElementsByTagName('style'))\n .filter(function filter(style: HTMLStyleElement): boolean {\n return (\n style.innerText !== undefined &&\n style.innerText.length > 0 &&\n style.innerText.includes('.gm-')\n )\n })\n .forEach(function forEach(style: HTMLStyleElement) {\n if (style.parentNode) {\n style.parentNode.removeChild(style)\n }\n })\n }\n\n injectScript = (): void => {\n if (this.props.preventGoogleFontsLoading) {\n preventGoogleFonts()\n }\n\n invariant(!!this.props.id, 'LoadScript requires \"id\" prop to be a string: %s', this.props.id)\n\n const injectScriptOptions = {\n id: this.props.id,\n url: makeLoadScriptUrl(this.props),\n }\n\n injectScript(injectScriptOptions)\n .then(() => {\n if (this.props.onLoad) {\n this.props.onLoad()\n }\n\n this.setState(function setLoaded() {\n return {\n loaded: true,\n }\n })\n\n return\n })\n .catch(err => {\n if (this.props.onError) {\n this.props.onError(err)\n }\n\n console.error(`\n There has been an Error with loading Google Maps API script, please check that you provided correct google API key (${this\n .props.googleMapsApiKey || '-'}) or Client ID (${this.props.googleMapsClientId ||\n '-'}) to <LoadScript />\n Otherwise it is a Network issue.\n `)\n })\n }\n\n render(): React.ReactNode {\n return (\n <>\n <div ref={this.check} />\n\n {this.state.loaded\n ? this.props.children\n : this.props.loadingElement || <DefaultLoadingElement />}\n </>\n )\n }\n}\n\nexport default LoadScript\n","/* eslint-disable filenames/match-regex */\nimport * as React from 'react'\nimport invariant from 'invariant'\n\nimport { isBrowser } from './utils/isbrowser'\nimport { injectScript } from './utils/injectscript'\nimport { preventGoogleFonts } from './utils/prevent-google-fonts'\nimport { makeLoadScriptUrl, LoadScriptUrlOptions } from './utils/make-load-script-url'\n\nimport { defaultLoadScriptProps } from './LoadScript'\n\nexport interface UseLoadScriptOptions extends LoadScriptUrlOptions {\n id?: string\n preventGoogleFontsLoading?: boolean\n}\n\nlet previouslyLoadedUrl: string\n\nexport function useLoadScript({\n id = defaultLoadScriptProps.id,\n version = defaultLoadScriptProps.version,\n googleMapsApiKey,\n googleMapsClientId,\n language,\n region,\n libraries,\n preventGoogleFontsLoading,\n channel,\n}: UseLoadScriptOptions): {\n isLoaded: boolean\n loadError: Error | undefined\n url: string\n} {\n const isMounted = React.useRef(false)\n const [isLoaded, setLoaded] = React.useState(false)\n const [loadError, setLoadError] = React.useState<Error | undefined>(undefined)\n\n React.useEffect(function trackMountedState() {\n isMounted.current = true\n return (): void => {\n isMounted.current = false\n }\n }, [])\n\n React.useEffect(\n function applyPreventGoogleFonts() {\n if (isBrowser && preventGoogleFontsLoading) {\n preventGoogleFonts()\n }\n },\n [preventGoogleFontsLoading]\n )\n\n React.useEffect(\n function validateLoadedState() {\n if (isLoaded) {\n invariant(\n !!window.google,\n 'useLoadScript was marked as loaded, but window.google is not present. Something went wrong.'\n )\n }\n },\n [isLoaded]\n )\n\n const url = makeLoadScriptUrl({\n version,\n googleMapsApiKey,\n googleMapsClientId,\n language,\n region,\n libraries,\n channel,\n })\n\n React.useEffect(\n function loadScriptAndModifyLoadedState() {\n if (!isBrowser) {\n return\n }\n\n function setLoadedIfMounted(): void {\n if (isMounted.current) {\n setLoaded(true)\n previouslyLoadedUrl = url\n }\n }\n\n if (window.google && previouslyLoadedUrl === url) {\n setLoadedIfMounted()\n return\n }\n\n injectScript({ id, url })\n .then(setLoadedIfMounted)\n .catch(function handleInjectError(err) {\n if (isMounted.current) {\n setLoadError(err)\n }\n console.warn(`\n There has been an Error with loading Google Maps API script, please check that you provided correct google API key (${googleMapsApiKey ||\n '-'}) or Client ID (${googleMapsClientId || '-'})\n Otherwise it is a Network issue.\n `)\n console.error(err)\n })\n },\n [id, url]\n )\n\n const prevLibraries = React.useRef<undefined | string[]>()\n\n React.useEffect(\n function checkPerformance() {\n if (prevLibraries.current && libraries !== prevLibraries.current) {\n console.warn(\n 'Performance warning! LoadScript has been reloaded unintentionally! You should not pass `libraries` prop as new array. Please keep an array of libraries as static class property for Components and PureComponents, or just a const variable outside of component, or somewhere in config files or ENV variables'\n )\n }\n prevLibraries.current = libraries\n },\n [libraries]\n )\n\n return { isLoaded, loadError, url }\n}\n","import * as React from 'react'\n\nimport { DefaultLoadingElement } from './LoadScript'\nimport { useLoadScript, UseLoadScriptOptions } from './useLoadScript'\n\nexport interface LoadScriptNextProps extends UseLoadScriptOptions {\n loadingElement?: React.ReactElement\n onLoad?: () => void\n onError?: (error: Error) => void\n onUnmount?: () => void\n children: React.ReactElement\n}\n\nconst defaultLoadingElement = <DefaultLoadingElement />\n\nfunction LoadScriptNext({\n loadingElement,\n onLoad,\n onError,\n onUnmount,\n children,\n ...hookOptions\n}: LoadScriptNextProps): JSX.Element {\n const { isLoaded, loadError } = useLoadScript(hookOptions)\n\n React.useEffect(\n function handleOnLoad() {\n if (isLoaded && typeof onLoad === 'function') {\n onLoad()\n }\n },\n [isLoaded, onLoad]\n )\n\n React.useEffect(\n function handleOnError() {\n if (loadError && typeof onError === 'function') {\n onError(loadError)\n }\n },\n [loadError, onError]\n )\n\n React.useEffect(\n function handleOnUnmount() {\n return () => {\n if (onUnmount) {\n onUnmount()\n }\n }\n },\n [onUnmount]\n )\n\n return isLoaded ? children : loadingElement || defaultLoadingElement\n}\n\nexport default React.memo(LoadScriptNext)\n","import { PureComponent } from 'react'\n\nimport { unregisterEvents, applyUpdatersToPropsAndRegisterEvents } from '../../utils/helper'\nimport MapContext from '../../map-context'\n\nconst eventMap = {}\n\nconst updaterMap = {\n options(instance: google.maps.TrafficLayer, options: google.maps.TrafficLayerOptions): void {\n instance.setOptions(options)\n },\n}\n\ninterface TrafficLayerState {\n trafficLayer: google.maps.TrafficLayer | null\n}\n\nexport interface TrafficLayerProps {\n options?: google.maps.TrafficLayerOptions\n /** This callback is called when the component unmounts. It is called with the trafficLayer instance. */\n onLoad?: (trafficLayer: google.maps.TrafficLayer) => void\n /** This callback is called when the trafficLayer instance has loaded. It is called with the trafficLayer instance. */\n onUnmount?: (trafficLayer: google.maps.TrafficLayer) => void\n}\n\nexport class TrafficLayer extends PureComponent<TrafficLayerProps, TrafficLayerState> {\n static contextType = MapContext\n\n state = {\n trafficLayer: null,\n }\n\n setTrafficLayerCallback = () => {\n if (this.state.trafficLayer !== null) {\n if (this.props.onLoad) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n // @ts-ignore\n this.props.onLoad(this.state.trafficLayer)\n }\n }\n }\n\n registeredEvents: google.maps.MapsEventListener[] = []\n\n componentDidMount(): void {\n const trafficLayer = new google.maps.TrafficLayer({\n ...(this.props.options || {}),\n map: this.context,\n })\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps: {},\n nextProps: this.props,\n instance: trafficLayer,\n })\n\n this.setState(function setTrafficLayer() {\n return {\n trafficLayer,\n }\n }, this.setTrafficLayerCallback)\n }\n\n componentDidUpdate(prevProps: TrafficLayerProps): void {\n if (this.state.trafficLayer !== null) {\n unregisterEvents(this.registeredEvents)\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps,\n nextProps: this.props,\n instance: this.state.trafficLayer,\n })\n }\n }\n\n componentWillUnmount(): void {\n if (this.state.trafficLayer !== null) {\n if (this.props.onUnmount) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n // @ts-ignore\n this.props.onUnmount(this.state.trafficLayer)\n }\n\n unregisterEvents(this.registeredEvents)\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n // @ts-ignore\n this.state.trafficLayer.setMap(null)\n }\n }\n\n render() {\n return null\n }\n}\n\nexport default TrafficLayer\n","import * as React from 'react'\n\nimport MapContext from '../../map-context'\n\ninterface BicyclingLayerState {\n bicyclingLayer: google.maps.BicyclingLayer | null\n}\n\nexport interface BicyclingLayerProps {\n /** This callback is called when the bicyclingLayer instance has loaded. It is called with the bicyclingLayer instance. */\n onLoad?: (bicyclingLayer: google.maps.BicyclingLayer) => void\n /** This callback is called when the component unmounts. It is called with the bicyclingLayer instance. */\n onUnmount?: (bicyclingLayer: google.maps.BicyclingLayer) => void\n}\n\nexport class BicyclingLayer extends React.PureComponent<BicyclingLayerProps, BicyclingLayerState> {\n static contextType = MapContext\n\n state = {\n bicyclingLayer: null,\n }\n\n setBicyclingLayerCallback = (): void => {\n if (this.state.bicyclingLayer !== null) {\n // TODO: how is this possibly null if we're doing a null check\n // eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n // @ts-ignore\n this.state.bicyclingLayer.setMap(this.context)\n\n if (this.props.onLoad) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n // @ts-ignore\n this.props.onLoad(this.state.bicyclingLayer)\n }\n }\n }\n\n componentDidMount(): void {\n const bicyclingLayer = new google.maps.BicyclingLayer()\n\n this.setState(function setBicyclingLayer() {\n return {\n bicyclingLayer,\n }\n }, this.setBicyclingLayerCallback)\n }\n\n componentWillUnmount(): void {\n if (this.state.bicyclingLayer !== null) {\n if (this.props.onUnmount) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n // @ts-ignore\n this.props.onUnmount(this.state.bicyclingLayer)\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n // @ts-ignore\n this.state.bicyclingLayer.setMap(null)\n }\n }\n\n render(): React.ReactNode {\n return null\n }\n}\n\nexport default BicyclingLayer\n","import * as React from 'react'\n\nimport MapContext from '../../map-context'\n\ninterface TransitLayerState {\n transitLayer: google.maps.TransitLayer | null\n}\n\nexport interface TransitLayerProps {\n /** This callback is called when the transitLayer instance has loaded. It is called with the transitLayer instance. */\n onLoad?: (transitLayer: google.maps.TransitLayer) => void\n /** This callback is called when the component unmounts. It is called with the transitLayer instance. */\n onUnmount?: (transitLayer: google.maps.TransitLayer) => void\n}\n\nexport class TransitLayer extends React.PureComponent<TransitLayerProps, TransitLayerState> {\n static contextType = MapContext\n\n state = {\n transitLayer: null,\n }\n\n setTransitLayerCallback = (): void => {\n if (this.state.transitLayer !== null) {\n // TODO: how is this possibly null if we're doing a null check\n // eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n // @ts-ignore\n this.state.transitLayer.setMap(this.context)\n\n if (this.props.onLoad) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n // @ts-ignore\n this.props.onLoad(this.state.transitLayer)\n }\n }\n }\n\n componentDidMount(): void {\n const transitLayer = new google.maps.TransitLayer()\n\n this.setState(function setTransitLayer() {\n return {\n transitLayer,\n }\n }, this.setTransitLayerCallback)\n }\n\n componentWillUnmount(): void {\n if (this.state.transitLayer !== null) {\n if (this.props.onUnmount) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n // @ts-ignore\n this.props.onUnmount(this.state.transitLayer)\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n // @ts-ignore\n this.state.transitLayer.setMap(null)\n }\n }\n\n render(): React.ReactNode {\n return null\n }\n}\n\nexport default TransitLayer\n","/* globals google */\nimport * as React from 'react'\n\nimport invariant from 'invariant'\n\nimport { unregisterEvents, applyUpdatersToPropsAndRegisterEvents } from '../../utils/helper'\n\nimport MapContext from '../../map-context'\n\nconst eventMap = {\n onCircleComplete: 'circlecomplete',\n onMarkerComplete: 'markercomplete',\n onOverlayComplete: 'overlaycomplete',\n onPolygonComplete: 'polygoncomplete',\n onPolylineComplete: 'polylinecomplete',\n onRectangleComplete: 'rectanglecomplete',\n}\n\nconst updaterMap = {\n drawingMode(\n instance: google.maps.drawing.DrawingManager,\n drawingMode: google.maps.drawing.OverlayType | null\n ): void {\n instance.setDrawingMode(drawingMode)\n },\n options(\n instance: google.maps.drawing.DrawingManager,\n options: google.maps.drawing.DrawingManagerOptions\n ): void {\n instance.setOptions(options)\n },\n}\n\ninterface DrawingManagerState {\n drawingManager: google.maps.drawing.DrawingManager | null\n}\n\nexport interface DrawingManagerProps {\n options?: google.maps.drawing.DrawingManagerOptions\n /** Changes the DrawingManager's drawing mode, which defines the type of overlay to be added on the map. Accepted values are 'marker', 'polygon', 'polyline', 'rectangle', 'circle', or null. A drawing mode of null means that the user can interact with the map as normal, and clicks do not draw anything. */\n drawingMode?: google.maps.drawing.OverlayType | null\n /** This event is fired when the user has finished drawing a circle. */\n onCircleComplete?: (circle: google.maps.Circle) => void\n /** This event is fired when the user has finished drawing a marker. */\n onMarkerComplete?: (marker: google.maps.Marker) => void\n /** This event is fired when the user has finished drawing an overlay of any type. */\n onOverlayComplete?: (e: google.maps.drawing.OverlayCompleteEvent) => void\n /** This event is fired when the user has finished drawing a polygon. */\n onPolygonComplete?: (polygon: google.maps.Polygon) => void\n /** This event is fired when the user has finished drawing a polyline. */\n onPolylineComplete?: (polyline: google.maps.Polyline) => void\n /** This event is fired when the user has finished drawing a rectangle. */\n onRectangleComplete?: (rectangle: google.maps.Rectangle) => void\n /** This callback is called when the drawingManager instance has loaded. It is called with the drawingManager instance. */\n onLoad?: (drawingManager: google.maps.drawing.DrawingManager) => void\n /** This callback is called when the component unmounts. It is called with the drawingManager instance. */\n onUnmount?: (drawingManager: google.maps.drawing.DrawingManager) => void\n}\n\nexport class DrawingManager extends React.PureComponent<DrawingManagerProps, DrawingManagerState> {\n static contextType = MapContext\n\n registeredEvents: google.maps.MapsEventListener[] = []\n\n state: DrawingManagerState = {\n drawingManager: null,\n }\n\n constructor(props: DrawingManagerProps) {\n super(props)\n\n invariant(\n !!google.maps.drawing,\n `Did you include prop libraries={['drawing']} in the URL? %s`,\n google.maps.drawing\n )\n }\n\n setDrawingManagerCallback = (): void => {\n if (this.state.drawingManager !== null && this.props.onLoad) {\n this.props.onLoad(this.state.drawingManager)\n }\n }\n\n componentDidMount(): void {\n const drawingManager = new google.maps.drawing.DrawingManager({\n ...(this.props.options || {}),\n map: this.context,\n })\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps: {},\n nextProps: this.props,\n instance: drawingManager,\n })\n\n this.setState(function setDrawingManager() {\n return {\n drawingManager,\n }\n }, this.setDrawingManagerCallback)\n }\n\n componentDidUpdate(prevProps: DrawingManagerProps): void {\n if (this.state.drawingManager !== null) {\n unregisterEvents(this.registeredEvents)\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps,\n nextProps: this.props,\n instance: this.state.drawingManager,\n })\n }\n }\n\n componentWillUnmount(): void {\n if (this.state.drawingManager !== null) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.drawingManager)\n }\n\n unregisterEvents(this.registeredEvents)\n\n this.state.drawingManager.setMap(null)\n }\n }\n\n render(): JSX.Element {\n return <></>\n }\n}\n\nexport default DrawingManager\n","import * as React from 'react'\n\nimport { unregisterEvents, applyUpdatersToPropsAndRegisterEvents } from '../../utils/helper'\n\nimport MapContext from '../../map-context'\n\nimport { Clusterer } from '@react-google-maps/marker-clusterer'\n\nconst eventMap = {\n onAnimationChanged: 'animation_changed',\n onClick: 'click',\n onClickableChanged: 'clickable_changed',\n onCursorChanged: 'cursor_changed',\n onDblClick: 'dblclick',\n onDrag: 'drag',\n onDragEnd: 'dragend',\n onDraggableChanged: 'draggable_changed',\n onDragStart: 'dragstart',\n onFlatChanged: 'flat_changed',\n onIconChanged: 'icon_changed',\n onMouseDown: 'mousedown',\n onMouseOut: 'mouseout',\n onMouseOver: 'mouseover',\n onMouseUp: 'mouseup',\n onPositionChanged: 'position_changed',\n onRightClick: 'rightclick',\n onShapeChanged: 'shape_changed',\n onTitleChanged: 'title_changed',\n onVisibleChanged: 'visible_changed',\n onZindexChanged: 'zindex_changed',\n}\n\nconst updaterMap = {\n animation(instance: google.maps.Marker, animation: google.maps.Animation): void {\n instance.setAnimation(animation)\n },\n clickable(instance: google.maps.Marker, clickable: boolean): void {\n instance.setClickable(clickable)\n },\n cursor(instance: google.maps.Marker, cursor: string): void {\n instance.setCursor(cursor)\n },\n draggable(instance: google.maps.Marker, draggable: boolean): void {\n instance.setDraggable(draggable)\n },\n icon(instance: google.maps.Marker, icon: string | google.maps.Icon | google.maps.Symbol): void {\n instance.setIcon(icon)\n },\n label(instance: google.maps.Marker, label: string | google.maps.MarkerLabel): void {\n instance.setLabel(label)\n },\n map(instance: google.maps.Marker, map: google.maps.Map): void {\n instance.setMap(map)\n },\n opacity(instance: google.maps.Marker, opacity: number): void {\n instance.setOpacity(opacity)\n },\n options(instance: google.maps.Marker, options: google.maps.MarkerOptions): void {\n instance.setOptions(options)\n },\n position(\n instance: google.maps.Marker,\n position: google.maps.LatLng | google.maps.LatLngLiteral\n ): void {\n instance.setPosition(position)\n },\n shape(instance: google.maps.Marker, shape: google.maps.MarkerShape): void {\n instance.setShape(shape)\n },\n title(instance: google.maps.Marker, title: string): void {\n instance.setTitle(title)\n },\n visible(instance: google.maps.Marker, visible: boolean): void {\n instance.setVisible(visible)\n },\n zIndex(instance: google.maps.Marker, zIndex: number): void {\n instance.setZIndex(zIndex)\n },\n}\n\ninterface MarkerState {\n marker: google.maps.Marker | null\n}\n\nexport interface MarkerProps {\n options?: google.maps.MarkerOptions\n /** Start an animation. Any ongoing animation will be cancelled. Currently supported animations are: BOUNCE, DROP. Passing in null will cause any animation to stop. */\n animation?: google.maps.Animation\n /** If true, the marker receives mouse and touch events. Default value is true. */\n clickable?: boolean\n /** Mouse cursor to show on hover */\n cursor?: string\n /** If true, the marker can be dragged. Default value is false. */\n draggable?: boolean\n /** Icon for the foreground. If a string is provided, it is treated as though it were an Icon with the string as url. */\n icon?: string | google.maps.Icon | google.maps.Symbol\n /** Adds a label to the marker. The label can either be a string, or a MarkerLabel object. */\n label?: string | google.maps.MarkerLabel\n /** The marker's opacity between 0.0 and 1.0. */\n opacity?: number\n\n // required\n /** Marker position. */\n position: google.maps.LatLng | google.maps.LatLngLiteral\n /** Image map region definition used for drag/click. */\n shape?: google.maps.MarkerShape\n /** Rollover text */\n title?: string\n /** If true, the marker is visible */\n visible?: boolean\n /** All markers are displayed on the map in order of their zIndex, with higher values displaying in front of markers with lower values. By default, markers are displayed according to their vertical position on screen, with lower markers appearing in front of markers further up the screen. */\n zIndex?: number\n /** Render prop that handles clustering markers */\n clusterer?: Clusterer\n /** Clusters are redrawn when a Marker is added unless noClustererRedraw? is set to true. */\n noClustererRedraw?: boolean\n /** This event is fired when the marker icon was clicked. */\n onClick?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the marker's clickable property changes. */\n onClickableChanged?: () => void\n /** This event is fired when the marker's cursor property changes. */\n onCursorChanged?: () => void\n /** This event is fired when the marker's animation property changes. */\n onAnimationChanged?: () => void\n /** This event is fired when the marker icon was double clicked. */\n onDblClick?: (e: google.maps.MouseEvent) => void\n /** This event is repeatedly fired while the user drags the marker. */\n onDrag?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the user stops dragging the marker. */\n onDragEnd?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the marker's draggable property changes. */\n onDraggableChanged?: () => void\n /** This event is fired when the user starts dragging the marker. */\n onDragStart?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the marker's flat property changes. */\n onFlatChanged?: () => void\n /** This event is fired when the marker icon property changes. */\n onIconChanged?: () => void\n /** This event is fired for a mousedown on the marker. */\n onMouseDown?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the mouse leaves the area of the marker icon. */\n onMouseOut?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the mouse enters the area of the marker icon. */\n onMouseOver?: (e: google.maps.MouseEvent) => void\n /** This event is fired for a mouseup on the marker. */\n onMouseUp?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the marker position property changes. */\n onPositionChanged?: () => void\n /** This event is fired for a rightclick on the marker. */\n onRightClick?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the marker's shape property changes. */\n onShapeChanged?: () => void\n /** This event is fired when the marker title property changes. */\n onTitleChanged?: () => void\n /** This event is fired when the marker's visible property changes. */\n onVisibleChanged?: () => void\n /** This event is fired when the marker's zIndex property changes. */\n onZindexChanged?: () => void\n /** This callback is called when the marker instance has loaded. It is called with the marker instance. */\n onLoad?: (marker: google.maps.Marker) => void\n /** This callback is called when the component unmounts. It is called with the marker instance. */\n onUnmount?: (marker: google.maps.Marker) => void\n}\n\nexport class Marker extends React.PureComponent<MarkerProps, MarkerState> {\n static contextType = MapContext\n\n registeredEvents: google.maps.MapsEventListener[] = []\n\n state: MarkerState = {\n marker: null,\n }\n\n setMarkerCallback = (): void => {\n if (this.state.marker !== null && this.props.onLoad) {\n this.props.onLoad(this.state.marker)\n }\n }\n\n componentDidMount(): void {\n const markerOptions = {\n ...(this.props.options || {}),\n ...(this.props.clusterer ? {} : { map: this.context }),\n position: this.props.position,\n }\n\n const marker = new google.maps.Marker(markerOptions)\n\n if (this.props.clusterer) {\n this.props.clusterer.addMarker(\n // eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n // @ts-ignore\n marker,\n !!this.props.noClustererRedraw\n )\n } else {\n marker.setMap(this.context)\n }\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps: {},\n nextProps: this.props,\n instance: marker,\n })\n\n this.setState(function setMarker() {\n return {\n marker,\n }\n }, this.setMarkerCallback)\n }\n\n componentDidUpdate(prevProps: MarkerProps): void {\n if (this.state.marker !== null) {\n unregisterEvents(this.registeredEvents)\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps,\n nextProps: this.props,\n instance: this.state.marker,\n })\n }\n }\n\n componentWillUnmount(): void {\n if (this.state.marker !== null) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.marker)\n }\n\n unregisterEvents(this.registeredEvents)\n\n if (this.props.clusterer) {\n this.props.clusterer.removeMarker(\n // eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n // @ts-ignore\n this.state.marker,\n !!this.props.noClustererRedraw\n )\n } else {\n this.state.marker && this.state.marker.setMap(null)\n }\n }\n }\n\n render(): React.ReactNode {\n return this.props.children || null\n }\n}\n\nexport default Marker\n","/* eslint-disable filenames/match-exported */\nimport * as React from 'react'\n\nimport { unregisterEvents, applyUpdatersToPropsAndRegisterEvents } from '../../utils/helper'\n\nimport MapContext from '../../map-context'\n\nimport {\n Clusterer,\n ClusterIconStyle,\n Cluster,\n ClustererOptions,\n TCalculator,\n} from '@react-google-maps/marker-clusterer'\n\nconst eventMap = {\n onClick: 'click',\n onClusteringBegin: 'clusteringbegin',\n onClusteringEnd: 'clusteringend',\n onMouseOut: 'mouseout',\n onMouseOver: 'mouseover',\n}\n\nconst updaterMap = {\n averageCenter(instance: Clusterer, averageCenter: boolean): void {\n instance.setAverageCenter(averageCenter)\n },\n\n batchSizeIE(instance: Clusterer, batchSizeIE: number): void {\n instance.setBatchSizeIE(batchSizeIE)\n },\n\n calculator(instance: Clusterer, calculator: any): void {\n instance.setCalculator(calculator)\n },\n\n clusterClass(instance: Clusterer, clusterClass: string): void {\n instance.setClusterClass(clusterClass)\n },\n\n enableRetinaIcons(instance: Clusterer, enableRetinaIcons: boolean): void {\n instance.setEnableRetinaIcons(enableRetinaIcons)\n },\n\n gridSize(instance: Clusterer, gridSize: number): void {\n instance.setGridSize(gridSize)\n },\n\n ignoreHidden(instance: Clusterer, ignoreHidden: boolean): void {\n instance.setIgnoreHidden(ignoreHidden)\n },\n\n imageExtension(instance: Clusterer, imageExtension: string): void {\n instance.setImageExtension(imageExtension)\n },\n\n imagePath(instance: Clusterer, imagePath: string): void {\n instance.setImagePath(imagePath)\n },\n\n imageSizes(instance: Clusterer, imageSizes: number[]): void {\n instance.setImageSizes(imageSizes)\n },\n\n maxZoom(instance: Clusterer, maxZoom: number): void {\n instance.setMaxZoom(maxZoom)\n },\n\n minimumClusterSize(instance: Clusterer, minimumClusterSize: number): void {\n instance.setMinimumClusterSize(minimumClusterSize)\n },\n\n styles(instance: Clusterer, styles: ClusterIconStyle[]): void {\n instance.setStyles(styles)\n },\n\n title(instance: Clusterer, title: string): void {\n instance.setTitle(title)\n },\n\n zoomOnClick(instance: Clusterer, zoomOnClick: boolean): void {\n instance.setZoomOnClick(zoomOnClick)\n },\n}\n\ninterface ClustererState {\n markerClusterer: Clusterer | null\n}\n\nexport interface ClustererProps {\n // required\n children: (markerClusterer: Clusterer) => React.ReactNode\n\n options?: ClustererOptions // TODO: it could be undefined\n /** Whether the position of a cluster marker should be the average position of all markers in the cluster. If set to false, the cluster marker is positioned at the location of the first marker added to the cluster. The default value is false. */\n averageCenter?: boolean\n /** When Internet Explorer is being used, markers are processed in several batches with a small delay inserted between each batch in an attempt to avoid Javascript timeout errors. Set this property to the number of markers to be processed in a single batch; select as high a number as you can without causing a timeout error in the browser. This number might need to be as low as 100 if 15,000 markers are being managed, for example. The default value is MarkerClusterer.BATCH_SIZE_IE. */\n batchSizeIE?: number\n /** The function used to determine the text to be displayed on a cluster marker and the index indicating which style to use for the cluster marker. The input parameters for the function are (1) the array of markers represented by a cluster marker and (2) the number of cluster icon styles. It returns a ClusterIconInfo object. The default calculator returns a text property which is the number of markers in the cluster and an index property which is one higher than the lowest integer such that 10^i exceeds the number of markers in the cluster, or the size of the styles array, whichever is less. The styles array element used has an index of index minus 1. For example, the default calculator returns a text value of \"125\" and an index of 3 for a cluster icon representing 125 markers so the element used in the styles array is 2. A calculator may also return a title property that contains the text of the tooltip to be used for the cluster marker. If title is not defined, the tooltip is set to the value of the title property for the MarkerClusterer. The default value is MarkerClusterer.CALCULATOR. */\n calculator?: TCalculator\n /** The name of the CSS class defining general styles for the cluster markers. Use this class to define CSS styles that are not set up by the code that processes the styles array. The default value is \"cluster\". */\n clusterClass?: string\n /** Whether to allow the use of cluster icons that have sizes that are some multiple (typically double) of their actual display size. Icons such as these look better when viewed on high-resolution monitors such as Apple's Retina displays. Note: if this property is true, sprites cannot be used as cluster icons. The default value is false. */\n enableRetinaIcons?: boolean\n /** The grid size of a cluster in pixels. The grid is a square. The default value is 60. */\n gridSize?: number\n /** Whether to ignore hidden markers in clusters. You may want to set this to true to ensure that hidden markers are not included in the marker count that appears on a cluster marker (this count is the value of the text property of the result returned by the default calculator). If set to true and you change the visibility of a marker being clustered, be sure to also call MarkerClusterer.repaint(). The default value is false. */\n ignoreHidden?: boolean\n /** The extension name for the cluster icon image files (e.g., \"png\" or \"jpg\"). The default value is MarkerClusterer.IMAGE_EXTENSION. */\n imageExtension?: string\n /** The full URL of the root name of the group of image files to use for cluster icons. The complete file name is of the form imagePath.imageExtension where n is the image file number (1, 2, etc.). The default value is MarkerClusterer.IMAGE_PATH. */\n imagePath?: string\n /** An array of numbers containing the widths of the group of imagePath.imageExtension image files. (The images are assumed to be square.) The default value is MarkerClusterer.IMAGE_SIZES. */\n imageSizes?: number[]\n /** The maximum zoom level at which clustering is enabled or null if clustering is to be enabled at all zoom levels. The default value is null. */\n maxZoom?: number\n /** The minimum number of markers needed in a cluster before the markers are hidden and a cluster marker appears. The default value is 2. */\n minimumClusterSize?: number\n /** An array of ClusterIconStyle elements defining the styles of the cluster markers to be used. The element to be used to style a given cluster marker is determined by the function defined by the calculator property. The default is an array of ClusterIconStyle elements whose properties are derived from the values for imagePath, imageExtension, and imageSizes. */\n styles?: ClusterIconStyle[]\n /** The tooltip to display when the mouse moves over a cluster marker. (Alternatively, you can use a custom calculator function to specify a different tooltip for each cluster marker.) The default value is \"\". */\n title?: string\n /** Whether to zoom the map when a cluster marker is clicked. You may want to set this to false if you have installed a handler for the click event and it deals with zooming on its own. The default value is true. */\n zoomOnClick?: boolean\n /** This event is fired when a cluster marker is clicked. */\n onClick?: (cluster: Cluster) => void\n /** This event is fired when the MarkerClusterer begins clustering markers. */\n onClusteringBegin?: (markerClusterer: Clusterer) => void\n /** This event is fired when the MarkerClusterer stops clustering markers. */\n onClusteringEnd?: (markerClusterer: Clusterer) => void\n /** \tThis event is fired when the mouse moves over a cluster marker. */\n onMouseOver?: (cluster: Cluster) => void\n /** This event is fired when the mouse moves out of a cluster marker. */\n onMouseOut?: (cluster: Cluster) => void\n /** This callback is called when the markerClusterer instance has loaded. It is called with the markerClusterer instance. */\n onLoad?: (markerClusterer: Clusterer) => void\n /** This callback is called when the component unmounts. It is called with the markerClusterer instance. */\n onUnmount?: (markerClusterer: Clusterer) => void\n}\n\nexport class ClustererComponent extends React.PureComponent<ClustererProps, ClustererState> {\n static contextType = MapContext\n\n registeredEvents: google.maps.MapsEventListener[] = []\n\n state: ClustererState = {\n markerClusterer: null,\n }\n\n setClustererCallback = (): void => {\n if (this.state.markerClusterer !== null && this.props.onLoad) {\n this.props.onLoad(this.state.markerClusterer)\n }\n }\n\n componentDidMount(): void {\n if (this.context) {\n const markerClusterer = new Clusterer(this.context, [], this.props.options)\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps: {},\n nextProps: this.props,\n instance: markerClusterer,\n })\n\n this.setState(function setClusterer(): ClustererState {\n return {\n markerClusterer,\n }\n }, this.setClustererCallback)\n }\n }\n\n componentDidUpdate(prevProps: ClustererProps): void {\n if (this.state.markerClusterer) {\n unregisterEvents(this.registeredEvents)\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps,\n nextProps: this.props,\n instance: this.state.markerClusterer,\n })\n }\n }\n\n componentWillUnmount(): void {\n if (this.state.markerClusterer !== null) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.markerClusterer)\n }\n\n unregisterEvents(this.registeredEvents)\n // eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n // @ts-ignore\n this.state.markerClusterer.setMap(null)\n }\n }\n\n render(): React.ReactNode {\n return this.state.markerClusterer !== null\n ? this.props.children(this.state.markerClusterer)\n : null\n }\n}\n\nexport default ClustererComponent\n","/* global google */\n/* eslint-disable filenames/match-exported */\nimport * as React from 'react'\nimport * as ReactDOM from 'react-dom'\nimport invariant from 'invariant'\nimport {\n InfoBox as GoogleMapsInfoBox,\n InfoBoxOptions as GoogleMapsInfoBoxOptions,\n} from '@react-google-maps/infobox'\nimport { unregisterEvents, applyUpdatersToPropsAndRegisterEvents } from '../../utils/helper'\nimport MapContext from '../../map-context'\n\nconst eventMap = {\n onCloseClick: 'closeclick',\n onContentChanged: 'content_changed',\n onDomReady: 'domready',\n onPositionChanged: 'position_changed',\n onZindexChanged: 'zindex_changed',\n}\n\nconst updaterMap = {\n options(instance: GoogleMapsInfoBox, options: GoogleMapsInfoBoxOptions): void {\n instance.setOptions(options)\n },\n position(\n instance: GoogleMapsInfoBox,\n position: google.maps.LatLng | google.maps.LatLngLiteral\n ): void {\n if (position instanceof google.maps.LatLng) {\n instance.setPosition(position)\n } else {\n instance.setPosition(new google.maps.LatLng(position.lat, position.lng))\n }\n },\n visible(instance: GoogleMapsInfoBox, visible: boolean): void {\n instance.setVisible(visible)\n },\n zIndex(instance: GoogleMapsInfoBox, zIndex: number): void {\n instance.setZIndex(zIndex)\n },\n}\n\ntype InfoBoxOptions = Omit<GoogleMapsInfoBoxOptions, 'position'> & {\n position?: google.maps.LatLng | google.maps.LatLngLiteral\n}\n\ninterface InfoBoxState {\n infoBox: GoogleMapsInfoBox | null\n}\n\nexport interface InfoBoxProps {\n /** Can be any MVCObject that exposes a LatLng position property and optionally a Point anchorPoint property for calculating the pixelOffset. The anchorPoint is the offset from the anchor's position to the tip of the InfoBox. */\n anchor?: google.maps.MVCObject\n options?: InfoBoxOptions\n /** The LatLng at which to display this InfoBox. If the InfoBox is opened with an anchor, the anchor's position will be used instead. */\n position?: google.maps.LatLng | google.maps.LatLngLiteral\n /** All InfoBoxes are displayed on the map in order of their zIndex, with higher values displaying in front of InfoBoxes with lower values. By default, InfoBoxes are displayed according to their latitude, with InfoBoxes of lower latitudes appearing in front of InfoBoxes at higher latitudes. InfoBoxes are always displayed in front of markers. */\n zIndex?: number\n /** This event is fired when the close button was clicked. */\n onCloseClick?: () => void\n /** This event is fired when the <div> containing the InfoBox's content is attached to the DOM. You may wish to monitor this event if you are building out your info window content dynamically. */\n onDomReady?: () => void\n /** This event is fired when the content property changes. */\n onContentChanged?: () => void\n /** This event is fired when the position property changes. */\n onPositionChanged?: () => void\n /** This event is fired when the InfoBox's zIndex changes. */\n onZindexChanged?: () => void\n /** This callback is called when the infoBox instance has loaded. It is called with the infoBox instance. */\n onLoad?: (infoBox: GoogleMapsInfoBox) => void\n /** This callback is called when the component unmounts. It is called with the infoBox instance. */\n onUnmount?: (infoBox: GoogleMapsInfoBox) => void\n}\n\nexport class InfoBoxComponent extends React.PureComponent<InfoBoxProps, InfoBoxState> {\n static contextType = MapContext\n\n registeredEvents: google.maps.MapsEventListener[] = []\n containerElement: HTMLElement | null = null\n\n state: InfoBoxState = {\n infoBox: null,\n }\n\n open = (infoBox: GoogleMapsInfoBox, anchor?: google.maps.MVCObject): void => {\n if (anchor) {\n infoBox.open(this.context, anchor)\n } else if (infoBox.getPosition()) {\n infoBox.open(this.context)\n } else {\n invariant(false, 'You must provide either an anchor or a position prop for <InfoBox>.')\n }\n }\n\n setInfoBoxCallback = (): void => {\n const { anchor, onLoad } = this.props\n const { infoBox } = this.state\n\n if (infoBox !== null && this.containerElement !== null) {\n infoBox.setContent(this.containerElement)\n this.open(infoBox, anchor)\n\n if (onLoad) {\n onLoad(infoBox)\n }\n }\n }\n\n componentDidMount(): void {\n const { options } = this.props\n const { position, ...infoBoxOptions }: InfoBoxOptions = options || {}\n\n let positionLatLng: google.maps.LatLng | undefined\n if (position && !(position instanceof google.maps.LatLng)) {\n positionLatLng = new google.maps.LatLng(position.lat, position.lng)\n }\n\n const infoBox = new GoogleMapsInfoBox({\n ...infoBoxOptions,\n ...(positionLatLng ? { position: positionLatLng } : {}),\n })\n\n this.containerElement = document.createElement('div')\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps: {},\n nextProps: this.props,\n instance: infoBox,\n })\n\n this.setState({ infoBox }, this.setInfoBoxCallback)\n }\n\n componentDidUpdate(prevProps: InfoBoxProps): void {\n const { infoBox } = this.state\n\n if (infoBox !== null) {\n unregisterEvents(this.registeredEvents)\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps,\n nextProps: this.props,\n instance: infoBox,\n })\n }\n }\n\n componentWillUnmount(): void {\n const { onUnmount } = this.props\n const { infoBox } = this.state\n\n if (infoBox !== null) {\n if (onUnmount) {\n onUnmount(infoBox)\n }\n\n unregisterEvents(this.registeredEvents)\n infoBox.close()\n }\n }\n\n render(): React.ReactPortal | null {\n if (!this.containerElement) {\n return null\n }\n\n return ReactDOM.createPortal(React.Children.only(this.props.children), this.containerElement)\n }\n}\n\nexport default InfoBoxComponent\n","/* global google */\nimport * as React from 'react'\nimport * as ReactDOM from 'react-dom'\nimport { unregisterEvents, applyUpdatersToPropsAndRegisterEvents } from '../../utils/helper'\n\nimport MapContext from '../../map-context'\nimport invariant from 'invariant'\n\nconst eventMap = {\n onCloseClick: 'closeclick',\n onContentChanged: 'content_changed',\n onDomReady: 'domready',\n onPositionChanged: 'position_changed',\n onZindexChanged: 'zindex_changed',\n}\n\nconst updaterMap = {\n options(instance: google.maps.InfoWindow, options: google.maps.InfoWindowOptions): void {\n instance.setOptions(options)\n },\n position(\n instance: google.maps.InfoWindow,\n position: google.maps.LatLng | google.maps.LatLngLiteral\n ): void {\n instance.setPosition(position)\n },\n zIndex(instance: google.maps.InfoWindow, zIndex: number): void {\n instance.setZIndex(zIndex)\n },\n}\n\ninterface InfoWindowState {\n infoWindow: google.maps.InfoWindow | null\n}\n\nexport interface InfoWindowProps {\n /** Can be any MVCObject that exposes a LatLng position property and optionally a Point anchorPoint property for calculating the pixelOffset. The anchorPoint is the offset from the anchor's position to the tip of the InfoWindow. */\n anchor?: google.maps.MVCObject\n options?: google.maps.InfoWindowOptions\n /** The LatLng at which to display this InfoWindow. If the InfoWindow is opened with an anchor, the anchor's position will be used instead. */\n position?: google.maps.LatLng | google.maps.LatLngLiteral\n /** All InfoWindows are displayed on the map in order of their zIndex, with higher values displaying in front of InfoWindows with lower values. By default, InfoWindows are displayed according to their latitude, with InfoWindows of lower latitudes appearing in front of InfoWindows at higher latitudes. InfoWindows are always displayed in front of markers. */\n zIndex?: number\n /** This event is fired when the close button was clicked. */\n onCloseClick?: () => void\n /** This event is fired when the <div> containing the InfoWindow's content is attached to the DOM. You may wish to monitor this event if you are building out your info window content dynamically. */\n onDomReady?: () => void\n /** This event is fired when the content property changes. */\n onContentChanged?: () => void\n /** This event is fired when the position property changes. */\n onPositionChanged?: () => void\n /** This event is fired when the InfoWindow's zIndex changes. */\n onZindexChanged?: () => void\n /** This callback is called when the infoWindow instance has loaded. It is called with the infoWindow instance. */\n onLoad?: (infoWindow: google.maps.InfoWindow) => void\n /** This callback is called when the component unmounts. It is called with the infoWindow instance. */\n onUnmount?: (infoWindow: google.maps.InfoWindow) => void\n}\n\nexport class InfoWindow extends React.PureComponent<InfoWindowProps, InfoWindowState> {\n static contextType = MapContext\n\n registeredEvents: google.maps.MapsEventListener[] = []\n containerElement: HTMLElement | null = null\n\n state: InfoWindowState = {\n infoWindow: null,\n }\n\n open = (infoWindow: google.maps.InfoWindow, anchor?: google.maps.MVCObject): void => {\n if (anchor) {\n infoWindow.open(this.context, anchor)\n } else if (infoWindow.getPosition()) {\n infoWindow.open(this.context)\n } else {\n invariant(\n false,\n `You must provide either an anchor (typically render it inside a <Marker>) or a position props for <InfoWindow>.`\n )\n }\n }\n\n setInfoWindowCallback = (): void => {\n if (this.state.infoWindow !== null && this.containerElement !== null) {\n this.state.infoWindow.setContent(this.containerElement)\n\n this.open(this.state.infoWindow, this.props.anchor)\n\n if (this.props.onLoad) {\n this.props.onLoad(this.state.infoWindow)\n }\n }\n }\n\n componentDidMount(): void {\n const infoWindow = new google.maps.InfoWindow({\n ...(this.props.options || {}),\n })\n\n this.containerElement = document.createElement('div')\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps: {},\n nextProps: this.props,\n instance: infoWindow,\n })\n\n this.setState(function setInfoWindow() {\n return {\n infoWindow,\n }\n }, this.setInfoWindowCallback)\n }\n\n componentDidUpdate(prevProps: InfoWindowProps): void {\n if (this.state.infoWindow !== null) {\n unregisterEvents(this.registeredEvents)\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps,\n nextProps: this.props,\n instance: this.state.infoWindow,\n })\n }\n }\n\n componentWillUnmount(): void {\n if (this.state.infoWindow !== null) {\n unregisterEvents(this.registeredEvents)\n\n this.state.infoWindow.close()\n }\n }\n\n render(): React.ReactPortal | React.ReactNode {\n return this.containerElement ? (\n ReactDOM.createPortal(React.Children.only(this.props.children), this.containerElement)\n ) : (\n <></>\n )\n }\n}\n\nexport default InfoWindow\n","import * as React from 'react'\n\nimport { unregisterEvents, applyUpdatersToPropsAndRegisterEvents } from '../../utils/helper'\n\nimport MapContext from '../../map-context'\n\nconst eventMap = {\n onClick: 'click',\n onDblClick: 'dblclick',\n onDrag: 'drag',\n onDragEnd: 'dragend',\n onDragStart: 'dragstart',\n onMouseDown: 'mousedown',\n onMouseMove: 'mousemove',\n onMouseOut: 'mouseout',\n onMouseOver: 'mouseover',\n onMouseUp: 'mouseup',\n onRightClick: 'rightclick',\n}\n\nconst updaterMap = {\n draggable(instance: google.maps.Polyline, draggable: boolean): void {\n instance.setDraggable(draggable)\n },\n editable(instance: google.maps.Polyline, editable: boolean): void {\n instance.setEditable(editable)\n },\n map(instance: google.maps.Polyline, map: google.maps.Map): void {\n instance.setMap(map)\n },\n options(instance: google.maps.Polyline, options: google.maps.PolylineOptions): void {\n instance.setOptions(options)\n },\n path(\n instance: google.maps.Polyline,\n path:\n | google.maps.MVCArray<google.maps.LatLng>\n | google.maps.LatLng[]\n | google.maps.LatLngLiteral[]\n ): void {\n instance.setPath(path)\n },\n visible(instance: google.maps.Polyline, visible: boolean): void {\n instance.setVisible(visible)\n },\n}\n\ninterface PolylineState {\n polyline: google.maps.Polyline | null\n}\n\nexport interface PolylineProps {\n options?: google.maps.PolylineOptions\n /** If set to true, the user can drag this shape over the map. The geodesic property defines the mode of dragging. */\n draggable?: boolean\n /** If set to true, the user can edit this shape by dragging the control points shown at the vertices and on each segment. */\n editable?: boolean\n /** Hides this poly if set to false. */\n visible?: boolean\n /** Sets the path. The ordered sequence of coordinates of the Polyline. This path may be specified using either a simple array of LatLngs, or an MVCArray of LatLngs. Note that if you pass a simple array, it will be converted to an MVCArray Inserting or removing LatLngs in the MVCArray will automatically update the polyline on the map. */\n path?:\n | google.maps.MVCArray<google.maps.LatLng>\n | google.maps.LatLng[]\n | google.maps.LatLngLiteral[]\n /** This event is fired when the DOM dblclick event is fired on the Polyline. */\n onDblClick?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the user stops dragging the polyline. */\n onDragEnd?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the user starts dragging the polyline. */\n onDragStart?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the DOM mousedown event is fired on the Polyline. */\n onMouseDown?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the DOM mousemove event is fired on the Polyline. */\n onMouseMove?: (e: google.maps.MouseEvent) => void\n /** This event is fired on Polyline mouseout. */\n onMouseOut?: (e: google.maps.MouseEvent) => void\n /** This event is fired on Polyline mouseover. */\n onMouseOver?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the DOM mouseup event is fired on the Polyline. */\n onMouseUp?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the Polyline is right-clicked on. */\n onRightClick?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the DOM click event is fired on the Polyline. */\n onClick?: (e: google.maps.MouseEvent) => void\n /** This event is repeatedly fired while the user drags the polyline. */\n onDrag?: (e: google.maps.MouseEvent) => void\n /** This callback is called when the polyline instance has loaded. It is called with the polyline instance. */\n onLoad?: (polyline: google.maps.Polyline) => void\n /** This callback is called when the component unmounts. It is called with the polyline instance. */\n onUnmount?: (polyline: google.maps.Polyline) => void\n}\n\nexport class Polyline extends React.PureComponent<PolylineProps, PolylineState> {\n static contextType = MapContext\n\n registeredEvents: google.maps.MapsEventListener[] = []\n\n state: PolylineState = {\n polyline: null,\n }\n\n setPolylineCallback = (): void => {\n if (this.state.polyline !== null && this.props.onLoad) {\n this.props.onLoad(this.state.polyline)\n }\n }\n\n componentDidMount(): void {\n const polyline = new google.maps.Polyline({\n ...(this.props.options || {}),\n map: this.context,\n })\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps: {},\n nextProps: this.props,\n instance: polyline,\n })\n\n this.setState(function setPolyline() {\n return {\n polyline,\n }\n }, this.setPolylineCallback)\n }\n\n componentDidUpdate(prevProps: PolylineProps): void {\n if (this.state.polyline !== null) {\n unregisterEvents(this.registeredEvents)\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps,\n nextProps: this.props,\n instance: this.state.polyline,\n })\n }\n }\n\n componentWillUnmount(): void {\n if (this.state.polyline !== null) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.polyline)\n }\n\n unregisterEvents(this.registeredEvents)\n\n this.state.polyline.setMap(null)\n }\n }\n\n render(): React.ReactNode {\n return <></>\n }\n}\n\nexport default Polyline\n","/* global google */\nimport * as React from 'react'\n\nimport { unregisterEvents, applyUpdatersToPropsAndRegisterEvents } from '../../utils/helper'\n\nimport MapContext from '../../map-context'\n\nconst eventMap = {\n onClick: 'click',\n onDblClick: 'dblclick',\n onDrag: 'drag',\n onDragEnd: 'dragend',\n onDragStart: 'dragstart',\n onMouseDown: 'mousedown',\n onMouseMove: 'mousemove',\n onMouseOut: 'mouseout',\n onMouseOver: 'mouseover',\n onMouseUp: 'mouseup',\n onRightClick: 'rightclick',\n}\n\nconst updaterMap = {\n draggable(instance: google.maps.Polygon, draggable: boolean): void {\n instance.setDraggable(draggable)\n },\n editable(instance: google.maps.Polygon, editable: boolean): void {\n instance.setEditable(editable)\n },\n map(instance: google.maps.Polygon, map: google.maps.Map): void {\n instance.setMap(map)\n },\n options(instance: google.maps.Polygon, options: google.maps.PolygonOptions): void {\n instance.setOptions(options)\n },\n path(\n instance: google.maps.Polygon,\n path:\n | google.maps.MVCArray<google.maps.LatLng>\n | google.maps.LatLng[]\n | google.maps.LatLngLiteral[]\n ): void {\n instance.setPath(path)\n },\n\n paths(\n instance: google.maps.Polygon,\n paths:\n | google.maps.MVCArray<google.maps.LatLng>\n | google.maps.MVCArray<google.maps.MVCArray<google.maps.LatLng>>\n | google.maps.LatLng[]\n | google.maps.LatLng[][]\n | google.maps.LatLngLiteral[]\n | google.maps.LatLngLiteral[][]\n ): void {\n instance.setPaths(paths)\n },\n\n visible(instance: google.maps.Polygon, visible: boolean): void {\n instance.setVisible(visible)\n },\n}\n\ninterface PolygonState {\n polygon: google.maps.Polygon | null\n}\n\nexport interface PolygonProps {\n options?: google.maps.PolygonOptions\n /** If set to true, the user can drag this shape over the map. The geodesic property defines the mode of dragging. */\n draggable?: boolean\n /** If set to true, the user can edit this shape by dragging the control points shown at the vertices and on each segment. */\n editable?: boolean\n /** Hides this poly if set to false. */\n visible?: boolean\n /** Sets the first path. See Paths for more details. */\n path?:\n | google.maps.MVCArray<google.maps.LatLng>\n | google.maps.LatLng[]\n | google.maps.LatLngLiteral[]\n /** Sets the path for this polygon. The ordered sequence of coordinates that designates a closed loop. Unlike polylines, a polygon may consist of one or more paths. As a result, the paths property may specify one or more arrays of LatLng coordinates. Paths are closed automatically; do not repeat the first vertex of the path as the last vertex. Simple polygons may be defined using a single array of LatLngs. More complex polygons may specify an array of arrays. Any simple arrays are converted into MVCArrays. Inserting or removing LatLngs from the MVCArray will automatically update the polygon on the map. */\n paths?:\n | google.maps.MVCArray<google.maps.LatLng>\n | google.maps.MVCArray<google.maps.MVCArray<google.maps.LatLng>>\n | google.maps.LatLng[]\n | google.maps.LatLng[][]\n | google.maps.LatLngLiteral[]\n | google.maps.LatLngLiteral[][]\n /** This event is fired when the DOM dblclick event is fired on the Polygon. */\n onDblClick?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the user stops dragging the polygon. */\n onDragEnd?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the user starts dragging the polygon. */\n onDragStart?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the DOM mousedown event is fired on the Polygon. */\n onMouseDown?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the DOM mousemove event is fired on the Polygon. */\n onMouseMove?: (e: google.maps.MouseEvent) => void\n /** This event is fired on Polygon mouseout. */\n onMouseOut?: (e: google.maps.MouseEvent) => void\n /** This event is fired on Polygon mouseover. */\n onMouseOver?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the DOM mouseup event is fired on the Polygon. */\n onMouseUp?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the Polygon is right-clicked on. */\n onRightClick?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the DOM click event is fired on the Polygon. */\n onClick?: (e: google.maps.MouseEvent) => void\n /** This event is repeatedly fired while the user drags the polygon. */\n onDrag?: (e: google.maps.MouseEvent) => void\n /** This callback is called when the polygon instance has loaded. It is called with the polygon instance. */\n onLoad?: (polygon: google.maps.Polygon) => void\n /** This callback is called when the component unmounts. It is called with the polygon instance. */\n onUnmount?: (polygon: google.maps.Polygon) => void\n}\n\nexport class Polygon extends React.PureComponent<PolygonProps, PolygonState> {\n static contextType = MapContext\n\n registeredEvents: google.maps.MapsEventListener[] = []\n\n state: PolygonState = {\n polygon: null,\n }\n\n setPolygonCallback = (): void => {\n if (this.state.polygon !== null && this.props.onLoad) {\n this.props.onLoad(this.state.polygon)\n }\n }\n\n componentDidMount(): void {\n const polygon = new google.maps.Polygon({\n ...(this.props.options || {}),\n map: this.context,\n })\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps: {},\n nextProps: this.props,\n instance: polygon,\n })\n\n this.setState(function setPolygon() {\n return {\n polygon,\n }\n }, this.setPolygonCallback)\n }\n\n componentDidUpdate(prevProps: PolygonProps): void {\n if (this.state.polygon !== null) {\n unregisterEvents(this.registeredEvents)\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps,\n nextProps: this.props,\n instance: this.state.polygon,\n })\n }\n }\n\n componentWillUnmount(): void {\n if (this.state.polygon !== null) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.polygon)\n }\n\n unregisterEvents(this.registeredEvents)\n\n this.state.polygon && this.state.polygon.setMap(null)\n }\n }\n\n render(): React.ReactNode {\n return null\n }\n}\n\nexport default Polygon\n","import * as React from 'react'\n\nimport { unregisterEvents, applyUpdatersToPropsAndRegisterEvents } from '../../utils/helper'\nimport MapContext from '../../map-context'\n\nconst eventMap = {\n onBoundsChanged: 'bounds_changed',\n onClick: 'click',\n onDblClick: 'dblclick',\n onDrag: 'drag',\n onDragEnd: 'dragend',\n onDragStart: 'dragstart',\n onMouseDown: 'mousedown',\n onMouseMove: 'mousemove',\n onMouseOut: 'mouseout',\n onMouseOver: 'mouseover',\n onMouseUp: 'mouseup',\n onRightClick: 'rightclick',\n}\n\nconst updaterMap = {\n bounds(\n instance: google.maps.Rectangle,\n bounds: google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral\n ): void {\n instance.setBounds(bounds)\n },\n draggable(instance: google.maps.Rectangle, draggable: boolean): void {\n instance.setDraggable(draggable)\n },\n editable(instance: google.maps.Rectangle, editable: boolean): void {\n instance.setEditable(editable)\n },\n map(instance: google.maps.Rectangle, map: google.maps.Map): void {\n instance.setMap(map)\n },\n options(instance: google.maps.Rectangle, options: google.maps.RectangleOptions): void {\n instance.setOptions(options)\n },\n visible(instance: google.maps.Rectangle, visible: boolean): void {\n instance.setVisible(visible)\n },\n}\n\ninterface RectangleState {\n rectangle: google.maps.Rectangle | null\n}\n\nexport interface RectangleProps {\n options?: google.maps.RectangleOptions\n /** Sets the bounds of this rectangle. */\n bounds?: google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral\n /** If set to true, the user can drag this rectangle over the map. */\n draggable?: boolean\n /** If set to true, the user can edit this rectangle by dragging the control points shown at the corners and on each edge. */\n editable?: boolean\n /** Hides this rectangle if set to false. */\n visible?: boolean\n /** Indicates whether this Rectangle handles mouse events. Defaults to true. */\n clickable?: boolean\n /** This event is fired when the DOM dblclick event is fired on the rectangle. */\n onDblClick?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the user stops dragging the rectangle. */\n onDragEnd?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the user starts dragging the rectangle. */\n onDragStart?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the DOM mousedown event is fired on the rectangle. */\n onMouseDown?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the DOM mousemove event is fired on the rectangle. */\n onMouseMove?: (e: google.maps.MouseEvent) => void\n /** This event is fired on rectangle mouseout. */\n onMouseOut?: (e: google.maps.MouseEvent) => void\n /** This event is fired on rectangle mouseover. */\n onMouseOver?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the DOM mouseup event is fired on the rectangle. */\n onMouseUp?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the rectangle is right-clicked on. */\n onRightClick?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the DOM click event is fired on the rectangle. */\n onClick?: (e: google.maps.MouseEvent) => void\n /** This event is repeatedly fired while the user drags the rectangle. */\n onDrag?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the rectangle's bounds are changed. */\n onBoundsChanged?: () => void\n /** This callback is called when the rectangle instance has loaded. It is called with the rectangle instance. */\n onLoad?: (rectangle: google.maps.Rectangle) => void\n /** This callback is called when the component unmounts. It is called with the rectangle instance. */\n onUnmount?: (rectangle: google.maps.Rectangle) => void\n}\n\nexport class Rectangle extends React.PureComponent<RectangleProps, RectangleState> {\n static contextType = MapContext\n\n registeredEvents: google.maps.MapsEventListener[] = []\n\n state: RectangleState = {\n rectangle: null,\n }\n\n setRectangleCallback = (): void => {\n if (this.state.rectangle !== null && this.props.onLoad) {\n this.props.onLoad(this.state.rectangle)\n }\n }\n\n componentDidMount(): void {\n const rectangle = new google.maps.Rectangle({\n ...(this.props.options || {}),\n map: this.context,\n })\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps: {},\n nextProps: this.props,\n instance: rectangle,\n })\n\n this.setState(function setRectangle() {\n return {\n rectangle,\n }\n }, this.setRectangleCallback)\n }\n\n componentDidUpdate(prevProps: RectangleProps): void {\n if (this.state.rectangle !== null) {\n unregisterEvents(this.registeredEvents)\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps,\n nextProps: this.props,\n instance: this.state.rectangle,\n })\n }\n }\n\n componentWillUnmount(): void {\n if (this.state.rectangle !== null) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.rectangle)\n }\n\n unregisterEvents(this.registeredEvents)\n\n this.state.rectangle.setMap(null)\n }\n }\n\n render(): React.ReactNode {\n return <></>\n }\n}\n\nexport default Rectangle\n","import * as React from 'react'\n\nimport { unregisterEvents, applyUpdatersToPropsAndRegisterEvents } from '../../utils/helper'\n\nimport MapContext from '../../map-context'\n\nconst eventMap = {\n onCenterChanged: 'center_changed',\n onClick: 'click',\n onDblClick: 'dblclick',\n onDrag: 'drag',\n onDragEnd: 'dragend',\n onDragStart: 'dragstart',\n onMouseDown: 'mousedown',\n onMouseMove: 'mousemove',\n onMouseOut: 'mouseout',\n onMouseOver: 'mouseover',\n onMouseUp: 'mouseup',\n onRadiusChanged: 'radius_changed',\n onRightClick: 'rightclick',\n}\n\nconst updaterMap = {\n center(instance: google.maps.Circle, center: google.maps.LatLng): void {\n instance.setCenter(center)\n },\n draggable(instance: google.maps.Circle, draggable: boolean): void {\n instance.setDraggable(draggable)\n },\n editable(instance: google.maps.Circle, editable: boolean): void {\n instance.setEditable(editable)\n },\n map(instance: google.maps.Circle, map: google.maps.Map): void {\n instance.setMap(map)\n },\n options(instance: google.maps.Circle, options: google.maps.CircleOptions): void {\n instance.setOptions(options)\n },\n radius(instance: google.maps.Circle, radius: number): void {\n instance.setRadius(radius)\n },\n visible(instance: google.maps.Circle, visible: boolean): void {\n instance.setVisible(visible)\n },\n}\n\ninterface CircleState {\n circle: google.maps.Circle | null\n}\n\nexport interface CircleProps {\n options?: google.maps.CircleOptions\n\n // required\n /** sets the center of the circle */\n center: google.maps.LatLng | google.maps.LatLngLiteral\n\n // required\n /** Sets the radius of this circle (in meters) */\n radius: number\n /** If set to true, the user can drag this circle over the map */\n draggable?: boolean\n /** If set to true, the user can edit this circle by dragging the control points shown at the center and around the circumference of the circle. */\n editable?: boolean\n /** Hides this circle if set to false. */\n visible?: boolean\n /** This event is fired when the DOM dblclick event is fired on the circle. */\n onDblClick?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the user stops dragging the circle. */\n onDragEnd?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the user starts dragging the circle. */\n onDragStart?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the DOM mousedown event is fired on the circle. */\n onMouseDown?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the DOM mousemove event is fired on the circle. */\n onMouseMove?: (e: google.maps.MouseEvent) => void\n /** This event is fired on circle mouseout. */\n onMouseOut?: (e: google.maps.MouseEvent) => void\n /** This event is fired on circle mouseover. */\n onMouseOver?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the DOM mouseup event is fired on the circle. */\n onMouseUp?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the circle is right-clicked on. */\n onRightClick?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the circle's center is changed. */\n onCenterChanged?: () => void\n /** This event is fired when the DOM click event is fired on the circle. */\n onClick?: (e: google.maps.MouseEvent) => void\n /** This event is repeatedly fired while the user drags the circle. */\n onDrag?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the circle's radius is changed. */\n onRadiusChanged?: () => void\n /** This callback is called when the circle instance has loaded. It is called with the circle instance. */\n onLoad?: (circle: google.maps.Circle) => void\n /** This callback is called when the component unmounts. It is called with the circle instance. */\n onUnmount?: (circle: google.maps.Circle) => void\n}\n\nexport class Circle extends React.PureComponent<CircleProps, CircleState> {\n static contextType = MapContext\n\n registeredEvents: google.maps.MapsEventListener[] = []\n\n state: CircleState = {\n circle: null,\n }\n\n setCircleCallback = (): void => {\n if (this.state.circle !== null && this.props.onLoad) {\n this.props.onLoad(this.state.circle)\n }\n }\n\n componentDidMount(): void {\n const circle = new google.maps.Circle({\n ...(this.props.options || {}),\n map: this.context,\n })\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps: {},\n nextProps: this.props,\n instance: circle,\n })\n\n this.setState(function setCircle() {\n return {\n circle,\n }\n }, this.setCircleCallback)\n }\n\n componentDidUpdate(prevProps: CircleProps): void {\n if (this.state.circle !== null) {\n unregisterEvents(this.registeredEvents)\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps,\n nextProps: this.props,\n instance: this.state.circle,\n })\n }\n }\n\n componentWillUnmount(): void {\n if (this.state.circle !== null) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.circle)\n }\n\n unregisterEvents(this.registeredEvents)\n\n this.state.circle && this.state.circle.setMap(null)\n }\n }\n\n render(): JSX.Element {\n return <></>\n }\n}\n\nexport default Circle\n","import * as React from 'react'\n\nimport { unregisterEvents, applyUpdatersToPropsAndRegisterEvents } from '../../utils/helper'\n\nimport MapContext from '../../map-context'\n\nconst eventMap = {\n onAddFeature: 'addfeature',\n onClick: 'click',\n onDblClick: 'dblclick',\n onMouseDown: 'mousedown',\n onMouseOut: 'mouseout',\n onMouseOver: 'mouseover',\n onMouseUp: 'mouseup',\n onRemoveFeature: 'removefeature',\n onRemoveProperty: 'removeproperty',\n onRightClick: 'rightclick',\n onSetGeometry: 'setgeometry',\n onSetProperty: 'setproperty',\n}\n\nconst updaterMap = {\n add(\n instance: google.maps.Data,\n features: google.maps.Data.Feature | google.maps.Data.FeatureOptions\n ): void {\n instance.add(features)\n },\n addgeojson(\n instance: google.maps.Data,\n geojson: object,\n options?: google.maps.Data.GeoJsonOptions\n ): void {\n instance.addGeoJson(geojson, options)\n },\n contains(instance: google.maps.Data, feature: google.maps.Data.Feature): void {\n instance.contains(feature)\n },\n foreach(instance: google.maps.Data, callback: (feature: google.maps.Data.Feature) => void): void {\n instance.forEach(callback)\n },\n loadgeojson(\n instance: google.maps.Data,\n url: string,\n options: google.maps.Data.GeoJsonOptions,\n callback: (features: google.maps.Data.Feature[]) => void\n ): void {\n instance.loadGeoJson(url, options, callback)\n },\n overridestyle(\n instance: google.maps.Data,\n feature: google.maps.Data.Feature,\n style: google.maps.Data.StyleOptions\n ): void {\n instance.overrideStyle(feature, style)\n },\n remove(instance: google.maps.Data, feature: google.maps.Data.Feature): void {\n instance.remove(feature)\n },\n revertstyle(instance: google.maps.Data, feature: google.maps.Data.Feature): void {\n instance.revertStyle(feature)\n },\n controlposition(instance: google.maps.Data, controlPosition: google.maps.ControlPosition): void {\n instance.setControlPosition(controlPosition)\n },\n controls(instance: google.maps.Data, controls: google.maps.DrawingMode[] | null): void {\n instance.setControls(controls)\n },\n drawingmode(instance: google.maps.Data, mode: google.maps.DrawingMode): void {\n instance.setDrawingMode(mode)\n },\n map(instance: google.maps.Data, map: google.maps.Map): void {\n instance.setMap(map)\n },\n style(\n instance: google.maps.Data,\n style: google.maps.Data.StylingFunction | google.maps.Data.StyleOptions\n ): void {\n instance.setStyle(style)\n },\n togeojson(instance: google.maps.Data, callback: (feature: object) => void): void {\n instance.toGeoJson(callback)\n },\n}\n\ninterface DataState {\n data: google.maps.Data | null\n}\nexport interface DataProps {\n options?: google.maps.Data.DataOptions\n /** This event is fired when a feature is added to the collection. */\n onAddFeature?: (e: google.maps.Data.AddFeatureEvent) => void\n /** This event is fired for a click on the geometry. */\n onClick?: (e: google.maps.Data.MouseEvent) => void\n /** This event is fired for a double click on the geometry. */\n onDblClick?: (e: google.maps.Data.MouseEvent) => void\n /** This event is fired for a mousedown on the geometry. */\n onMouseDown?: (e: google.maps.Data.MouseEvent) => void\n /** This event is fired when the mouse leaves the area of the geometry. */\n onMouseOut?: (e: google.maps.Data.MouseEvent) => void\n /** This event is fired when the mouse enters the area of the geometry. */\n onMouseOver?: (e: google.maps.Data.MouseEvent) => void\n /** This event is fired for a mouseup on the geometry. */\n onMouseUp?: (e: google.maps.Data.MouseEvent) => void\n /** This event is fired when a feature is removed from the collection. */\n onRemoveFeature?: (e: google.maps.Data.RemoveFeatureEvent) => void\n /** This event is fired when a feature's property is removed. */\n onRemoveProperty?: (e: google.maps.Data.RemovePropertyEvent) => void\n /** This event is fired for a rightclick on the geometry. */\n onRightClick?: (e: google.maps.Data.MouseEvent) => void\n /** This event is fired when a feature's geometry is set. */\n onSetGeometry?: (e: google.maps.Data.SetGeometryEvent) => void\n /** This event is fired when a feature's property is set. */\n onSetProperty?: (e: google.maps.Data.SetPropertyEvent) => void\n /** This callback is called when the data instance has loaded. It is called with the data instance. */\n onLoad?: (data: google.maps.Data) => void\n /** This callback is called when the component unmounts. It is called with the data instance. */\n onUnmount?: (data: google.maps.Data) => void\n}\n\nexport class Data extends React.PureComponent<DataProps, DataState> {\n static contextType = MapContext\n\n registeredEvents: google.maps.MapsEventListener[] = []\n\n state: DataState = {\n data: null,\n }\n\n setDataCallback = (): void => {\n if (this.state.data !== null && this.props.onLoad) {\n this.props.onLoad(this.state.data)\n }\n }\n\n componentDidMount(): void {\n const data = new google.maps.Data({\n ...(this.props.options || {}),\n map: this.context,\n })\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps: {},\n nextProps: this.props,\n instance: data,\n })\n\n this.setState(function setData() {\n return {\n data,\n }\n }, this.setDataCallback)\n }\n\n componentDidUpdate(prevProps: DataProps): void {\n if (this.state.data !== null) {\n unregisterEvents(this.registeredEvents)\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps,\n nextProps: this.props,\n instance: this.state.data,\n })\n }\n }\n\n componentWillUnmount(): void {\n if (this.state.data !== null) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.data)\n }\n\n unregisterEvents(this.registeredEvents)\n\n if (this.state.data) {\n this.state.data.setMap(null)\n }\n }\n }\n\n render(): null {\n return null\n }\n}\n\nexport default Data\n","import { PureComponent } from 'react'\n\nimport { unregisterEvents, applyUpdatersToPropsAndRegisterEvents } from '../../utils/helper'\nimport MapContext from '../../map-context'\n\nconst eventMap = {\n onClick: 'click',\n onDefaultViewportChanged: 'defaultviewport_changed',\n onStatusChanged: 'status_changed',\n}\n\nconst updaterMap = {\n options(instance: google.maps.KmlLayer, options: google.maps.KmlLayerOptions): void {\n instance.setOptions(options)\n },\n url(instance: google.maps.KmlLayer, url: string): void {\n instance.setUrl(url)\n },\n zIndex(instance: google.maps.KmlLayer, zIndex: number): void {\n instance.setZIndex(zIndex)\n },\n}\n\ninterface KmlLayerState {\n kmlLayer: google.maps.KmlLayer | null\n}\n\nexport interface KmlLayerProps {\n options?: google.maps.KmlLayerOptions\n /** The URL of the KML document to display. */\n url?: string\n /** The z-index of the layer. */\n zIndex?: number\n /** This event is fired when a feature in the layer is clicked. */\n onClick?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the KML layers default viewport has changed. */\n onDefaultViewportChanged?: () => void\n /** This event is fired when the KML layer has finished loading. At this point it is safe to read the status property to determine if the layer loaded successfully. */\n onStatusChanged?: () => void\n /** This callback is called when the kmlLayer instance has loaded. It is called with the kmlLayer instance. */\n onLoad: (kmlLayer: google.maps.KmlLayer) => void\n /** This callback is called when the component unmounts. It is called with the kmlLayer instance. */\n onUnmount: (kmlLayer: google.maps.KmlLayer) => void\n}\n\nexport class KmlLayer extends PureComponent<KmlLayerProps, KmlLayerState> {\n static contextType = MapContext\n\n registeredEvents: google.maps.MapsEventListener[] = []\n\n state: KmlLayerState = {\n kmlLayer: null,\n }\n\n setKmlLayerCallback = (): void => {\n if (this.state.kmlLayer !== null && this.props.onLoad) {\n this.props.onLoad(this.state.kmlLayer)\n }\n }\n\n componentDidMount(): void {\n const kmlLayer = new google.maps.KmlLayer({\n ...this.props.options,\n map: this.context,\n })\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps: {},\n nextProps: this.props,\n instance: kmlLayer,\n })\n\n this.setState(function setLmlLayer() {\n return {\n kmlLayer,\n }\n }, this.setKmlLayerCallback)\n }\n\n componentDidUpdate(prevProps: KmlLayerProps): void {\n if (this.state.kmlLayer !== null) {\n unregisterEvents(this.registeredEvents)\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps,\n nextProps: this.props,\n instance: this.state.kmlLayer,\n })\n }\n }\n\n componentWillUnmount(): void {\n if (this.state.kmlLayer !== null) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.kmlLayer)\n }\n\n unregisterEvents(this.registeredEvents)\n\n this.state.kmlLayer.setMap(null)\n }\n }\n\n render(): React.ReactNode {\n return null\n }\n}\n\nexport default KmlLayer\n","/* eslint-disable filenames/match-regex */\nexport function getOffsetOverride(\n containerElement: HTMLElement,\n getPixelPositionOffset?: (offsetWidth: number, offsetHeight: number) => { x: number; y: number }\n): { x: number; y: number } | {} {\n return typeof getPixelPositionOffset === 'function'\n ? getPixelPositionOffset(containerElement.offsetWidth, containerElement.offsetHeight)\n : {}\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst createLatLng = (inst: any, Type: any): any => new Type(inst.lat, inst.lng)\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst createLatLngBounds = (inst: any, Type: any): any =>\n new Type(\n new google.maps.LatLng(inst.ne.lat, inst.ne.lng),\n new google.maps.LatLng(inst.sw.lat, inst.sw.lng)\n )\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst ensureOfType = (inst: any, type: any, factory: any): any => {\n return inst instanceof type ? inst : factory(inst, type)\n}\n\nconst getLayoutStylesByBounds = (\n mapCanvasProjection: google.maps.MapCanvasProjection,\n offset: { x: number; y: number },\n bounds: google.maps.LatLngBounds\n): { left: string; top: string; width?: string; height?: string } => {\n const ne = mapCanvasProjection.fromLatLngToDivPixel(bounds.getNorthEast())\n\n const sw = mapCanvasProjection.fromLatLngToDivPixel(bounds.getSouthWest())\n\n if (ne && sw) {\n return {\n left: `${sw.x + offset.x}px`,\n top: `${ne.y + offset.y}px`,\n width: `${ne.x - sw.x - offset.x}px`,\n height: `${sw.y - ne.y - offset.y}px`,\n }\n }\n\n return {\n left: '-9999px',\n top: '-9999px',\n }\n}\n\nconst getLayoutStylesByPosition = (\n mapCanvasProjection: google.maps.MapCanvasProjection,\n offset: { x: number; y: number },\n position: google.maps.LatLng\n): { left: string; top: string } => {\n const point = mapCanvasProjection.fromLatLngToDivPixel(position)\n\n if (point) {\n const { x, y } = point\n\n return {\n left: `${x + offset.x}px`,\n top: `${y + offset.y}px`,\n }\n }\n\n return {\n left: '-9999px',\n top: '-9999px',\n }\n}\n\nexport const getLayoutStyles = (\n mapCanvasProjection: google.maps.MapCanvasProjection,\n offset: { x: number; y: number },\n bounds?: google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral,\n position?: google.maps.LatLng | google.maps.LatLngLiteral\n): { left: string; top: string; width?: string; height?: string } => {\n return bounds !== undefined\n ? getLayoutStylesByBounds(\n mapCanvasProjection,\n offset,\n ensureOfType(bounds, google.maps.LatLngBounds, createLatLngBounds)\n )\n : getLayoutStylesByPosition(\n mapCanvasProjection,\n offset,\n ensureOfType(position, google.maps.LatLng, createLatLng)\n )\n}\n","import * as React from 'react'\n\nexport interface OverlayViewProps {\n mapPaneName: string\n getPixelPositionOffset?: (offsetWidth: number, offsetHeight: number) => { x: number; y: number }\n bounds?: google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral\n position?: google.maps.LatLng | google.maps.LatLngLiteral\n onLoad?: (overlayView: google.maps.OverlayView) => void\n onUnmount?: (overlayView: google.maps.OverlayView) => void\n}\n\ninterface ContentMountHandlerProps {\n onLoad?: () => void\n}\n\nclass ContentMountHandler extends React.Component<ContentMountHandlerProps> {\n componentDidMount(): void {\n if (this.props.onLoad) {\n this.props.onLoad()\n }\n }\n\n render(): React.ReactNode {\n return this.props.children\n }\n}\n\nexport default ContentMountHandler\n","import * as React from 'react'\nimport * as ReactDOM from 'react-dom'\n\nimport invariant from 'invariant'\n\nimport MapContext from '../../map-context'\n\nimport { getOffsetOverride, getLayoutStyles } from './dom-helper'\n\nimport ContentMountHandler from './CountMountHandler'\n\ninterface OverlayViewState {\n overlayView: google.maps.OverlayView | null\n}\n\nexport interface OverlayViewProps {\n // required\n mapPaneName: string\n getPixelPositionOffset?: (offsetWidth: number, offsetHeight: number) => { x: number; y: number }\n bounds?: google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral\n position?: google.maps.LatLng | google.maps.LatLngLiteral\n onLoad?: (overlayView: google.maps.OverlayView) => void\n onUnmount?: (overlayView: google.maps.OverlayView) => void\n}\n\nexport class OverlayView extends React.PureComponent<OverlayViewProps, OverlayViewState> {\n static FLOAT_PANE = `floatPane`\n static MAP_PANE = `mapPane`\n static MARKER_LAYER = `markerLayer`\n static OVERLAY_LAYER = `overlayLayer`\n static OVERLAY_MOUSE_TARGET = `overlayMouseTarget`\n\n static contextType = MapContext\n\n state: OverlayViewState = {\n overlayView: null,\n }\n\n containerElement: HTMLElement | null = null\n\n setOverlayViewCallback = (): void => {\n if (this.state.overlayView !== null && this.props.onLoad) {\n this.props.onLoad(this.state.overlayView)\n }\n\n this.onPositionElement()\n }\n\n onAdd = (): void => {\n this.containerElement = document.createElement('div')\n\n this.containerElement.style.position = 'absolute'\n }\n\n onPositionElement = (): void => {\n if (this.state.overlayView !== null && this.containerElement !== null) {\n const mapCanvasProjection = this.state.overlayView.getProjection()\n\n const offset = {\n x: 0,\n y: 0,\n ...getOffsetOverride(this.containerElement, this.props.getPixelPositionOffset),\n }\n\n const layoutStyles = getLayoutStyles(\n mapCanvasProjection,\n offset,\n this.props.bounds,\n this.props.position\n )\n\n Object.assign(this.containerElement.style, layoutStyles)\n }\n }\n\n draw = (): void => {\n invariant(\n !!this.props.mapPaneName,\n `OverlayView requires props.mapPaneName but got %s`,\n this.props.mapPaneName\n )\n\n const overlayView = this.state.overlayView\n\n if (overlayView === null) {\n return\n }\n\n // https://developers.google.com/maps/documentation/javascript/3.exp/reference#MapPanes\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const mapPanes: any = overlayView.getPanes()\n\n if (!mapPanes) {\n return\n }\n\n if (this.containerElement) {\n mapPanes[this.props.mapPaneName].appendChild(this.containerElement)\n }\n\n this.onPositionElement()\n\n this.forceUpdate()\n }\n\n onRemove = (): void => {\n if (this.containerElement !== null && this.containerElement.parentNode) {\n this.containerElement.parentNode.removeChild(this.containerElement)\n\n delete this.containerElement\n }\n }\n\n componentDidMount(): void {\n const overlayView = new google.maps.OverlayView()\n\n // You must implement three methods: onAdd(), draw(), and onRemove().\n overlayView.onAdd = this.onAdd\n overlayView.draw = this.draw\n overlayView.onRemove = this.onRemove\n\n overlayView.setMap(this.context)\n\n // You must call setMap() with a valid Map object to trigger the call to\n // the onAdd() method and setMap(null) in order to trigger the onRemove() method.\n\n this.setState(function setOverlayView() {\n return {\n overlayView,\n }\n })\n }\n\n componentDidUpdate(prevProps: OverlayViewProps): void {\n if (prevProps.position !== this.props.position || prevProps.bounds !== this.props.bounds) {\n setTimeout(() => {\n this.state.overlayView !== null && this.state.overlayView.draw()\n }, 0)\n }\n }\n\n componentWillUnmount(): void {\n if (this.state.overlayView !== null) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.overlayView)\n }\n\n this.state.overlayView.setMap(null)\n }\n }\n\n render(): React.ReactPortal | React.ReactNode {\n return this.containerElement !== null ? (\n ReactDOM.createPortal(\n <ContentMountHandler onLoad={this.setOverlayViewCallback}>\n {React.Children.only(this.props.children)}\n </ContentMountHandler>,\n this.containerElement\n )\n ) : (\n <></>\n )\n }\n}\n\nexport default OverlayView\n","export function noop(): void {}\n","import * as React from 'react'\n\nimport invariant from 'invariant'\n\nimport { unregisterEvents, applyUpdatersToPropsAndRegisterEvents } from '../../utils/helper'\n\nimport MapContext from '../../map-context'\nimport { noop } from '../../utils/noop'\n\nconst eventMap = {\n onDblClick: 'dblclick',\n onClick: 'click',\n}\n\nconst updaterMap = {\n opacity(instance: google.maps.GroundOverlay, opacity: number): void {\n instance.setOpacity(opacity)\n },\n}\n\ninterface GroundOverlayState {\n groundOverlay: google.maps.GroundOverlay | null\n}\n\nexport interface GroundOverlayProps {\n options?: google.maps.GroundOverlayOptions\n /** The opacity of the overlay, expressed as a number between 0 and 1. Optional. Defaults to 1. */\n opacity?: number\n /** This event is fired when the DOM dblclick event is fired on the GroundOverlay. */\n onDblClick?: (e: google.maps.MouseEvent) => void\n /** This event is fired when the DOM click event is fired on the GroundOverlay. */\n onClick?: (e: google.maps.MouseEvent) => void\n /** The url of the projected image */\n url: string\n /** The bounds that the image will be scaled to fit */\n bounds: google.maps.LatLngBounds\n /** This callback is called when the component unmounts. It is called with the groundOverlay instance. */\n onLoad?: (groundOverlay: google.maps.GroundOverlay) => void\n /** This callback is called when the groundOverlay instance has loaded. It is called with the groundOverlay instance. */\n onUnmount?: (groundOverlay: google.maps.GroundOverlay) => void\n}\n\nexport class GroundOverlay extends React.PureComponent<GroundOverlayProps, GroundOverlayState> {\n public static defaultProps = {\n onLoad: noop,\n }\n\n static contextType = MapContext\n\n registeredEvents: google.maps.MapsEventListener[] = []\n\n state: GroundOverlayState = {\n groundOverlay: null,\n }\n\n setGroundOverlayCallback = (): void => {\n if (this.state.groundOverlay !== null && this.props.onLoad) {\n this.props.onLoad(this.state.groundOverlay)\n }\n }\n\n componentDidMount(): void {\n invariant(\n !!this.props.url || !!this.props.bounds,\n `For GroundOverlay, url and bounds are passed in to constructor and are immutable after instantiated. This is the behavior of Google Maps JavaScript API v3 ( See https://developers.google.com/maps/documentation/javascript/reference#GroundOverlay) Hence, use the corresponding two props provided by \\`react-google-maps-api\\`, url and bounds. In some cases, you'll need the GroundOverlay component to reflect the changes of url and bounds. You can leverage the React's key property to remount the component. Typically, just \\`key={url}\\` would serve your need. See https://github.com/tomchentw/react-google-maps/issues/655`\n )\n\n const groundOverlay = new google.maps.GroundOverlay(this.props.url, this.props.bounds, {\n ...this.props.options,\n map: this.context,\n })\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps: {},\n nextProps: this.props,\n instance: groundOverlay,\n })\n\n this.setState(function setGroundOverlay() {\n return {\n groundOverlay,\n }\n }, this.setGroundOverlayCallback)\n }\n\n componentDidUpdate(prevProps: GroundOverlayProps): void {\n if (this.state.groundOverlay !== null) {\n unregisterEvents(this.registeredEvents)\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps,\n nextProps: this.props,\n instance: this.state.groundOverlay,\n })\n }\n }\n\n componentWillUnmount(): void {\n if (this.state.groundOverlay) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.groundOverlay)\n }\n\n this.state.groundOverlay.setMap(null)\n }\n }\n\n render(): React.ReactNode {\n return null\n }\n}\n\nexport default GroundOverlay\n","import * as React from 'react'\nimport invariant from 'invariant'\n\nimport { unregisterEvents, applyUpdatersToPropsAndRegisterEvents } from '../../utils/helper'\n\nimport MapContext from '../../map-context'\n\nconst eventMap = {}\n\nconst updaterMap = {\n data(\n instance: google.maps.visualization.HeatmapLayer,\n data:\n | google.maps.MVCArray<google.maps.LatLng | google.maps.visualization.WeightedLocation>\n | google.maps.LatLng[]\n | google.maps.visualization.WeightedLocation[]\n ): void {\n instance.setData(data)\n },\n map(instance: google.maps.visualization.HeatmapLayer, map: google.maps.Map): void {\n instance.setMap(map)\n },\n options(\n instance: google.maps.visualization.HeatmapLayer,\n options: google.maps.visualization.HeatmapLayerOptions\n ): void {\n instance.setOptions(options)\n },\n}\n\ninterface HeatmapLayerState {\n heatmapLayer: google.maps.visualization.HeatmapLayer | null\n}\n\nexport interface HeatmapLayerProps {\n // required\n /** The data points to display. Required. */\n data:\n | google.maps.MVCArray<google.maps.LatLng | google.maps.visualization.WeightedLocation>\n | google.maps.LatLng[]\n | google.maps.visualization.WeightedLocation[]\n options?: google.maps.visualization.HeatmapLayerOptions\n /** This callback is called when the heatmapLayer instance has loaded. It is called with the heatmapLayer instance. */\n onLoad?: (heatmapLayer: google.maps.visualization.HeatmapLayer) => void\n /** This callback is called when the component unmounts. It is called with the heatmapLayer instance. */\n onUnmount?: (heatmapLayer: google.maps.visualization.HeatmapLayer) => void\n}\n\nexport class HeatmapLayer extends React.PureComponent<HeatmapLayerProps, HeatmapLayerState> {\n static contextType = MapContext\n\n registeredEvents: google.maps.MapsEventListener[] = []\n\n state: HeatmapLayerState = {\n heatmapLayer: null,\n }\n\n setHeatmapLayerCallback = (): void => {\n if (this.state.heatmapLayer !== null && this.props.onLoad) {\n this.props.onLoad(this.state.heatmapLayer)\n }\n }\n\n componentDidMount(): void {\n invariant(\n !!google.maps.visualization,\n 'Did you include prop libraries={[\"visualization\"]} to <LoadScript />? %s',\n google.maps.visualization\n )\n\n invariant(!!this.props.data, 'data property is required in HeatmapLayer %s', this.props.data)\n\n const heatmapLayer = new google.maps.visualization.HeatmapLayer({\n data: this.props.data,\n ...(this.props.options || {}),\n map: this.context,\n })\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps: {},\n nextProps: this.props,\n instance: heatmapLayer,\n })\n\n this.setState(function setHeatmapLayer() {\n return {\n heatmapLayer,\n }\n }, this.setHeatmapLayerCallback)\n }\n\n componentDidUpdate(prevProps: HeatmapLayerProps): void {\n unregisterEvents(this.registeredEvents)\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps,\n nextProps: this.props,\n instance: this.state.heatmapLayer,\n })\n }\n\n componentWillUnmount(): void {\n if (this.state.heatmapLayer !== null) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.heatmapLayer)\n }\n\n unregisterEvents(this.registeredEvents)\n\n this.state.heatmapLayer.setMap(null)\n }\n }\n\n render(): React.ReactNode {\n return null\n }\n}\n\nexport default HeatmapLayer\n","import * as React from 'react'\n\nimport { unregisterEvents, applyUpdatersToPropsAndRegisterEvents } from '../../utils/helper'\n\nimport MapContext from '../../map-context'\n\nconst eventMap = {\n onCloseClick: 'closeclick',\n onPanoChanged: 'pano_changed',\n onPositionChanged: 'position_changed',\n onPovChanged: 'pov_changed',\n onResize: 'resize',\n onStatusChanged: 'status_changed',\n onVisibleChanged: 'visible_changed',\n onZoomChanged: 'zoom_changed',\n}\n\nconst updaterMap = {\n register(\n instance: google.maps.StreetViewPanorama,\n provider: (input: string) => google.maps.StreetViewPanoramaData,\n options: google.maps.PanoProviderOptions\n ): void {\n instance.registerPanoProvider(provider, options)\n },\n links(instance: google.maps.StreetViewPanorama, links: google.maps.StreetViewLink[]): void {\n instance.setLinks(links)\n },\n motionTracking(instance: google.maps.StreetViewPanorama, motionTracking: boolean): void {\n instance.setMotionTracking(motionTracking)\n },\n options(\n instance: google.maps.StreetViewPanorama,\n options: google.maps.StreetViewPanoramaOptions\n ): void {\n instance.setOptions(options)\n },\n pano(instance: google.maps.StreetViewPanorama, pano: string): void {\n instance.setPano(pano)\n },\n position(\n instance: google.maps.StreetViewPanorama,\n position: google.maps.LatLng | google.maps.LatLngLiteral\n ): void {\n instance.setPosition(position)\n },\n pov(instance: google.maps.StreetViewPanorama, pov: google.maps.StreetViewPov): void {\n instance.setPov(pov)\n },\n visible(instance: google.maps.StreetViewPanorama, visible: boolean): void {\n instance.setVisible(visible)\n },\n zoom(instance: google.maps.StreetViewPanorama, zoom: number): void {\n instance.setZoom(zoom)\n },\n}\n\ninterface StreetViewPanoramaState {\n streetViewPanorama: google.maps.StreetViewPanorama | null\n}\n\nexport interface StreetViewPanoramaProps {\n options?: google.maps.StreetViewPanoramaOptions\n /** This event is fired when the close button is clicked. */\n onCloseclick?: (event: google.maps.MouseEvent) => void\n /** This event is fired when the panorama's pano id changes. The pano may change as the user navigates through the panorama or the position is manually set. Note that not all position changes trigger a pano_changed. */\n onPanoChanged?: () => void\n /** This event is fired when the panorama's position changes. The position changes as the user navigates through the panorama or the position is set manually. */\n onPositionChanged?: () => void\n /** This event is fired when the panorama's point-of-view changes. The point of view changes as the pitch, zoom, or heading changes. */\n onPovChanged?: () => void\n /** Developers should trigger this event on the panorama when its div changes size: google.maps.event.trigger(panorama, 'resize'). */\n onResize?: () => void\n /** This event is fired after every panorama lookup by id or location, via setPosition() or setPano(). */\n onStatusChanged?: () => void\n /** This event is fired when the panorama's visibility changes. The visibility is changed when the Pegman is dragged onto the map, the close button is clicked, or setVisible() is called. */\n onVisibleChanged?: () => void\n /** This event is fired when the panorama's zoom level changes. */\n onZoomChange?: () => void\n /** This callback is called when the component unmounts. It is called with the streetViewPanorama instance. */\n onLoad?: (streetViewPanorama: google.maps.StreetViewPanorama) => void\n /** This callback is called when the streetViewPanorama instance has loaded. It is called with the streetViewPanorama instance. */\n onUnmount?: (streetViewPanorama: google.maps.StreetViewPanorama) => void\n}\n\nexport class StreetViewPanorama extends React.PureComponent<\n StreetViewPanoramaProps,\n StreetViewPanoramaState\n> {\n static contextType = MapContext\n\n registeredEvents: google.maps.MapsEventListener[] = []\n\n state: StreetViewPanoramaState = {\n streetViewPanorama: null,\n }\n\n setStreetViewPanoramaCallback = (): void => {\n if (this.state.streetViewPanorama !== null && this.props.onLoad) {\n this.props.onLoad(this.state.streetViewPanorama)\n }\n }\n\n componentDidMount(): void {\n const streetViewPanorama = this.context.getStreetView()\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps: {},\n nextProps: this.props,\n instance: streetViewPanorama,\n })\n\n this.setState(function setStreetViewPanorama() {\n return {\n streetViewPanorama,\n }\n }, this.setStreetViewPanoramaCallback)\n }\n\n componentDidUpdate(prevProps: StreetViewPanoramaProps): void {\n if (this.state.streetViewPanorama !== null) {\n unregisterEvents(this.registeredEvents)\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps,\n nextProps: this.props,\n instance: this.state.streetViewPanorama,\n })\n }\n }\n\n componentWillUnmount(): void {\n if (this.state.streetViewPanorama !== null) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.streetViewPanorama)\n }\n\n unregisterEvents(this.registeredEvents)\n\n this.state.streetViewPanorama.setVisible(false)\n }\n }\n\n render(): React.ReactNode {\n return null\n }\n}\n\nexport default StreetViewPanorama\n","import * as React from 'react'\n\nimport MapContext from '../../map-context'\n\nexport interface StreetViewServiceProps {\n /** This callback is called when the component unmounts. It is called with the streetViewService instance. */\n onLoad?: (streetViewService: google.maps.StreetViewService | null) => void\n /** This callback is called when the streetViewService instance has loaded. It is called with the streetViewService instance. */\n onUnmount?: (streetViewService: google.maps.StreetViewService | null) => void\n}\n\ninterface StreetViewServiceState {\n streetViewService: google.maps.StreetViewService | null\n}\n\nexport class StreetViewService extends React.PureComponent<\n StreetViewServiceProps,\n StreetViewServiceState\n> {\n static contextType = MapContext\n\n state = {\n streetViewService: null,\n }\n\n setStreetViewServiceCallback = (): void => {\n if (this.state.streetViewService !== null && this.props.onLoad) {\n this.props.onLoad(this.state.streetViewService)\n }\n }\n\n componentDidMount(): void {\n const streetViewService = new google.maps.StreetViewService()\n\n this.setState(function setStreetViewService() {\n return {\n streetViewService,\n }\n })\n }\n\n componentWillUnmount(): void {\n if (this.state.streetViewService !== null) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.streetViewService)\n }\n }\n }\n\n render(): React.ReactNode {\n return null\n }\n}\n\nexport default StreetViewService\n","import * as React from 'react'\nimport invariant from 'invariant'\n\ninterface DirectionsServiceState {\n directionsService: google.maps.DirectionsService | null\n}\n\nexport interface DirectionsServiceProps {\n // required for default functionality\n options: google.maps.DirectionsRequest\n\n // required for default functionality\n callback: (\n // required\n /** The directions response retrieved from the directions server. You can render these using a DirectionsRenderer or parse this object and render it yourself. You must display the warnings and copyrights as noted in the Google Maps Platform Terms of Service. Note that though this result is \"JSON-like,\" it is not strictly JSON, as it indirectly includes LatLng objects */\n result: google.maps.DirectionsResult,\n // required\n /** The status returned by the DirectionsService on the completion of a call to route(). Specify these by value, or by using the constant's name. For example, 'OK' or google.maps.DirectionsStatus.OK */\n status: google.maps.DirectionsStatus\n ) => void\n /** This callback is called when the directionsService instance has loaded. It is called with the directionsService instance. */\n onLoad?: (directionsService: google.maps.DirectionsService) => void\n /** This callback is called when the component unmounts. It is called with the directionsService instance. */\n onUnmount?: (directionsService: google.maps.DirectionsService) => void\n}\n\nexport class DirectionsService extends React.PureComponent<\n DirectionsServiceProps,\n DirectionsServiceState\n> {\n state: DirectionsServiceState = {\n directionsService: null,\n }\n\n setDirectionsServiceCallback = (): void => {\n if (this.state.directionsService !== null && this.props.onLoad) {\n this.props.onLoad(this.state.directionsService)\n }\n }\n\n componentDidMount(): void {\n invariant(\n !!this.props.options,\n 'DirectionsService expected options object as parameter, but got %s',\n this.props.options\n )\n\n const directionsService = new google.maps.DirectionsService()\n\n this.setState(function setDirectionsService() {\n return {\n directionsService,\n }\n }, this.setDirectionsServiceCallback)\n }\n\n componentDidUpdate(): void {\n if (this.state.directionsService !== null) {\n this.state.directionsService.route(this.props.options, this.props.callback)\n }\n }\n\n componentWillUnmount(): void {\n if (this.state.directionsService !== null) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.directionsService)\n }\n }\n }\n\n render(): JSX.Element {\n return <></>\n }\n}\n\nexport default DirectionsService\n","import * as React from 'react'\n\nimport { unregisterEvents, applyUpdatersToPropsAndRegisterEvents } from '../../utils/helper'\n\nimport MapContext from '../../map-context'\n\nconst eventMap = {\n onDirectionsChanged: 'directions_changed',\n}\n\nconst updaterMap = {\n directions(\n instance: google.maps.DirectionsRenderer,\n directions: google.maps.DirectionsResult\n ): void {\n instance.setDirections(directions)\n },\n map(instance: google.maps.DirectionsRenderer, map: google.maps.Map): void {\n instance.setMap(map)\n },\n options(\n instance: google.maps.DirectionsRenderer,\n options: google.maps.DirectionsRendererOptions\n ): void {\n instance.setOptions(options)\n },\n panel(instance: google.maps.DirectionsRenderer, panel: Element): void {\n instance.setPanel(panel)\n },\n routeIndex(instance: google.maps.DirectionsRenderer, routeIndex: number): void {\n instance.setRouteIndex(routeIndex)\n },\n}\n\ninterface DirectionsRendererState {\n directionsRenderer: google.maps.DirectionsRenderer | null\n}\n\nexport interface DirectionsRendererProps {\n options?: google.maps.DirectionsRendererOptions\n /** The directions to display on the map and/or in a <div> panel, retrieved as a DirectionsResult object from DirectionsService. */\n directions?: google.maps.DirectionsResult\n /** The <div> in which to display the directions steps. */\n panel?: Element\n /** The index of the route within the DirectionsResult object. The default value is 0. */\n routeIndex?: number\n /** This event is fired when the rendered directions change, either when a new DirectionsResult is set or when the user finishes dragging a change to the directions path. */\n onDirectionsChanged?: () => void\n /** This callback is called when the directionsRenderer instance has loaded. It is called with the directionsRenderer instance. */\n onLoad?: (directionsRenderer: google.maps.DirectionsRenderer) => void\n /** This callback is called when the component unmounts. It is called with the directionsRenderer instance. */\n onUnmount?: (directionsRenderer: google.maps.DirectionsRenderer) => void\n}\n\nexport class DirectionsRenderer extends React.PureComponent<\n DirectionsRendererProps,\n DirectionsRendererState\n> {\n static contextType = MapContext\n\n registeredEvents: google.maps.MapsEventListener[] = []\n\n state: DirectionsRendererState = {\n directionsRenderer: null,\n }\n\n setDirectionsRendererCallback = (): void => {\n if (this.state.directionsRenderer !== null) {\n this.state.directionsRenderer.setMap(this.context)\n\n if (this.props.onLoad) {\n this.props.onLoad(this.state.directionsRenderer)\n }\n }\n }\n\n componentDidMount(): void {\n const directionsRenderer = new google.maps.DirectionsRenderer(this.props.options)\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps: {},\n nextProps: this.props,\n instance: directionsRenderer,\n })\n\n this.setState(function setDirectionsRenderer() {\n return {\n directionsRenderer,\n }\n }, this.setDirectionsRendererCallback)\n }\n\n componentDidUpdate(prevProps: DirectionsRendererProps): void {\n if (this.state.directionsRenderer !== null) {\n unregisterEvents(this.registeredEvents)\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps,\n nextProps: this.props,\n instance: this.state.directionsRenderer,\n })\n }\n }\n\n componentWillUnmount(): void {\n if (this.state.directionsRenderer !== null) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.directionsRenderer)\n }\n\n unregisterEvents(this.registeredEvents)\n\n if (this.state.directionsRenderer) {\n this.state.directionsRenderer.setMap(null)\n }\n }\n }\n\n render(): JSX.Element {\n return <></>\n }\n}\n\nexport default DirectionsRenderer\n","import * as React from 'react'\n\nimport invariant from 'invariant'\n\ninterface DistanceMatrixServiceState {\n distanceMatrixService: google.maps.DistanceMatrixService | null\n}\n\nexport interface DistanceMatrixServiceProps {\n // required for default functionality\n options: google.maps.DistanceMatrixRequest\n\n // required for default functionality\n callback: (\n // required\n /** The response to a DistanceMatrixService request, consisting of the formatted origin and destination addresses, and a sequence of DistanceMatrixResponseRows, one for each corresponding origin address. */\n response: google.maps.DistanceMatrixResponse,\n // required\n /** The top-level status about the request in general returned by the DistanceMatrixService upon completion of a distance matrix request. Specify these by value, or by using the constant's name. For example, 'OK' or google.maps.DistanceMatrixStatus.OK. */\n status: google.maps.DistanceMatrixStatus\n ) => void\n /** This callback is called when the distanceMatrixService instance has loaded. It is called with the distanceMatrixService instance. */\n onLoad?: (distanceMatrixService: google.maps.DistanceMatrixService) => void\n /** This callback is called when the component unmounts. It is called with the distanceMatrixService instance. */\n onUnmount?: (distanceMatrixService: google.maps.DistanceMatrixService) => void\n}\n\nexport class DistanceMatrixService extends React.PureComponent<\n DistanceMatrixServiceProps,\n DistanceMatrixServiceState\n> {\n state: DistanceMatrixServiceState = {\n distanceMatrixService: null,\n }\n\n setDistanceMatrixServiceCallback = (): void => {\n if (this.state.distanceMatrixService !== null && this.props.onLoad) {\n this.props.onLoad(this.state.distanceMatrixService)\n }\n }\n\n componentDidMount(): void {\n invariant(\n !!this.props.options,\n 'DistanceMatrixService expected options object as parameter, but go %s',\n this.props.options\n )\n\n const distanceMatrixService = new google.maps.DistanceMatrixService()\n\n this.setState(function setDistanceMatrixService() {\n return {\n distanceMatrixService,\n }\n }, this.setDistanceMatrixServiceCallback)\n }\n\n componentDidUpdate(): void {\n if (this.state.distanceMatrixService !== null) {\n this.state.distanceMatrixService.getDistanceMatrix(this.props.options, this.props.callback)\n }\n }\n\n componentWillUnmount(): void {\n if (this.state.distanceMatrixService !== null) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.distanceMatrixService)\n }\n }\n }\n\n render(): JSX.Element {\n return <></>\n }\n}\n\nexport default DistanceMatrixService\n","import * as React from 'react'\n\nimport invariant from 'invariant'\n\nimport { unregisterEvents, applyUpdatersToPropsAndRegisterEvents } from '../../utils/helper'\n\nimport MapContext from '../../map-context'\n\nconst eventMap = {\n onPlacesChanged: 'places_changed',\n}\n\nconst updaterMap = {\n bounds(\n instance: google.maps.places.SearchBox,\n bounds: google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral\n ): void {\n instance.setBounds(bounds)\n },\n}\n\ninterface StandaloneSearchBoxState {\n searchBox: google.maps.places.SearchBox | null\n}\n\nexport interface StandaloneSearchBoxProps {\n /** The area towards which to bias query predictions. Predictions are biased towards, but not restricted to, queries targeting these bounds. */\n bounds?: google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral\n options?: google.maps.places.SearchBoxOptions\n /** This event is fired when the user selects a query, getPlaces should be used to get new places. */\n onPlacesChanged?: () => void\n /** This callback is called when the component unmounts. It is called with the searchBox instance. */\n onLoad?: (searchBox: google.maps.places.SearchBox) => void\n /** This callback is called when the searchBox instance has loaded. It is called with the searchBox instance. */\n onUnmount?: (searchBox: google.maps.places.SearchBox) => void\n}\n\nclass StandaloneSearchBox extends React.PureComponent<\n StandaloneSearchBoxProps,\n StandaloneSearchBoxState\n> {\n static contextType = MapContext\n\n registeredEvents: google.maps.MapsEventListener[] = []\n\n containerElement: React.RefObject<HTMLDivElement> = React.createRef()\n\n state: StandaloneSearchBoxState = {\n searchBox: null,\n }\n\n setSearchBoxCallback = (): void => {\n if (this.state.searchBox !== null && this.props.onLoad) {\n this.props.onLoad(this.state.searchBox)\n }\n }\n\n componentDidMount(): void {\n invariant(\n !!google.maps.places,\n 'You need to provide libraries={[\"places\"]} prop to <LoadScript /> component %s',\n google.maps.places\n )\n\n if (this.containerElement !== null && this.containerElement.current !== null) {\n const input = this.containerElement.current.querySelector('input')\n\n if (input !== null) {\n const searchBox = new google.maps.places.SearchBox(input, this.props.options)\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps: {},\n nextProps: this.props,\n instance: searchBox,\n })\n\n this.setState(function setSearchBox() {\n return {\n searchBox,\n }\n }, this.setSearchBoxCallback)\n }\n }\n }\n\n componentDidUpdate(prevProps: StandaloneSearchBoxProps): void {\n if (this.state.searchBox !== null) {\n unregisterEvents(this.registeredEvents)\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps,\n nextProps: this.props,\n instance: this.state.searchBox,\n })\n }\n }\n\n componentWillUnmount(): void {\n if (this.state.searchBox !== null) {\n if (this.props.onUnmount) {\n this.props.onUnmount(this.state.searchBox)\n }\n\n unregisterEvents(this.registeredEvents)\n }\n }\n\n render(): React.ReactNode {\n return <div ref={this.containerElement}>{React.Children.only(this.props.children)}</div>\n }\n}\n\nexport default StandaloneSearchBox\n","import * as React from 'react'\n\nimport { unregisterEvents, applyUpdatersToPropsAndRegisterEvents } from '../../utils/helper'\n\nimport MapContext from '../../map-context'\n\nimport invariant from 'invariant'\n\nconst eventMap = {\n onPlaceChanged: 'place_changed',\n}\n\nconst updaterMap = {\n bounds(\n instance: google.maps.places.Autocomplete,\n bounds: google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral\n ): void {\n instance.setBounds(bounds)\n },\n restrictions(\n instance: google.maps.places.Autocomplete,\n restrictions: google.maps.places.ComponentRestrictions\n ): void {\n instance.setComponentRestrictions(restrictions)\n },\n fields(instance: google.maps.places.Autocomplete, fields: string[]): void {\n instance.setFields(fields)\n },\n options(\n instance: google.maps.places.Autocomplete,\n options: google.maps.places.AutocompleteOptions\n ): void {\n instance.setOptions(options)\n },\n types(instance: google.maps.places.Autocomplete, types: string[]): void {\n instance.setTypes(types)\n },\n}\n\ninterface AutocompleteState {\n autocomplete: google.maps.places.Autocomplete | null\n}\n\nexport interface AutocompleteProps {\n // required\n children: React.ReactChild\n /** The area in which to search for places. */\n bounds?: google.maps.LatLngBounds | google.maps.LatLngBoundsLiteral\n /** The component restrictions. Component restrictions are used to restrict predictions to only those within the parent component. For example, the country. */\n restrictions?: google.maps.places.ComponentRestrictions\n /** Fields to be included for the Place in the details response when the details are successfully retrieved. For a list of fields see PlaceResult. Nested fields can be specified with dot-paths (for example, \"geometry.location\"). */\n fields?: string[]\n options?: google.maps.places.AutocompleteOptions\n /** The types of predictions to be returned. For a list of supported types, see the developer's guide. If nothing is specified, all types are returned. In general only a single type is allowed. The exception is that you can safely mix the 'geocode' and 'establishment' types, but note that this will have the same effect as specifying no types. */\n types?: string[]\n /** This event is fired when a PlaceResult is made available for a Place the user has selected. If the user enters the name of a Place that was not suggested by the control and presses the Enter key, or if a Place Details request fails, the PlaceResult contains the user input in the name property, with no other properties defined. */\n onPlaceChanged?: () => void\n /** This callback is called when the autocomplete instance has loaded. It is called with the autocomplete instance. */\n onLoad?: (autocomplete: google.maps.places.Autocomplete) => void\n /** This callback is called when the component unmounts. It is called with the autocomplete instance. */\n onUnmount?: (autocomplete: google.maps.places.Autocomplete) => void\n}\n\nexport class Autocomplete extends React.PureComponent<AutocompleteProps, AutocompleteState> {\n static contextType = MapContext\n\n registeredEvents: google.maps.MapsEventListener[] = []\n containerElement: React.RefObject<HTMLDivElement> = React.createRef()\n\n state: AutocompleteState = {\n autocomplete: null,\n }\n\n setAutocompleteCallback = (): void => {\n if (this.state.autocomplete !== null && this.props.onLoad) {\n this.props.onLoad(this.state.autocomplete)\n }\n }\n\n componentDidMount(): void {\n invariant(\n !!google.maps.places,\n 'You need to provide libraries={[\"places\"]} prop to <LoadScript /> component %s',\n google.maps.places\n )\n\n // TODO: why current could be equal null?\n // eslint-disable-next-line @typescript-eslint/ban-ts-ignore\n // @ts-ignore\n const input = this.containerElement.current.querySelector('input')\n\n if (input) {\n const autocomplete = new google.maps.places.Autocomplete(input, this.props.options)\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps: {},\n nextProps: this.props,\n instance: autocomplete,\n })\n\n this.setState(function setAutocomplete() {\n return {\n autocomplete,\n }\n }, this.setAutocompleteCallback)\n }\n }\n\n componentDidUpdate(prevProps: AutocompleteProps): void {\n unregisterEvents(this.registeredEvents)\n\n this.registeredEvents = applyUpdatersToPropsAndRegisterEvents({\n updaterMap,\n eventMap,\n prevProps,\n nextProps: this.props,\n instance: this.state.autocomplete,\n })\n }\n\n componentWillUnmount(): void {\n if (this.state.autocomplete !== null) {\n unregisterEvents(this.registeredEvents)\n }\n }\n\n render(): React.ReactNode {\n return <div ref={this.containerElement}>{React.Children.only(this.props.children)}</div>\n }\n}\n\nexport default Autocomplete\n"],"names":["MapContext","createContext","useGoogleMap","useContext","invariant","map","reduce","obj","fn","acc","Object","keys","reducer","newAcc","key","forEach","iterator","applyUpdaterToNextProps","updaterMap","prevProps","nextProps","instance","iter","nextValue","registerEvents","props","eventMap","registeredList","googleEventName","onEventName","push","google","maps","event","addListener","unregisterEvent","registered","removeListener","unregisterEvents","events","applyUpdatersToPropsAndRegisterEvents","registeredEvents","onDblClick","onDragEnd","onDragStart","onMapTypeIdChanged","onMouseMove","onMouseOut","onMouseOver","onMouseDown","onMouseUp","onRightClick","onTilesLoaded","onBoundsChanged","onCenterChanged","onClick","onDrag","onHeadingChanged","onIdle","onProjectionChanged","onResize","onTiltChanged","onZoomChanged","extraMapTypes","extra","forEachExtra","it","i","mapTypes","set","String","center","setCenter","clickableIcons","clickable","setClickableIcons","heading","setHeading","mapTypeId","setMapTypeId","options","setOptions","streetView","setStreetView","tilt","setTilt","zoom","setZoom","GoogleMap","mapRef","Map","latLng","getInstance","panTo","state","onLoad","ref","componentDidMount","setState","setMap","setMapCallback","componentDidUpdate","componentWillUnmount","onUnmount","render","React","id","getRef","style","mapContainerStyle","className","mapContainerClassName","Provider","value","children","isBrowser","document","injectScript","url","Promise","reject","Error","injectScriptCallback","resolve","existingScript","getElementById","windowWithGoogleMap","window","dataStateAttribute","getAttribute","src","originalInitMap","initMap","originalErrorCallback","onerror","err","remove","script","createElement","type","async","setAttribute","onload","head","appendChild","console","error","isRobotoStyle","element","href","indexOf","tagName","toLowerCase","styleSheet","cssText","replace","innerHTML","preventGoogleFonts","getElementsByTagName","trueInsertBefore","insertBefore","bind","newElement","referenceElement","Reflect","apply","trueAppend","textNode","makeLoadScriptUrl","googleMapsApiKey","googleMapsClientId","version","language","region","libraries","channel","params","length","sort","join","cleaningUp","DefaultLoadingElement","defaultLoadScriptProps","LoadScript","loaded","promiseCallback","timer","setInterval","interval","clearInterval","parentNode","removeChild","Array","prototype","slice","call","filter","includes","link","innerText","undefined","preventGoogleFontsLoading","injectScriptOptions","then","setLoaded","onError","isCleaningUp","warn","cleanup","cleanupCallback","timeoutCallback","check","current","setTimeout","loadingElement","previouslyLoadedUrl","useLoadScript","isMounted","isLoaded","loadError","setLoadError","trackMountedState","applyPreventGoogleFonts","validateLoadedState","loadScriptAndModifyLoadedState","setLoadedIfMounted","handleInjectError","prevLibraries","checkPerformance","defaultLoadingElement","LoadScriptNext","hookOptions","handleOnLoad","handleOnError","handleOnUnmount","TrafficLayer","trafficLayer","context","setTrafficLayer","setTrafficLayerCallback","PureComponent","BicyclingLayer","bicyclingLayer","setBicyclingLayer","setBicyclingLayerCallback","TransitLayer","transitLayer","setTransitLayer","setTransitLayerCallback","onCircleComplete","onMarkerComplete","onOverlayComplete","onPolygonComplete","onPolylineComplete","onRectangleComplete","drawingMode","setDrawingMode","DrawingManager","drawingManager","drawing","setDrawingManager","setDrawingManagerCallback","onAnimationChanged","onClickableChanged","onCursorChanged","onDraggableChanged","onFlatChanged","onIconChanged","onPositionChanged","onShapeChanged","onTitleChanged","onVisibleChanged","onZindexChanged","animation","setAnimation","setClickable","cursor","setCursor","draggable","setDraggable","icon","setIcon","label","setLabel","opacity","setOpacity","position","setPosition","shape","setShape","title","setTitle","visible","setVisible","zIndex","setZIndex","Marker","marker","markerOptions","clusterer","addMarker","noClustererRedraw","setMarker","setMarkerCallback","removeMarker","onClusteringBegin","onClusteringEnd","averageCenter","setAverageCenter","batchSizeIE","setBatchSizeIE","calculator","setCalculator","clusterClass","setClusterClass","enableRetinaIcons","setEnableRetinaIcons","gridSize","setGridSize","ignoreHidden","setIgnoreHidden","imageExtension","setImageExtension","imagePath","setImagePath","imageSizes","setImageSizes","maxZoom","setMaxZoom","minimumClusterSize","setMinimumClusterSize","styles","setStyles","zoomOnClick","setZoomOnClick","ClustererComponent","markerClusterer","Clusterer","setClusterer","setClustererCallback","onCloseClick","onContentChanged","onDomReady","LatLng","lat","lng","InfoBoxComponent","infoBox","anchor","open","getPosition","containerElement","setContent","infoBoxOptions","positionLatLng","GoogleMapsInfoBox","setInfoBoxCallback","close","ReactDOM","only","InfoWindow","infoWindow","setInfoWindow","setInfoWindowCallback","editable","setEditable","path","setPath","Polyline","polyline","setPolyline","setPolylineCallback","paths","setPaths","Polygon","polygon","setPolygon","setPolygonCallback","bounds","setBounds","Rectangle","rectangle","setRectangle","setRectangleCallback","onRadiusChanged","radius","setRadius","Circle","circle","setCircle","setCircleCallback","onAddFeature","onRemoveFeature","onRemoveProperty","onSetGeometry","onSetProperty","add","features","addgeojson","geojson","addGeoJson","contains","feature","foreach","callback","loadgeojson","loadGeoJson","overridestyle","overrideStyle","revertstyle","revertStyle","controlposition","controlPosition","setControlPosition","controls","setControls","drawingmode","mode","setStyle","togeojson","toGeoJson","Data","data","setData","setDataCallback","onDefaultViewportChanged","onStatusChanged","setUrl","KmlLayer","kmlLayer","setLmlLayer","setKmlLayerCallback","getOffsetOverride","getPixelPositionOffset","offsetWidth","offsetHeight","createLatLng","inst","Type","createLatLngBounds","ne","sw","ensureOfType","factory","getLayoutStylesByBounds","mapCanvasProjection","offset","fromLatLngToDivPixel","getNorthEast","getSouthWest","left","x","top","y","width","height","getLayoutStylesByPosition","point","getLayoutStyles","LatLngBounds","ContentMountHandler","OverlayView","overlayView","onPositionElement","getProjection","layoutStyles","assign","mapPaneName","mapPanes","getPanes","forceUpdate","onAdd","draw","onRemove","setOverlayView","setOverlayViewCallback","noop","GroundOverlay","groundOverlay","setGroundOverlay","setGroundOverlayCallback","HeatmapLayer","heatmapLayer","visualization","setHeatmapLayer","setHeatmapLayerCallback","onPanoChanged","onPovChanged","register","provider","registerPanoProvider","links","setLinks","motionTracking","setMotionTracking","pano","setPano","pov","setPov","StreetViewPanorama","streetViewPanorama","getStreetView","setStreetViewPanorama","setStreetViewPanoramaCallback","StreetViewService","streetViewService","setStreetViewService","DirectionsService","directionsService","setDirectionsService","setDirectionsServiceCallback","route","onDirectionsChanged","directions","setDirections","panel","setPanel","routeIndex","setRouteIndex","DirectionsRenderer","directionsRenderer","setDirectionsRenderer","setDirectionsRendererCallback","DistanceMatrixService","distanceMatrixService","setDistanceMatrixService","setDistanceMatrixServiceCallback","getDistanceMatrix","onPlacesChanged","StandaloneSearchBox","searchBox","places","input","querySelector","SearchBox","setSearchBox","setSearchBoxCallback","onPlaceChanged","restrictions","setComponentRestrictions","fields","setFields","types","setTypes","Autocomplete","autocomplete","setAutocomplete","setAutocompleteCallback"],"mappings":"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"}
\No newline at end of file