@reltio/components 1.4.2006 → 1.4.2008

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.
Files changed (83) hide show
  1. package/Drawer/Drawer.test.js +1 -0
  2. package/EditModeAttributesView/IntegrationEditModeAttributesView.test.js +1 -2
  3. package/HierarchyNodeTitle/useEntityDetails.test.js +3 -2
  4. package/LineChart/LineChart.test.js +1 -0
  5. package/MapChart/components/Legend/styles.d.ts +1 -1
  6. package/ProfileResizablePanes/styles.d.ts +1 -1
  7. package/ReactSortableTree/ReactSortableTree.test.js +3 -1
  8. package/ReltioMap/ReltioMap.d.ts +15 -11
  9. package/ReltioMap/ReltioMap.js +49 -39
  10. package/ReltioMap/ReltioMap.spec.js +232 -116
  11. package/ReltioMap/components/ClusteredMarkers/ClusteredMarkers.d.ts +11 -0
  12. package/ReltioMap/components/ClusteredMarkers/ClusteredMarkers.js +58 -0
  13. package/ReltioMap/components/ClusteredMarkers/CustomClusterRenderer.d.ts +8 -0
  14. package/ReltioMap/components/ClusteredMarkers/CustomClusterRenderer.js +18 -0
  15. package/ReltioMap/components/ClusteredMarkers/index.d.ts +1 -0
  16. package/ReltioMap/components/ClusteredMarkers/index.js +1 -0
  17. package/ReltioMap/components/DrawingManager/DrawingManager.d.ts +2 -0
  18. package/ReltioMap/components/DrawingManager/DrawingManager.js +5 -0
  19. package/ReltioMap/components/DrawingManager/index.d.ts +1 -0
  20. package/ReltioMap/components/DrawingManager/index.js +1 -0
  21. package/ReltioMap/components/DrawingManager/useDrawingManager.d.ts +7 -0
  22. package/ReltioMap/components/DrawingManager/useDrawingManager.js +36 -0
  23. package/ReltioMap/components/EntityMarker/EntityMarker.d.ts +8 -7
  24. package/ReltioMap/components/EntityMarker/EntityMarker.js +23 -23
  25. package/ReltioMap/components/EntityMarker/EntityMarker.spec.js +151 -66
  26. package/ReltioMap/components/Polygon/Polygon.d.ts +7 -0
  27. package/ReltioMap/components/Polygon/Polygon.js +8 -0
  28. package/ReltioMap/components/Polygon/index.d.ts +1 -0
  29. package/ReltioMap/components/Polygon/index.js +1 -0
  30. package/ReltioMap/components/Polygon/usePolygon.d.ts +10 -0
  31. package/ReltioMap/components/Polygon/usePolygon.js +35 -0
  32. package/ReltioMap/components/TopCenterMapControls/TopCenterMapControls.d.ts +2 -1
  33. package/ReltioMap/components/TopCenterMapControls/TopCenterMapControls.js +6 -5
  34. package/ReltioMap/components/TopRightMapControls/TopRightMapControls.d.ts +2 -1
  35. package/ReltioMap/components/TopRightMapControls/TopRightMapControls.js +3 -2
  36. package/ReltioMap/components/TopRightMapControls/styles.js +1 -1
  37. package/ReltioMap/helpers.d.ts +3 -2
  38. package/ReltioMap/types.d.ts +6 -3
  39. package/cjs/Drawer/Drawer.test.js +1 -0
  40. package/cjs/EditModeAttributesView/IntegrationEditModeAttributesView.test.js +1 -2
  41. package/cjs/HierarchyNodeTitle/useEntityDetails.test.js +3 -2
  42. package/cjs/LineChart/LineChart.test.js +1 -0
  43. package/cjs/MapChart/components/Legend/styles.d.ts +1 -1
  44. package/cjs/ProfileResizablePanes/styles.d.ts +1 -1
  45. package/cjs/ReactSortableTree/ReactSortableTree.test.js +3 -1
  46. package/cjs/ReltioMap/ReltioMap.d.ts +15 -11
  47. package/cjs/ReltioMap/ReltioMap.js +48 -38
  48. package/cjs/ReltioMap/ReltioMap.spec.js +230 -114
  49. package/cjs/ReltioMap/components/ClusteredMarkers/ClusteredMarkers.d.ts +11 -0
  50. package/cjs/ReltioMap/components/ClusteredMarkers/ClusteredMarkers.js +84 -0
  51. package/cjs/ReltioMap/components/ClusteredMarkers/CustomClusterRenderer.d.ts +8 -0
  52. package/cjs/ReltioMap/components/ClusteredMarkers/CustomClusterRenderer.js +21 -0
  53. package/cjs/ReltioMap/components/ClusteredMarkers/index.d.ts +1 -0
  54. package/cjs/ReltioMap/components/ClusteredMarkers/index.js +5 -0
  55. package/cjs/ReltioMap/components/DrawingManager/DrawingManager.d.ts +2 -0
  56. package/cjs/ReltioMap/components/DrawingManager/DrawingManager.js +9 -0
  57. package/cjs/ReltioMap/components/DrawingManager/index.d.ts +1 -0
  58. package/cjs/ReltioMap/components/DrawingManager/index.js +5 -0
  59. package/cjs/ReltioMap/components/DrawingManager/useDrawingManager.d.ts +7 -0
  60. package/cjs/ReltioMap/components/DrawingManager/useDrawingManager.js +40 -0
  61. package/cjs/ReltioMap/components/EntityMarker/EntityMarker.d.ts +8 -7
  62. package/cjs/ReltioMap/components/EntityMarker/EntityMarker.js +22 -22
  63. package/cjs/ReltioMap/components/EntityMarker/EntityMarker.spec.js +151 -66
  64. package/cjs/ReltioMap/components/Polygon/Polygon.d.ts +7 -0
  65. package/cjs/ReltioMap/components/Polygon/Polygon.js +11 -0
  66. package/cjs/ReltioMap/components/Polygon/index.d.ts +1 -0
  67. package/cjs/ReltioMap/components/Polygon/index.js +5 -0
  68. package/cjs/ReltioMap/components/Polygon/usePolygon.d.ts +10 -0
  69. package/cjs/ReltioMap/components/Polygon/usePolygon.js +39 -0
  70. package/cjs/ReltioMap/components/TopCenterMapControls/TopCenterMapControls.d.ts +2 -1
  71. package/cjs/ReltioMap/components/TopCenterMapControls/TopCenterMapControls.js +6 -5
  72. package/cjs/ReltioMap/components/TopRightMapControls/TopRightMapControls.d.ts +2 -1
  73. package/cjs/ReltioMap/components/TopRightMapControls/TopRightMapControls.js +3 -2
  74. package/cjs/ReltioMap/components/TopRightMapControls/styles.js +1 -1
  75. package/cjs/ReltioMap/helpers.d.ts +3 -2
  76. package/cjs/ReltioMap/types.d.ts +6 -3
  77. package/cjs/features/graph/DataModelGraph/hooks/useFakeCenterNode.test.js +1 -0
  78. package/cjs/hooks/useMarkers/referenceHelpers.js +25 -2
  79. package/cjs/hooks/useMarkers/referenceHelpers.test.js +10 -1
  80. package/features/graph/DataModelGraph/hooks/useFakeCenterNode.test.js +1 -0
  81. package/hooks/useMarkers/referenceHelpers.js +25 -2
  82. package/hooks/useMarkers/referenceHelpers.test.js +10 -1
  83. package/package.json +3 -2
