UNPKG

google-maps-js-api-react

Version:

Fast, tree-shakable, and light-weight React components and hooks for integrating Google Maps API functionality

64 lines (62 loc) 2.18 kB
import { handleRef_default } from './chunk-CEDFL5Z3.js'; import { PanesContext_default } from './chunk-EJQ2B6OM.js'; import { MAPS } from './chunk-IGDL35GK.js'; import { MapContext_default } from './chunk-ENX7YFEM.js'; import { forwardRef, useContext, useLayoutEffect } from 'react'; import { createPortal } from 'react-dom'; import noop from 'lodash.noop'; import useConst from 'react-helpful-utils/useConst'; import { GoogleMapsLoader } from 'google-maps-js-api-loader'; import setRef from 'react-helpful-utils/setRef'; var _OverlayView; var OverlayView = forwardRef( (props, outerRef) => useConst(() => { let draw = noop; let lat; let lng; let map; const { preventMapHits, preventMapHitsAndGestures } = props; const ref = handleRef_default((el) => { if (!_OverlayView) { _OverlayView = GoogleMapsLoader.get(MAPS).OverlayView; } if (preventMapHitsAndGestures) { _OverlayView.preventMapHitsAndGesturesFrom(el); } else if (preventMapHits) { _OverlayView.preventMapHitsFrom(el); } const style = el.style; const overlayView = new _OverlayView(); const getProjection = overlayView.getProjection.bind(overlayView); overlayView.onAdd = overlayView.onRemove = noop; style.position = "absolute"; draw = () => { const pos = getProjection().fromLatLngToDivPixel({ lat, lng }); if (pos) { style.left = pos.x + "px"; style.top = pos.y + "px"; } }; overlayView.draw = draw; overlayView.setMap(map); setRef(outerRef, el); return () => { overlayView.setMap(null); setRef(outerRef, null); draw = noop; }; }); return (props2) => { map = useContext(MapContext_default); useLayoutEffect(draw, [lat = props2.lat, lng = props2.lng]); return createPortal( props2.render(ref), useContext(PanesContext_default)[props2.mapPaneLayer || "overlayMouseTarget"] ); }; })(props) ); var OverlayView_default = OverlayView; export { OverlayView_default }; //# sourceMappingURL=chunk-ZGQ26VLA.js.map //# sourceMappingURL=chunk-ZGQ26VLA.js.map