google-maps-js-api-react
Version:
Fast, tree-shakable, and light-weight React components and hooks for integrating Google Maps API functionality
72 lines (67 loc) • 2.69 kB
JavaScript
var chunkXCNRHAXY_cjs = require('./chunk-XCNRHAXY.cjs');
var chunkSNJM2CWB_cjs = require('./chunk-SNJM2CWB.cjs');
var chunkLHLLIGUT_cjs = require('./chunk-LHLLIGUT.cjs');
var chunk2XKLZKVG_cjs = require('./chunk-2XKLZKVG.cjs');
var react = require('react');
var reactDom = require('react-dom');
var noop = require('lodash.noop');
var useConst = require('react-helpful-utils/useConst');
var googleMapsJsApiLoader = require('google-maps-js-api-loader');
var setRef = require('react-helpful-utils/setRef');
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
var noop__default = /*#__PURE__*/_interopDefault(noop);
var useConst__default = /*#__PURE__*/_interopDefault(useConst);
var setRef__default = /*#__PURE__*/_interopDefault(setRef);
var _OverlayView;
var OverlayView = react.forwardRef(
(props, outerRef) => useConst__default.default(() => {
let draw = noop__default.default;
let lat;
let lng;
let map;
const { preventMapHits, preventMapHitsAndGestures } = props;
const ref = chunkXCNRHAXY_cjs.handleRef_default((el) => {
if (!_OverlayView) {
_OverlayView = googleMapsJsApiLoader.GoogleMapsLoader.get(chunkLHLLIGUT_cjs.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__default.default;
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__default.default(outerRef, el);
return () => {
overlayView.setMap(null);
setRef__default.default(outerRef, null);
draw = noop__default.default;
};
});
return (props2) => {
map = react.useContext(chunk2XKLZKVG_cjs.MapContext_default);
react.useLayoutEffect(draw, [lat = props2.lat, lng = props2.lng]);
return reactDom.createPortal(
props2.render(ref),
react.useContext(chunkSNJM2CWB_cjs.PanesContext_default)[props2.mapPaneLayer || "overlayMouseTarget"]
);
};
})(props)
);
var OverlayView_default = OverlayView;
exports.OverlayView_default = OverlayView_default;
//# sourceMappingURL=chunk-CZMCKSGR.cjs.map
//# sourceMappingURL=chunk-CZMCKSGR.cjs.map
;