@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.
- package/Drawer/Drawer.test.js +1 -0
- package/EditModeAttributesView/IntegrationEditModeAttributesView.test.js +1 -2
- package/HierarchyNodeTitle/useEntityDetails.test.js +3 -2
- package/LineChart/LineChart.test.js +1 -0
- package/MapChart/components/Legend/styles.d.ts +1 -1
- package/ProfileResizablePanes/styles.d.ts +1 -1
- package/ReactSortableTree/ReactSortableTree.test.js +3 -1
- package/ReltioMap/ReltioMap.d.ts +15 -11
- package/ReltioMap/ReltioMap.js +49 -39
- package/ReltioMap/ReltioMap.spec.js +232 -116
- package/ReltioMap/components/ClusteredMarkers/ClusteredMarkers.d.ts +11 -0
- package/ReltioMap/components/ClusteredMarkers/ClusteredMarkers.js +58 -0
- package/ReltioMap/components/ClusteredMarkers/CustomClusterRenderer.d.ts +8 -0
- package/ReltioMap/components/ClusteredMarkers/CustomClusterRenderer.js +18 -0
- package/ReltioMap/components/ClusteredMarkers/index.d.ts +1 -0
- package/ReltioMap/components/ClusteredMarkers/index.js +1 -0
- package/ReltioMap/components/DrawingManager/DrawingManager.d.ts +2 -0
- package/ReltioMap/components/DrawingManager/DrawingManager.js +5 -0
- package/ReltioMap/components/DrawingManager/index.d.ts +1 -0
- package/ReltioMap/components/DrawingManager/index.js +1 -0
- package/ReltioMap/components/DrawingManager/useDrawingManager.d.ts +7 -0
- package/ReltioMap/components/DrawingManager/useDrawingManager.js +36 -0
- package/ReltioMap/components/EntityMarker/EntityMarker.d.ts +8 -7
- package/ReltioMap/components/EntityMarker/EntityMarker.js +23 -23
- package/ReltioMap/components/EntityMarker/EntityMarker.spec.js +151 -66
- package/ReltioMap/components/Polygon/Polygon.d.ts +7 -0
- package/ReltioMap/components/Polygon/Polygon.js +8 -0
- package/ReltioMap/components/Polygon/index.d.ts +1 -0
- package/ReltioMap/components/Polygon/index.js +1 -0
- package/ReltioMap/components/Polygon/usePolygon.d.ts +10 -0
- package/ReltioMap/components/Polygon/usePolygon.js +35 -0
- package/ReltioMap/components/TopCenterMapControls/TopCenterMapControls.d.ts +2 -1
- package/ReltioMap/components/TopCenterMapControls/TopCenterMapControls.js +6 -5
- package/ReltioMap/components/TopRightMapControls/TopRightMapControls.d.ts +2 -1
- package/ReltioMap/components/TopRightMapControls/TopRightMapControls.js +3 -2
- package/ReltioMap/components/TopRightMapControls/styles.js +1 -1
- package/ReltioMap/helpers.d.ts +3 -2
- package/ReltioMap/types.d.ts +6 -3
- package/cjs/Drawer/Drawer.test.js +1 -0
- package/cjs/EditModeAttributesView/IntegrationEditModeAttributesView.test.js +1 -2
- package/cjs/HierarchyNodeTitle/useEntityDetails.test.js +3 -2
- package/cjs/LineChart/LineChart.test.js +1 -0
- package/cjs/MapChart/components/Legend/styles.d.ts +1 -1
- package/cjs/ProfileResizablePanes/styles.d.ts +1 -1
- package/cjs/ReactSortableTree/ReactSortableTree.test.js +3 -1
- package/cjs/ReltioMap/ReltioMap.d.ts +15 -11
- package/cjs/ReltioMap/ReltioMap.js +48 -38
- package/cjs/ReltioMap/ReltioMap.spec.js +230 -114
- package/cjs/ReltioMap/components/ClusteredMarkers/ClusteredMarkers.d.ts +11 -0
- package/cjs/ReltioMap/components/ClusteredMarkers/ClusteredMarkers.js +84 -0
- package/cjs/ReltioMap/components/ClusteredMarkers/CustomClusterRenderer.d.ts +8 -0
- package/cjs/ReltioMap/components/ClusteredMarkers/CustomClusterRenderer.js +21 -0
- package/cjs/ReltioMap/components/ClusteredMarkers/index.d.ts +1 -0
- package/cjs/ReltioMap/components/ClusteredMarkers/index.js +5 -0
- package/cjs/ReltioMap/components/DrawingManager/DrawingManager.d.ts +2 -0
- package/cjs/ReltioMap/components/DrawingManager/DrawingManager.js +9 -0
- package/cjs/ReltioMap/components/DrawingManager/index.d.ts +1 -0
- package/cjs/ReltioMap/components/DrawingManager/index.js +5 -0
- package/cjs/ReltioMap/components/DrawingManager/useDrawingManager.d.ts +7 -0
- package/cjs/ReltioMap/components/DrawingManager/useDrawingManager.js +40 -0
- package/cjs/ReltioMap/components/EntityMarker/EntityMarker.d.ts +8 -7
- package/cjs/ReltioMap/components/EntityMarker/EntityMarker.js +22 -22
- package/cjs/ReltioMap/components/EntityMarker/EntityMarker.spec.js +151 -66
- package/cjs/ReltioMap/components/Polygon/Polygon.d.ts +7 -0
- package/cjs/ReltioMap/components/Polygon/Polygon.js +11 -0
- package/cjs/ReltioMap/components/Polygon/index.d.ts +1 -0
- package/cjs/ReltioMap/components/Polygon/index.js +5 -0
- package/cjs/ReltioMap/components/Polygon/usePolygon.d.ts +10 -0
- package/cjs/ReltioMap/components/Polygon/usePolygon.js +39 -0
- package/cjs/ReltioMap/components/TopCenterMapControls/TopCenterMapControls.d.ts +2 -1
- package/cjs/ReltioMap/components/TopCenterMapControls/TopCenterMapControls.js +6 -5
- package/cjs/ReltioMap/components/TopRightMapControls/TopRightMapControls.d.ts +2 -1
- package/cjs/ReltioMap/components/TopRightMapControls/TopRightMapControls.js +3 -2
- package/cjs/ReltioMap/components/TopRightMapControls/styles.js +1 -1
- package/cjs/ReltioMap/helpers.d.ts +3 -2
- package/cjs/ReltioMap/types.d.ts +6 -3
- package/cjs/features/graph/DataModelGraph/hooks/useFakeCenterNode.test.js +1 -0
- package/cjs/hooks/useMarkers/referenceHelpers.js +25 -2
- package/cjs/hooks/useMarkers/referenceHelpers.test.js +10 -1
- package/features/graph/DataModelGraph/hooks/useFakeCenterNode.test.js +1 -0
- package/hooks/useMarkers/referenceHelpers.js +25 -2
- package/hooks/useMarkers/referenceHelpers.test.js +10 -1
- package/package.json +3 -2
|
@@ -69,6 +69,15 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
69
69
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
70
70
|
}
|
|
71
71
|
};
|
|
72
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
73
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
74
|
+
if (ar || !(i in from)) {
|
|
75
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
76
|
+
ar[i] = from[i];
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
80
|
+
};
|
|
72
81
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
73
82
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
74
83
|
};
|
|
@@ -78,22 +87,20 @@ var react_2 = require("@testing-library/react");
|
|
|
78
87
|
var user_event_1 = __importDefault(require("@testing-library/user-event"));
|
|
79
88
|
var ramda_1 = require("ramda");
|
|
80
89
|
var jest_mocks_1 = require("@googlemaps/jest-mocks");
|
|
81
|
-
var api_1 = require("@react-google-maps/api");
|
|
82
90
|
var constants_1 = require("../constants");
|
|
83
91
|
var helpers = __importStar(require("./helpers"));
|
|
84
92
|
var ReltioMap_1 = require("./ReltioMap");
|
|
85
|
-
jest.mock('@react-google-maps
|
|
86
|
-
jest.mock('./components/MapControlContainer', function () { return ({
|
|
87
|
-
MapControlContainer: function (_a) {
|
|
93
|
+
jest.mock('@vis.gl/react-google-maps', function () { return (__assign(__assign({}, jest.requireActual('@vis.gl/react-google-maps')), { MapControl: function (_a) {
|
|
88
94
|
var children = _a.children;
|
|
89
95
|
return react_1.default.createElement(react_1.default.Fragment, null, children);
|
|
90
|
-
}
|
|
91
|
-
}); });
|
|
96
|
+
} })); });
|
|
92
97
|
describe('ReltioMap tests', function () {
|
|
93
98
|
var defaultProps = {
|
|
94
99
|
onOverlayUpdated: jest.fn(),
|
|
95
100
|
onMarkerClicked: jest.fn(),
|
|
96
101
|
isSearchEnabled: true,
|
|
102
|
+
defaultZoom: 10,
|
|
103
|
+
defaultCenter: { lat: 1, lng: 1 },
|
|
97
104
|
mapKey: 'mapKey',
|
|
98
105
|
loadingElement: react_1.default.createElement("div", null, "loading element")
|
|
99
106
|
};
|
|
@@ -103,15 +110,30 @@ describe('ReltioMap tests', function () {
|
|
|
103
110
|
return __assign(__assign({}, (0, react_2.render)(react_1.default.createElement(ReltioMap_1.ReltioMap, __assign({}, props)))), { user: user });
|
|
104
111
|
};
|
|
105
112
|
var drawingManagerInstance;
|
|
113
|
+
var drawingManagerConstructorSpy = jest.fn();
|
|
106
114
|
beforeAll(function () {
|
|
107
115
|
(0, jest_mocks_1.initialize)();
|
|
116
|
+
var OriginalMap = google.maps.Map;
|
|
117
|
+
jest.spyOn(google.maps, 'Map').mockImplementation(function () {
|
|
118
|
+
var args = [];
|
|
119
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
120
|
+
args[_i] = arguments[_i];
|
|
121
|
+
}
|
|
122
|
+
return new (OriginalMap.bind.apply(OriginalMap, __spreadArray([void 0], args, false)))();
|
|
123
|
+
});
|
|
108
124
|
global.google.maps.drawing.DrawingManager = /** @class */ (function () {
|
|
109
125
|
function DrawingManager() {
|
|
126
|
+
var args = [];
|
|
127
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
128
|
+
args[_i] = arguments[_i];
|
|
129
|
+
}
|
|
130
|
+
this.addListener = jest.fn();
|
|
110
131
|
this.getDrawingMode = jest.fn();
|
|
111
132
|
this.getMap = jest.fn();
|
|
112
133
|
this.setDrawingMode = jest.fn();
|
|
113
134
|
this.setMap = jest.fn();
|
|
114
135
|
this.setOptions = jest.fn();
|
|
136
|
+
drawingManagerConstructorSpy.apply(void 0, args);
|
|
115
137
|
drawingManagerInstance = this;
|
|
116
138
|
}
|
|
117
139
|
return DrawingManager;
|
|
@@ -132,71 +154,101 @@ describe('ReltioMap tests', function () {
|
|
|
132
154
|
});
|
|
133
155
|
beforeEach(function () {
|
|
134
156
|
drawingManagerInstance = null;
|
|
135
|
-
api_1.useJsApiLoader.mockReturnValue({ isLoaded: true, loadError: null });
|
|
136
157
|
});
|
|
137
158
|
afterEach(function () {
|
|
138
159
|
jest.clearAllMocks();
|
|
139
160
|
jest_mocks_1.mockInstances.clearAll();
|
|
140
161
|
});
|
|
141
162
|
var getEventHandler = function (target, event) {
|
|
142
|
-
|
|
163
|
+
var _a, _b;
|
|
164
|
+
return ((_a = (0, ramda_1.findLast)(function (_a) {
|
|
143
165
|
var instance = _a[0], googleEventName = _a[1];
|
|
144
166
|
return instance === target && googleEventName === event;
|
|
145
|
-
}, global.google.maps.event.addListener.mock.calls)[2]
|
|
167
|
+
}, global.google.maps.event.addListener.mock.calls)) === null || _a === void 0 ? void 0 : _a[2]) || ((_b = (0, ramda_1.findLast)(function (_a) {
|
|
168
|
+
var name = _a[0];
|
|
169
|
+
return name === event;
|
|
170
|
+
}, target.addListener.mock.calls)) === null || _b === void 0 ? void 0 : _b[1]);
|
|
146
171
|
};
|
|
147
172
|
var getLastInstance = function (instance) { return (0, ramda_1.last)(jest_mocks_1.mockInstances.get(instance)); };
|
|
148
173
|
describe('general behaviour', function () {
|
|
149
174
|
it('should render map controls', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
175
|
+
var _a;
|
|
176
|
+
return __generator(this, function (_b) {
|
|
177
|
+
switch (_b.label) {
|
|
178
|
+
case 0:
|
|
179
|
+
setUpRTL(__assign(__assign({}, defaultProps), { drawingModes: [constants_1.MAP_DRAWING_MODES.POLYGON] }));
|
|
180
|
+
_a = expect;
|
|
181
|
+
return [4 /*yield*/, react_2.screen.findByLabelText('Draw area')];
|
|
182
|
+
case 1:
|
|
183
|
+
_a.apply(void 0, [_b.sent()]).toBeInTheDocument();
|
|
184
|
+
expect(react_2.screen.getByText('Search as I move the map')).toBeInTheDocument();
|
|
185
|
+
return [2 /*return*/];
|
|
186
|
+
}
|
|
155
187
|
});
|
|
156
188
|
}); });
|
|
157
189
|
it('should combine mapOptions', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
158
|
-
var mapOptions
|
|
190
|
+
var mapOptions;
|
|
159
191
|
return __generator(this, function (_a) {
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
192
|
+
switch (_a.label) {
|
|
193
|
+
case 0:
|
|
194
|
+
mapOptions = { mapTypeControl: true };
|
|
195
|
+
setUpRTL(__assign(__assign({}, defaultProps), { drawingModes: [constants_1.MAP_DRAWING_MODES.POLYGON], mapOptions: mapOptions }));
|
|
196
|
+
return [4 /*yield*/, (0, react_2.waitFor)(function () {
|
|
197
|
+
expect(google.maps.Map).toHaveBeenCalledWith(expect.any(HTMLElement), expect.objectContaining({
|
|
198
|
+
fullscreenControl: false,
|
|
199
|
+
mapTypeControl: true,
|
|
200
|
+
streetViewControl: false
|
|
201
|
+
}));
|
|
202
|
+
})];
|
|
203
|
+
case 1:
|
|
204
|
+
_a.sent();
|
|
205
|
+
return [2 /*return*/];
|
|
206
|
+
}
|
|
169
207
|
});
|
|
170
208
|
}); });
|
|
171
|
-
it('should not render map controls', function () {
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
label: 'testMarker'
|
|
209
|
+
it('should not render map controls', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
210
|
+
return __generator(this, function (_a) {
|
|
211
|
+
switch (_a.label) {
|
|
212
|
+
case 0:
|
|
213
|
+
setUpRTL(__assign(__assign({}, defaultProps), { drawingModes: [constants_1.MAP_DRAWING_MODES.POLYGON], isSearchEnabled: false }));
|
|
214
|
+
return [4 /*yield*/, (0, react_2.waitFor)(function () {
|
|
215
|
+
expect(react_2.screen.queryByLabelText('Draw area')).not.toBeInTheDocument();
|
|
216
|
+
})];
|
|
217
|
+
case 1:
|
|
218
|
+
_a.sent();
|
|
219
|
+
expect(react_2.screen.queryByText('Search as I move the map')).not.toBeInTheDocument();
|
|
220
|
+
return [2 /*return*/];
|
|
184
221
|
}
|
|
185
|
-
];
|
|
186
|
-
var onMarkerClick = jest.fn();
|
|
187
|
-
setUpRTL(__assign(__assign({}, defaultProps), { drawingModes: [constants_1.MAP_DRAWING_MODES.POLYGON], onMarkerClicked: onMarkerClick, markers: markers }));
|
|
188
|
-
var markerMock = getLastInstance(jest_mocks_1.Marker);
|
|
189
|
-
getEventHandler(markerMock, 'click')();
|
|
190
|
-
expect(markerMock.setIcon).toHaveBeenCalled();
|
|
191
|
-
expect(onMarkerClick).toHaveBeenCalled();
|
|
192
|
-
});
|
|
193
|
-
it('should call useJsApiLoader with right params', function () {
|
|
194
|
-
setUpRTL(__assign({}, defaultProps));
|
|
195
|
-
expect(api_1.useJsApiLoader).toHaveBeenCalledWith({
|
|
196
|
-
googleMapsApiKey: 'mapKey',
|
|
197
|
-
libraries: ['drawing']
|
|
198
222
|
});
|
|
199
|
-
});
|
|
223
|
+
}); });
|
|
224
|
+
it('should render markers correctly', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
225
|
+
var markers, onMarkerClick, markerMock;
|
|
226
|
+
return __generator(this, function (_a) {
|
|
227
|
+
switch (_a.label) {
|
|
228
|
+
case 0:
|
|
229
|
+
markers = [
|
|
230
|
+
{
|
|
231
|
+
point: { lat: 1, lng: 1 },
|
|
232
|
+
visible: true,
|
|
233
|
+
id: '123',
|
|
234
|
+
entity: { uri: 'testUri', type: 'testType' },
|
|
235
|
+
label: 'testMarker'
|
|
236
|
+
}
|
|
237
|
+
];
|
|
238
|
+
onMarkerClick = jest.fn();
|
|
239
|
+
setUpRTL(__assign(__assign({}, defaultProps), { drawingModes: [constants_1.MAP_DRAWING_MODES.POLYGON], onMarkerClicked: onMarkerClick, markers: markers }));
|
|
240
|
+
return [4 /*yield*/, (0, react_2.waitFor)(function () {
|
|
241
|
+
markerMock = getLastInstance(jest_mocks_1.AdvancedMarkerElement);
|
|
242
|
+
expect(markerMock).toBeDefined();
|
|
243
|
+
})];
|
|
244
|
+
case 1:
|
|
245
|
+
_a.sent();
|
|
246
|
+
getEventHandler(markerMock, 'click')();
|
|
247
|
+
expect(onMarkerClick).toHaveBeenCalled();
|
|
248
|
+
return [2 /*return*/];
|
|
249
|
+
}
|
|
250
|
+
});
|
|
251
|
+
}); });
|
|
200
252
|
});
|
|
201
253
|
describe('fitting bounds behavior', function () {
|
|
202
254
|
it('should fit map bounds correctly if markers loaded later than map', function () {
|
|
@@ -365,7 +417,7 @@ describe('ReltioMap tests', function () {
|
|
|
365
417
|
};
|
|
366
418
|
_a = setUpRTL(__assign(__assign({}, defaultProps), { drawingModes: [constants_1.MAP_DRAWING_MODES.POLYGON], activeOverlay: activeOverlay })), user = _a.user, rerender = _a.rerender;
|
|
367
419
|
polygon = getLastInstance(jest_mocks_1.Polygon);
|
|
368
|
-
expect(polygon.
|
|
420
|
+
expect(polygon.setOptions).toHaveBeenCalledWith(expect.objectContaining({ paths: activeOverlay.path }));
|
|
369
421
|
newProps = __assign(__assign({}, defaultProps), { drawingModes: [constants_1.MAP_DRAWING_MODES.POLYGON], activeOverlay: null });
|
|
370
422
|
rerender(react_1.default.createElement(ReltioMap_1.ReltioMap, __assign({}, newProps)));
|
|
371
423
|
return [4 /*yield*/, user.click(react_2.screen.getByLabelText('Draw area'))];
|
|
@@ -376,56 +428,100 @@ describe('ReltioMap tests', function () {
|
|
|
376
428
|
}
|
|
377
429
|
});
|
|
378
430
|
}); });
|
|
379
|
-
it('should not render Polygon if "activeOverlay" prop is circle', function () {
|
|
380
|
-
var activeOverlay
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
setUpRTL(__assign(__assign({}, defaultProps), { drawingModes: [constants_1.MAP_DRAWING_MODES.POLYGON], activeOverlay: activeOverlay, onOverlayUpdated: onOverlayUpdated }));
|
|
397
|
-
var polygon = getLastInstance(jest_mocks_1.Polygon);
|
|
398
|
-
getEventHandler(polygon, 'mouseup')();
|
|
399
|
-
expect(onOverlayUpdated).toHaveBeenCalledWith({
|
|
400
|
-
type: constants_1.MAP_DRAWING_MODES.POLYGON,
|
|
401
|
-
data: []
|
|
431
|
+
it('should not render Polygon if "activeOverlay" prop is circle', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
432
|
+
var activeOverlay;
|
|
433
|
+
return __generator(this, function (_a) {
|
|
434
|
+
switch (_a.label) {
|
|
435
|
+
case 0:
|
|
436
|
+
activeOverlay = {
|
|
437
|
+
type: constants_1.MAP_DRAWING_MODES.CIRCLE,
|
|
438
|
+
path: [{ lat: 1, lng: 1 }]
|
|
439
|
+
};
|
|
440
|
+
setUpRTL(__assign(__assign({}, defaultProps), { drawingModes: [constants_1.MAP_DRAWING_MODES.POLYGON], activeOverlay: activeOverlay }));
|
|
441
|
+
return [4 /*yield*/, (0, react_2.waitFor)(function () {
|
|
442
|
+
expect(jest_mocks_1.mockInstances.get(jest_mocks_1.Polygon)).toHaveLength(0);
|
|
443
|
+
})];
|
|
444
|
+
case 1:
|
|
445
|
+
_a.sent();
|
|
446
|
+
return [2 /*return*/];
|
|
447
|
+
}
|
|
402
448
|
});
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
449
|
+
}); });
|
|
450
|
+
it('should call props.onOverlayUpdated on polygon mouse up', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
451
|
+
var activeOverlay, onOverlayUpdated, polygon;
|
|
452
|
+
return __generator(this, function (_a) {
|
|
453
|
+
switch (_a.label) {
|
|
454
|
+
case 0:
|
|
455
|
+
activeOverlay = {
|
|
456
|
+
type: constants_1.MAP_DRAWING_MODES.POLYGON,
|
|
457
|
+
path: [
|
|
458
|
+
{ lat: 1, lng: 1 },
|
|
459
|
+
{ lat: 2, lng: 2 }
|
|
460
|
+
]
|
|
461
|
+
};
|
|
462
|
+
onOverlayUpdated = jest.fn();
|
|
463
|
+
setUpRTL(__assign(__assign({}, defaultProps), { drawingModes: [constants_1.MAP_DRAWING_MODES.POLYGON], activeOverlay: activeOverlay, onOverlayUpdated: onOverlayUpdated }));
|
|
464
|
+
polygon = getLastInstance(jest_mocks_1.Polygon);
|
|
465
|
+
getEventHandler(polygon, 'mouseup')();
|
|
466
|
+
return [4 /*yield*/, (0, react_2.waitFor)(function () {
|
|
467
|
+
expect(onOverlayUpdated).toHaveBeenCalledWith({
|
|
468
|
+
type: constants_1.MAP_DRAWING_MODES.POLYGON,
|
|
469
|
+
data: []
|
|
470
|
+
});
|
|
471
|
+
})];
|
|
472
|
+
case 1:
|
|
473
|
+
_a.sent();
|
|
474
|
+
expect(polygon.setOptions).toHaveBeenCalledWith(expect.objectContaining({ paths: activeOverlay.path }));
|
|
475
|
+
return [2 /*return*/];
|
|
476
|
+
}
|
|
420
477
|
});
|
|
421
|
-
|
|
422
|
-
|
|
478
|
+
}); });
|
|
479
|
+
it('should call props.onOverlayUpdated on polygon drag end', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
480
|
+
var activeOverlay, onOverlayUpdated, polygon;
|
|
481
|
+
return __generator(this, function (_a) {
|
|
482
|
+
switch (_a.label) {
|
|
483
|
+
case 0:
|
|
484
|
+
activeOverlay = {
|
|
485
|
+
type: constants_1.MAP_DRAWING_MODES.POLYGON,
|
|
486
|
+
path: [
|
|
487
|
+
{ lat: 1, lng: 1 },
|
|
488
|
+
{ lat: 2, lng: 2 }
|
|
489
|
+
]
|
|
490
|
+
};
|
|
491
|
+
onOverlayUpdated = jest.fn();
|
|
492
|
+
setUpRTL(__assign(__assign({}, defaultProps), { drawingModes: [constants_1.MAP_DRAWING_MODES.POLYGON], activeOverlay: activeOverlay, onOverlayUpdated: onOverlayUpdated }));
|
|
493
|
+
polygon = getLastInstance(jest_mocks_1.Polygon);
|
|
494
|
+
getEventHandler(polygon, 'dragend')();
|
|
495
|
+
return [4 /*yield*/, (0, react_2.waitFor)(function () {
|
|
496
|
+
expect(onOverlayUpdated).toHaveBeenCalledWith({
|
|
497
|
+
type: constants_1.MAP_DRAWING_MODES.POLYGON,
|
|
498
|
+
data: []
|
|
499
|
+
});
|
|
500
|
+
})];
|
|
501
|
+
case 1:
|
|
502
|
+
_a.sent();
|
|
503
|
+
expect(polygon.setOptions).toHaveBeenCalledWith(expect.objectContaining({ paths: activeOverlay.path }));
|
|
504
|
+
return [2 /*return*/];
|
|
505
|
+
}
|
|
506
|
+
});
|
|
507
|
+
}); });
|
|
423
508
|
});
|
|
424
509
|
describe('drawing behavior', function () {
|
|
425
|
-
it("shouldn't be in drawing mode by default", function () {
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
510
|
+
it("shouldn't be in drawing mode by default", function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
511
|
+
return __generator(this, function (_a) {
|
|
512
|
+
switch (_a.label) {
|
|
513
|
+
case 0:
|
|
514
|
+
setUpRTL(__assign(__assign({}, defaultProps), { drawingModes: [constants_1.MAP_DRAWING_MODES.CIRCLE] }));
|
|
515
|
+
return [4 /*yield*/, (0, react_2.waitFor)(function () {
|
|
516
|
+
expect(drawingManagerInstance).not.toBe(null);
|
|
517
|
+
})];
|
|
518
|
+
case 1:
|
|
519
|
+
_a.sent();
|
|
520
|
+
expect(drawingManagerInstance.setDrawingMode).not.toHaveBeenCalledWith(constants_1.MAP_DRAWING_MODES.CIRCLE);
|
|
521
|
+
return [2 /*return*/];
|
|
522
|
+
}
|
|
523
|
+
});
|
|
524
|
+
}); });
|
|
429
525
|
it('should change drawing mode on map control action', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
430
526
|
var user;
|
|
431
527
|
return __generator(this, function (_a) {
|
|
@@ -435,20 +531,40 @@ describe('ReltioMap tests', function () {
|
|
|
435
531
|
return [4 /*yield*/, user.click(react_2.screen.getByLabelText('Draw area'))];
|
|
436
532
|
case 1:
|
|
437
533
|
_a.sent();
|
|
438
|
-
expect(
|
|
534
|
+
expect(drawingManagerConstructorSpy).toHaveBeenCalledWith(expect.objectContaining({ drawingMode: constants_1.MAP_DRAWING_MODES.CIRCLE }));
|
|
535
|
+
return [2 /*return*/];
|
|
536
|
+
}
|
|
537
|
+
});
|
|
538
|
+
}); });
|
|
539
|
+
it("shouldn't render DrawingManager without drawingModes prop", function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
540
|
+
return __generator(this, function (_a) {
|
|
541
|
+
switch (_a.label) {
|
|
542
|
+
case 0:
|
|
543
|
+
setUpRTL(__assign({}, defaultProps));
|
|
544
|
+
return [4 /*yield*/, (0, react_2.waitFor)(function () {
|
|
545
|
+
expect(drawingManagerInstance).toBe(null);
|
|
546
|
+
})];
|
|
547
|
+
case 1:
|
|
548
|
+
_a.sent();
|
|
549
|
+
return [2 /*return*/];
|
|
550
|
+
}
|
|
551
|
+
});
|
|
552
|
+
}); });
|
|
553
|
+
it("shouldn't render TopRightMapControls without drawingModes prop", function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
554
|
+
return __generator(this, function (_a) {
|
|
555
|
+
switch (_a.label) {
|
|
556
|
+
case 0:
|
|
557
|
+
setUpRTL(__assign({}, defaultProps));
|
|
558
|
+
return [4 /*yield*/, (0, react_2.waitFor)(function () {
|
|
559
|
+
expect(react_2.screen.queryByLabelText('Draw area')).not.toBeInTheDocument();
|
|
560
|
+
})];
|
|
561
|
+
case 1:
|
|
562
|
+
_a.sent();
|
|
563
|
+
expect(react_2.screen.queryByLabelText('Clear area')).not.toBeInTheDocument();
|
|
439
564
|
return [2 /*return*/];
|
|
440
565
|
}
|
|
441
566
|
});
|
|
442
567
|
}); });
|
|
443
|
-
it("shouldn't render DrawingManager without drawingModes prop", function () {
|
|
444
|
-
setUpRTL(__assign({}, defaultProps));
|
|
445
|
-
expect(drawingManagerInstance).toBe(null);
|
|
446
|
-
});
|
|
447
|
-
it("shouldn't render TopRightMapControls without drawingModes prop", function () {
|
|
448
|
-
setUpRTL(__assign({}, defaultProps));
|
|
449
|
-
expect(react_2.screen.queryByLabelText('Draw area')).not.toBeInTheDocument();
|
|
450
|
-
expect(react_2.screen.queryByLabelText('Clear area')).not.toBeInTheDocument();
|
|
451
|
-
});
|
|
452
568
|
it('should call props.onOverlayUpdated after polygon completing', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
453
569
|
var onOverlayUpdated, user, overlay;
|
|
454
570
|
return __generator(this, function (_a) {
|
|
@@ -459,7 +575,7 @@ describe('ReltioMap tests', function () {
|
|
|
459
575
|
return [4 /*yield*/, user.click(react_2.screen.getByLabelText('Draw area'))];
|
|
460
576
|
case 1:
|
|
461
577
|
_a.sent();
|
|
462
|
-
expect(
|
|
578
|
+
expect(drawingManagerConstructorSpy).toHaveBeenCalledWith(expect.objectContaining({ drawingMode: constants_1.MAP_DRAWING_MODES.POLYGON }));
|
|
463
579
|
overlay = {
|
|
464
580
|
setMap: jest.fn(),
|
|
465
581
|
getPath: function () { return ({
|
|
@@ -480,7 +596,7 @@ describe('ReltioMap tests', function () {
|
|
|
480
596
|
]
|
|
481
597
|
});
|
|
482
598
|
expect(overlay.setMap).toHaveBeenCalledWith(null);
|
|
483
|
-
expect(
|
|
599
|
+
expect(drawingManagerConstructorSpy).toHaveBeenCalledWith(expect.objectContaining({ drawingMode: null }));
|
|
484
600
|
return [2 /*return*/];
|
|
485
601
|
}
|
|
486
602
|
});
|
|
@@ -502,11 +618,11 @@ describe('ReltioMap tests', function () {
|
|
|
502
618
|
return [4 /*yield*/, user.click(react_2.screen.getByLabelText('Draw area'))];
|
|
503
619
|
case 1:
|
|
504
620
|
_a.sent();
|
|
505
|
-
expect(
|
|
621
|
+
expect(drawingManagerConstructorSpy).toHaveBeenCalledWith(expect.objectContaining({ drawingMode: constants_1.MAP_DRAWING_MODES.POLYGON }));
|
|
506
622
|
return [4 /*yield*/, user.click(react_2.screen.getByText('Search as I move the map'))];
|
|
507
623
|
case 2:
|
|
508
624
|
_a.sent();
|
|
509
|
-
expect(
|
|
625
|
+
expect(drawingManagerConstructorSpy).toHaveBeenCalledWith(expect.objectContaining({ drawingMode: null }));
|
|
510
626
|
expect(onMapBoundsChanged).toHaveBeenCalledWith(mapBoundsPolygon);
|
|
511
627
|
return [2 /*return*/];
|
|
512
628
|
}
|
|
@@ -522,14 +638,14 @@ describe('ReltioMap tests', function () {
|
|
|
522
638
|
return [4 /*yield*/, user.click(react_2.screen.getByLabelText('Draw area'))];
|
|
523
639
|
case 1:
|
|
524
640
|
_a.sent();
|
|
525
|
-
expect(
|
|
641
|
+
expect(drawingManagerConstructorSpy).toHaveBeenCalledWith(expect.objectContaining({ drawingMode: constants_1.MAP_DRAWING_MODES.POLYGON }));
|
|
526
642
|
return [4 /*yield*/, user.click(react_2.screen.getByText('Search as I move the map'))];
|
|
527
643
|
case 2:
|
|
528
644
|
_a.sent();
|
|
529
645
|
return [4 /*yield*/, user.click(react_2.screen.getByText('Search as I move the map'))];
|
|
530
646
|
case 3:
|
|
531
647
|
_a.sent();
|
|
532
|
-
expect(
|
|
648
|
+
expect(drawingManagerConstructorSpy).toHaveBeenCalledWith(expect.objectContaining({ drawingMode: null }));
|
|
533
649
|
expect(onMapBoundsChanged).toHaveBeenCalledWith(null);
|
|
534
650
|
return [2 /*return*/];
|
|
535
651
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { GeoPoint } from '@reltio/mdm-sdk';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { ClusteredMarkersOptions } from '../../types';
|
|
4
|
+
type Props = {
|
|
5
|
+
entityMarkers: GeoPoint[];
|
|
6
|
+
enabledClustering: boolean;
|
|
7
|
+
options?: ClusteredMarkersOptions;
|
|
8
|
+
onMarkerClick?: (marker: GeoPoint) => void;
|
|
9
|
+
};
|
|
10
|
+
export declare const ClusteredMarkers: React.MemoExoticComponent<({ entityMarkers, options, enabledClustering, onMarkerClick }: Props) => React.JSX.Element>;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
+
}
|
|
19
|
+
Object.defineProperty(o, k2, desc);
|
|
20
|
+
}) : (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
o[k2] = m[k];
|
|
23
|
+
}));
|
|
24
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
+
}) : function(o, v) {
|
|
27
|
+
o["default"] = v;
|
|
28
|
+
});
|
|
29
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
30
|
+
if (mod && mod.__esModule) return mod;
|
|
31
|
+
var result = {};
|
|
32
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
33
|
+
__setModuleDefault(result, mod);
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
exports.ClusteredMarkers = void 0;
|
|
38
|
+
var markerclusterer_1 = require("@googlemaps/markerclusterer");
|
|
39
|
+
var react_google_maps_1 = require("@vis.gl/react-google-maps");
|
|
40
|
+
var ramda_1 = require("ramda");
|
|
41
|
+
var react_1 = __importStar(require("react"));
|
|
42
|
+
var EntityMarker_1 = require("../EntityMarker");
|
|
43
|
+
var CustomClusterRenderer_1 = require("./CustomClusterRenderer");
|
|
44
|
+
exports.ClusteredMarkers = (0, react_1.memo)(function (_a) {
|
|
45
|
+
var entityMarkers = _a.entityMarkers, options = _a.options, enabledClustering = _a.enabledClustering, onMarkerClick = _a.onMarkerClick;
|
|
46
|
+
var _b = (0, react_1.useState)({}), markers = _b[0], setMarkers = _b[1];
|
|
47
|
+
var map = (0, react_google_maps_1.useMap)();
|
|
48
|
+
var clusterer = (0, react_1.useMemo)(function () {
|
|
49
|
+
if (!enabledClustering || !map)
|
|
50
|
+
return null;
|
|
51
|
+
return new markerclusterer_1.MarkerClusterer({
|
|
52
|
+
map: map,
|
|
53
|
+
renderer: new CustomClusterRenderer_1.CustomClusterRenderer(options),
|
|
54
|
+
algorithmOptions: { maxZoom: options === null || options === void 0 ? void 0 : options.maxZoom }
|
|
55
|
+
});
|
|
56
|
+
}, [map, options, enabledClustering]);
|
|
57
|
+
(0, react_1.useEffect)(function () {
|
|
58
|
+
return function () {
|
|
59
|
+
clusterer === null || clusterer === void 0 ? void 0 : clusterer.onRemove();
|
|
60
|
+
};
|
|
61
|
+
}, [entityMarkers]);
|
|
62
|
+
(0, react_1.useEffect)(function () {
|
|
63
|
+
if (!clusterer)
|
|
64
|
+
return;
|
|
65
|
+
clusterer.clearMarkers();
|
|
66
|
+
clusterer.addMarkers(Object.values(markers));
|
|
67
|
+
}, [clusterer, markers]);
|
|
68
|
+
var setMarkerRef = (0, react_1.useCallback)(function (marker, key) {
|
|
69
|
+
setMarkers(function (markers) {
|
|
70
|
+
var _a;
|
|
71
|
+
if (marker && !markers[key]) {
|
|
72
|
+
return __assign(__assign({}, markers), (_a = {}, _a[key] = marker, _a));
|
|
73
|
+
}
|
|
74
|
+
else if (!marker && markers[key]) {
|
|
75
|
+
return (0, ramda_1.omit)([key], markers);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
return markers;
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
}, []);
|
|
82
|
+
return (react_1.default.createElement(react_1.default.Fragment, null, entityMarkers.filter((0, ramda_1.prop)('point')).map(function (marker) { return (react_1.default.createElement(EntityMarker_1.EntityMarker, { key: marker.id, marker: marker, clusterer: enabledClustering ? setMarkerRef : undefined, onClick: onMarkerClick })); })));
|
|
83
|
+
});
|
|
84
|
+
exports.ClusteredMarkers.displayName = 'ClusteredMarkers';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Marker, Renderer, Cluster, ClusterStats } from '@googlemaps/markerclusterer';
|
|
2
|
+
import { ClusteredMarkersOptions } from '../../types';
|
|
3
|
+
export declare class CustomClusterRenderer implements Renderer {
|
|
4
|
+
private options;
|
|
5
|
+
private defaultRenderer;
|
|
6
|
+
constructor(options: ClusteredMarkersOptions);
|
|
7
|
+
render(cluster: Cluster, stats: ClusterStats, map: google.maps.Map): Marker;
|
|
8
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CustomClusterRenderer = void 0;
|
|
4
|
+
var markerclusterer_1 = require("@googlemaps/markerclusterer");
|
|
5
|
+
var CustomClusterRenderer = /** @class */ (function () {
|
|
6
|
+
function CustomClusterRenderer(options) {
|
|
7
|
+
this.options = options;
|
|
8
|
+
this.defaultRenderer = new markerclusterer_1.DefaultRenderer();
|
|
9
|
+
}
|
|
10
|
+
CustomClusterRenderer.prototype.render = function (cluster, stats, map) {
|
|
11
|
+
var _a;
|
|
12
|
+
var element = this.defaultRenderer.render(cluster, stats, map);
|
|
13
|
+
if (((_a = this.options) === null || _a === void 0 ? void 0 : _a.calculator) && element instanceof google.maps.marker.AdvancedMarkerElement) {
|
|
14
|
+
var title = this.options.calculator(cluster.markers).title;
|
|
15
|
+
element.title = title;
|
|
16
|
+
}
|
|
17
|
+
return element;
|
|
18
|
+
};
|
|
19
|
+
return CustomClusterRenderer;
|
|
20
|
+
}());
|
|
21
|
+
exports.CustomClusterRenderer = CustomClusterRenderer;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ClusteredMarkers } from './ClusteredMarkers';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ClusteredMarkers = void 0;
|
|
4
|
+
var ClusteredMarkers_1 = require("./ClusteredMarkers");
|
|
5
|
+
Object.defineProperty(exports, "ClusteredMarkers", { enumerable: true, get: function () { return ClusteredMarkers_1.ClusteredMarkers; } });
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DrawingManager = void 0;
|
|
4
|
+
var useDrawingManager_1 = require("./useDrawingManager");
|
|
5
|
+
var DrawingManager = function (props) {
|
|
6
|
+
(0, useDrawingManager_1.useDrawingManager)(props);
|
|
7
|
+
return null;
|
|
8
|
+
};
|
|
9
|
+
exports.DrawingManager = DrawingManager;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { DrawingManager } from './DrawingManager';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DrawingManager = void 0;
|
|
4
|
+
var DrawingManager_1 = require("./DrawingManager");
|
|
5
|
+
Object.defineProperty(exports, "DrawingManager", { enumerable: true, get: function () { return DrawingManager_1.DrawingManager; } });
|