@@ -1,12 +1,13 @@
1
1
  import React from 'react';
2
- import { GoogleMapProps, MarkerClustererProps } from '@react-google-maps/api';
3
- import { DrawingModes, EntityMarker as Marker, MapBounds, Overlay, OverlayPath } from './types';
4
- type MarkerClustererOptions = MarkerClustererProps['options'];
2
+ import { GeoPoint } from '@reltio/mdm-sdk';
3
+ import { DrawingModes, MapBounds, Overlay, ClusteredMarkersOptions, DrawingMode } from './types';
5
4
  type Props = {
6
- markers?: Marker[];
5
+ markers?: GeoPoint[];
7
6
  mapKey: string;
8
- defaultZoom?: GoogleMapProps['zoom'];
9
- defaultCenter?: GoogleMapProps['center'];
7
+ /** A map ID is required to use Advanced Markers. https://developers.google.com/maps/documentation/javascript/advanced-markers/overview */
8
+ mapId?: string;
9
+ defaultZoom?: number;
10
+ defaultCenter?: google.maps.LatLngLiteral;
10
11
  loadingElement: React.ReactElement;
11
12
  isSearchOnMapMove?: boolean;
12
13
  isSearchEnabled?: boolean;
@@ -14,15 +15,18 @@ type Props = {
14
15
  overlayOptions?: google.maps.PolygonOptions | google.maps.CircleOptions;
15
16
  drawingModes?: DrawingModes;
16
17
  markerClusterer?: boolean;
17
- markerClustererOptions?: MarkerClustererOptions;
18
+ markerClustererOptions?: ClusteredMarkersOptions;
18
19
  mapOptions?: google.maps.MapOptions;
19
20
  mapContainerClassName?: string;
20
21
  onMapBoundsChanged?: (value: MapBounds | null) => void;
21
22
  onOverlayUpdated?: (value: {
22
- data: OverlayPath;
23
- type: string;
23
+ data: number[][] | {
24
+ radius: number;
25
+ center: google.maps.LatLng;
26
+ };
27
+ type: DrawingMode;
24
28
  }) => void;
25
- onMarkerClicked?: (value: Marker) => void;
29
+ onMarkerClicked?: (value: GeoPoint) => void;
26
30
  };
27
- export declare const ReltioMap: ({ markers, mapKey, defaultZoom, defaultCenter, loadingElement, isSearchOnMapMove, isSearchEnabled, activeOverlay, overlayOptions, drawingModes, markerClusterer, markerClustererOptions, mapOptions, mapContainerClassName, onMapBoundsChanged, onOverlayUpdated, onMarkerClicked }: Props) => React.JSX.Element;
31
+ export declare const ReltioMap: ({ mapKey, ...restProps }: Props) => React.JSX.Element;
28
32
  export {};
@@ -33,35 +33,57 @@ var __importStar = (this && this.__importStar) || function (mod) {
33
33
  __setModuleDefault(result, mod);
34
34
  return result;
35
35
  };
36
+ var __rest = (this && this.__rest) || function (s, e) {
37
+ var t = {};
38
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
39
+ t[p] = s[p];
40
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
41
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
42
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
43
+ t[p[i]] = s[p[i]];
44
+ }
45
+ return t;
46
+ };
36
47
  Object.defineProperty(exports, "__esModule", { value: true });
