@reltio/components 1.4.1432 → 1.4.1433

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,6 @@
1
+ export declare const useFitMapBounds: ({ markers, activeOverlay, isSearchOnMapMove, map }: {
2
+ markers: any;
3
+ activeOverlay: any;
4
+ isSearchOnMapMove: any;
5
+ map: any;
6
+ }) => void;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useFitMapBounds = void 0;
4
+ var react_1 = require("react");
5
+ var hooks_1 = require("../../../hooks");
6
+ var helpers_1 = require("../helpers");
7
+ var useFitMapBounds = function (_a) {
8
+ var markers = _a.markers, activeOverlay = _a.activeOverlay, isSearchOnMapMove = _a.isSearchOnMapMove, map = _a.map;
9
+ var apiIsLoaded = Boolean(map && window.google);
10
+ var prevMarkers = (0, hooks_1.usePrevious)(markers);
11
+ var prevActiveOverlay = (0, hooks_1.usePrevious)(activeOverlay);
12
+ var prevApiIsLoaded = (0, hooks_1.usePrevious)(apiIsLoaded);
13
+ (0, react_1.useEffect)(function () {
14
+ var activeOverlayChanged = prevActiveOverlay !== activeOverlay;
15
+ var markersChanged = prevMarkers !== markers;
16
+ var apiIsLoadedChanged = prevApiIsLoaded !== apiIsLoaded;
17
+ var shouldUseFitMapBoundsForOverlay = apiIsLoaded && activeOverlay && (activeOverlayChanged || apiIsLoadedChanged);
18
+ var shouldUseFitMapBoundsForMarkers = apiIsLoaded && !isSearchOnMapMove && markers.length && (markersChanged || apiIsLoadedChanged);
19
+ if (shouldUseFitMapBoundsForMarkers) {
20
+ (0, helpers_1.fitMapBoundsForMarkers)(markers, map, activeOverlay);
21
+ }
22
+ else if (shouldUseFitMapBoundsForOverlay) {
23
+ (0, helpers_1.fitMapBoundsForOverlay)(map, activeOverlay);
24
+ }
25
+ // eslint-disable-next-line react-hooks/exhaustive-deps
26
+ }, [apiIsLoaded, markers, activeOverlay]);
27
+ };
28
+ exports.useFitMapBounds = useFitMapBounds;
@@ -47,39 +47,24 @@ var TopCenterMapControls_1 = require("./MapControls/TopCenterMapControls/TopCent
47
47
  var helpers_1 = require("./helpers");
48
48
  var EntityMarker_1 = __importDefault(require("./EntityMarker/EntityMarker"));
49
49
  var constants_1 = require("../../constants");
50
+ var useFitMapBounds_1 = require("./hooks/useFitMapBounds");
50
51
  var styles_1 = require("./styles");
51
- var hooks_1 = require("../../hooks");
52
52
  var ON_MAP_MOVE_DEBOUNCE_INTERVAL = 1000;
53
53
  var libraries = ['drawing'];
54
- var useFitMapBounds = function (_a) {
55
- var markers = _a.markers, activeOverlay = _a.activeOverlay, isSearchOnMapMove = _a.isSearchOnMapMove, map = _a.map;
56
- var prevMarkers = (0, hooks_1.usePrevious)(markers);
57
- var prevActiveOverlay = (0, hooks_1.usePrevious)(activeOverlay);
58
- var apiIsLoaded = map && window.google;
59
- (0, react_1.useEffect)(function () {
60
- if (apiIsLoaded && !isSearchOnMapMove && markers.length && markers !== prevMarkers) {
61
- (0, helpers_1.fitMapBoundsForMarkers)(markers, map, activeOverlay);
62
- }
63
- else if (apiIsLoaded && activeOverlay && activeOverlay !== prevActiveOverlay) {
64
- (0, helpers_1.fitMapBoundsForOverlay)(map, activeOverlay);
65
- }
66
- // eslint-disable-next-line react-hooks/exhaustive-deps
67
- }, [map, markers, activeOverlay]);
68
- };
69
54
  var ReltioMap = function (_a) {
70
- var _b = _a.markers, markers = _b === void 0 ? [] : _b, mapKey = _a.mapKey, defaultZoom = _a.defaultZoom, defaultCenter = _a.defaultCenter, loadingElement = _a.loadingElement, isSearchOnMapMove = _a.isSearchOnMapMove, isSearchEnabled = _a.isSearchEnabled, activeOverlay = _a.activeOverlay, overlayOptions = _a.overlayOptions, _c = _a.drawingModes, drawingModes = _c === void 0 ? [] : _c, markerClusterer = _a.markerClusterer, markerClustererOptions = _a.markerClustererOptions, mapOptions = _a.mapOptions, mapContainerClassName = _a.mapContainerClassName, onMapBoundsChanged = _a.onMapBoundsChanged, onOverlayUpdated = _a.onOverlayUpdated, onMarkerClicked = _a.onMarkerClicked;
55
+ var _b = _a.markers, markers = _b === void 0 ? [] : _b, mapKey = _a.mapKey, defaultZoom = _a.defaultZoom, defaultCenter = _a.defaultCenter, loadingElement = _a.loadingElement, isSearchOnMapMove = _a.isSearchOnMapMove, isSearchEnabled = _a.isSearchEnabled, activeOverlay = _a.activeOverlay, _c = _a.overlayOptions, overlayOptions = _c === void 0 ? {} : _c, _d = _a.drawingModes, drawingModes = _d === void 0 ? [] : _d, markerClusterer = _a.markerClusterer, markerClustererOptions = _a.markerClustererOptions, _e = _a.mapOptions, mapOptions = _e === void 0 ? {} : _e, mapContainerClassName = _a.mapContainerClassName, onMapBoundsChanged = _a.onMapBoundsChanged, onOverlayUpdated = _a.onOverlayUpdated, onMarkerClicked = _a.onMarkerClicked;
71
56
  var styles = (0, styles_1.useStyles)();
72
- var _d = (0, api_1.useJsApiLoader)({
57
+ var _f = (0, api_1.useJsApiLoader)({
73
58
  googleMapsApiKey: mapKey,
74
59
  libraries: libraries
75
- }), isLoaded = _d.isLoaded, loadError = _d.loadError;
60
+ }), isLoaded = _f.isLoaded, loadError = _f.loadError;
76
61
  var mapMoveEndTimer = (0, react_1.useRef)(null);
77
- var _e = (0, react_1.useState)(null), map = _e[0], setMap = _e[1];
78
- var _f = (0, react_1.useState)(null), polygon = _f[0], setPolygon = _f[1];
79
- var _g = (0, react_1.useState)(null), drawingMode = _g[0], setDrawingMode = _g[1];
80
- useFitMapBounds({ markers: markers, activeOverlay: activeOverlay, map: map, isSearchOnMapMove: isSearchOnMapMove });
81
- var allOverlayOptions = (0, react_1.useMemo)(function () { return (__assign(__assign({}, constants_1.DEFAULT_OVERLAY_OPTIONS), (overlayOptions || {}))); }, [overlayOptions]);
82
- var googleMapOptions = (0, react_1.useMemo)(function () { return (__assign(__assign({}, constants_1.DEFAULT_GOOGLE_MAP_OPTIONS), (mapOptions || {}))); }, [mapOptions]);
62
+ var _g = (0, react_1.useState)(null), map = _g[0], setMap = _g[1];
63
+ var _h = (0, react_1.useState)(null), polygon = _h[0], setPolygon = _h[1];
64
+ var _j = (0, react_1.useState)(null), drawingMode = _j[0], setDrawingMode = _j[1];
65
+ (0, useFitMapBounds_1.useFitMapBounds)({ markers: markers, activeOverlay: activeOverlay, map: map, isSearchOnMapMove: isSearchOnMapMove });
66
+ var allOverlayOptions = (0, react_1.useMemo)(function () { return (__assign(__assign({}, constants_1.DEFAULT_OVERLAY_OPTIONS), overlayOptions)); }, [overlayOptions]);
67
+ var googleMapOptions = (0, react_1.useMemo)(function () { return (__assign(__assign({}, constants_1.DEFAULT_GOOGLE_MAP_OPTIONS), mapOptions)); }, [mapOptions]);
83
68
  var handleChangeIsSearchOnMapMove = (0, react_1.useCallback)(function (isSearchOnMapMove) {
84
69
  onMapBoundsChanged(isSearchOnMapMove ? (0, helpers_1.getMapBoundsPolygon)(map) : null);
85
70
  setDrawingMode(null);
@@ -89,39 +74,39 @@ var ReltioMap = function (_a) {
89
74
  clearTimeout(mapMoveEndTimer.current);
90
75
  }, []);
91
76
  var handleMapMoveEnd = (0, react_1.useCallback)(function () {
92
- if (isSearchOnMapMove) {
93
- onMapBoundsChanged((0, helpers_1.getMapBoundsPolygon)(map));
94
- }
77
+ if (!isSearchOnMapMove)
78
+ return;
79
+ onMapBoundsChanged((0, helpers_1.getMapBoundsPolygon)(map));
95
80
  }, [isSearchOnMapMove, map, onMapBoundsChanged]);
96
81
  var handleMapIdle = (0, react_1.useCallback)(function () {
97
- if (isSearchOnMapMove) {
98
- clearTimeout(mapMoveEndTimer.current);
99
- mapMoveEndTimer.current = setTimeout(handleMapMoveEnd, ON_MAP_MOVE_DEBOUNCE_INTERVAL);
100
- }
82
+ if (!isSearchOnMapMove)
83
+ return;
84
+ clearTimeout(mapMoveEndTimer.current);
85
+ mapMoveEndTimer.current = setTimeout(handleMapMoveEnd, ON_MAP_MOVE_DEBOUNCE_INTERVAL);
101
86
  }, [handleMapMoveEnd, isSearchOnMapMove]);
102
87
  var handleOverlayChange = (0, react_1.useCallback)(function (e, propOverlay) {
103
88
  var _a;
104
- var stateOverlay = propOverlay ||
105
- (polygon && {
106
- type: constants_1.MAP_DRAWING_MODES.POLYGON,
107
- overlay: polygon
108
- });
109
- if (!(0, ramda_1.isEmpty)(stateOverlay) && typeof onOverlayUpdated === 'function') {
110
- var overlay_1 = stateOverlay.overlay, type = stateOverlay.type;
111
- var typeActions = (_a = {},
112
- _a[constants_1.MAP_DRAWING_MODES.POLYGON] = function () {
113
- return overlay_1
114
- .getPath()
115
- .getArray()
116
- .map(function (latlng) { return [latlng.lat(), latlng.lng()]; });
117
- },
118
- _a[constants_1.MAP_DRAWING_MODES.CIRCLE] = function () {
119
- return { radius: overlay_1.getRadius() / 1000, center: overlay_1.getCenter() };
120
- },
121
- _a);
122
- var data = typeActions[type] && typeActions[type]();
123
- data && onOverlayUpdated({ data: data, type: type });
124
- }
89
+ var _b;
90
+ var polygonStateOverlay = polygon && { type: constants_1.MAP_DRAWING_MODES.POLYGON, overlay: polygon };
91
+ var stateOverlay = propOverlay || polygonStateOverlay;
92
+ if ((0, ramda_1.isEmpty)(stateOverlay) || !onOverlayUpdated)
93
+ return;
94
+ var overlay = stateOverlay.overlay, type = stateOverlay.type;
95
+ var getPolygonLatLngCoordinates = function () {
96
+ return overlay
97
+ .getPath()
98
+ .getArray()
99
+ .map(function (latlng) { return [latlng.lat(), latlng.lng()]; });
100
+ };
101
+ var getCircleParameters = function () { return ({ radius: overlay.getRadius() / 1000, center: overlay.getCenter() }); };
102
+ var typeActions = (_a = {},
103
+ _a[constants_1.MAP_DRAWING_MODES.POLYGON] = getPolygonLatLngCoordinates,
104
+ _a[constants_1.MAP_DRAWING_MODES.CIRCLE] = getCircleParameters,
105
+ _a);
106
+ var data = (_b = typeActions[type]) === null || _b === void 0 ? void 0 : _b.call(typeActions);
107
+ if (!data)
108
+ return;
109
+ onOverlayUpdated({ data: data, type: type });
125
110
  }, [onOverlayUpdated, polygon]);
126
111
  var handleOverlayComplete = (0, react_1.useCallback)(function (type) { return function (overlay) {
127
112
  handleOverlayChange(null, { type: type, overlay: overlay });
@@ -145,16 +130,18 @@ var ReltioMap = function (_a) {
145
130
  if (!isLoaded) {
146
131
  return loadingElement;
147
132
  }
133
+ var shouldRenderDrawingManager = isSearchEnabled && Boolean(drawingModes.length);
134
+ var shouldRenderRightMapControls = map && isSearchEnabled && Boolean(drawingModes.length);
135
+ var shouldRenderCenterMapControls = map && isSearchEnabled;
136
+ var shouldRenderPolygon = !(0, helpers_1.getDrawingMode)(drawingMode) && activeOverlay && (0, ramda_1.propEq)('type', constants_1.MAP_DRAWING_MODES.POLYGON, activeOverlay);
148
137
  return (react_1.default.createElement(api_1.GoogleMap, { mapTypeId: window.google.maps.MapTypeId.ROADMAP, options: googleMapOptions, onLoad: setMap, zoom: defaultZoom, center: defaultCenter, onZoomChanged: handleMapMoveStart, onDragStart: handleMapMoveStart, onIdle: handleMapIdle, mapContainerClassName: mapContainerClassName },
149
- map && isSearchEnabled && Boolean(drawingModes.length) && (react_1.default.createElement(MapControlContrainer_1.MapControlContainer, { className: styles.mapControlContainer, position: window.google.maps.ControlPosition.TOP_RIGHT, map: map },
138
+ shouldRenderRightMapControls && (react_1.default.createElement(MapControlContrainer_1.MapControlContainer, { className: styles.mapControlContainer, position: window.google.maps.ControlPosition.TOP_RIGHT, map: map },
150
139
  react_1.default.createElement(TopRightMapControls_1.TopRightMapControls, { hasActiveOverlay: !!activeOverlay, drawingModes: drawingModes, drawingMode: drawingMode, onDrawingModeChanged: setDrawingMode, onClearOverlay: handleClearOverlay }))),
151
- map && isSearchEnabled && (react_1.default.createElement(MapControlContrainer_1.MapControlContainer, { className: styles.mapControlContainer, position: window.google.maps.ControlPosition.TOP_CENTER, map: map },
140
+ shouldRenderCenterMapControls && (react_1.default.createElement(MapControlContrainer_1.MapControlContainer, { className: styles.mapControlContainer, position: window.google.maps.ControlPosition.TOP_CENTER, map: map },
152
141
  react_1.default.createElement(TopCenterMapControls_1.TopCenterMapControls, { onChangeIsSearchOnMapMove: handleChangeIsSearchOnMapMove, isSearchOnMapMove: isSearchOnMapMove }))),
153
142
  markerClusterer ? renderMarkerClusterer(markerClustererOptions) : renderMarkers(),
154
- !(0, helpers_1.getDrawingMode)(drawingMode) &&
155
- activeOverlay &&
156
- (0, ramda_1.propEq)('type', constants_1.MAP_DRAWING_MODES.POLYGON, activeOverlay) && (react_1.default.createElement(api_1.Polygon, { onLoad: setPolygon, path: activeOverlay.path, editable: true, options: allOverlayOptions, onMouseUp: handleOverlayChange, onDragEnd: handleOverlayChange })),
157
- isSearchEnabled && Boolean(drawingModes.length) && (react_1.default.createElement(api_1.DrawingManager, { onPolygonComplete: handleOverlayComplete(constants_1.MAP_DRAWING_MODES.POLYGON), onCircleComplete: handleOverlayComplete(constants_1.MAP_DRAWING_MODES.CIRCLE), drawingMode: (0, helpers_1.getDrawingMode)(drawingMode), options: {
143
+ shouldRenderPolygon && (react_1.default.createElement(api_1.Polygon, { onLoad: setPolygon, path: activeOverlay.path, editable: true, options: allOverlayOptions, onMouseUp: handleOverlayChange, onDragEnd: handleOverlayChange })),
144
+ shouldRenderDrawingManager && (react_1.default.createElement(api_1.DrawingManager, { onPolygonComplete: handleOverlayComplete(constants_1.MAP_DRAWING_MODES.POLYGON), onCircleComplete: handleOverlayComplete(constants_1.MAP_DRAWING_MODES.CIRCLE), drawingMode: (0, helpers_1.getDrawingMode)(drawingMode), options: {
158
145
  drawingControl: false,
159
146
  circleOptions: allOverlayOptions,
160
147
  polygonOptions: allOverlayOptions
@@ -0,0 +1,6 @@
1
+ export declare const useFitMapBounds: ({ markers, activeOverlay, isSearchOnMapMove, map }: {
2
+ markers: any;
3
+ activeOverlay: any;
4
+ isSearchOnMapMove: any;
5
+ map: any;
6
+ }) => void;
@@ -0,0 +1,24 @@
1
+ import { useEffect } from 'react';
2
+ import { usePrevious } from '../../../hooks';
3
+ import { fitMapBoundsForMarkers, fitMapBoundsForOverlay } from '../helpers';
4
+ export var useFitMapBounds = function (_a) {
5
+ var markers = _a.markers, activeOverlay = _a.activeOverlay, isSearchOnMapMove = _a.isSearchOnMapMove, map = _a.map;
6
+ var apiIsLoaded = Boolean(map && window.google);
7
+ var prevMarkers = usePrevious(markers);
8
+ var prevActiveOverlay = usePrevious(activeOverlay);
9
+ var prevApiIsLoaded = usePrevious(apiIsLoaded);
10
+ useEffect(function () {
11
+ var activeOverlayChanged = prevActiveOverlay !== activeOverlay;
12
+ var markersChanged = prevMarkers !== markers;
13
+ var apiIsLoadedChanged = prevApiIsLoaded !== apiIsLoaded;
14
+ var shouldUseFitMapBoundsForOverlay = apiIsLoaded && activeOverlay && (activeOverlayChanged || apiIsLoadedChanged);
15
+ var shouldUseFitMapBoundsForMarkers = apiIsLoaded && !isSearchOnMapMove && markers.length && (markersChanged || apiIsLoadedChanged);
16
+ if (shouldUseFitMapBoundsForMarkers) {
17
+ fitMapBoundsForMarkers(markers, map, activeOverlay);
18
+ }
19
+ else if (shouldUseFitMapBoundsForOverlay) {
20
+ fitMapBoundsForOverlay(map, activeOverlay);
21
+ }
22
+ // eslint-disable-next-line react-hooks/exhaustive-deps
23
+ }, [apiIsLoaded, markers, activeOverlay]);
24
+ };
@@ -9,48 +9,33 @@ var __assign = (this && this.__assign) || function () {
9
9
  };
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
- import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
12
+ import React, { useCallback, useMemo, useRef, useState } from 'react';
13
13
  import { propEq, isEmpty, prop } from 'ramda';
14
14
  import { GoogleMap, useJsApiLoader, Polygon, DrawingManager, MarkerClusterer } from '@react-google-maps/api';
15
15
  import { MapControlContainer } from './MapControls/MapControlContainer/MapControlContrainer';
16
16
  import { TopRightMapControls } from './MapControls/TopRightMapControls/TopRightMapControls';
17
17
  import { TopCenterMapControls } from './MapControls/TopCenterMapControls/TopCenterMapControls';
18
- import { getMapBoundsPolygon, getDrawingMode, fitMapBoundsForMarkers, fitMapBoundsForOverlay } from './helpers';
18
+ import { getMapBoundsPolygon, getDrawingMode } from './helpers';
19
19
  import EntityMarker from './EntityMarker/EntityMarker';
20
20
  import { DEFAULT_GOOGLE_MAP_OPTIONS, DEFAULT_OVERLAY_OPTIONS, MAP_DRAWING_MODES } from '../../constants';
21
+ import { useFitMapBounds } from './hooks/useFitMapBounds';
21
22
  import { useStyles } from './styles';
22
- import { usePrevious } from '../../hooks';
23
23
  var ON_MAP_MOVE_DEBOUNCE_INTERVAL = 1000;
24
24
  var libraries = ['drawing'];
25
- var useFitMapBounds = function (_a) {
26
- var markers = _a.markers, activeOverlay = _a.activeOverlay, isSearchOnMapMove = _a.isSearchOnMapMove, map = _a.map;
27
- var prevMarkers = usePrevious(markers);
28
- var prevActiveOverlay = usePrevious(activeOverlay);
29
- var apiIsLoaded = map && window.google;
30
- useEffect(function () {
31
- if (apiIsLoaded && !isSearchOnMapMove && markers.length && markers !== prevMarkers) {
32
- fitMapBoundsForMarkers(markers, map, activeOverlay);
33
- }
34
- else if (apiIsLoaded && activeOverlay && activeOverlay !== prevActiveOverlay) {
35
- fitMapBoundsForOverlay(map, activeOverlay);
36
- }
37
- // eslint-disable-next-line react-hooks/exhaustive-deps
38
- }, [map, markers, activeOverlay]);
39
- };
40
25
  export var ReltioMap = function (_a) {
41
- var _b = _a.markers, markers = _b === void 0 ? [] : _b, mapKey = _a.mapKey, defaultZoom = _a.defaultZoom, defaultCenter = _a.defaultCenter, loadingElement = _a.loadingElement, isSearchOnMapMove = _a.isSearchOnMapMove, isSearchEnabled = _a.isSearchEnabled, activeOverlay = _a.activeOverlay, overlayOptions = _a.overlayOptions, _c = _a.drawingModes, drawingModes = _c === void 0 ? [] : _c, markerClusterer = _a.markerClusterer, markerClustererOptions = _a.markerClustererOptions, mapOptions = _a.mapOptions, mapContainerClassName = _a.mapContainerClassName, onMapBoundsChanged = _a.onMapBoundsChanged, onOverlayUpdated = _a.onOverlayUpdated, onMarkerClicked = _a.onMarkerClicked;
26
+ var _b = _a.markers, markers = _b === void 0 ? [] : _b, mapKey = _a.mapKey, defaultZoom = _a.defaultZoom, defaultCenter = _a.defaultCenter, loadingElement = _a.loadingElement, isSearchOnMapMove = _a.isSearchOnMapMove, isSearchEnabled = _a.isSearchEnabled, activeOverlay = _a.activeOverlay, _c = _a.overlayOptions, overlayOptions = _c === void 0 ? {} : _c, _d = _a.drawingModes, drawingModes = _d === void 0 ? [] : _d, markerClusterer = _a.markerClusterer, markerClustererOptions = _a.markerClustererOptions, _e = _a.mapOptions, mapOptions = _e === void 0 ? {} : _e, mapContainerClassName = _a.mapContainerClassName, onMapBoundsChanged = _a.onMapBoundsChanged, onOverlayUpdated = _a.onOverlayUpdated, onMarkerClicked = _a.onMarkerClicked;
42
27
  var styles = useStyles();
43
- var _d = useJsApiLoader({
28
+ var _f = useJsApiLoader({
44
29
  googleMapsApiKey: mapKey,
45
30
  libraries: libraries
46
- }), isLoaded = _d.isLoaded, loadError = _d.loadError;
31
+ }), isLoaded = _f.isLoaded, loadError = _f.loadError;
47
32
  var mapMoveEndTimer = useRef(null);
48
- var _e = useState(null), map = _e[0], setMap = _e[1];
49
- var _f = useState(null), polygon = _f[0], setPolygon = _f[1];
50
- var _g = useState(null), drawingMode = _g[0], setDrawingMode = _g[1];
33
+ var _g = useState(null), map = _g[0], setMap = _g[1];
34
+ var _h = useState(null), polygon = _h[0], setPolygon = _h[1];
35
+ var _j = useState(null), drawingMode = _j[0], setDrawingMode = _j[1];
51
36
  useFitMapBounds({ markers: markers, activeOverlay: activeOverlay, map: map, isSearchOnMapMove: isSearchOnMapMove });
52
- var allOverlayOptions = useMemo(function () { return (__assign(__assign({}, DEFAULT_OVERLAY_OPTIONS), (overlayOptions || {}))); }, [overlayOptions]);
53
- var googleMapOptions = useMemo(function () { return (__assign(__assign({}, DEFAULT_GOOGLE_MAP_OPTIONS), (mapOptions || {}))); }, [mapOptions]);
37
+ var allOverlayOptions = useMemo(function () { return (__assign(__assign({}, DEFAULT_OVERLAY_OPTIONS), overlayOptions)); }, [overlayOptions]);
38
+ var googleMapOptions = useMemo(function () { return (__assign(__assign({}, DEFAULT_GOOGLE_MAP_OPTIONS), mapOptions)); }, [mapOptions]);
54
39
  var handleChangeIsSearchOnMapMove = useCallback(function (isSearchOnMapMove) {
55
40
  onMapBoundsChanged(isSearchOnMapMove ? getMapBoundsPolygon(map) : null);
56
41
  setDrawingMode(null);
@@ -60,39 +45,39 @@ export var ReltioMap = function (_a) {
60
45
  clearTimeout(mapMoveEndTimer.current);
61
46
  }, []);
62
47
  var handleMapMoveEnd = useCallback(function () {
63
- if (isSearchOnMapMove) {
64
- onMapBoundsChanged(getMapBoundsPolygon(map));
65
- }
48
+ if (!isSearchOnMapMove)
49
+ return;
50
+ onMapBoundsChanged(getMapBoundsPolygon(map));
66
51
  }, [isSearchOnMapMove, map, onMapBoundsChanged]);
67
52
  var handleMapIdle = useCallback(function () {
68
- if (isSearchOnMapMove) {
69
- clearTimeout(mapMoveEndTimer.current);
70
- mapMoveEndTimer.current = setTimeout(handleMapMoveEnd, ON_MAP_MOVE_DEBOUNCE_INTERVAL);
71
- }
53
+ if (!isSearchOnMapMove)
54
+ return;
55
+ clearTimeout(mapMoveEndTimer.current);
56
+ mapMoveEndTimer.current = setTimeout(handleMapMoveEnd, ON_MAP_MOVE_DEBOUNCE_INTERVAL);
72
57
  }, [handleMapMoveEnd, isSearchOnMapMove]);
73
58
  var handleOverlayChange = useCallback(function (e, propOverlay) {
74
59
  var _a;
75
- var stateOverlay = propOverlay ||
76
- (polygon && {
77
- type: MAP_DRAWING_MODES.POLYGON,
78
- overlay: polygon
79
- });
80
- if (!isEmpty(stateOverlay) && typeof onOverlayUpdated === 'function') {
81
- var overlay_1 = stateOverlay.overlay, type = stateOverlay.type;
82
- var typeActions = (_a = {},
83
- _a[MAP_DRAWING_MODES.POLYGON] = function () {
84
- return overlay_1
85
- .getPath()
86
- .getArray()
87
- .map(function (latlng) { return [latlng.lat(), latlng.lng()]; });
88
- },
89
- _a[MAP_DRAWING_MODES.CIRCLE] = function () {
90
- return { radius: overlay_1.getRadius() / 1000, center: overlay_1.getCenter() };
91
- },
92
- _a);
93
- var data = typeActions[type] && typeActions[type]();
94
- data && onOverlayUpdated({ data: data, type: type });
95
- }
60
+ var _b;
61
+ var polygonStateOverlay = polygon && { type: MAP_DRAWING_MODES.POLYGON, overlay: polygon };
62
+ var stateOverlay = propOverlay || polygonStateOverlay;
63
+ if (isEmpty(stateOverlay) || !onOverlayUpdated)
64
+ return;
65
+ var overlay = stateOverlay.overlay, type = stateOverlay.type;
66
+ var getPolygonLatLngCoordinates = function () {
67
+ return overlay
68
+ .getPath()
69
+ .getArray()
70
+ .map(function (latlng) { return [latlng.lat(), latlng.lng()]; });
71
+ };
72
+ var getCircleParameters = function () { return ({ radius: overlay.getRadius() / 1000, center: overlay.getCenter() }); };
73
+ var typeActions = (_a = {},
74
+ _a[MAP_DRAWING_MODES.POLYGON] = getPolygonLatLngCoordinates,
75
+ _a[MAP_DRAWING_MODES.CIRCLE] = getCircleParameters,
76
+ _a);
77
+ var data = (_b = typeActions[type]) === null || _b === void 0 ? void 0 : _b.call(typeActions);
78
+ if (!data)
79
+ return;
80
+ onOverlayUpdated({ data: data, type: type });
96
81
  }, [onOverlayUpdated, polygon]);
97
82
  var handleOverlayComplete = useCallback(function (type) { return function (overlay) {
98
83
  handleOverlayChange(null, { type: type, overlay: overlay });
@@ -116,16 +101,18 @@ export var ReltioMap = function (_a) {
116
101
  if (!isLoaded) {
117
102
  return loadingElement;
118
103
  }
104
+ var shouldRenderDrawingManager = isSearchEnabled && Boolean(drawingModes.length);
105
+ var shouldRenderRightMapControls = map && isSearchEnabled && Boolean(drawingModes.length);
106
+ var shouldRenderCenterMapControls = map && isSearchEnabled;
107
+ var shouldRenderPolygon = !getDrawingMode(drawingMode) && activeOverlay && propEq('type', MAP_DRAWING_MODES.POLYGON, activeOverlay);
119
108
  return (React.createElement(GoogleMap, { mapTypeId: window.google.maps.MapTypeId.ROADMAP, options: googleMapOptions, onLoad: setMap, zoom: defaultZoom, center: defaultCenter, onZoomChanged: handleMapMoveStart, onDragStart: handleMapMoveStart, onIdle: handleMapIdle, mapContainerClassName: mapContainerClassName },
120
- map && isSearchEnabled && Boolean(drawingModes.length) && (React.createElement(MapControlContainer, { className: styles.mapControlContainer, position: window.google.maps.ControlPosition.TOP_RIGHT, map: map },
109
+ shouldRenderRightMapControls && (React.createElement(MapControlContainer, { className: styles.mapControlContainer, position: window.google.maps.ControlPosition.TOP_RIGHT, map: map },
121
110
  React.createElement(TopRightMapControls, { hasActiveOverlay: !!activeOverlay, drawingModes: drawingModes, drawingMode: drawingMode, onDrawingModeChanged: setDrawingMode, onClearOverlay: handleClearOverlay }))),
122
- map && isSearchEnabled && (React.createElement(MapControlContainer, { className: styles.mapControlContainer, position: window.google.maps.ControlPosition.TOP_CENTER, map: map },
111
+ shouldRenderCenterMapControls && (React.createElement(MapControlContainer, { className: styles.mapControlContainer, position: window.google.maps.ControlPosition.TOP_CENTER, map: map },
123
112
  React.createElement(TopCenterMapControls, { onChangeIsSearchOnMapMove: handleChangeIsSearchOnMapMove, isSearchOnMapMove: isSearchOnMapMove }))),
124
113
  markerClusterer ? renderMarkerClusterer(markerClustererOptions) : renderMarkers(),
125
- !getDrawingMode(drawingMode) &&
126
- activeOverlay &&
127
- propEq('type', MAP_DRAWING_MODES.POLYGON, activeOverlay) && (React.createElement(Polygon, { onLoad: setPolygon, path: activeOverlay.path, editable: true, options: allOverlayOptions, onMouseUp: handleOverlayChange, onDragEnd: handleOverlayChange })),
128
- isSearchEnabled && Boolean(drawingModes.length) && (React.createElement(DrawingManager, { onPolygonComplete: handleOverlayComplete(MAP_DRAWING_MODES.POLYGON), onCircleComplete: handleOverlayComplete(MAP_DRAWING_MODES.CIRCLE), drawingMode: getDrawingMode(drawingMode), options: {
114
+ shouldRenderPolygon && (React.createElement(Polygon, { onLoad: setPolygon, path: activeOverlay.path, editable: true, options: allOverlayOptions, onMouseUp: handleOverlayChange, onDragEnd: handleOverlayChange })),
115
+ shouldRenderDrawingManager && (React.createElement(DrawingManager, { onPolygonComplete: handleOverlayComplete(MAP_DRAWING_MODES.POLYGON), onCircleComplete: handleOverlayComplete(MAP_DRAWING_MODES.CIRCLE), drawingMode: getDrawingMode(drawingMode), options: {
129
116
  drawingControl: false,
130
117
  circleOptions: allOverlayOptions,
131
118
  polygonOptions: allOverlayOptions
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@reltio/components",
3
- "version": "1.4.1432",
3
+ "version": "1.4.1433",
4
4
  "license": "SEE LICENSE IN LICENSE FILE",
5
5
  "main": "./cjs/index.js",
6
6
  "module": "./esm/index.js",
7
7
  "dependencies": {
8
8
  "@date-io/moment": "^1.3.5",
9
9
  "@react-google-maps/api": "2.7.0",
10
- "@reltio/mdm-module": "^1.4.1432",
11
- "@reltio/mdm-sdk": "^1.4.1432",
10
+ "@reltio/mdm-module": "^1.4.1433",
11
+ "@reltio/mdm-sdk": "^1.4.1433",
12
12
  "classnames": "^2.2.5",
13
13
  "d3-cloud": "^1.2.5",
14
14
  "d3-geo": "^2.0.1",