UNPKG

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
'use strict'; 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