37
48
  exports.ReltioMap = void 0;
38
49
  var react_1 = __importStar(require("react"));
39
50
  var ramda_1 = require("ramda");
40
- var api_1 = require("@react-google-maps/api");
41
- var EntityMarker_1 = require("./components/EntityMarker");
42
- var MapControlContainer_1 = require("./components/MapControlContainer");
51
+ var react_google_maps_1 = require("@vis.gl/react-google-maps");
43
52
  var TopRightMapControls_1 = require("./components/TopRightMapControls");
44
53
  var TopCenterMapControls_1 = require("./components/TopCenterMapControls");
45
54
  var helpers_1 = require("./helpers");
46
55
  var constants_1 = require("../constants");
47
56
  var useFitMapBounds_1 = require("./useFitMapBounds");
48
57
  var styles_1 = require("./styles");
58
+ var ClusteredMarkers_1 = require("./components/ClusteredMarkers");
59
+ var Polygon_1 = require("./components/Polygon");
60
+ var DrawingManager_1 = require("./components/DrawingManager");
49
61
  var ON_MAP_MOVE_DEBOUNCE_INTERVAL = 1000;
50
62
  var libraries = ['drawing'];
51
63
  var ReltioMap = function (_a) {
52
- 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, _f = _a.onMapBoundsChanged, onMapBoundsChanged = _f === void 0 ? ramda_1.identity : _f, _g = _a.onOverlayUpdated, onOverlayUpdated = _g === void 0 ? ramda_1.identity : _g, _h = _a.onMarkerClicked, onMarkerClicked = _h === void 0 ? ramda_1.identity : _h;
64
+ var mapKey = _a.mapKey, restProps = __rest(_a, ["mapKey"]);
65
+ return (react_1.default.createElement(react_google_maps_1.APIProvider, { apiKey: mapKey, libraries: libraries },
66
+ react_1.default.createElement(InternalReltioMap, __assign({}, restProps))));
67
+ };
68
+ exports.ReltioMap = ReltioMap;
69
+ var emptyObject = {};
70
+ var emptyArray = [];
71
+ var InternalReltioMap = (0, react_1.memo)(function (_a) {
72
+ var mapId = _a.mapId, _b = _a.markers, markers = _b === void 0 ? emptyArray : _b, 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 ? emptyObject : _c, _d = _a.drawingModes, drawingModes = _d === void 0 ? emptyArray : _d, markerClusterer = _a.markerClusterer, markerClustererOptions = _a.markerClustererOptions, _f = _a.mapOptions, mapOptions = _f === void 0 ? emptyObject : _f, mapContainerClassName = _a.mapContainerClassName, _g = _a.onMapBoundsChanged, onMapBoundsChanged = _g === void 0 ? ramda_1.identity : _g, _h = _a.onOverlayUpdated, onOverlayUpdated = _h === void 0 ? ramda_1.identity : _h, _j = _a.onMarkerClicked, onMarkerClicked = _j === void 0 ? ramda_1.identity : _j;
53
73
  var styles = (0, styles_1.useStyles)();
54
- var _j = (0, api_1.useJsApiLoader)({
55
- googleMapsApiKey: mapKey,
56
- libraries: libraries
57
- }), isLoaded = _j.isLoaded, loadError = _j.loadError;
58
74
  var mapMoveEndTimer = (0, react_1.useRef)(null);
59
- var _k = (0, react_1.useState)(null), map = _k[0], setMap = _k[1];
60
- var _l = (0, react_1.useState)(null), polygon = _l[0], setPolygon = _l[1];
61
- var _m = (0, react_1.useState)(null), drawingMode = _m[0], setDrawingMode = _m[1];
75
+ var isLoaded = (0, react_google_maps_1.useApiIsLoaded)();
76
+ var map = (0, react_google_maps_1.useMap)();
77
+ var _k = (0, react_1.useState)(null), polygon = _k[0], setPolygon = _k[1];
78
+ var _l = (0, react_1.useState)(null), drawingMode = _l[0], setDrawingMode = _l[1];
62
79
  (0, useFitMapBounds_1.useFitMapBounds)({ markers: markers, activeOverlay: activeOverlay, map: map, isSearchOnMapMove: isSearchOnMapMove });
63
80
  var allOverlayOptions = (0, react_1.useMemo)(function () { return (__assign(__assign({}, constants_1.DEFAULT_OVERLAY_OPTIONS), overlayOptions)); }, [overlayOptions]);
64
81
  var googleMapOptions = (0, react_1.useMemo)(function () { return (__assign(__assign({}, constants_1.DEFAULT_GOOGLE_MAP_OPTIONS), mapOptions)); }, [mapOptions]);
82
+ var drawingManagerOptions = (0, react_1.useMemo)(function () { return ({
83
+ drawingControl: false,
84
+ polygonOptions: allOverlayOptions
85
+ }); }, [allOverlayOptions]);
86
+ var polygonOptions = (0, react_1.useMemo)(function () { return (__assign({ paths: activeOverlay === null || activeOverlay === void 0 ? void 0 : activeOverlay.path, editable: true }, allOverlayOptions)); }, [activeOverlay, allOverlayOptions]);
65
87
  var handleChangeIsSearchOnMapMove = (0, react_1.useCallback)(function (isSearchOnMapMove) {
66
88
  onMapBoundsChanged(isSearchOnMapMove ? (0, helpers_1.getMapBoundsPolygon)(map) : null);
67
89
  setDrawingMode(null);
@@ -81,7 +103,7 @@ var ReltioMap = function (_a) {
81
103
  clearTimeout(mapMoveEndTimer.current);
82
104
  mapMoveEndTimer.current = setTimeout(handleMapMoveEnd, ON_MAP_MOVE_DEBOUNCE_INTERVAL);
83
105
  }, [handleMapMoveEnd, isSearchOnMapMove]);
84
- var handleOverlayChange = (0, react_1.useCallback)(function (e, propOverlay) {
106
+ var handleOverlayChange = (0, react_1.useCallback)(function (_e, propOverlay) {
85
107
  var _a;
86
108
  var _b;
87
109
  var polygonStateOverlay = polygon && { type: constants_1.MAP_DRAWING_MODES.POLYGON, overlay: polygon };
@@ -95,7 +117,10 @@ var ReltioMap = function (_a) {
95
117
  .getArray()
96
118
  .map(function (latlng) { return [latlng.lat(), latlng.lng()]; });
97
119
  };
98
- var getCircleParameters = function () { return ({ radius: overlay.getRadius() / 1000, center: overlay.getCenter() }); };
120
+ var getCircleParameters = function () { return ({
121
+ radius: overlay.getRadius() / 1000,
122
+ center: overlay.getCenter()
123
+ }); };
99
124
  var typeActions = (_a = {},
100
125
  _a[constants_1.MAP_DRAWING_MODES.POLYGON] = getPolygonLatLngCoordinates,
101
126
  _a[constants_1.MAP_DRAWING_MODES.CIRCLE] = getCircleParameters,
@@ -113,17 +138,6 @@ var ReltioMap = function (_a) {
113
138
  var handleClearOverlay = (0, react_1.useCallback)(function () {
114
139
  onOverlayUpdated(null);
115
140
  }, [onOverlayUpdated]);
116
- var renderMarkers = function (clusterer) {
117
- return markers
118
- .filter((0, ramda_1.prop)('point'))
119
- .map(function (marker) { return (react_1.default.createElement(EntityMarker_1.EntityMarker, { key: marker.id, marker: marker, clusterer: clusterer, onClick: onMarkerClicked })); });
120
- };
121
- var renderMarkerClusterer = function (options) {
122
- return react_1.default.createElement(api_1.MarkerClusterer, { options: options }, renderMarkers);
123
- };
124
- if (loadError) {
125
- return null;
126
- }
127
141
  if (!isLoaded) {
128
142
  return loadingElement;
129
143
  }
@@ -131,17 +145,13 @@ var ReltioMap = function (_a) {
131
145
  var shouldRenderRightMapControls = map && isSearchEnabled && Boolean(drawingModes.length);
132
146
  var shouldRenderCenterMapControls = map && isSearchEnabled;
133
147
  var shouldRenderPolygon = !(0, helpers_1.getDrawingMode)(drawingMode) && activeOverlay && (0, ramda_1.propEq)('type', constants_1.MAP_DRAWING_MODES.POLYGON, activeOverlay);
134
- 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 },
135
- shouldRenderRightMapControls && (react_1.default.createElement(MapControlContainer_1.MapControlContainer, { className: styles.mapControlContainer, position: window.google.maps.ControlPosition.TOP_RIGHT, map: map },
136
- react_1.default.createElement(TopRightMapControls_1.TopRightMapControls, { hasActiveOverlay: !!activeOverlay, drawingModes: drawingModes, drawingMode: drawingMode, onDrawingModeChanged: setDrawingMode, onClearOverlay: handleClearOverlay }))),
137
- shouldRenderCenterMapControls && (react_1.default.createElement(MapControlContainer_1.MapControlContainer, { className: styles.mapControlContainer, position: window.google.maps.ControlPosition.TOP_CENTER, map: map },
138
- react_1.default.createElement(TopCenterMapControls_1.TopCenterMapControls, { onChangeIsSearchOnMapMove: handleChangeIsSearchOnMapMove, isSearchOnMapMove: isSearchOnMapMove }))),
139
- markerClusterer ? renderMarkerClusterer(markerClustererOptions) : renderMarkers(),
140
- shouldRenderPolygon && (react_1.default.createElement(api_1.Polygon, { onLoad: setPolygon, path: activeOverlay.path, editable: true, options: allOverlayOptions, onMouseUp: handleOverlayChange, onDragEnd: handleOverlayChange })),
141
- 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: {
142
- drawingControl: false,
143
- circleOptions: allOverlayOptions,
144
- polygonOptions: allOverlayOptions
145
- } }))));
146
- };
147
- exports.ReltioMap = ReltioMap;
148
+ return (react_1.default.createElement(react_google_maps_1.Map, __assign({ mapId: mapId || 'mapId' }, googleMapOptions, { defaultZoom: defaultZoom, defaultCenter: defaultCenter, onZoomChanged: handleMapMoveStart, onDragstart: handleMapMoveStart, onIdle: handleMapIdle, className: mapContainerClassName }),
149
+ shouldRenderRightMapControls && (react_1.default.createElement(react_google_maps_1.MapControl, { position: react_google_maps_1.ControlPosition.TOP_RIGHT },
150
+ react_1.default.createElement(TopRightMapControls_1.TopRightMapControls, { className: styles.mapControlContainer, hasActiveOverlay: !!activeOverlay, drawingModes: drawingModes, drawingMode: drawingMode, onDrawingModeChanged: setDrawingMode, onClearOverlay: handleClearOverlay }))),
151
+ shouldRenderCenterMapControls && (react_1.default.createElement(react_google_maps_1.MapControl, { position: react_google_maps_1.ControlPosition.TOP_CENTER },
152
+ react_1.default.createElement(TopCenterMapControls_1.TopCenterMapControls, { className: styles.mapControlContainer, onChangeIsSearchOnMapMove: handleChangeIsSearchOnMapMove, isSearchOnMapMove: isSearchOnMapMove }))),
153
+ react_1.default.createElement(ClusteredMarkers_1.ClusteredMarkers, { entityMarkers: markers, enabledClustering: markerClusterer, options: markerClustererOptions, onMarkerClick: onMarkerClicked }),
154
+ shouldRenderPolygon && (react_1.default.createElement(Polygon_1.Polygon, { onInit: setPolygon, options: polygonOptions, onMouseUp: handleOverlayChange, onDragEnd: handleOverlayChange })),
155
+ shouldRenderDrawingManager && (react_1.default.createElement(DrawingManager_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: drawingManagerOptions }))));
156
+ });
157
+ InternalReltioMap.displayName = 'InternalReltioMap';