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
JavaScript
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